谁可以改变代币供应?
把单签增发权限移交给多签,再测试错误的执行者为什么会被拒绝,以及撤销为何不可逆。
- 解释供应上限和批准权限的区别
- 观察单签到多签的权限移交
- 判断撤销权限后哪些动作仍然可以改变余额
- 上一章增发会怎样改变持有人占比?
- 本章谁可以改变代币供应?
把单签增发权限移交给多签,再测试错误的执行者为什么会被拒绝,以及撤销为何不可逆。
- 下一章自由实验室
先想一想这几个问题
展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。
Q01项目方宣布放弃所有权,就代表再也没人能改供应吗?+
不一定。增发者、代理升级、暂停者和多签可能是独立权限。判断安全要枚举每条能改变状态的调用路径,而不是只看一个 owner 标签。
“供应上限固定”只回答数学上的最大值;它没有回答谁能修改余额、谁能改变参数、谁能批准下一次增发。权限移交和撤销,才是代币发行器真正的控制面。
从单签走向多签
LAB / 虚拟代币
每个动作只改变一张公开状态表;你可以逐步追问,谁能改变供应、谁能领取、谁承担稀释。
供应规则的关键不只是上限,还有批准者
把增发权限从创建者单签移交给 2/3 多签后,单个创建者的 mint 会被拒绝;只有模拟的多签执行者才能继续改变供应。撤销则不可逆。
锁仓仍计入总供应,但还不能转账。颜色只是辅助,数字和标签才是状态。
先看总供应被拆成了哪些部分:可流通余额、锁仓余额,以及创建者仍然拥有的增发权限。
- 02
初始分配写入状态:创建者、社区、国库余额可用;另外 400,000 LAB 处于锁仓。
- 01
LAB 创建:总供应 1,000,000,供应上限 1,200,000,创建者保留增发权限。
拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。
实验室先把增发权限交给创建者单签。移交给 2/3 多签后,创建者自己的 mint 请求会失败,只有带有 actor: multisig 的模拟执行才会通过。再撤销权限,供应只能来自已有余额、锁仓领取或转账,之后不能重新恢复。
权限状态也是公开状态
一个审计者应该能从状态和事件回答:当前批准者是谁?权限何时移交?移交前后的 mint 是否被正确拒绝?撤销之后是否仍能通过隐藏入口增发?如果这些问题只能靠前端按钮颜色判断,权限设计就没有真正被验证。
展开:这一步如何实现
require(authority == msg.senderRole)
require(totalSupply + amount <= maxSupply)
transferAuthority(multisig)
revokeAuthority() // terminal state
生产系统还会使用时间锁、提案哈希、执行延迟和升级管理员。这里把复杂治理压缩成一条可重放的权限状态转换,帮助你先分清“谁能执行”和“执行内容是否合理”是两个问题。
把增发权限移交给 2/3 多签后,创建者单独提交 mint 应该发生什么?
用四个问题审计发行器
- 上限、当前总供应和流通供应是否被分别记录?
- mint、transfer、claim、burn 是否各自留下了不同事件?
- 权限移交和撤销是否能被确定性重放?
- 多签降低的是密钥风险,还是也替你解决了经济决策?