CSM 早期采用提案

lido__ 发布于 2024-03-09 阅读 9

本文是 Lido 社区质押模块(CSM)早期采用机制的提案,提出使用 Merkle 证明作为早期采用期间的入场券,以限制专业运营商垄断,确保社区质押者参与。提案建议在早期采用阶段将每个运营商的验证者数量硬限制为 10 个,并为早期采用者提供首个验证者的债券折扣激励。文章还讨论了实施细节,如单独部署 CSEarlyAdoption 合约、配置结束时间戳,以及对比了 NFT 方案与 Merkle 证明的成本,最终认为 Merkle 证明更经济。

摘要

本文档描述了 CSM 早期采用机制的一种可能方案。提议在主网早期采用期间,使用 Merkle proof 作为进入 CSM 的入场券。在早期采用期间,每位操作者的密钥数量上限为 10 个。除能够加入 CSM 外,此类节点操作者还将有资格获得“首个验证者的保证金折扣”。

动机

需要一个早期采用期,以确保有意义的社区质押者能够参与 CSM,并避免一个或几个专业操作者立即占据所有 CSM 容量。在此期间,只有经过筛选的社区质押者才有资格加入 CSM。该阶段结束后,CSM 将完全开放,无需许可。为了让早期采用对社区质押者更具吸引力,应提供附录 1 中所述的额外福利。

谁有资格

CSM 有两个主要的早期采用质押者来源——Rated 的 solo 质押者列表,以及 Lido CS 社区参与者,即在 Galxe 的 Lido 空间中拥有足够分数的 OAT 持有者。获得足够 Galxe 分数的最佳方式是参与 SimpleDVT/CSM 测试网或 Lido 举办的活动。两个列表可能会在发布前合并为一个,因此两者之间的信任和条件不会有差异。

为什么限制每个操作者的密钥数量?

尽管在早期采用期间只有经过筛选的社区质押者才有资格加入 CSM,但仍有可能出现大型 Node Operator 伪装成社区质押者的情况。为了降低这类复杂参与者掌控 CSM 的风险,提议在早期采用期间将每位操作者的验证者数量硬上限设为 10。这将显著限制大型操作者在此期间占据大部分 CSM 质押的可能性。

在 CSM 侧使用 Proof

早期采用的实现依赖于一个独立的(也可能是虚拟的)CSEarlyAdoption 合约,其初步接口如下:

interface ICSEarlyAdoption {
    function checkAddress(address _address, bytes32[] proof) external view returns (bool);
    function consume(address _address, bytes32[] proof) external;
}

Merkle 树根仅在部署阶段设置,此后不会更改。在早期采用期间,执行 createNodeOperator* 系列方法时需要提供 proof,以确保发送者有资格加入并消耗该 proof。

    function addNodeOperatorETH(
        uint256 keysCount,
        bytes calldata publicKeys,
        bytes calldata signatures,
        bytes32[] calldata proof
    ) external payable {
        uint256 id = _createNodeOperator();

        if (earlyAdoption.checkAddress(msg.sender, proof)) {
            earlyAdoption.consume(msg.sender, proof);
            accounting.setBondCurve(id, earlyAdoptionBondCurve);
        } else if (block.timestamp < earlyAdoptionExpireTimestamp) {
            revert EarlyAccessDenied();
        }


        accounting.depositETH{ value: msg.value }(msg.sender, id);
        _addSigningKeys(id, keysCount, publicKeys, signatures);
    }

提议在部署阶段明确配置该时期结束的时间戳,之后忽略 Early Adoption 合约,允许任何人加入 CSM。DAO 以后可以更改此时间戳,以延长或缩短早期采用期的持续时间。

image 早期采用期内的操作

在早期采用期之后,可以传入 Merkle proof 作为可选参数,以获得早期采用激励。

image 早期采用期之后的操作

附录 1. 早期采用者的激励

使用 CSM 保证金曲线作为早期采用者的激励

在 CSM 中引入任意保证金曲线后,出现了一些有趣的用例。其中一个用例是,为在早期采用期间加入 CSM 的节点操作者分配一条特定的曲线。

早期采用保证金曲线

早期采用期的主要想法之一是,让经过验证的 solo 质押者(来自 Rated 列表或由 Lido 贡献者识别)在完全无需许可的启动之前,于主网早期阶段加入 CSM。如果我们假设 CSM 主网参数(保证金规模和费用)将远优于其他市场提供的条件,那么更早加入本身就是一种好处。然而,如果 CSM 提供的是“市场内”条件,那么就应该为早期采用者提供一些好处,激励他们加入 CSM。

其中一个选择是降低所需的 ETH 保证金的准入门槛。在保证金曲线到位的情况下,这可以表现为一条修改过的曲线,其中第一个验证者所需的保证金低于普通曲线。同时,曲线的其余部分与普通曲线相同。

image

在为第一个验证者确定保证金数额时,该数额至少应覆盖个体罚没风险。其他风险可以暂不考虑。原因如下:

  • MEV 窃取
    • 只有一个验证者时,block_proposal * huge_MEV * malisious_validator_in_the_list 的概率可以忽略不计
  • 陈旧验证者
    • 如果保证金足以覆盖基本罚没,单个验证者大约需要两年时间才会出现余额下降超过保证金的情况。
  • 如果节点操作者创建更多验证者怎么办?
    • 在这种情况下,他们必须为第二个及后续验证者提供常规保证金金额。因此,整体覆盖情况与普通曲线的情形不会有太大差异。

也就是说,可以认为“更便宜地获得第一个验证者”可以作为对 CSM 早期采用者的一种激励。

附录 2. 常见 NFT 成本考虑

可以通过铸造 NFT 而不是进行 proof 检查来标记所有符合条件的地址。这将质押者列表变成一种潜在的公共物品,作为 solo 质押者的永久链上存储,以便其他协议复用。与常见的 EIP-721 实现(例如 来自 OpenZeppelin.html)不同,会有以下限制:

  • 不可转让
  • 每个地址一个 NFT
  • 不可销毁。协议侧应记录任何 NFT 的消耗;
  • 一次性使用。一个 NFT 等于协议侧的一次使用;

基于现有 OpenZeppelin 实现的粗略成本估算如下:

50000 gas per mint =>
60 gwei gas cost =>
~0.32 ETH per 100 mints

另一种实现,如 TokenGate,可能会有更低的 gas 成本:

26000 gas per mint =>
60 gwei gas cost =>
~0.15 ETH per 100 mints

基于这些估算,以及实现此类带有各种限制且需审计的 NFT 的额外成本,采用这种方式并不合理。因此,Merkle Proof 解决方案要便宜得多。

附录 3. 为早期采用节点操作者铸造 NFT

在早期采用期结束后,可以为所有 CSM 参与者铸造一个特殊的、有纪念意义的 NFT。最简单的方式是 Galxe 上的 OAT,也可能是一个单独的 NFT 合约,每个 NFT 都有独特的图像,比如 CSM 上的节点操作者 ID、验证者 graffiti 等。

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

相关文章

0 条评论