0

我正在使用 java web3j lib 并使用以下方法创建一个新的钱包文件:

WalletUtils.generateFullNewWalletFile()

和:

Web3j web3 = Web3j.build(new HttpService());

...我正在连接到运行 geth 的本地私有区块链。

问题是。如何向我的钱包添加一些测试,以及我本地创建的钱包和我正在运行的 geth 客户端之间的上下文是什么。

如何将 web3j 创建的钱包连接到 geth 客户端?

和:

WalletUtils.loadCredentials()

.. 我可以获取钱包的公共地址,但是当我使用时,该帐户未在 geth 客户端中列出:

web3.ethAccounts().send().getAccounts()

这如何结合在一起?

4

1 回答 1

0

genesis.json初始化私有区块链时需要指定初始以太币。

一个简单的例子:

{
    "config": {
        "chainId": 29462
    },
    "difficulty": "0x400",
    "gasLimit": "0x8000000",
    "alloc": {
        "d69cc234de15189f0ba998a41421961e89837fc5": {
            "balance": "30000000000000000000000000000"
        }
    }
}

这里指定的地址需要在初始化创世块之前创建。您可以使用手动创建地址geth,也可以使用您创建的地址WalletUtils.generateFullNewWalletFile()。这里的重要部分是确保在运行geth命令时使用相同的密钥库目录。无论destinationDirectory您传入什么,都generateFullNewWalletFile()需要通过geth选项传入--keystore

如果您已经创建了私有区块链并将以太币分配给与您在 web3j 中创建的账户不同的账户,请确保您为两个账户使用相同的密钥库目录(并且该目录与--keystore选项匹配)并简单地转移以太币从您的原始帐户到您创建的新帐户。

于 2018-03-14T16:47:40.227 回答