web3j 中凭证的钱包路径是啥?

Posted

技术标签:

【中文标题】web3j 中凭证的钱包路径是啥?【英文标题】:What is the wallet path for credentials in web3j?web3j 中凭证的钱包路径是什么? 【发布时间】:2017-10-30 18:06:47 【问题描述】:

我正在使用自述指南https://github.com/web3j/web3j。

我感兴趣的是从我的主机使用 Java + Web3j 开发智能合约到在我的虚拟机上运行的私有以太坊网络。

有这么几行:

Web3j web3 = Web3j.build(new HttpService());  // defaults to http://localhost:8545/
Credentials credentials = WalletUtils.loadCredentials("password", "/path/to/walletfile");

所以问题是:

我应该如何创建这个钱包?我应该在我的虚拟机上生成帐户,然后将wallet.json 文件复制到我的主机吗?

【问题讨论】:

【参考方案1】:

WalletUtils.loadCredentials 可能有问题,我建议您先创建帐户,然后您可以提取私钥并使用

Credentials.create(privateKey)

您可以使用密钥库文件并使用 myetherwallet 来查看您的私钥。

【讨论】:

【参考方案2】:

我不建议使用WalletUtils.loadCredentials(),因为它可能会出错。

我推荐你:

1. 事先创建帐户,例如在myetherwallet 或使用web3j 使用:web3j wallet create

2.提取私钥或密码和钱包文件。

3.使用Credentials.create()

备选方案 1:

如果你有密码和钱包文件,你可以使用:

Credentials credentials = Credentials.create(Wallet.decrypt(password, walletFile));

备选方案 2:

如果你有 EcKeyPair,你可以使用:

Credentials credentials = Credentials.create(getEcKeyPair());

备选方案 3:

如果你有私钥,你可以使用:

Credentials credentials = Credentials.create(privateKey);

【讨论】:

【参考方案3】:
val k = ECKeyPair.create(BigInteger(credentialsOne.ecKeyPair.privateKey.toString()))
            val test = Credentials.create(k)

像纯文本一样传递私钥可以给你一些奇怪的结果,将他传递到 ECKeyPair 中,然后你就可以访问你的公钥和地址。 我正在使用 kotlin 在 android 中开发,我没有任何问题

钱包路径是保存你的 json 的地方,每次你想得到你的钥匙时,你都必须输入相同的路径和密码

【讨论】:

【参考方案4】:

WalletUtils.loadCredentials() 方法在第一个参数中采用密码,在第二个参数中采用您已经创建的钱包 UTC 文件的路径。 如果不创建任何钱包,那么你应该首先创建钱包 通过 WalletUtils.createWallet() 提供密码和路径,您希望在成功创建钱包后保存 utc 文件,utc 文件将保存在您提供的位置,然后您可以使用 WalletUtils.loadCredentials() 加载凭据并签署交易

【讨论】:

以上是关于web3j 中凭证的钱包路径是啥?的主要内容,如果未能解决你的问题,请参考以下文章

区块链以太坊 web3j for java 使用 - 为用户创建凭证credentials <2;

快递单电子面单打印机脱机是啥原因

金蝶K3存货核算里面的凭证生成的是啥单据的凭证?

自适应链式支付:在沙盒中测试的必要凭证是啥?

使用金蝶软件做账的步骤是啥,全过程是怎样的?

powershell 使用凭证将项目复制到UNC路径