分布式验证者(DistributedValidators,DV)是一种将一个以太坊验证者的工作分配给一组分散节点的技术,以提高与在一个单一机器上运行一个验证者客户端相比的韧性(安全性、活性,或两者兼有)。
引介
动因
传统的验证者客户端设置
以太坊验证者通过用他们的质押私钥对消息签名(例如区块或证明)来参与权益证明(PoS)协议。质押私钥只能通过客户端软件来访问,客户端根据分配给验证者的职责安排消息的创建和签名。传统的验证者客户端设置会有一些风险:
质押私钥存在一个地方。如果一个攻击者获得了这个密钥,它可以创建冲突的消息,从而导致验证存款被罚没。
不运行自己的验证者的质押者需要把他们的质押私钥交给运营商。为了保证他们质押私钥的安全,他们必须信任该运营商。
如果验证者客户端软件不能创建及时的消息以履行验证者职责,该验证者会遭受怠工惩罚(inactivity),余额会减少。
这可能是由于软件崩溃、断网、硬件故障等原因造成的。
数据:以太坊网络总交易数量超过17亿笔:金色财经消息,据Etherscan数据,以太坊网络历史总交易数量超过17亿笔,截至目前为1,700,283,076笔。[2022/9/5 13:10:08]
如果验证者客户端连接的信标节点出现故障,验证者可能跟在一个少数节点所在的分叉上,导致在PoS协议的其他部分显示是离线状态。
分布式验证者协议
分布式验证者协议提供了一个解决方案,以减轻与传统的单个验证者设置相关的风险与担忧。此外,该协议还可以用来实现先进的质押设置,例如去中心化的质押池。
基本概念
请注意:请参考词汇表,了解分布式验证者规范中引入的新术语的解释。
分布式验证者背后的两个基本概念是:
共识:单个验证者的职责被分给几个共同验证者(co-validator),他们必须协作,在对任何消息签名之前就如何投票达成一致。
M-of-N门限签名(thresholdsignatures):验证者的质押私钥被分割为N个部分,每个共同验证者持有一个share。当至少有M个共同验证者对如何投票达成共识时,他们分别用各自的share来对消息签名,一个组合签名可以由这些share重构出来。
数据:以太坊桥TVL达到240.8亿美元:金色财经报道,DuneAnalytics数据显示,以太坊桥当前TVL达到240.8亿美元。其中锁仓量最高的5个桥分别是AvalancheBridge(64.72亿美元)、PolygonBridges(59.81亿美元)、ArbitrumBridges(57.65亿美元)、FantomAnyswapBridge(25.57亿美元)、OptimismBridges(13.76亿美元)。[2022/1/3 8:20:55]
PoS以太坊使用的是BLS签名方案,其中私钥可以使用M-of-N秘密共享技术(使用Shamir'sSecretSharing方案),以实现M-of-N门限签名。
(译者注:Shamir'sSecretSharing被用于以分布式的方式来保护秘密。秘密被分割为多个部分,这些部分被称为share,这些share可以用来重构原来的秘密。而通过Shamir'sSecretSharing解密需要一个最低数量的share,被称为门限。)
通过把一个合适的(偏重于安全性的)共识算法和一个M-of-N门限签名方案组合起来,这个DV协议确保共识是得到密码学保证的,且至少有M个共同验证者对任何决定达成一致。
以太坊Geth客户端开发者考虑移除对存档节点功能的支持:9月13日消息,以太坊Geth客户端开发者Peter Szilagyi发推表示,考虑移除对存档节点功能的支持,在Gas越来越高的情况下,存档节点没有可持续发展的意义。
Peter Szilagyi在回复中表示也有可能采用一种混合模式,让用户有一个用于访问存档数据的全局数据分发层和自己的完整客户端,可以验证和证明数据是正确的。[2021/9/13 23:20:50]
资源
实现
以下是分布式验证者技术的现有实现(但不一定是本规范的实现)。
python-ssv:Python中分布式验证者协议实现的概念证明,与以太坊客户端Prysm交互。
ssv:分布式验证者协议的Go实现,与以太坊客户端Prysm交互。
文档
分布式验证者架构视频介绍
总体架构
金色相对论 | Jay:Rollup + 以太坊2.0 分片可以把ETH TPS 达到10万笔/秒:11月27日消息,在今日举行的金色相对论中,针对“从以太坊的发展过程来看,选择pow作为1.0阶段有一定的历史因素,但随着现在的技术发展,例如rollup以及layer2解决方案的增加,您认为以太坊还需要以太坊2.0吗?”的问题,Loopring COO Jay表示,首先L2 方案还在很早期,zkRollup, OVM, Plasma, State channel 都是并行存在着的。目前看来Rollup 技术比较收社区推崇也是最主流的方案。但Rollup 里面也分zk 和optimism 2 大方向。未来到底是一个Rollup 独大还是多个平行进行都还很难说。特别是在各个rollup之前还不能打通的情况下。所以在不能说服社区都用一个rollup方案或同意的情况下,2.0 需要不断的进行下去。另外Rollup + 2.0 分片可以ETH TPS 达到10万笔/秒。完全是一个互补的方案,而不是排斥的。只有到达这个量级才是目前生活中可以取代中心化系统的量级,所以我们更应该不断推动。[2020/11/27 22:20:23]
本规范提出一种实现分布式验证者客户端(DistributedValidatorClient,DVC)软件的方法,作为信标节点和一个远程签名者(RemoteSigner,RS)之间的中间件:
动态 | 以太坊未确认交易10835笔:Etherscan.io数据显示,当前以太坊未确认交易数为10835笔,与昨日相比未确认笔数略有下降,以太坊网络拥堵程度得到略微缓解。[2019/3/25]
信标节点和远程签名者之间的所有通信都由DVC管理,以便它能提供额外的分布式验证者功能。
信标节点和远程签名者不知道DVC的存在,也就是说,它们以为彼此像往常一样相互连接。
假设
我们假设总共有N个节点,以及一个M-of-N门限签名方案。
为了与拜占庭容错共识协议兼容,我们假设M=ceil(2*N/3)。
本规范假设某种基于领袖的、偏重安全性的共识协议,让共同验证者选定相同的证明/区块进行签名。我们假设共识协议在M个正确节点下成功运行,且在N个总节点中不超过F=(N-1)/3个拜占庭节点和不超过N-M-F防失败节点(fail-stopnode)。(译者注:拜占庭节点指的是在网络里故意撒谎或误导其他节点的背叛节点。)
我们假设验证者客户端安全运行的通常前提条件包括最新的抗罚没数据库、正确的系统时钟等。
我们暂时不考虑对“正确”以太坊分叉的投票——这个功能将在未来的更新里加上。
理想的保证
安全性(防止密钥被盗):
除非N个共同验证者中有多于M个验证者的安全受到影响,否则质押者私钥是安全的。
安全性(防止罚没):
在异步网络的假设下,除非多于三分之一的共同验证者成了背叛者,否则验证者永远不会被罚没。
在同步网络的假设下,除非多于三分之二的共同验证者成了背叛者,否则验证者永远不会被罚没。
活性:在部分同步的网络里,除非多于三分之一的共同验证者成了叛徒,否则协议最终都会产生一个新的证明/区块。
规范
关于规范的技术细节描述在?src/dvspec/:https://github.com/ethereum/distributed-validator-specs/blob/dev/src/dvspec。
词汇表
以太坊概念
验证者:参与权益证明以太坊验证的公钥。在阶段0,验证者预期会为信标链区块履行证明和区块提议的职责。
验证者客户端(ValidatorClient,VC):履行验证者职责的软件。VC能访问验证者的私钥。
远程签名者(RS):负责以太坊私钥管理的软件,特别是用于对以太坊消息(例如区块、证明等)的签名。RS运行一个服务器,用于接受传入的对该类消息签名的请求。
密码学概念
私钥分片(KeyShare):作为门限签名方案一部分的单个密钥。
签名分片(SignatureShare):对来自单个私钥share的一些数据的签名。多个这样的签名share需要组合起来生成一个完整的签名。
分布式验证者概念
分布式验证者(DV):一组参与者共同履行一个验证者的职责。验证者的私钥在多个参与者中是秘密共享的,因此在没有参与者的一定多数门限下,一个完整的签名是无法形成的。
共同验证者(Co-Validator):参与DV协议成为一个特定验证者的BLS公钥门限验证者。
分布式验证者客户端(DVC):通过运行DV协议(或者,作为多个共同验证者来参与,每个共同验证者身份与不同的验证者相关联)参与成为一个共同验证者的软件。DVC能访问共同验证者的私钥,即所对应的验证者的秘密共享门限私钥。
实例
使用上述术语的实例说明:
公钥为0xa5c91...的以太坊验证者作为一个分布式验证者在运行。
有4个共同验证者参与到验证者0xa5c91...的分布式验证者中。
与0xa5c91...相关联的私钥在4个共同验证者中使用3-of-4的秘密共享方案来拆分,这样就建立了一个3-of-4的门限签名方案。
更简单地说,0xa5c91...的私钥被拆分为4份,每一份由共同验证者中一名来托管,这样必须至少有共同验证者中的三名合作才能从0xa5c91...产生一个签名。
每个共同验证者都在运行分布式验证者客户端软件来参与分布式验证者。
原文链接:https://github.com/ethereum/distributed-validator-specs
ECN的翻译工作旨在为中国以太坊社区传递优质资讯和学习资源,文章版权归原作者所有,转载须注明原文出处以及ETH中文站。若需长期转载,请联系eth@ecn.co进行授权。
来源|?github.com/ethereum
作者|AdityaAsgaonkar
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。