CSM 集成的一种可行方法

lido__ 发布于 2024-05-06 阅读 11

本文介绍了Lido社区质押模块(CSM)最近新增的能力:在创建节点运营商时,可以自定义设置managerAddress和rewardAddress。这一变化解决了此前创建节点运营商时必须使用单一地址提交初始债券和存款数据的问题,为更灵活的运营模式提供了可能。文章重点讨论了两种典型集成方案:一是类似DVT的做法,通过集群多签预先创建节点运营商;二是利用中间件实现自定义集成,例如为分布式验证技术(DVT)创建奖励拆分合约,或将验证者运行者和债券提供者的角色分离。此外,文章还强调了集成开发者需要考虑的安全问题,例如rewardAddress可以重置managerAddress,建议使用奖励拆分合约来防止债券管理者恶意夺取控制权。

前言

要在 CSM 中创建 Node Operator,至少需要一份 deposit data 和相应的 bond。创建 Node Operator 时,managerAddressrewardAddress 默认设置为 message.sender,以避免因配置错误导致资金损失。这两个事实使得在“bond provider + validator runner”模式或基于 DVT 的 validator 中难以正常运作。对于 DVT,创建 Node Operator 需要一个 multisig。尽管 managerAddressrewardAddress 都可以在 Node Operator 创建后更改,但在 Node Operator 创建期间,初始 bond 和 deposit data 仍然需要由单个地址管理。

最近新增了在创建 Node Operator 时设置自定义 managerAddressrewardAddress 的能力,这为各种各样的自定义 CSM 集成打开了大门。

类似 SimpleDVT 的方法

image

DVT operator 提前创建 Cluster Multisig,并使用它在 CSM 中创建 Node Operator。对 Node Operator 密钥的控制权可以保留在 Cluster Multisig 手中,或委托给 cluster leader(EOA 或 MultiSig)。rewardAddress(rewards 接收者)仍应为 Cluster Multisig,以确保 bond 和 rewards 的安全。

自定义集成

另一种方法可能是集成中间件(integration middleware)。CSM 允许在创建 Node Operator 时分配自定义的 managerAddressrewardAddress。这使得中间件可以在调用 addNodeOperator 之前准备和验证所需地址。

同样重要的是,bond 资金可以在 Node Operator 创建之前以自定义方式收集,这样可以带来更顺畅的 UX。

DVT

image

对于 DVT,中间件可以创建一个 splitter contract 作为 rewardAddress,并将 managerAddress 分配给 Cluster leader(EOA 或 MultiSig)。中间件可以存储关于 cluster 参与者和所需 rewards 分配算法的所有必要信息。

bond 也可以提前以自定义方式在中间件合约中收集。例如,cluster 参与者以无需信任的方式提供部分 bond,从而允许进一步创建 Node Operator 或上传额外的密钥。

由于 bond 充值是一种无需许可的操作(任何人都可以为现有 Node Operator 充值 bond),因此,Node Operator 创建后上传新密钥时采用何种合适的 bond 充值流程,由中间件开发者决定。

validator runner 与 bond provider 分离

image

自定义中间件也可以实现 validator runner 和 bond provider 的分离。在这种情况下,所有 rewards 都可以通过将 bond provider 设置为 rewardAddress 来转移给他。同时,可以将 managerAddress 分配给 validator runner(EOA 或 MultiSig),以便进行密钥管理。

bond provider 可以确信 validator runner 无法获取 bond 本身以及 rewards 的其他部分,因为所有这些都将分配给作为 rewardAddress 所有者的 bond provider。由 bond provider 决定实际的 reward 分配。

由于创建 Node Operator 需要至少上传一份 deposit data 以及 bond,中间件可以在创建 Node Operator 之前从 provider 收集 bond,从 validator runner 收集 deposit data。

对于后续的密钥上传,bond provider 可以使用无需许可的方法充值 bond。一旦充值完成,validator runner 就可以上传新的 deposit data。

注意:

集成开发者应考虑 rewardAddress 可以重置 managerAddress 这一事实。在 bond manager 和 validator runner 分离的情况下,集成应确保 bond manager 无法通过接管 managerAddress,在 CSM 未来版本实现 EIP-7002 之后触发 validator 退出,从而“rug”validator runner。

这可以通过使用无法重置 managerAddress 的 reward splitter contract 来实现。

  • 原文链接: hackmd.io/@lido/rkYTaoXW...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论