了解 Solana 中ATA账户与普通账户的关系
本文主要通过示例让大家理解在 Solana 中 ATA
账户与普通账户的关系。
目的
主篇内容目的是为了让开发者加深对 solana 中 Account 这一概念的理解,同时搞清楚 关联代币账户(ATA)
在 Solana 开发中的使用场景和用法,以及在多个账户之间的交易和手续费扣除情况。
本篇实现源码会在 github.com/cfanbo/solana-repos/ 中找到。
这里用到的一些api 函数可以在以下地址找到:
- @solana/web3.js 用户实现通过 Solana JSON RPC API 与 Solana 网络上的帐户和程序进行交互。
- @solana/spl-token 用于实现与 SPL Token 和 Token-2022 程序交互。
本文通过脚本实现 SPL Token 标准功能,并不需要调用已创建好的智能合约,因此不需要 programId.
设置网络环境
➜ my-solana-program git:(master) ✗ solana config get
Config File: /Users/sxf/.config/solana/cli/config.yml
RPC URL: https://api.devnet.solana.com
WebSocket URL: wss://api.devnet.solana.com/ (computed)
Keypair Path: /Users/sxf/.config/solana/id.json
Commitment: confirmed
默认情况下,当根据教程 https://solana.com/zh/docs/intro/installation 安装好后,默认环境就是开发环境。不过这里为了方便,我使用了本地作为开发环境。
➜ my-solana-program git:(master) ✗ solana config set --url localhost
Config File: /Users/sxf/.config/solana/cli/config.yml
RPC URL: http://localhost:8899
WebSocket URL: ws://localhost:8900/ (computed)
Keypair Path: /Users/sxf/.config/solana/id.json
Commitment: confirmed
➜ my-solana-program git:(master) ✗ solana config get
Config File: /Users/sxf/.config/solana/cli/config.yml
RPC URL: http://localhost:8899
WebSocket URL: ws://localhost:8900/ (computed)
Keypair Path: /Users/sxf/.config/solana/id.json
Commitment: confirmed
在本地启动模拟器服务