我正在尝试将代币 [USDT] 从一个钱包发送到另一个钱包。但我认为我在理解关联令牌帐户 [ATA] 的概念时遇到了一些困难
据我的理解:
1 - 每个想要保存、接收或发送代币的钱包账户都必须在网络中的账户中注册这些代币吗?
2 - 发送方可以注册接收方的帐户
3-这些概念正确吗?
以上所有操作均通过以下指令完成=>
AssociatedTokenAccountProgram.CreateAssociatedTokenAccount
4 - 一旦接收者的钱包地址被注册,就可以通过指令将代币发送给他=>
TokenProgram.Transfer
Account ownerAccount = wallet.Account;
PublicKey UsdtAddress = new PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB");
PublicKey ToAddress = new PublicKey("CDQ3Gya9QermsPzU3cTNW9QPLbMVLbALQ2S8AwbruVJ");
var Transaction = new TransactionBuilder().
SetRecentBlockHash(blockHash.Result.Value.Blockhash).
SetFeePayer(wallet.Account).
AddInstruction(AssociatedTokenAccountProgram.CreateAssociatedTokenAccount(
ownerAccount, // Sender Account [Wallet Owner] ?
UsdtAddress, // Tether Address On-Chain ?
ToAddress)). // The Recipient Wallet Address ?
AddInstruction(TokenProgram.Transfer(
ownerAccount,
ToAddress,
100,
ownerAccount)).
Build(new List<Account> { ownerAccount });
var txReq = await rpcClient.SendTransactionAsync(Transaction);
Run Code Online (Sandbox Code Playgroud)
我很抱歉让您等了这么久,但经过多次尝试,都没有成功,我真的认为我需要有人解释一下发送令牌的工作原理。