问题描述
我正在 http://127.0.0.1:7545
上的本地主机上运行本地以太坊节点(使用 ganache)。我使用密钥库创建了一个新帐户,如下所示。但是,我的本地以太坊节点如何知道该新帐户?通常,我可以获得余额、交易等...但我无法通过 go-ethereum
SDK 通过我的网络了解新帐户并对其进行管理。
func CreateAccount() {
password := "secret"
ks := keystore.NewKeyStore("./wallets",keystore.StandardScryptN,keystore.StandardScryptP)
account,err := ks.NewAccount(password)
if err != nil {
log.Fatal(err)
}
fmt.Println(account.Address.Hex())
}
解决方法
为了让 go-ethereum
与您的 Ganache 客户端通话,您需要调用 Dial
,它接受提供程序 URL。在所描述的情况下,这将按如下方式完成:
client,err := ethclient.Dial("http://localhost:7545")
if err != nil {
log.Fatal(err)
}
因此,在创建新帐户并让 Ganache 看到它的过程中,您将拥有类似这样的内容:
func main() {
client,err := ethclient.Dial("http://localhost:7545")
if err != nil {
log.fatal(err)
}
fmt.Println("we have a connection")
}
func CreateAccount() {
ks := keystore.NewKeyStore("./wallets",keystore.StandardScryptN,keystore.StandardScryptP)
password := "secret"
account,err := ks.NewAccount(password)
if err != nil {
log.Fatal(err)
}
fmt.Println(account.Address.Hex())
}
关于 go-ethereum
的所有内容的一个非常好的参考是 https://goethereumbook.org,它通过完整的代码示例逐步介绍了这一点。