我正在使用自述指南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");
所以问题是:
我该如何制作这个钱包?我应该在我的VM上生成帐户,然后将wallet.json
文件复制到我的主机吗?
答案 0 :(得分:1)
WalletUtils.loadCredentials可能有问题,我建议您事先创建帐户,然后您可以提取私钥并使用
Credentials.create(privateKey)
您可以使用密钥库文件并使用myetherwallet查看您的私钥。
答案 1 :(得分:1)
val k = ECKeyPair.create(BigInteger(credentialsOne.ecKeyPair.privateKey.toString()))
val test = Credentials.create(k)
像普通文本一样传递私钥可以给你一些陌生人的结果,将他传递给ECKeyPair,然后你就可以访问你的公钥和地址了。 我正在使用kotlin开发android,我没有任何麻烦
钱包路径是您保存json的地方,每次想要获得钥匙时,都必须使用相同的路径和密码
答案 2 :(得分:1)
我不建议您使用WalletUtils.loadCredentials()
,因为它可能有问题。
我建议您:
1。。预先创建帐户,例如在myetherwallet或使用以下方式使用web3j:web3j wallet create
2。。提取私钥或密码和walletfile。
3。。使用Credentials.create()
。
替代1:
如果拥有密码和walletfile,则可以使用:
Credentials credentials = Credentials.create(Wallet.decrypt(password, walletFile));
替代2:
如果您有EcKeyPair,则可以使用:
Credentials credentials = Credentials.create(getEcKeyPair());
替代3:
如果您有私钥,则可以使用:
Credentials credentials = Credentials.create(privateKey);
答案 3 :(得分:0)
WalletUtils.loadCredentials()方法在第一个参数中获取密码,在第二个参数中获取已创建的钱包UTC文件的路径。 如果不创建任何钱包,则应首先创建钱包 通过WalletUtils.createWallet()提供密码和成功创建钱包后要保存utc文件的路径,utc文件将保存在您提供的位置,然后您可以使用WalletUtils.loadCredentials()加载凭据并签署交易>