본문으로 건너뛰기
이 페이지는 영문에서 기계 번역되었으므로 오역이나 어색한 표현이 있을 수 있습니다. 따라서 정확한 정보는 영어 원문을 참조하시기 바랍니다. 또한 잦은 업데이트로 인해 일부 콘텐츠는 영문이 그대로 남아있을 수 있습니다. Crowdin에서 이 페이지의 번역을 개선하는 데 동참하여 도움을 주세요. (Crowdin translation page, Contributing guide)

계정 업데이트

수수료 위임

웹3에서 Kaia 기능을 추가하려면 ethers@kaiachain/viem-ext 패키지를 가져옵니다.

Kairos 체인**, HTTP 전송, 계정으로 변환된 발신자의 개인 키로 구성된 createWalletClient를 사용하여 발신자 및 수수료 납부자 지갑을 설정합니다.

에테르 라이브러리를 사용하여 발신자의 개인키에서 압축된 공개키를 계산합니다. 이 공개 키는 Kaia 블록체인에서 발신자의 계정 키를 업데이트하는 데 사용됩니다.

발신자 계정, 수신자 주소, 전송할 값(이 예시에서는 0 KLAY), 트랜잭션 유형 **(TxType.FeeDelegatedAccountUpdate)**를 지정하고 필드에 AccountKeyType.Public 유형의 새 공개 키를 지정하는 prepareTransactionRequest를 사용해 값 전송을 위한 트랜잭션 요청을 생성합니다.

지갑 클라이언트의 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

페이지를 개선해 주세요