SuperVaults 如何使用默克尔证明来锁定哪些代码可以接触您的资金 🔐 每个 DeFi 金库都需要与外部协议进行交互 - 存入收益来源、代币批准、赎回。但您如何确保只有经过批准的操作可以执行? SuperVaults 通过一个默克尔证明验证层来解决这个问题。 核心思想- 每个允许的操作都是默克尔树中的一个叶子:hash(hookAddress + encodedArgs) 想要将 USDC 存入 Yearn?这个确切的组合 - 存款钩子地址 + Yearn 金库 + USDC - 必须作为树中的一个叶子存在。 没有证明 = 交易回滚。 但这还不是全部,supervaults 具有两级安全模型: 1️⃣ 全局树(每条链) - 任何金库都可以执行的通用操作。存款、批准、交换。这里没有复杂的内容。 2️⃣ 管理树(每个金库) - 可以将资金移出特定策略的操作。赎回、转账。每个金库都有自己的树,具有白名单目的地。 这种分离意味着即使有人妥协了全局配置,他们也无法添加任意的提款目的地。那些存在于特定金库的管理树中。 验证内容- 不是每个参数 - 只是安全关键的参数。对于批准钩子,我们验证 (token, spender) 但不验证金额。默克尔参数是信任边界。 根更新有时间锁。 不能在同一块中推送恶意根并排空。更改被提议 → 等待 → 执行。给监控系统时间来标记可疑更新。 为什么选择默克尔树- - O(log n) 证明大小 - 一个包含 10,000 个批准操作的树仍然只需要 ~13 个哈希来证明成员资格 - 确定性 - 相同的配置总是产生相同的根 - 链上验证成本低 - 只需哈希证明路径并与存储的根进行比较 结果:一个可以与数十个协议和成千上万的代币/收益来源组合进行交互的金库,但只有配置中批准的确切组合。其他所有内容都会被拒绝。