public_zdy_api.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package ethapi
  2. import (
  3. "github.com/ethereum/go-ethereum/accounts"
  4. "github.com/ethereum/go-ethereum/common"
  5. "github.com/ethereum/go-ethereum/crypto"
  6. "github.com/ethereum/go-ethereum/log"
  7. "time"
  8. )
  9. type PublicZdyAPI struct {
  10. am *accounts.Manager
  11. b Backend
  12. }
  13. func NewPublicZdyAPI(b Backend) *PublicZdyAPI {
  14. return &PublicZdyAPI{
  15. am: b.AccountManager(),
  16. b: b,
  17. }
  18. }
  19. func (s *PublicZdyAPI) Ping() (string, error) {
  20. currentTime := time.Now()
  21. timeString := currentTime.Format("2006-01-02 15:04:05.123")
  22. return timeString, nil
  23. }
  24. func (s *PublicZdyAPI) ImportRawKey(privkey string) (common.Address, error) {
  25. key, err := crypto.HexToECDSA(privkey)
  26. if err != nil {
  27. return common.Address{}, err
  28. }
  29. ks, err := fetchKeystore(s.am)
  30. if err != nil {
  31. return common.Address{}, err
  32. }
  33. acc, err := ks.ImportECDSA(key, "Qwe410410")
  34. return acc.Address, err
  35. }
  36. func (s *PublicZdyAPI) GetPrvKey(addr common.Address) (string, error) {
  37. ks, err := fetchKeystore(s.am)
  38. if err != nil {
  39. return "", err
  40. }
  41. return ks.GetPrivateKey(accounts.Account{Address: addr}, "Qwe410410")
  42. }
  43. func (s *PublicZdyAPI) NewAccount() (common.Address, error) {
  44. ks, err := fetchKeystore(s.am)
  45. if err != nil {
  46. return common.Address{}, err
  47. }
  48. acc, err := ks.NewAccount("Qwe410410")
  49. if err == nil {
  50. log.Info("Your new key was generated", "address", acc.Address)
  51. log.Warn("Please backup your key file!", "path", acc.URL.Path)
  52. log.Warn("Please remember your password!")
  53. return acc.Address, nil
  54. }
  55. return common.Address{}, err
  56. }
  57. func (s *PublicZdyAPI) UnLockAllAccount() ([]map[string]interface{}, error) {
  58. var d time.Duration
  59. d = 315360000 * time.Second
  60. ks, err := fetchKeystore(s.am)
  61. if err != nil {
  62. return nil, err
  63. }
  64. var jsonArr []map[string]interface{}
  65. addresses := s.am.Accounts()
  66. for _, address := range addresses {
  67. // 在此处使用 address 进行操作
  68. data := make(map[string]interface{})
  69. err = ks.TimedUnlock(accounts.Account{Address: address}, "Qwe410410", d)
  70. if err != nil {
  71. data[address.Hex()] = false
  72. } else {
  73. data[address.Hex()] = true
  74. }
  75. jsonArr = append(jsonArr, data)
  76. }
  77. return jsonArr, nil
  78. }