详解Proof of Validator:以太坊扩容路上关键的安全拼图
原文作者:深潮 TechFlow
今天,在以太坊研究论坛中悄然诞生了一个新的概念:Proof of Validator。
该协议机制允许网络节点证明它们是以太坊验证者,而无需透露它们具体的身份。
这和我们有什么关系?
一般情况下,市场更容易关注以太坊上某些技术创新所带来的表层叙事,而很少提前深入研究技术本身。例如以太坊的上海升级、合并、从 PoW 转到 PoS 以及扩容,市场只记住了 LSD、LSDFi 以及再质押的叙事。
但不要忘记,性能和安全是以太坊的重中之重。前者决定了上限,后者则决定了底线。
可以明显看到,一方面以太坊一直在积极推进各种扩容方案来提升性能;但另一方面,扩容路上,除了自己修炼内功,也需要防范外来的攻击。
例如,如果验证节点被攻击,导致数据不可用,那么一切构建在以太坊质押逻辑上的叙事和扩容方案,可能都会被牵一发而动全身。只是这种影响和风险躲在背后,最终用户和投机者们难以察觉,有时甚至也不关心。
而本文要谈到的 Proof of Validator,可能就是以太坊扩容路上关键的安全拼图。
既然扩容势在必行,如何降低扩容过程中可能蕴含的风险,是一个不可回避的安全议题,它也与我们每一个圈内人休戚相关。
因此,有必要弄清楚新提出的 Proof of Validator 的全貌。但由于技术论坛中的全文过于零碎和硬核,并且牵扯到了扩容诸多方案和概念,深潮研究院整合原帖和梳理必要的相关信息,对 Proof of Validator 产生的背景、必要性和可能影响进行了解读。
数据采样(Data Availability Sampling): 扩容的突破口
别着急,在正式介绍 Proof of Validator 之前,有必要搞清楚以太坊目前扩容的逻辑,和其中可能蕴含的风险。
以太坊社区正在积极推进多项扩容计划。其中,数据可用性采样 (简称 DAS) 被视为最关键的一项技术。
其原理是将完整的区块数据分割成若干“样本(sample)”, 网络中的节点只需要获取与自己相关的少数样本,就可以对完整区块进行验证。
这极大地降低了每个节点的存储和计算量。换一个好理解的例子,这就类似我们抽样调查,通过访问不同人,可以总结出全体人群的总体状况。
具体来说, DAS 的实现方式简述如下:
-
区块生产者把区块数据分割成多个样本。
-
每个网络节点只取到其关注的少数样本,而不是完整的区块数据。
-
网络节点可以通过获取不同的样本,来随机采样验证完整区块数据是否可用。
通过这种采样,即使每个节点只处理少量数据,合起来也可以完整验证整个区块链的数据可用性。这可以使得区块大小大幅提升,实现快速扩容。
但是,这种采样方案有一个关键问题:海量样本存储在何处?这需要一整套去中心化网络来支持。
分布式哈希表(Distributed Hashed Table): 样本的家
这就给了分布式哈希表(DHT)机会大显身手。
DHT 可以看作是一个巨大的分布式数据库,使用哈希函数将数据映射到一个地址空间中,不同节点负责存取不同地址段的数据。它可以用于在海量节点中快速查找和存储样本。
具体来说, DAS 将区块数据分割成多份样本后,需要将这些样本分布到网络中的不同节点上存储。DHT 可以提供一种去中心化的方法来存储和检索这些样本,其基本思路是:
-
使用一致的哈希函数,将样本映射到一个巨大的地址空间中。
-
网络中的每个节点负责存储和提供一个地址范围内的数据样本。
-
当需要某个样本时,可以通过哈希查找对应地址,并在网络中查找负责该地址范围的节点,从中获取样本。
比如,按一定规则可将每个样本哈希为一个地址,节点 A 负责 0-1000 号的地址,节点 B 负责 1001-2000 号的地址。
那么地址为 599 的样本会存储在节点 A 中。需要这个样本时,通过同样的哈希查找地址 599,再在网络中查找负责该地址的节点 A,从它那里获取样本。
这种方式打破了中心化存储的局限,大大提升了容错性和可扩展性。这正是 DAS 样本存储所需要的网络基础设施。
与中心化的存储和检索相比, DHT 可以提高容错性,避免单点故障,也能增强网络的扩展性。此外, DHT 还能帮助抵御 DAS 中提到的“sample hiding”等攻击。
DHT 的痛点: 女巫攻击
但是, DHT 也存在一个致命弱点,那就是面临 Sybil 攻击的威胁。攻击者可以在网络中制造大量假节点,周围的真实节点就会被这些假节点“淹没”。
类比一下,一个诚实的小贩被整排整排的假冒商品围住,用户就很难找到真品。这样攻击者就可以控制 DHT 网络,导致样本不可用。
举例来说,要获取地址 1000 的样本,需要找到负责这个地址的节点。但是被攻击者创建的成千上万假节点包围后,请求会被不断导向假节点,而无法到达真正负责该地址的节点。结果是样本无法获取,存储与验证都失败。
为了解决这个问题,需要在 DHT 上建立一个高信任的网络层,仅由验证者节点参与。但是 DHT 网络本身无法识别节点是否为验证者。
这就严重阻碍了 DAS 和以太坊扩容。有什么办法可以抵御这种威胁,保证网络的可信任性呢?
Proof of Validator: 守卫扩容安全性的 ZK 方案
现在,让我们回到这篇文章的重点:Proof of Validator。
在以太坊技术论坛中,今天 George Kadianakis , Mary Maller , Andrija Novakovic , Suphanat Chunhapanya 4 人共同提出了这个方案。
它的总体构想是,如果我们能想出一种办法,让上一节 DHT 的扩容方案中,只允许诚实的验证者加入 DHT,那么想要发起女巫攻击的恶意者,也必须质押大量 ETH,在经济上显著提高作恶成本。
这个构想换一句我们更加熟悉的话来说,就是:我想在不知道你身份的前提下,知道你是个好人,并且能识别坏人。
这种有限信息的证明场景,零知识证明显然能派上用场。
于是,Proof of Validator(下称 PoV)可用于建立一个只由诚实验证节点组成的高可信 DHT 网络,有效抵御女巫攻击。
其基本思路是,让每个验证节点在区块链上注册一个公钥,然后利用零知识证明技术,证明自己知悉这个公钥对应的私钥。这就相当于拿出自己的身份证明明自己是验证节点。
此外,对于验证节点的抗 DoS(拒绝服务) 攻击,PoV 还旨在隐藏网络层上验证者的身份。也就是说,该协议不希望攻击者能够分辨出哪个 DHT 节点对应于哪个验证节点。
那么具体要怎么做?原帖用了大量的数学公式和推导,在此不做赘述,我们给出一个简化的版本:
具体实现上,使用 Merkle 树或 Lookup 表。比如利用 Merkle 树,证明注册公钥存在于公钥列表这棵 Merkle 树中,然后证明从这个公钥派生出的网络通信公钥是匹配的。整个过程利用零知识证明实现,不会泄露实际身份。
跳过这些技术细节,PoV 最终实现的效果是:
只有通过身份验证的节点才能加入 DHT 网络,其安全性大大增加,可以有效抵御 Sybil 攻击,防止样本被故意隐藏或修改。PoV 为 DAS 提供了一个可靠的基础网络,间接帮助以太坊实现快速扩容。
不过,当前 PoV 还处在理论研究阶段,能否落地还存在不确定性。
但该贴的几位研究员已经在小范围进行了实验,结果显示,PoV 在提出 ZK 证明的效率上,以及验证者接收证明的效率还不错。值得一提的是,他们实验设备只是一台笔记本,里面装的还仅仅是一颗 5 年前的 Intel i 7 处理器。
最后,当前 PoV 还处在理论研究阶段,能否落地还存在不确定性。但是无论如何,它代表了区块链通往更高扩展性的重要一步。作为以太坊扩容路线图中的关键组件,它值得整个行业持续关注。