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

キャンセル

TxTypeCancelは、トランザクションプール内の同じnonceを持つトランザク ションの実行をキャンセルする。 このトランザクション・タイプは、送信されたトランザクションが一定時間未処理のように見える場合に有用である。

web3にkaiaの機能を追加するために、web3@kaiachain/web3js-extパッケージをインポートする。

senderfee payer のアドレス、およびそれらのprivate keysを定義する。

指定されたkairos testnet URLでプロバイダを設定します。 Web3におけるプロバイダーは、ブロックチェーンのデータにアクセスするための読み取り専用の抽象レイヤーです。

また、プロバイダのURLをkairosからquicknodeに変更することができます。

プロバイダを使用して KlaytnWeb3 インスタンスを作成する。

privateKeyToAccountで送信者の秘密鍵をアカウントに変換する。

Define a FeeDelegatedCancel transaction with params: type: TxType.FeeDelegatedCancel, from: senderAddr

senderのアカウントで取引に署名する。

料金支払者の秘密鍵をアカウントに変換する。

手数料支払者として取引に署名する

署名されたトランザクションを送信し、レシートを記録する。

TxFeeDelegatedCancel.js

const { KlaytnWeb3, TxType, parseTransaction } = require("@kaiachain/web3js-ext");
const { Web3 } = require("web3");
const senderAddr = "0xa2a8854b1802d8cd5de631e690817c253d6a9153";
const senderPriv = "0x0e4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8";
const feePayerAddr = "0xcb0eb737dfda52756495a5e08a9b37aab3b271da";
const feePayerPriv = "0x9435261ed483b6efa3886d6ad9f64c12078a0e28d8d80715c773e16fc000cff4";
async function main() {
const provider = new Web3.providers.HttpProvider("https://public-en-kairos.node.kaia.io");
const web3 = new KlaytnWeb3(provider);
const senderAccount = web3.eth.accounts.privateKeyToAccount(senderPriv);
const tx = {
type: TxType.FeeDelegatedCancel,
from: senderAddr,
};
const signResult1 = await senderAccount.signTransaction(tx);
console.log("senderRawTx", signResult1.rawTransaction);
console.log("senderTx", parseTransaction(signResult1.rawTransaction));
// Next step is usually done in the backend by the service provider.
// But for the sake of demonstration, feePayer signature is done here.
const feePayerAccount = web3.eth.accounts.privateKeyToAccount(feePayerPriv);
const signResult2 = await feePayerAccount.signTransactionAsFeePayer(signResult1.rawTransaction);
console.log("rawTx", signResult2.rawTransaction);
console.log("tx", parseTransaction(signResult2.rawTransaction));
const receipt = await web3.eth.sendSignedTransaction(signResult2.rawTransaction);
console.log("receipt", receipt);
}
main();

output

❯ js TxFeeDelegatedCancel.js
senderTxHashRLP 0x39f86b8203ba850ba43b74008302059494a2a8854b1802d8cd5de631e690817c253d6a9153f847f8458207f6a00a348d88278e74688124d4cd3996eed20fba6d5b3e10203d2d52395aab8abfbca031a4213782de0ccaed08a5b08e8e1294e2c8e85f4d758688f96c3e58373c3fed
signedTx 0x8b7fa96dd12a54c077020ddbfdb4114254312bfdbb361cf9479610afe1ba381c
receipt {
blockHash: '0xbb38361be83e6af540b71875824e05a8be986209c0c083eafee07ca35e811334',
blockNumber: 148744957n,
cumulativeGasUsed: 179526n,
effectiveGasPrice: 25000000000n,
from: '0xa2a8854b1802d8cd5de631e690817c253d6a9153',
gasUsed: 31000n,
logs: [],
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
status: 1n,
to: '0xa2a8854b1802d8cd5de631e690817c253d6a9153',
transactionHash: '0x8b7fa96dd12a54c077020ddbfdb4114254312bfdbb361cf9479610afe1ba381c',
transactionIndex: 1n,
type: 0n
}

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