Go-Ethereum
Golang 相當於在節點上列出賬戶 - web3.eth.Accounts()
有誰知道是否可以使用 golang 獲取節點上的帳戶列表,在撥號到節點後,基本 PoC 會假設帳戶已經通過 CLI 解鎖
基本上尋找與
web3.eth.Accounts()
已通過 CLI 解鎖的遠端 geth 節點上的帳戶地址相同的功能或列出帳戶地址
一種方法是與密鑰庫互動,這是我為與密鑰庫函式“GetAllKeys”互動而編寫的一個包,它將列出所有帳戶。包密鑰庫
import ( "log" "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" "github.com/ethereum/go-ethereum/common" ) type KeyStore struct { Handle *keystore.KeyStore } func SetUpKeyStore(kp string) *KeyStore { ks := &KeyStore{} ks.Handle = keystore.NewKeyStore(kp, keystore.LightScryptN, keystore.LightScryptP) return ks } func (ks *KeyStore) CreateNewKeys(password string) accounts.Account { account, err := ks.Handle.NewAccount(password) if err != nil { log.Panic(err) } return account } func (ks *KeyStore) GetKeysByAddress(address string) accounts.Account { var account accounts.Account var err error if ks.Handle.HasAddress(common.HexToAddress(address)) { if account, err = ks.Handle.Find(accounts.Account{Address: common.HexToAddress(address)}); err != nil { log.Panic(err) } } return account } func (ks *KeyStore) GetAllKeys() []accounts.Account { return ks.Handle.Accounts() }
最終編寫了我自己的實現,向節點發送了一個 post 請求,這幾乎就是 web3 在 RPC/WS 端點下所做的事情