Nhảy tới nội dung
This page uses machine translation from English, which may contain errors or unclear language. For the most accurate information, please see the original English version. Some content may be in the original English due to frequent updates. Help us improve this page's translation by joining our effort on Crowdin. (Crowdin translation page, Contributing guide)

Viết (SmartContractExecution TxType)

Nhập các mô-đun @kaiachain/ethers-ext để thêm các tính năng kaia vào web3.

Khởi tạo một máy khách công khai để tương tác chỉ đọc với blockchain Kaia.

Thiết lập ứng dụng ví bằng createWalletClient, được cấu hình bằng chuỗi Kairos, phương thức truyền tải HTTPkhóa riêng của người gửi được chuyển đổi thành tài khoản.

Đặt Abi được tạo từ mã solidity

Xác định địa chỉ hợp đồng để tương tác với

Mã hóa tên hàm và tham số bằng hàm encodeFunctionData

Tạo yêu cầu giao dịch để chuyển giá trị bằng cách sử dụng prepareTransactionRequest, chỉ định tài khoản người gửi, địa chỉ người nhận, giá trị cần chuyển (0 KLAY trong ví dụ này) và loại giao dịch (TxType.SmartContractExecution).

Gửi giao dịch đến blockchain Kaia bằng phương thức sendTransaction của ứng dụng ví và ghi lại mã băm giao dịch.

Sử dụng máy khách công khai để truy vấn hàm số (hàm xem không sửa đổi trạng thái) từ hợp đồng. Lệnh này sẽ lấy giá trị hiện tại của biến số, giá trị này sẽ phản ánh dấu thời gian được thiết lập bởi giao dịch trước đó (nếu thành công).

writeTxType.js

import {
http,
encodeFunctionData,
createWalletClient, createPublicClient, kairos,
TxType,
privateKeyToAccount
} from "@kaiachain/viem-ext";
const publicClient = createPublicClient({
chain: kairos,
transport: http(),
});
const senderWallet = createWalletClient({
chain: kairos,
transport: http(),
account: privateKeyToAccount(
"0x0e4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8"
),
});
// Example usage
(async () => {
const contractAddr = "0x95Be48607498109030592C08aDC9577c7C2dD505";
const abi = [{ "inputs": [{ "internalType": "uint256", "name": "initNumber", "type": "uint256" }], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [{ "indexed": false, "internalType": "uint256", "name": "number", "type": "uint256" }], "name": "SetNumber", "type": "event" }, { "inputs": [], "name": "increment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "number", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [{ "internalType": "uint256", "name": "newNumber", "type": "uint256" }], "name": "setNumber", "outputs": [], "stateMutability": "nonpayable", "type": "function" }];
const data = encodeFunctionData({
abi,
args: [Date.now()],
functionName: "setNumber",
});
const tx = await senderWallet.prepareTransactionRequest({
type: TxType.SmartContractExecution,
account: senderWallet.account,
to: contractAddr,
value: 0,
data,
});
console.log("preparedTx", tx);
const sentTx = await senderWallet.sendTransaction(tx);
console.log("contract interaction tx", sentTx);
const result = await publicClient.readContract({
address: contractAddr,
abi,
functionName: 'number'
})
console.log('Current contract value', result);
})();

output

❯ node writeTxType.js
preparedTx {
type: 48,
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: '0x95Be48607498109030592C08aDC9577c7C2dD505',
value: 0,
data: '0x3fb5c1cb000000000000000000000000000000000000000000000000000001977cfdd996',
from: '0xA2a8854b1802D8Cd5De631E690817c253d6a9153',
nonce: 2399,
chainId: 1001,
gas: 27953n,
gasPrice: '0x66720b300',
gasLimit: 69882
}
contract interaction tx 0x1834bf6fb6fe30bbf1799b03db6dd5448b0bb445e503f38496845b995f909baa
Current contract value 1750147159253n

Cải thiện trang này