9.3 Emergency Response Protocol (ERP)

尽管 OmniPact 经过了严格的审计和形式化验证,但在面对未知的零日漏洞 (Zero-day exploits) 时,协议必须具备“故障安全 (Fail-Safe)”能力。ERP 协议旨在将攻击造成的损失限制在可控范围内,防止系统性崩溃。

9.3.1 Circuit Breakers & Rate Limiting

为了防止资金在短时间内被大规模盗取,我们在 OmniVault 核心合约中内置了算法熔断器 (Algorithmic Circuit Breakers)。这是一套被动的防御逻辑,不需要人工干预即可自动触发。

1. 资金流出速率限制 (Outflow Rate Limiting)

我们对 OmniVault 设置了基于时间窗口的提款上限。

Limit(t)=TVLt1×MaxDrawdownPercentageLimit(t) = TVL_{t-1} \times \text{MaxDrawdownPercentage}
  • 机制: 如果在一个特定的时间窗口(如 1 小时)内,净流出资金超过了 TVL 的 10%(安全阈值),合约将自动触发 Suspension 状态。

  • 效果: 这使得黑客即使获取了控制权,也无法一次性卷走所有资金,给了团队和社区宝贵的反应时间。

2. 价格偏差熔断 (Price Deviation Breaker)

当预言机(Chainlink)喂价发生剧烈波动(如 1 小时内暴跌 99%),或者与备用预言机(如 Uniswap TWAP)的价差超过 5% 时,涉及该资产的所有清算和兑换操作将自动暂停。

9.3.2 Pausable Interfaces

基于 OpenZeppelin Pausable 标准,我们将协议的功能划分为不同的安全等级,实施精细化的暂停控制。

1. 架构实现 (Implementation)

核心合约继承自 PausableUpgradeable。关键的状态修改函数(State-changing functions)都被 whenNotPaused 修饰符保护。

Solidity

2. 触发权限 (Trigger Authority)

  • Guardian Multisig (6-of-9): 为了应对秒级攻击,一个由核心开发者和受信任的社区领袖组成的多签钱包拥有立即暂停 (Instant Pause) 协议的权限。

  • 注意: 为了防止权力滥用,Guardian 只有暂停权,没有解除暂停权 (Unpause)。解除暂停必须通过 DAO 的时间锁 (Timelock) 提案投票通过。这确保了紧急状态的结束必须经过社区的审慎评估。

3. 应急响应流程 (The ERP Workflow)

一旦 Forta 监控机器人侦测到攻击特征:

  1. Freeze (冻结): 熔断器自动触发或 Guardian 手动调用 pause()。此时,所有充值、交易创建、资金提取被冻结。

  2. Diagnose (诊断): 安全团队与审计公司(如 Trail of Bits)介入,分析攻击向量,确定受损范围。

  3. Patch (修补): 开发团队编写修复补丁,并通过 UUPS 代理模式部署新的逻辑合约实现 (Implementation)。

  4. Vote & Restart (投票与重启): 修复方案提交 DAO 投票。社区验证无误后,投票执行 upgradeTo()unpause(),协议恢复正常运行。