基础交易
本节介绍可构建并提交到 Aptos 区块链的基础交易类型。
-
配置 AptosClient
通过添加
Aptos命名空间并实例化AptosClient来配置 Aptos 客户端。你可以使用Networks提供的预定义配置,也可以自行配置。using Aptos;class Program{static void Main(string[] args){var config = new AptosConfig(Aptos.Networks.Mainnet);var client = new AptosClient(config);}} -
配置账户
创建交易需要一个账户来签名。可使用私钥、助记词,或两者的组合。在本例中,我们将生成一个随机的新账户。
using Aptos;class Program{static void Main(string[] args){var config = new AptosConfig(Aptos.Networks.Devnet);var client = new AptosClient(config);// 1. Create an account and fund it.var account = Account.Generate();await client.Faucet.FundAccount(account.Address, 100_000_000);}} -
构建交易
要与区块链交互,需要构建交易。
AptosClient可用于构建可签名并提交到链上的交易载荷。在交易中,可以指定发送者、入口函数和参数。using Aptos;class Program{static void Main(string[] args){var config = new AptosConfig(Aptos.Networks.Devnet);var client = new AptosClient(config);var account = Account.Generate();// 2. Build the transactionvar transaction = await client.Transaction.Build(sender: account,data: new GenerateEntryFunctionPayloadData(function: "0x1::aptos_account::transfer_coins",typeArguments: ["0x1::aptos_coin::AptosCoin"],functionArguments: [account.Address, "100000"]));}} -
签名并提交交易
交易构建完成后,即可签名并提交到区块链。
AptosClient可用于签名和提交交易。using Aptos;class Program{static void Main(string[] args){var config = new AptosConfig(Aptos.Networks.Devnet);var client = new AptosClient(config);var account = Account.Generate();var transaction = await client.Transaction.Build(sender: account,data: new GenerateEntryFunctionPayloadData(function: "0x1::aptos_account::transfer_coins",typeArguments: ["0x1::aptos_coin::AptosCoin"],functionArguments: [account.Address, "100000"]));// 3. Sign the transactionvar submittedTransaction = await client.Transaction.SignAndSubmitTransaction(signer, transaction);}} -
(可选)等待交易执行
交易提交后,需要先完成处理,才能提交到区块链。
AptosClient可用于等待交易被处理和执行。using Aptos;class Program{static void Main(string[] args){var config = new AptosConfig(Aptos.Networks.Devnet);var client = new AptosClient(config);var account = Account.Generate();var transaction = await client.Transaction.Build(sender: account,data: new GenerateEntryFunctionPayloadData(function: "0x1::aptos_account::transfer_coins",typeArguments: ["0x1::aptos_coin::AptosCoin"],functionArguments: [account.Address, "100000"]));var submittedTransaction = await client.Transaction.SignAndSubmitTransaction(account, transaction);// 4. Wait for the transaction to be processedvar transactionResult = await client.Transaction.WaitForTransaction(submittedTransaction.Hash);}}