Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java应用程序交互智能合约_Java_Ethereum_Smartcontracts_Web3 Java - Fatal编程技术网

从Java应用程序交互智能合约

从Java应用程序交互智能合约,java,ethereum,smartcontracts,web3-java,Java,Ethereum,Smartcontracts,Web3 Java,我正在从java应用程序与智能合约交互,我正在使用testrpc 要与智能合约交互,我们需要:1-连接到本地主机 2-拥有用于发送交易(凭证)的帐户。3-部署契约并获取地址(使用truffle部署到testrpc网络,并且已经拥有地址) 1-web3jweb3=Web3j.build(新的HttpService());//默认为http://localhost:8545/ 2-Credentials=WalletUtils.loadCredentials(“密码”,“/path/to/walle

我正在从java应用程序与智能合约交互,我正在使用testrpc

要与智能合约交互,我们需要:1-连接到本地主机 2-拥有用于发送交易(凭证)的帐户。3-部署契约并获取地址(使用truffle部署到testrpc网络,并且已经拥有地址)

1-web3jweb3=Web3j.build(新的HttpService());//默认为http://localhost:8545/
2-Credentials=WalletUtils.loadCredentials(“密码”,“/path/to/walletfile”);
3-YourSmartContract合同=YourSmartContract.deploy(
,
天然气价格,天然气限值,
,
,…,).get();//构造函数参数
我的问题是:我如何使用testrpc帐户进行“凭证”

我如何使用truffle已经部署的智能合约的地址

如何使用testrpc帐户获取“凭据”

您需要私钥和公钥来创建
凭证
对象。TestRPC在启动时显示私钥。它们在每次重新启动时都会发生变化,因此如果希望保持它们的静态,可以使用自己的私钥,使用
--accounts
选项指定初始帐户集

格式:
testrpc--account“,”

例如:

testrpc --account "0x70f1384b24df3d2cdaca7974552ec28f055812ca5e4da7a0ccd0ac0f8a4a9b00,300000000000000000000" --account "0xad0352cfc09aa0128db4e135fcea276523c400163dcc762a11ecba29d5f0a34a,300000000000000000000"
使用私钥,您可以生成公钥。有几个 如何做到这一点的在线示例。有关JS示例或使用web3j的示例,请参见(这将创建一个新的密钥对,但您应该能够重用它)

使用公钥和私钥,您现在可以创建凭据对象:

import org.web3j.crypto.Credentials;
import org.web3j.crypto.ECKeyPair;
import org.web3j.utils.Numeric;

...

String privateKey = <YOUR_PRIVATE_KEY>;
String publicKey = <YOUR_PUBLIC_KEY>;

ECKeyPair keyPair = new ECKeyPair(Numeric.toBigInt(privateKey), Numeric.toBigInt(publicKey));

Credentials credentials = Credentials.create(keyPair);
import org.web3j.crypto.Credentials;
import org.web3j.crypto.ECKeyPair;
import org.web3j.utils.Numeric;

...

String privateKey = <YOUR_PRIVATE_KEY>;
String publicKey = <YOUR_PUBLIC_KEY>;

ECKeyPair keyPair = new ECKeyPair(Numeric.toBigInt(privateKey), Numeric.toBigInt(publicKey));

Credentials credentials = Credentials.create(keyPair);
YourSmartContract contract = YourSmartContract.load(
        "0x<address>|<ensName>", <web3j>, <credentials>, GAS_PRICE, GAS_LIMIT);