1

Java アプリケーションからスマート コントラクトを操作しています。testrpc を使用しています。

スマート コントラクトとやり取りするには、次のものが必要です。1- ローカル ホストに接続します。2- トランザクション (資格情報) を送信するためのアカウントを持っています。3- コントラクトを展開し、アドレスを取得します (truffle を使用して 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アカウントを使用するにはどうすればよいですか??!!

トリュフによってすでにデプロイされているスマートコントラクトのアドレスを使用するにはどうすればよいですか??

4

1 に答える 1

2

「資格情報」にtestrpcアカウントを使用するにはどうすればよいですか??!!

Credentialsオブジェクトを作成するには、秘密鍵と公開鍵が必要です。TestRPC は、開始時に秘密鍵を表示します。再起動するたびに変更されるため、それらを静的に保ちたい場合は、--accountsオプションで独自の秘密鍵を使用してアカウントの初期セットを指定できます。

フォーマット:testrpc --account "<PRIVATE_KEY>,<STARTING_BALANCE_IN_WEI>"

例:

testrpc --account "0x70f1384b24df3d2cdaca7974552ec28f055812ca5e4da7a0ccd0ac0f8a4a9b00,300000000000000000000" --account "0xad0352cfc09aa0128db4e135fcea276523c400163dcc762a11ecba29d5f0a34a,300000000000000000000"

秘密鍵を使用して、公開鍵を生成できます。これを行う方法の例がオンラインでいくつかあります。JS の例についてはこちらを、web3j を使用した例についてはこちらを参照してください(これにより新しいキー ペアが作成されますが、再利用できるはずです)。

公開鍵と秘密鍵を使用して、Credentials オブジェクトを作成できるようになりました。

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);
于 2018-02-14T18:09:13.620 に答える