简洁可复用的治理基类与最少脚本/测试集,覆盖部署、暂停、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_MAINNETSAFE_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 提案与执行。