搜索公开的指南、工具和课程页面。

RWA Engineering

智能合约访问控制

绘制业务角色、角色管理员和升级权限,验证撤销、紧急恢复及越权边界。

学习目标

  • 将特权动作对应到执行者
  • 设计撤销和紧急状态转移

AI 辅助译编稿。角色仅供教育,不使用生产密钥。对应英文稿:core-21。

Learning objectives · 学习目标

  • 将特权动作对应到获准执行者。
  • 区分角色操作与角色成员管理。
  • 设计撤销和紧急操作,避免隐藏绕过。

Mechanism · 谁能改变授权

不能只看铸造函数有没有角色检查,还要看谁能取得角色、改变管理员或替换实现。OpenZeppelin Contracts 5.x 中,角色管理员控制授予和撤销角色,持有业务角色不自动拥有成员管理权。默认管理员默认管理其他角色及自身,权限很高。OpenZeppelin:Access Control

文档中的默认管理员规则、两步交接和延时机制有各自前提。延时提供观察窗口,不会让恶意行为自动变好;提议者或执行者权限丢失也可能锁住系统。授权、等待时间和恢复是不同维度。

Worked example · 铸造者能自行加人

假设代币有 MINT 操作角色和 ADMIN 管理角色。MINT 只能执行已批准认购数量,只有 ADMIN 可授予 MINT。但实现错误地允许 MINT 给任意地址授予 MINT。

正常测试中,授权铸造者成功创建 100 单位,无法发现问题。应测试被禁止的「铸造者自行任命同伙」。若成功,业务授权边界已扩大。修界面按钮不能修角色成员写入点,规则应在成员管理责任处执行。

操作密钥泄露时,撤销 MINT 应移除未来权限;已经提交或排程的操作还需明确处理。若虚构升级政策为等待 48 小时,应问谁提议、谁执行、谁取消、丢失角色怎么办。48 小时不是通用推荐值。

认购审查人 → 批准业务数量
铸造者 → 只执行获准发行
角色管理员 → 授予/撤销铸造者
升级管理员 → 按独立控制更改实现
紧急角色 → 有边界的暂停与恢复

画成多个框,不证明密钥或人员真正独立,应核查实际成员与共同控制。

Action matrix · 明确动作及效果边界

列出铸造、销毁、冻结、恢复、政策修改、角色授予撤销和升级,分别记录执行者、先决证据、允许效果、审计和恢复。事件记录某地址操作,不证明该地址有正确的业务批准。

测试正常、未授权、已撤销和边界情况。暂停应阻止承诺阻止的路径,不能悄悄增加权力。恢复不应绕过资格、会计或法律授权。正确的角色模型仍可能因复制密钥、签署人不可用或共同依赖被攻破而失败。

Common misconceptions · 常见误解

只有授权人能铸造,治理就安全。 成员管理和升级可以改变谁获授权。

延时就等于批准。 时间不是同意或法律授权。

紧急功能应绕过所有控制。 无边界恢复可能成为最大攻击面。

Risks and limits · 风险与边界

本文基于 2026-10-18 读取的版本特定技术文档,不审计部署或证明签署人独立。治理错误、密钥泄露和恢复角色不可用需要证据与演练。

Exercise and answer · 练习与答案

练习: MINT 不能直接升级,但能通过成员漏洞授予自己 ADMIN,升级边界完整吗?

答案: 不完整。应判断可达权限,成员管理路径已经允许升级越权,必须在该责任处执行规则。

继续工程课程的外部数据与安全,按Build的教育边界检查模型。

Source map · 来源与证据范围

openzeppelin-access-control 为 OpenZeppelin Contracts 5.x 官方技术文档,2026-10-18 核查。角色名、100 单位和 48 小时均为原创假设,没有测试真实合约、密钥保管或治理行为。译稿须独立人工审查。

检验你的理解

正在准备知识检查控件…

铸造者可以给自己 ADMIN,升级函数有角色检查是否足够?

答案仅保留在当前标签页,不创建账户或持久学习记录。

来源证据

OpenZeppelin · Version-specific technical documentation; no legal or deployed-contract assurance

Access Control — OpenZeppelin Contracts 5.x

获取日期: 2026-10-18 · VERIFIED OFFICIAL · VERIFIED

相关课程与研究

返回课程提纲

提交内容更正建议 · [email protected]

请注明页面或章节 ID、具体陈述及支持来源。链接仅打开邮件应用,本站不会发送内容。请勿提供账户信息、余额、身份证明或私钥。