【问题标题】:Using java web3j to create wallet but how then connect to private running blockchain?使用 java web3j 创建钱包但如何连接到私有运行的区块链?
【发布时间】:2018-08-22 23:35:33
【问题描述】:

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

WalletUtils.generateFullNewWalletFile()

与:

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

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

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

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

与:

WalletUtils.loadCredentials()

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

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

这是如何组合在一起的?

【问题讨论】:

    标签: java blockchain ethereum geth web3-java


    【解决方案1】:

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

    一个简单的例子:

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

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

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

    【讨论】:

    • 谢谢解释:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2021-11-27
    • 1970-01-01
    • 2022-06-23
    • 2022-07-17
    • 2018-12-19
    相关资源
    最近更新 更多