Skip to content

Repository files navigation

Governance Roles Toolkit (AccessControl + Timelock + UUPS)

简洁可复用的治理基类与最少脚本/测试集,覆盖部署、暂停、Timelock 参数变更。

原理(简述)

  • 角色:
    • DEFAULT_ADMIN_ROLE = Timelock(建议由 Safe 控制)
    • PARAM_ADMIN_ROLE = 参数治理(通常也是 Timelock)
    • PAUSER_ROLE = 紧急暂停 Guardian
  • UUPS 升级:升级授权仅对 DEFAULT_ADMIN_ROLE 开放。
  • Timelock:所有参数变更通过 Timelock 的 schedule/execute 流转。

安装与准备

pnpm i   # 或 yarn / npm i
cp .env.example .env
pnpm build
pnpm test

.env 关键项:

  • PRIVATE_KEY, RPC_SEPOLIA, RPC_MAINNET
  • SAFE_ADDRESS, GUARDIAN_SAFE
  • 部署后回填:SERVICE_PROXY, TIMELOCK_ADDRESS

建议环境:Node 20 LTS(CI 使用 Node 20)。

使用

部署到 sepolia:

NETWORK=sepolia pnpm deploy

示例治理(测试涵盖):

  • Guardian 暂停/恢复:PAUSER_ROLE
  • Timelock 变更参数:setFee(newFee) 通过 schedule → 延迟 → execute

事件

  • FeeUpdated(oldFee, newFee)
  • GuardianReplaced(oldGuardian, newGuardian)
  • GuardiansSet(guardians)

目录与脚本(精简)

  • 合约:contracts/
  • 测试:test/governance.e2e.ts
  • 脚本:
    • scripts/deploy.ts: Timelock + Proxy 部署
    • scripts/upgrade.ts: 预备实现 + 生成升级 calldata(需配合 Timelock)

安全说明

  • 可升级合约包含 __gap 预留以稳定存储布局。
  • 升级与参数变更均建议经由 Timelock 控制并由 Safe 提案与执行。

About

多签工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages