簡體   English   中英

通過Java應用程序與智能合約進行交互

[英]Interacting a smart contract from Java application

我正在使用Java應用程序與Java應用程序交互智能合約。

要與智能合約進行交互,我們需要:1-連接到本地主機2-具有用於發送交易(憑證)的帳戶。 3-部署合同並獲取地址(使用松露部署到testrpc網絡,並且已經有地址)

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

3- YourSmartContract contract = YourSmartContract.deploy(
    <web3j>, <credentials>,
    GAS_PRICE, GAS_LIMIT,
    <initialEtherValue>,
    <param1>, ..., <paramN>).get();  // constructor params

我的問題是:如何使用testrpc帳戶存儲“憑據”?

如何使用松露已經部署的智能合約的地址?

如何使用testrpc帳戶作為“憑據”?

您需要私鑰和公鑰才能創建Credentials對象。 啟動時,TestRPC將顯示私鑰。 它們在每次重新啟動時都會更改,因此,如果要使其保持靜態,則可以使用自己的帶有--accounts選項的私鑰來指定一組初始帳戶。

格式: testrpc --account "<PRIVATE_KEY>,<STARTING_BALANCE_IN_WEI>"

例:

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);

如何使用松露已經部署的智能合約的地址?

您不deploy合同,而是load合同。 web3j文檔

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM