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

アカウント更新

手数料の委任

ethers@kaiachain/viem-ext**パッケージをインポートして、web3にkaiaの機能を追加する。

Kairosチェーン**、HTTPトランスポート、および送信者の秘密鍵をアカウントに変換したcreateWalletClientを使用して、送信者と料金支払者のウォレットを設定します。

etherライブラリを使用して、送信者の秘密鍵から圧縮された公開鍵を計算する。 この公開鍵は、Kaiaブロックチェーン上の送信者のアカウント鍵を更新するために使用される。

prepareTransactionRequestを使用して値移転のトランザクション要求を作成し、送信者のアカウント、受信者のアドレス、移転する値(この例では0 KLAY)、トランザクションタイプ(TxType.FeeDelegatedAccountUpdate)を指定し、keyフィールドでタイプAccountKeyType.Public**の新しい公開鍵を指定する。

ウォレットクライアントの signTransaction メソッドでトランザクションに署名し、トランザクションハッシュを記録する。

手数料の支払者は、関数 signTransactionAsFeePayer を用いて、送信者からの署名済みのトランザクションに署名し、トランザクショ ン手数料の支払いに同意する。

kaia_sendRawTransaction`メソッドを使用して、完全に署名された手数料委譲トランザクション(送信者と手数料支払者の両方が署名)をKairosブロックチェーンネットワークに送信し、トランザクションハッシュまたはネットワークからの応答を返します。

TxTypeFeeDelegatedAccountUpdate.js

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

output

❯ js TxTypeFeeDelegatedAccountUpdate.js
signedTx 0x21f88e82095785066720b30082cd1494a2a8854b1802d8cd5de631e690817c253d6a9153a302a103dc9dccbd788c00fa98f7f4082f2f714e799bc0c29d63f04d48b54fe6250453cdf847f8458207f5a0d3251e52a53fae1891b0fdc8e0b5ecf2a7f2841d9f8fa8cf68d8bc037dd1e44fa06ab24023150e38fb03e431efbd5328a3f2f69ce7f2f98eb13c0846fb8ff8b0f1
fee delegated acount update tx 0x59147c1dbbea0aab51fd4d46484d516a50eeca9266dd417281e18f3b686c0fd9

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