如何通过 go-ethereum 创建 eth 账户?

问题描述

我正在 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,它通过完整的代码示例逐步介绍了这一点。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...