
明确适用范围与资产类型
讨论区块链生成数字资产需要注意哪些问题,首先要区分资产表达方式与管理规则。这里主要讨论以太坊代币合约及其访问控制,相关接口与实现细节不能直接套用于所有区块链。
以太坊开发文档介绍了不同代币接口:ERC-20适合同质化代币,ERC-721适合非同质化代币,ERC-1155支持在同一合约中管理多种代币类型。标准选择应从业务需求出发:资产单位是否可以互换,是否需要独立标识,以及是否需要统一管理多类资产。
把接口兼容与发行规则分开检查
代币标准为钱包和应用提供一致的交互接口,有助于系统组合使用。接口兼容仍需结合具体实现验证,不能仅凭标准名称判断所有功能都能正常衔接。
生成资产前,应明确谁可以铸造、谁可以销毁,以及哪些账户能够调整这些权限。标准名称本身不能回答这些问题。例如,选择了同质化代币接口后,仍需检查铸造入口是否受到预期的授权约束。
按职责划分管理权限
OpenZeppelin访问控制文档区分了单一所有者与基于角色的管理方式:前者适合管理职责集中的简单系统,后者可拆分铸造、销毁等权限;角色管理员还能够授予或撤销相应角色。
检查权限时,需要同时看操作权限和授权权限。某账户当前没有铸造角色,如果它能够为自己授予该角色,仍具有间接控制铸造的能力。按最小权限原则分配职责,应覆盖这条授权路径。
检查交接、退出与持续可用性
管理账户变更时,接收方是否能够正常操作合约,是交接检查的重点。两步交接通过接收方确认来降低误转风险;多签管理可以让关键操作由多个参与者共同确认,但具体控制能力仍取决于配置。
放弃所有权会使仅限所有者调用的功能无法继续执行。如果系统还需要这些管理功能,退出管理可能影响后续运行。同时,所有者权限和其他角色权限应分别核对,不能只检查一个账户是否退出。
常见问题:能铸造是否就算完成
一次铸造成功,只说明该次调用在当时满足执行条件。完整检查还应覆盖未授权账户调用、角色撤销后的调用,以及权限交接后的功能表现。
权限也可能随运行过程变化。检查时应把角色变更记录与当前授权状态对应起来,明确谁能生成资产、谁能改变规则,以及管理权限失效后哪些功能仍可使用。