区块链/等级 VIII · Meme币时代/8.2 Solana/课程 1
SPL代币与账户
每笔余额都是一把钥匙的账本
材料Solana 区块浏览器(Solscan 或 Solana Explorer)持有多种代币的任何钱包地址用于记录供应量与权限状态的笔记本
好奇
- 为什么持有代币需要创建一个单独的账户并为其注资?
- 两个钱包如何持有同一种代币(同一个 Mint),而各自的余额又不会干扰对方的状态更新?
- 如果“铸造权限”密钥丢失,与被窃取相比,供应量会如何变化?
探索
- 在 Solana 上,系统中的每个对象都是一个账户。账户中存有 lamport(原生货币 SOL 的单位)余额、任意数据,以及一个规定这些数据如何被修改的所有者程序。1 SOL 等于十亿 lamport。与以太坊中合约拥有自己存储空间的机制不同,Solana 程序本身不保存任何状态,它只对传入的账户执行操作。
- 这种分离机制实现了极高的并行性。如果有一万名用户同时转账代币,他们操作的是不同的内存地址——也就是各自的代币账户。由于这些账户之间不共享可变状态,网络可以同时处理这些操作而不会产生冲突。不过,集中在某个共享账户上的活动,比如热门交易池,仍需排队处理;这就是 Solana 按账户为拥堵定价的原因(后面的课程会讲到)。
- 代币由 SPL Token 程序管理。“Mint”账户定义了代币的身份:总供应量、小数精度以及两项关键权限。“铸造权限”可以创建新代币,从而增加供应量;“冻结权限”可以锁定特定用户账户,使其无法发送或接收代币。这些权限是可选的;许多项目会同时撤销这两项权限:撤销铸造权限会固定供应量,撤销冻结权限则意味着任何人都无法冻结持币者。
- 每个钱包都会将每种代币存放在一个独立的“代币账户”中。对大多数用户而言,这个账户就是关联代币账户(ATA),它由用户的公钥和 Mint 地址以确定性方式推导得出。这种推导方式意味着 ATA 地址是可预测的:只要知道谁持有什么代币,无需查询链上数据就能算出它所在的地址。该账户必须存有足够的 lamport 才能达到“免租”(rent-exempt)状态,这是一笔一次性押金,账户关闭时会退还。
- Token-2022 在该模型的基础上增加了标准 SPL 代币所不具备的可选功能。它支持转账费:每笔转账会按一定比例(不超过设定的上限)将费用扣留在接收方的代币账户中,由指定的权限方提取。此外,它还支持“转账钩子”(transfer hook),即在兑换或发送过程中执行自定义逻辑。这些扩展虽然增加了复杂性,但提供了版税收取和合规检查的机制——而在此之前,没有外部中间件就无法在链上实现这些功能。
- 要查看代币的属性,可打开 Solscan 或 Solana Explorer 等 Solana 区块浏览器,搜索任意 Mint 地址。界面会显示该代币的总供应量、小数位数,以及铸造权限是仍然有效(即还能创建新代币)还是已被撤销。如果冻结权限仍然有效,其持有者就可以冻结任何钱包的代币账户。在任何一枚代币转移之前,查看这些字段就能发现代币设计中内含的中心化风险。
关键事实
- 每个 Solana 账户都包含 lamport(1 SOL = 1,000,000,000 lamport)、数据以及一个所有者程序。
- SPL Token 的 Mint 账户定义了供应量、小数位数、铸造权限以及冻结权限。
- 关联代币账户是根据钱包地址和 Mint 地址以确定性方式推导得出的。
- 账户必须保持免租余额,才能继续留在网络上而不会被关闭。
- Token-2022 引入了标准 SPL 代币所没有的可选扩展功能,如转账费及钩子机制。
- Solana上的程序不会持有任何状态;它们只会修改作为参数传入的账户中的数据。
练习 九、六、三、一
9收集列出近期有活动的 9 个代币 Mint。注明其小数位数、铸造权限是仍然有效还是已撤销,以及是否存在冻结权限。
6归类根据权限结构将这 9 个代币分为 6 组:供应量不可变且无冻结权限、供应量可变、可冻结账户、启用转账费、启用钩子(hook),以及其他配置。
3提炼将这 6 组归纳为 3 种不同的风险类型,分别涉及发行方对持币者资产的控制以及未来供应量的通胀。
1凝结写一句话,解释为什么尽管降低了灵活性,“已放弃”的铸造权限仍被认为比仍然有效的铸造权限对长期持币者更安全。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。