本文へスキップ
このページは英語からの機械翻訳を使用しており、誤りや不明瞭な表現が含まれている可能性があります。最も正確な情報については、オリジナルの英語版をご覧ください。頻繁な更新のため、一部のコンテンツはオリジナルの英語になっている可能性があります。Crowdinでの取り組みに参加して、このページの翻訳改善にご協力ください。 (Crowdin translation page, Contributing guide)

パブリック・アカウント・キー

AccountKeyPublicは、1つの公開鍵を持つアカウントに使用される。 アカウントにAccountKeyPublicオブジェクトがある場合、トランザクションの検証処理は以下のように行われる:

Web3jとkaiaライブラリ(web3j-ext)から必要なクラスをインポートする。

指定されたBAOBAB_URLでWeb3jインスタンスを作成する

また、デフォルトのプロバイダーを変更することもできる。 例えば、錬金術のプロバイダーを使う。

publicキー・タイプのキー・ペアからクレデンシャルを作成する。

ガス料金とガス上限**の設定

senderアドレスをロードされたクレデンシャルのアドレスと等しく設定する。

ネットワークからチェーンIDを取得する。

レシーバー**アドレスを任意の有効なアドレスに設定する。

送信者アドレスのnonceを取得する。

転送する値を設定する

トランザクション・タイプを VALUE_TRANSFER に設定する。

価値移転のための生のトランザクションを作成する

取引に署名する

署名したトランザクションをkaiaネットワークに送信する。

署名されたトランザクションから送信者アドレスを復元し、それをfromアドレスと比較する。

Web3jインスタンスをシャットダウンする

SignTxWithPubkeyExample.java

package org.web3j.example.accountKey;
import org.web3j.tx.response.PollingTransactionReceiptProcessor;
import org.web3j.tx.response.TransactionReceiptProcessor;
import org.web3j.example.keySample;
import java.io.IOException;
import java.math.BigInteger;
import org.web3j.crypto.KlayCredentials;
import org.web3j.crypto.KlayRawTransaction;
import org.web3j.crypto.KlayTransactionEncoder;
import org.web3j.crypto.transaction.type.TxType;
import org.web3j.crypto.transaction.type.TxType.Type;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.response.EthChainId;
import org.web3j.protocol.http.HttpService;
import org.web3j.protocol.kaia.Web3j;
import org.web3j.protocol.kaia.core.method.response.KlayRecoverFromTransactionResponse;
import org.web3j.utils.Numeric;
import org.web3j.protocol.core.methods.response.EthSendTransaction;
/**
*
*/
public class SignTxWithPubkeyExample implements keySample {
/**
*
*/
public static void run() throws Exception {
Web3j web3j = Web3j.build(new HttpService(keySample.BAOBAB_URL));
KlayCredentials credentials1 = KlayCredentials.create(keySample.PUBLIC_KEY_privkey,
keySample.PUBLIC_KEY_address);
BigInteger GAS_PRICE = BigInteger.valueOf(50000000000L);
BigInteger GAS_LIMIT = BigInteger.valueOf(6721950);
String from = credentials1.getAddress();
EthChainId EthchainId = web3j.ethChainId().send();
long chainId = EthchainId.getChainId().longValue();
String to = "0x000000000000000000000000000000000000dead";
BigInteger nonce = web3j.ethGetTransactionCount(from, DefaultBlockParameterName.LATEST).send()
.getTransactionCount();
BigInteger value = BigInteger.valueOf(100);
TxType.Type type = Type.VALUE_TRANSFER;
KlayRawTransaction raw = KlayRawTransaction.createTransaction(
type,
nonce,
GAS_PRICE,
GAS_LIMIT,
to,
value,
from);
byte[] signedMessage = KlayTransactionEncoder.signMessage(raw, chainId, credentials1);
String hexValue = Numeric.toHexString(signedMessage);
EthSendTransaction transactionResponse = web3j.ethSendRawTransaction(hexValue).send();
System.out.println("TxHash : \n " + transactionResponse.getResult());
String blockNumber = "latest";
KlayRecoverFromTransactionResponse response = web3j.klayRecoverFromTransaction(hexValue, blockNumber)
.send();
System.out.println("Original address : " + from);
System.out.println("Result address : " + response.getResult());
web3j.shutdown();
}
}

output

java SignTxWithPubkeyExample.java
TxHash :
0xcb3c9869bdb600e6fdb74fe06a727900f8beb3126b5a8e899e29d5fbba7873f6
オリジナルアドレス :0xe15cd70a41dfb05e7214004d7d054801b2a2f06b
結果アドレス : 0xe15cd70a41dfb05e7214004d7d054801b2a2f06b

ページを改善してください。