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

Account Update

Import the ethers and @kaiachain/viem-ext packages to add kaia features on web3

Specify the kairos chain configuration to connect to the Kaia Kairos testnet.

Set up a wallet client using createWalletClient, configured with the Kairos chain, an HTTP transport, and the sender’s private key converted to an account.

Generate the public key from the sender’s private key using ethers.SigningKey.computePublicKey. The true parameter ensures the key is compressed.

Create a transaction request for the account update using prepareTransactionRequest, specifying the transaction type, sender account, recipient address, and the new public key.

Sign the prepared transaction using the wallet client’s signTransaction method.

Send the signed transaction to the Kaia blockchain using the kaia_sendRawTransaction method and log the transaction hash.

TxTypeAccountUpdate.js

import { AccountKeyType, createWalletClient, http, privateKeyToAccount, TxType } from "@kaiachain/viem-ext";
import { ethers } from "ethers";
import { kairos } from "viem/chains";
const senderWallet = createWalletClient({
chain: kairos,
transport: http(),
account: privateKeyToAccount("0x0e4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8")
});
async function main() {
const pub = ethers.SigningKey.computePublicKey("0x0e4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8", true);
const txRequest = await senderWallet.prepareTransactionRequest({
account: senderWallet.account,
to: "0x70997970c51812dc3a010c7d01b50e0d17dc79c8",
type: TxType.AccountUpdate,
key: {
type: AccountKeyType.Public,
key: pub,
},
});
console.log("populated tx request", txRequest);
const signedTx = await senderWallet.signTransaction(txRequest);
const sentTx = await senderWallet.request({
method: "kaia_sendRawTransaction",
params: [signedTx],
});
console.log("account update tx", sentTx);
};
main();

output

❯ js TxTypeAccountUpdate.js
populated tx request {
account: {
address: '0xA2a8854b1802D8Cd5De631E690817c253d6a9153',
nonceManager: undefined,
sign: [AsyncFunction: sign],
signAuthorization: [AsyncFunction: signAuthorization],
signMessage: [AsyncFunction: signMessage],
signTransaction: [AsyncFunction: signTransaction],
signTypedData: [AsyncFunction: signTypedData],
source: 'privateKey',
type: 'local',
publicKey: '0x04dc9dccbd788c00fa98f7f4082f2f714e799bc0c29d63f04d48b54fe6250453cdaf06ca34ae8714cf3dae06bacdb78c7c2d4054bd38961d40853cd5f15955da79'
},
to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
type: 32,
key: {
type: 2,
key: '0x03dc9dccbd788c00fa98f7f4082f2f714e799bc0c29d63f04d48b54fe6250453cd'
},
from: '0xA2a8854b1802D8Cd5De631E690817c253d6a9153',
nonce: 2373,
chainId: 1001,
gas: 21000n,
gasPrice: '0x66720b300',
gasLimit: 52500
}
account update tx 0x169287cafab3bfdf9ed513f0a872517f338a796725df16e7e758bb17149f4127

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