来源:IOSG Ventures
近一年以来,EigenLayer 已经发布了他们的白皮书、完成了 5000 万美金的 A 轮融资,并且上线了第一阶段的主网。在此期间,以太坊社区围绕 EigenLayer 及其用例也展开了广泛的讨论。本文将围绕这些讨论进行跟踪和梳理。
背景
在以太坊生态中,一些中间件服务(例如预言机)不完全依赖链上逻辑,因此无法直接借助以太坊的共识和安全,需要重新引导信任网络。通常做法是先由项目方进行运营,再引入代币激励,吸引系统参与者,逐渐实现去中心化。
这样做至少有两个难点。一是引入激励机制需要额外成本:参与者购买代币参与质押的机会成本,以及项目方维持代币价值的运作成本。二是即便付出了上述成本并构建了一个去中心化网络,其安全性、持续性如何,仍然是未知数。对于初创项目而言,这两点显得尤其棘手。
EigenLayer 的想法是:由现有的以太坊质押者进行再次质押 (Restaking),从而为这些中间件 (Actively Validated Services, AVS) 提供经济安全。如果这些再质押者诚实工作可以获得奖励,若作恶则会导致原有的以太坊质押敞口被罚没。
这样做的好处是:其一,项目方不需要自己引导新的信任网络,而是外包给以太坊验证者,尽可能地降低了资金成本;其二,以太坊验证者集合的经济安全非常牢固,使安全性也得到了一定的保证。从以太坊质押者的角度看,再质押为他们提供了额外收益,只要没有主观作恶意图,整体风险可控。
EigenLayer 的创始人 Sreeram 曾在推特和播客提及 EigenLayer 的三种用例和信任模型:
经济信任。即以太坊质押敞口的重用,更高价值代币的质押意味着更健壮的经济安全,上文已有讨论。
去中心化信任。一些服务(例如秘密共享)的恶意行为可能无法归因,也就无法依赖于罚没机制。需要足够去中心化、独立的群体来做某件事情,以防范共谋和串通风险。
以太坊验证者承诺。区块生产者以质押敞口为抵押,做出某些可信承诺。下文我们会列举一些例子进一步说明。
系统参与者
EigenLayer 作为开放市场,连接三方的主要参与者。
再质押者。如果拥有以太坊质押敞口,可以通过将提款凭证转移到 EigenLayer 来参与再质押,或简单地存入 stETH 等 LST 来参与。如果再质押者自己无法运行 AVS 节点,亦可将其敞口委托给操作员。
操作员。操作员接受再质押者的委托,并运行 AVS 节点。他们可以自由选择为哪些 AVS 提供服务。一旦为 AVS 提供服务,就需要接受其定义的罚没规则。
AVS。AVS 作为需求方/消费者,需要向再质押者付费,并获得其提供的经济安全。
有了这些基本概念之后,我们来看 EigenLayer 的具体用例。
EigenDA
EigenDA 是 EigenLayer 推出的旗舰产品,解决方案源自于以太坊扩容方案 Danksharding。其中的数据可用性采样 (Data Availability Sampling, DAS) 也被广泛应用于 Celestia、Avail 等 DA 项目中。本章我们将快速介绍 DAS,随后看看 EigenDA 的实现方式及其创新之处。
DAS
作为 Danksharding 的前置方案,EIP-4844 引入了「Blob-carrying Transaction」,每笔交易将额外携带约 125kb 大小的数据。在数据分片扩容路线的背景下,新增的数据无疑加重了节点的负担。那么,有没有一种办法使得节点只下载小部分数据,也可以验证所有数据是可用的?
DAS 的做法是,让节点对小部分数据进行多次随机采样。每次成功采样都会增加节点认为数据可用的置信度,一旦达到某个预设水平,就认为数据可用。然而,攻击者仍然有可能隐藏一小部分的数据——我们还需要某种容错机制。
DAS 采用了纠删码 (Erasure Coding)。纠删码的主要思想是将数据分成多个块,然后对这些块进行编码,生成额外的冗余块。这些冗余块包含了原始数据块的部分信息,使得当一些数据块丢失或损坏时,可以通过冗余块来恢复丢失的数据块。这样,纠删码为 DAS 提供了冗余性和可靠性。
此外,我们还需要验证得到的冗余块是否被正确编码,因为使用错误的冗余块无法重建原有的数据。Danksharding 采用了 KZG (Kate-Zaverucha-Goldberg) 承诺。KZG 承诺是一种用于验证多项式的方法,能够证明多项式在特定位置的值与指定的数值一致。
证明者选择一个多项式 p(x),并使用 p(x) 计算对每个数据块的承诺,称为 C1、C2、...、Cm。证明者将承诺与数据块一起发布。为了验证编码,验证者可以随机采样 t 个点 x1, x2, ..., xt ,并要求证明者在这些点上打开承诺:p(x1), p(x2), ..., p(xt)。使用拉格朗日插值,验证者可以从这些 t 个点重建多项式 p(x)。验证者现在可以使用重建的多项式 p(x) 和数据块重新计算承诺 C1'、C2'、...、Cm' 并验证它们是否与已发布的承诺 C1、C2、...、Cm 匹配。
简而言之,使用 KZG 承诺,验证者只需要一小部分的点即可验证整个编码的正确性。这样,我们就得到了完整的 DAS。
How
EigenLayer 借鉴了 DAS 的思路,并把它应用于 EigenDA 中。
1. 首先,EigenDA 的节点在 EigenLayer 合约中进行再质押并注册。
2. 其次,Sequencer 在拿到数据之后,把数据切分成多个块,使用纠删码生成冗余块,并计算每个数据块对应的 KZG 承诺。Sequencer 把 KZG 承诺逐一发布到 EigenDA 合约作为见证。
3. 随后, Sequencer 把数据块连同其 KZG 承诺逐一分发给各个 EigenDA 节点。节点拿到 KZG 承诺后,与 EigenDA 合约上的 KZG 承诺进行比较,确认无误后存储数据块,并进行签名。
4. 之后再由 Sequencer 收集这些签名,生成聚合签名并发布到 EigenDA 合约,由 EigenDA 合约验证签名。签名验证无误后,就完成了整个流程。
在上述流程中,由于 EigenDA 节点仅仅通过签名来声称自己对数据块进行了存储。我们还需要一种方法来确保 EigenDA 节点没有撒谎。EigenDA 采用了托管证明 (Proof of Custody)。
托管证明的思路是在数据中放一个「炸弹」,一旦节点对它进行签名,就会被罚没。为了实现托管证明,需要设计:一个秘密值,用于区分不同的 DA 节点,防止作弊;一个特定于 DA 节点的函数,以 DA 数据和秘密值作为输入,以有无炸弹作为输出。如果节点没有存它该存的完整数据,就无法计算这个函数。Dankrad 曾经在博客上分享过托管证明的更多细节。
如果出现懒惰节点,任何人可以提交证明给 EigenDA 合约,合约会验证这个证明,若验证通过则对懒惰节点进行罚没。
在硬件要求方面,在 1 秒内计算 32 MB 数据的 KZG 承诺大约需要 32-64 核 CPU,但这个要求仅针对 Sequencer 一方,并不会对 EigenDA 节点施加负担。在 EigenDA 的测试网中,100 个 EigenDA 节点的吞吐量达到了 15 MB/s,而对节点下载带宽的需求仅为 0.3 MB/s(远低于运行以太坊验证者的要求)。
综上所述,我们可以看到 EigenDA 实现了数据可用性与共识的解耦,数据块的传播不再受限于共识协议和 P2P 网络吞吐量低的瓶颈。因为 EigenDA 相当于搭了以太坊共识的便车:Sequencer 发布 KZG 承诺和聚合签名、由智能合约验签、对恶意节点进行罚没的过程都在以太坊上发生,由以太坊提供共识保证,因此无需重新引导信任网络。
Problems of DAS
当前,DAS 作为技术本身也存在一些局限性。我们需要假设恶意的对手方会尽可能采取各种手段来愚弄轻节点,使其接受虚假的数据。Sreeram 曾在他的推文里作了如下阐述。
为了让单个节点有足够高的概率认为数据可用,需要满足以下要求:
随机采样:要求每个节点独立且随机地选择一堆样本进行采样,而对手方不知道谁请求了哪些样本。这样,对手方就无法相应地改变策略来欺骗节点。
并发采样:要求 DAS 由多个节点同时进行,使得攻击者无法区分一个节点的采样与其他节点的采样。
私有 IP 采样:意味着为每个查询的数据块使用一个匿名 IP。否则对手可以判别进行采样的不同节点,选择性地向节点提供其已经查询过的部分,而不提供其他部分的数据。
我们可以让多个轻节点进行随机采样来满足并发性和随机性,但目前没有好的方法来满足私有 IP 采样。因此仍然存在针对 DAS 的攻击向量,使 DAS 目前只提供较弱的保证性。这些问题仍在被积极解决中。
EigenLayer & MEV
Sreeram 在 MEVconomics Summit 中谈到了 EigenLayer 在 MEV 堆栈中的应用。围绕质押和罚没的加密经济原语,提议者可以实现如下四种特性,也即上文提到的第三点——验证者承诺用例。
Event-driven Activation
诸如 Gelato 的协议可以实现对特定链上事件的进行反应。即对链上事件进行持续监听,一旦某个事件发生,随即触发一些预定义的操作,这些任务通常由第三方的监听器/执行者来完成。
之所以称其为「第三方」是因为,监听器/执行者和实际上处理区块空间的提议者之间并无联系。假设监听器/执行者触发了某一笔交易,但(由于某些原因)没有被提议者包含到区块中,这是无法被归因的,因此无法带来确定性的经济保证。
如果由参与再质押的提议者提供这项服务,他们就可以对操作的触发做出可信承诺,如果最终这些交易没有被包含在区块中,则提议者被罚没。这样相较于第三方监听器/执行者而言,提供了更强的保证。
在实际应用中(例如借贷协议),设置超额抵押率的目的之一是为了覆盖一定时间范围内的价格波动。这与清算前的时间窗口相关,更高的超额抵押率意味着更长的缓冲期。如果有大部分的交易采取事件驱动反应的策略,且拥有提议者提供的强保证,那么(对于流动性高的资产而言)超额抵押率的波动性就可能被限制在几个区块间隔内,从而降低超额抵押率并提高资本效率。
Partial Block Auction
在当前 MEV-Boost 的设计中,提议者把区块空间完全外包给构建者,只能被动接收并提议构建者提交的整个区块。相较于分布更加广泛的提议者而言,构建者只有极少数,他们可能串通起来,对特定交易进行审查和勒索——因为提议者无法在 MEV-Boost 中包含自己想要的交易。
EigenLayer 提出了 MEV-Boost++ 对 MEV-Boost 进行升级,在区块中引入了 Proposer-part,提议者可以在 Proposer-part 中包含任意交易。提议者也可以同时构建一个替代区块 B-alt,在中继没有释放 Builder_part 的情况下提议这个替代区块 B-alt。这种灵活性既确保了抗审查,又同时解决了中继的活跃性问题。
这与协议层设计——ePBS 提出的 crList 的目的是一致的,即我们需要确保广泛的提议者可以参与决定区块的构成,以实现抗审查。
Threshold Encryption
在基于阈值加密的 MEV 解决方案中,由一组分布式的节点管理加解密密钥。用户对交易进行加密,在交易被包含在区块中后才会被解密并执行。
然而阈值加密依赖于多数诚实假设。如果大多数的节点作恶,有可能导致解密后的交易没有被包含在区块中。进行再质押的提议者可以对加密后的交易进行可信承诺,以确保其被包含在区块中。如果提议者没有包含解密后的交易,那么会被罚没。当然,如果恶意的多数节点没有释放解密密钥,那么提议者可以提议一个空块。
Long-term Blockspace Auction
长期区块空间拍卖允许区块空间的买家提前预定某个验证者未来的区块空间。参与再质押的验证者可以做出可信承诺,如果到期没有包含买家的交易,则会被罚没。这种获得区块空间的保证有一些实用的案例。例如,预言机需要在一定的时间周期进行喂价;Arbitrum 上每 1-3 分钟、Optimism 每 30 秒 - 1 分钟向以太坊 L1 发布 L2 数据等等。
PEPC
我们再说回最近被以太坊社区广泛讨论的 PEPC (Protocol-enforced Proposer Commitment)。PEPC 实际上是 ePBS 的推广或者说通用化 (Generalization)。
让我们来逐一拆解这个逻辑链。
首先,以协议外 PBS MEV-Boost 为例,目前 MEV-Boost 依赖于以太坊协议级别的罚没机制,即如果提议者在同一区块高度对两个不同的区块头进行签名,他们会被罚没。因为提议者需要对中继提交的区块头进行签名,相当于该区块头与该提议者两者形成绑定,故使中继有理由相信,构建者的区块是会被提议的。否则提议者只能被迫放弃这个 Slot ,或者提议一个不同的区块(这会导致罚没)。此时提议者的承诺由质押/罚没这个经济安全来保证。
近似地,设计 ePBS 的一个重要原则是「honest builder publication safety」,即确保以诚实的构建者发布的区块会被提议。ePBS 作为协议内 PBS,将被纳入到以太坊的共识层中,由协议提供保证。
PEPC 是 ePBS 的进一步推广。ePBS 承诺了「构建者的区块会被提议」这件事情,如果把这件事情扩展到部分区块拍卖、平行区块拍卖、未来区块拍卖等等,我们就可以让提议者做更多的事情——而协议层会确保这些事情被正确执行。
PEPC 与 EigenLayer 之间有着微妙的关系。不难发现,上述 PEPC 的用例与 EigenLayer 的区块生产者用例之间有几分相似之处。然而,EigenLayer 和 PEPC 的一个重要区别是:参与再质押的提议者理论上仍然可以违背他们的承诺,尽管会因此受到经济上的惩罚;而 PEPC 的重点在于「Protocol-enforced」,即在协议层上实现了强制性,如果承诺无法被执行,则区块无效。
(PS:粗略地来看,容易发现 EigenDA 类似于 Danksharding、MEV-Boost++ 类似于 ePBS,这两项服务就像是协议层设计的 opt-in 版本,对比协议层而言更快推出市场的解决方案,和以太坊未来要做的事情保持同步,并通过再质押保持 Ethereum Alignment)。
Don't Overload Ethereum Consensus?
数月前,Vitalik 的文章 Don't Overload Ethereum Consensus 被多数人认为是对 Restaking 的批评。笔者认为这只是一种对维护社会共识的提醒或警告,重点在于社会共识,而非对再质押的否定。
在以太坊的婴儿时期,The DAO 攻击事件曾引发巨大争议,社区就是否硬分叉进行了激烈的讨论。而如今,包括 Rollup 在内的以太坊生态已经承载了庞大的应用。因此,避免在社区内引起极大分歧,保持社会共识的一致性是非常重要的。
Hermione creates a successful layer 2 and argues that because her layer 2 is the largest, it is inherently the most secure, because if there is a bug that causes funds to be stolen, the losses will be so large that the community will have no choice but to fork to recover the users' funds. High-risk.
以上对原文的引用是一个很好的例子。今天 L2 的总 TVL 超过百亿美金,如果出现问题,牵扯极大。此时若社区提议执行硬分叉,对状态进行回滚,必然会引起巨大争议。假设你我有一笔不小的资金在上面,将会如何选择 —— 拿回这笔钱还是敬畏区块链的不可篡改性?Vitalik 的点是:依赖于以太坊构建的项目应该妥善管控风险,不应该试图拉拢以太坊的社会共识,把项目的生死存亡和以太坊进行强绑定。
回归到 EigenLayer 的讨论上,管控风险的重点是 AVS 需要定义客观的、链上可查的、可归因的罚没规则,以避免产生分歧。例如,在以太坊上对区块进行双重签名;在基于轻节点的跨链桥中对另一条链的无效区块进行签名;上述讨论的 EigenDA 托管证明等等。诸如此类都属于清晰的罚没规则。
结语
EigenLayer 预计将于明年年初完成主网上线,并推出其旗舰产品 EigenDA。目前已有许多基础设施项目宣布了他们和 EigenLayer 的合作。我们在上文讨论了 EigenDA、MEV 和 PEPC,围绕不同的用例,许多有趣的讨论还在进行中。再质押正在成为市场的主流叙事之一。我们会持续跟进 EigenLayer 的进展并分享任何观点!