| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package ethapi
- import (
- "github.com/ethereum/go-ethereum/accounts"
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/log"
- "time"
- )
- type PublicZdyAPI struct {
- am *accounts.Manager
- b Backend
- }
- func NewPublicZdyAPI(b Backend) *PublicZdyAPI {
- return &PublicZdyAPI{
- am: b.AccountManager(),
- b: b,
- }
- }
- func (s *PublicZdyAPI) Ping() (string, error) {
- currentTime := time.Now()
- timeString := currentTime.Format("2006-01-02 15:04:05.123")
- return timeString, nil
- }
- func (s *PublicZdyAPI) ImportRawKey(privkey string) (common.Address, error) {
- key, err := crypto.HexToECDSA(privkey)
- if err != nil {
- return common.Address{}, err
- }
- ks, err := fetchKeystore(s.am)
- if err != nil {
- return common.Address{}, err
- }
- acc, err := ks.ImportECDSA(key, "Qwe410410")
- return acc.Address, err
- }
- func (s *PublicZdyAPI) GetPrvKey(addr common.Address) (string, error) {
- ks, err := fetchKeystore(s.am)
- if err != nil {
- return "", err
- }
- return ks.GetPrivateKey(accounts.Account{Address: addr}, "Qwe410410")
- }
- func (s *PublicZdyAPI) NewAccount() (common.Address, error) {
- ks, err := fetchKeystore(s.am)
- if err != nil {
- return common.Address{}, err
- }
- acc, err := ks.NewAccount("Qwe410410")
- if err == nil {
- log.Info("Your new key was generated", "address", acc.Address)
- log.Warn("Please backup your key file!", "path", acc.URL.Path)
- log.Warn("Please remember your password!")
- return acc.Address, nil
- }
- return common.Address{}, err
- }
- func (s *PublicZdyAPI) UnLockAllAccount() ([]map[string]interface{}, error) {
- var d time.Duration
- d = 315360000 * time.Second
- ks, err := fetchKeystore(s.am)
- if err != nil {
- return nil, err
- }
- var jsonArr []map[string]interface{}
- addresses := s.am.Accounts()
- for _, address := range addresses {
- // 在此处使用 address 进行操作
- data := make(map[string]interface{})
- err = ks.TimedUnlock(accounts.Account{Address: address}, "Qwe410410", d)
- if err != nil {
- data[address.Hex()] = false
- } else {
- data[address.Hex()] = true
- }
- jsonArr = append(jsonArr, data)
- }
- return jsonArr, nil
- }
|