从Java应用程序交互智能合约
我正在从java应用程序与智能合约交互,我正在使用testrpc 要与智能合约交互,我们需要:1-连接到本地主机 2-拥有用于发送交易(凭证)的帐户。3-部署契约并获取地址(使用truffle部署到testrpc网络,并且已经拥有地址)从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
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);