本页面使用机器翻译自英语,可能包含错误或不清楚的语言。如需最准确的信息,请参阅英文原文。由于更新频繁,部分内容可能与英文原文有出入。请加入我们在 Crowdin 上的努力,帮助我们改进本页面的翻译。 (Crowdin translation page, Contributing guide)
Legacy Account Key
AccountKeyLegacy
从 Web3j 和 kaia 库(web3j-ext)中导入必要的类。
从私人密钥创建证书
使用指定的 BAOBAB_URL 创建 Web3j 实例
此外,您还可以更改默认提供商。 例如,使用alchemy提供商。
燃气价格和gas 限值设置
从网络中获取链 ID
获取发件人地址的nonce值
生成新账户密钥用于账户更新
将交易类型设为 ACCOUNT_UPDATE
创建原始交易用于账户更新
签署交易
将签署的交易发送至 kaia 网络
等待交易完成并获取交易收据
关闭 Web3j 实例
解码原始交易以获取交易类型
AccountUpdateWithLegacyExample.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.account.AccountKeyLegacy;import org.web3j.crypto.transaction.type.TxType;import org.web3j.crypto.transaction.type.TxTypeAccountUpdate;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.core.methods.response.EthSendTransaction;import org.web3j.protocol.kaia.Web3j;import org.web3j.protocol.http.HttpService;import org.web3j.utils.Numeric;import org.web3j.protocol.kaia.core.method.response.TransactionReceipt;public class AccountUpdateWithLegacyExample {        public static void run() throws Exception {                KlayCredentials credentials = KlayCredentials.create(keySample.LEGACY_KEY_privkey);                Web3j web3j = Web3j.build(new HttpService(keySample.BAOBAB_URL));                BigInteger GAS_PRICE = BigInteger.valueOf(50000000000L);                BigInteger GAS_LIMIT = BigInteger.valueOf(6721950);                String from = credentials.getAddress();                EthChainId EthchainId = web3j.ethChainId().send();                long chainId = EthchainId.getChainId().longValue();                BigInteger nonce = web3j.ethGetTransactionCount(from, DefaultBlockParameterName.LATEST).send()                                .getTransactionCount();                AccountKeyLegacy accountkey = AccountKeyLegacy.create();                TxType.Type type = Type.ACCOUNT_UPDATE;                KlayRawTransaction raw = KlayRawTransaction.createTransaction(                                type,                                nonce,                                GAS_PRICE,                                GAS_LIMIT,                                from,                                accountkey);                byte[] signedMessage = KlayTransactionEncoder.signMessage(raw, chainId, credentials);                String hexValue = Numeric.toHexString(signedMessage);                EthSendTransaction transactionResponse = web3j.ethSendRawTransaction(hexValue).send();                System.out.println("TxHash : \n " + transactionResponse.getResult());                String txHash = transactionResponse.getResult();                int DEFAULT_POLLING_ATTEMPTS_PER_TX_HASH = 40;                int DEFAULT_BLOCK_TIME = 1 * 1000;                long DEFAULT_POLLING_FREQUENCY = DEFAULT_BLOCK_TIME;                TransactionReceiptProcessor transactionReceiptProcessor = new PollingTransactionReceiptProcessor(web3j,                                DEFAULT_POLLING_FREQUENCY, DEFAULT_POLLING_ATTEMPTS_PER_TX_HASH);                org.web3j.protocol.core.methods.response.TransactionReceipt ethReceipt = transactionReceiptProcessor                                .waitForTransactionReceipt(txHash);                System.out.println("Receipt from eth_getTransactionReceipt : \n" + ethReceipt);                TransactionReceipt receipt = web3j.klayGetTransactionReceipt(txHash).send().getResult();                System.out.println("Receipt from klay_getTransactionReceipt : \n" + receipt);                web3j.shutdown();                TxTypeAccountUpdate rawTransaction = TxTypeAccountUpdate.decodeFromRawTransaction(signedMessage);                System.out.println("TxType : " + rawTransaction.getKlayType());        }}
output
❯ java AccountUpdateWithLegacyExample.javaTxHash : 0x7b435e127119d8ee2edf8d49377ed150e4579cc3c991e0272a519a5d7f3f17b2Receipt from eth_getTransactionReceipt :TransactionReceipt{transactionHash='0x7b435e127119d8ee2edf8d49377ed150e4579cc3c991e0272a519a5d7f3f17b2', transactionIndex='0x1', blockHash='0xc1d491e001410664e0a1e68c20d69890a587dede6beae43c20fa1899935425ba', blockNumber='0x90e59b5', cumulativeGasUsed='0x3240d', gasUsed='0x5208', contractAddress='null', root='null', status='0x1', from='0xa2a8854b1802d8cd5de631e690817c253d6a9153', to='0xa2a8854b1802d8cd5de631e690817c253d6a9153', logs=[], logsBloom='0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', revertReason='null', type='0x0', effectiveGasPrice='0x5d21dba00'}Receipt from klay_getTransactionReceipt :class TransactionReceipt {    blockHash: 0xc1d491e001410664e0a1e68c20d69890a587dede6beae43c20fa1899935425ba    blockNumber: 0x90e59b5    codeFormat: null    contractAddress: null    feePayer: null    feePayerSignatures: []    feeRatio: null    from: 0xa2a8854b1802d8cd5de631e690817c253d6a9153    gas: 0x66919e    effectiveGasPrice: 0x5d21dba00    gasPrice: 0xba43b7400    gasUsed: 0x5208    humanReadable: null    key: 0x01c0    input: null    logs: []    logsBloom: 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    nonce: 0x3e8    senderTxHash: 0x7b435e127119d8ee2edf8d49377ed150e4579cc3c991e0272a519a5d7f3f17b2    signature: []    status: 0x1    txError: null    to: null    transactionHash: 0x7b435e127119d8ee2edf8d49377ed150e4579cc3c991e0272a519a5d7f3f17b2    transactionIndex: 0x1    type: TxTypeAccountUpdate    typeInt: 32    value: null}TxType : ACCOUNT_UPDATE