
权益管理的讨论范围
区块链权益管理有哪些常见问题,需要先明确“权益”的含义。本文讨论智能合约中代币发行、投票、转移限制等操作的授权管理。访问控制能够规定某个地址可以执行什么操作,但仅凭地址拥有权限,不能推导出其拥有对应的现实法律权益。
权限过大与管理员集中
常见问题是把不同职责交给同一个账户。例如,负责日常管理的账户同时拥有发行和升级权限,会扩大账户失控时的影响范围。权限设计应围绕具体操作划分,而不是让所有管理人员共享全部能力。

OpenZeppelin 的访问控制文档区分了单一所有者与角色授权,并说明角色管理员负责授予和撤销权限。因此,检查业务角色之外,还需检查谁能重新分配这些角色;表面上的职责分离,可能仍由同一管理员控制。

权限交接与撤销不完整
管理人员变更时,只向新地址授予权限可能留下旧地址继续操作的入口。完整交接需要同时考虑新权限是否生效、旧权限是否撤销,以及是否存在其他管理角色。
所有权转给无法操作的地址,或放弃仍被业务依赖的管理权限,都可能使相关功能无法使用。两步交接要求接收方主动确认,适用于需要降低误转风险的场景,但不能替代对接收方身份和职责的核实。
多个账户不等于共同审批
角色分工与多签解决的问题不同:前者限制各账户能做什么,后者要求一项操作获得多个签名。若多个账户各自都能独立执行敏感操作,增加账户数量并没有形成共同审批。
多签适合需要多人确认的管理操作,但其效果取决于签名权是否真正分散。若多个签名密钥仍由同一主体控制,共同审批的约束就会减弱。
权限记录难以核对
权限会随授予和撤销发生变化,初始配置不能代表当前状态。核对时需要关注有效权限及其变更记录,避免把历史授权误认为现有权限。基础 AccessControl 不提供链上成员枚举,角色追踪可依赖授权与撤销事件;需要链上列举成员时,则需相应扩展。
授权正确仍可能存在逻辑漏洞
以太坊智能合约安全文档强调访问控制、执行条件检查、测试和独立审查的配合。权限检查只能回答调用者是否获准操作,不能保证操作数量、状态转换或其他业务条件正确。
例如,获准发行的账户仍应受合约既定规则约束。验证应覆盖正常操作、越权调用和异常状态。审计可以增加发现问题的机会,却不能保证没有漏洞;形式化验证的结论也受所验证的性质、模型及假设限制。