交易
了解如何在 Aptos 上签署和提交交易。
签署并提交交易
// 简单的 APT 转账
const payload = {
type: 'entry_function_payload',
function: '0x1::aptos_account::transfer',
type_arguments: [],
arguments: [
'0x1234...', // 接收地址
'100000000', // 金额(Octas,1 APT = 100000000 Octas)
],
}
const response = await provider.signAndSubmitTransaction(payload)
console.log('交易哈希:', response.hash)签署交易(不提交)
const payload = {
type: 'entry_function_payload',
function: '0x1::coin::transfer',
type_arguments: ['0x1::aptos_coin::AptosCoin'],
arguments: ['0x1234...', '100000000'],
}
const signedTxn = await provider.signTransaction(payload)
// 稍后使用 Aptos SDK 提交
// const pendingTxn = await client.submitTransaction(signedTxn)签署交易 V2(BCS 序列化)
用于 BCS 序列化交易的高级用例:
import { BCS } from 'aptos'
const rawTransaction = /* BCS 序列化的原始交易 */
const signedTxn = await provider.signTransactionV2({
transaction: rawTransaction,
transactionType: 'simple', // 'simple' 或 'multi_agent'
asFeePayer: false,
})交易选项
const payload = {
type: 'entry_function_payload',
function: '0x1::aptos_account::transfer',
type_arguments: [],
arguments: ['0x1234...', '100000000'],
}
const options = {
max_gas_amount: '10000',
gas_unit_price: '100',
expiration_timestamp_secs: Math.floor(Date.now() / 1000) + 600, // 10 分钟
}
const response = await provider.signAndSubmitTransaction(payload, options)智能合约交互
调用视图函数
// 视图函数不需要签名
const result = await client.view({
function: '0x1::coin::balance',
type_arguments: ['0x1::aptos_coin::AptosCoin'],
arguments: [accountAddress],
})
console.log('余额:', result[0])调用入口函数
// 铸造 NFT 示例
const payload = {
type: 'entry_function_payload',
function: '0x3::token::create_collection_script',
type_arguments: [],
arguments: [
'My Collection', // 集合名称
'Description', // 描述
'https://example.com', // URI
'1000', // 最大供应量
[false, false, false], // 可变性配置
],
}
const response = await provider.signAndSubmitTransaction(payload)多代理交易
用于需要多个签名者的交易:
const signedTxn = await provider.signTransactionV2({
transaction: rawTransaction,
transactionType: 'multi_agent',
})代付手续费交易
作为代付方签署赞助交易:
const signedTxn = await provider.signTransactionV2({
transaction: rawTransaction,
transactionType: 'simple',
asFeePayer: true,
})Last updated on