使用java web3j创建钱包但如何连接到私有运行区块链?

时间:2018-03-14 12:25:28

标签: java blockchain ethereum geth web3-java

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

WalletUtils.generateFullNewWalletFile()

使用:

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

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

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

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

使用:

WalletUtils.loadCredentials()

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

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

这是如何组合在一起的?

1 个答案:

答案 0 :(得分:0)

初始化私有区块链时,需要在{ "config": { "chainId": 29462 }, "difficulty": "0x400", "gasLimit": "0x8000000", "alloc": { "d69cc234de15189f0ba998a41421961e89837fc5": { "balance": "30000000000000000000000000000" } } } 中指定初始以太网。

一个简单的例子:

geth

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

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