编者按:本文来自:以太坊爱好者,作者:ethos.dev,翻译:阿剑,Odaily星球日报经授权转载。还记得自己第一次对区块链世界发出“原来如此”感叹时候的喜悦吗?想不想对信标链也有这么透彻的理解?信标链是整个Eth2系统的核心;但关于信标链的内容,大多都仅仅是在搬弄技术词汇,很琐碎,也不够深刻。在这里,我们会提供对信标链诸要素和机制的透彻解读。我们也会提供例子,恰如其分地点出关键细节,使你能事半功倍。我们假定,你已经拥有对以太坊区块链或者比特币区块链的坚实理解,也熟悉权益证明。先来看看分片、验证者、见证消息、委员会、检查点和最终确定性所组成的全景。分片:远大理想
要理解信标链,先了解一下分片的概念会有所帮助。区块链当前在提高可扩展性上面临的主要难题是:每个节点都必须验证和执行所有交易。而从计算机科学的角度来看,要扩展吞吐量,主要有两种办法:A.垂直扩展:大意是加强节点,让节点变得越来越强大。B.水平扩展:大意是,加入更多节点。为了去中心化,区块链系统只能水平扩展。以太坊2.0的其中一个目标是,让普通的消费级硬件就能运行节点。分片这个术语的本意,就是对数据库进行水平分区。基本上,一条分片链会由一部分节点来处理。而系统中的虚拟矿工,验证者,会被分配到不同的分片上,仅仅处理和验证自己所在分片链上的的交易。在这个系统中,按块处理某个分片的节点群是会不断更换的。要对一个区块链系统做分片,主要的挑战就是分片的安全性。因为验证者分散在各个分片上,恶意验证者攻陷单个分片的难度会降低。因此,分片解决方案的关键是:随机混洗验证者,让每个分片区块都由一组随机选出的验证者所组成的委员会来处理,使得一个所控制权益少于全体验证者权益1/3的攻击者的成功概率为0。错误性证明,数据托管证明和数据可用性检查同样也是重要的安全组件,但要专门写文章才能解释清楚。Eth2现在的计划是启用64个分片。虽然分片跟信标链在概念上是相互独立的,我们还是准备讲讲整个系统的一些关键元素。分片概念反映出了信标链的功能和需要;通过分片这个概念,我们可以理解为什么需要在传统的区块链系统中加入这些额外的部分。这个全新的领域也欢迎有所感悟的读者提出创新。以太坊2.0各阶段
以太坊2.0会分三个阶段部署:Phase0:信标链Phase1:分片Phase2:执行可以类比为人体的三个部分:Phase0:心脏Phase1:四肢Phase2:大脑也可以类比为一支气势磅礴的管弦乐团:Phase0:指挥家Phase1:乐器Phase2:乐手每个阶段都会整合到系统中,分别担任不同的角色。比起其它阶段,Phase1所引入的功能会更加波澜不惊,而Phase2会更关乎执行。时隙和时段
信标链就是以太坊2.0的心跳,是整个系统的和谐及共识中的主旋律。一个时隙是12秒,一个时段由32个时隙组成,因此是6.4分钟。
BM:EOSIO可以完成ETH上的所有功能,并且产品非常棒:推特网友Shengwu1893称,伟大的人必须在人们认识和信任他之前创造出伟大的产品。Satoshi Nakamoto和Vitalik Buterin已经证明了比特币和ETH, EOS还需要BM(Daniel Larimer)继续努力。对此BM刚刚回应称,EOSIO是一个伟大的产品,EOS是一个和选择加入它的人一样伟大的社区。EOSIO可以完成ETH上的所有功能,而且产品非常棒。你不能要求一个去中心化的社区,并要求有人负责建设它,这是我们所有人的责任。[2020/9/24]
-时段0的32个时隙。创世块就在时段0产生-时隙是用来标记产生信标链区块及分片区块的机会的:在信标链和各分片上,每一个时隙就有一次产生新区块的机会。你可以想象信标链和各分片链是精心设计、紧密同步的。理想情况下,每12秒,就会产生1个信标链区块,和分布在不同分片链上的64个分片区块。验证者之间确实需要在时间上达成同步。因此,时隙就像区块时间一样,只不过,时隙也有可能出空块。信标链和分片链的创世块是在时隙0时产生的;不过,各分片链会在信标链的时段0完成之后才开始运行,而且各有各的时段0。验证者、见证消息以及信标链
PoW区块链是靠矿工来维系的,以太坊2.0的权益证明系统则是靠“虚拟矿工”——验证者。验证者即是以太坊2.0协议共识过程的主动参与者。TA们的经济激励会在后文的“信标链验证者奖惩措施”部分讨论。区块的提议者指的是一名被随机选出来产生区块的验证者。在大多数时候,验证者都仅充当见证者,仅仅是对信标链区块和分片链区块投票。这些投票会被记录在信标链上,也相应决定信标链的最新区块,以及分片链的最新区块。
-在某个时段的第28个时隙处,没有出现相应的区块提议-在一个时段中,一名验证者会被伪随机地分配到一个时隙和一个分片上。该验证者会参与被分配到的分片的共识过程,以投票选择出所在分片的最新区块。验证者也会在一个时隙内把最新区块链接到信标链区块上。所谓见证消息,就是一名验证者发起的投票,其权重由验证者的余额决定。见证消息会被验证者附加到区块内,随着区块一起传播。验证者之间还会互相监督,可以报告其它验证者做出互相冲突的投票或者提议多个区块的不轨行为,如果报告属实则可以得到奖励。信标链的主要内容就是一份验证者地址的注册表、每个验证者的状态、见证消息、以及链接到分片的信息。验证者在参与前需经过信标链激活,也可以转变自己的状态,在下文的“信标链验证者激活及生命周期”部分有述。参与质押的验证者:术语含义
在工作量证明区块链上,用户成为矿工的方式就是控制硬件参与共识。而在以太坊2.0中,用户可以通过质押ETH获得验证者资格,并通过控制验证者来参与网络。所以说验证者是虚拟的,是由质押者来主动激活的。把质押者和权益、验证者和余额关联起来会更容易理解。每个验证者的余额最大为32ETH,虽然质押者可以把自己全部的ETH都质押进去。每存入32个ETH,就可以获得1个验证者资格。验证者的运行靠的是验证者客户端,这种客户端会利用信标链节点来执行正常功能。信标链节点拥有追随信标链运作及读取信标链信息的功能。验证者客户端既可以自己运行信标链节点的功能,也可以连接到其他人的信标链节点。交联:让分片扎根到信标链上
Maker新执行投票通过,ETH-A债务上限已由4.2亿提高至5.4亿:Maker最新执行投票已通过,ETH-A债务上限已由4.2亿提高至5.4亿。[2020/9/4]
所谓交联,就是放在一个信标链区块内、指向某个分片区块的数据。信标链就是通过交联来跟跟踪分片链。因为有64个分片,每个信标链都能包含最多64个交联。一个信标链区块里可能只有一个交联,如果在该时隙,没有验证者为其它63个分片提议区块的话。交联功能计划在Eth2Phase1时引入,以使各分片链能扎根到信标链上,并让信标链来充当分片链分叉选择、分片链确定性以及跨分片通信的基础。所有的分片链都全程追踪信标链。委员会简介
委员会就是一组验证者。出于安全考虑,每一个时隙,在信标链和每一条分片链上,都会有一个委员会,由至少128位验证者组成。攻击者只有万亿分之一不到的几率,能控制一个委员会中2/3的验证者。信标链这个名字,正是来源于其公开提供随机数的功能。信标链会对一个叫做“RANDAO”的伪随机过程达成共识。
-在每一个时段,伪随机过程RANDAO都会选出所有时隙的提议者,并且混洗验证者到不同的委员会去-验证者是由RANDAO以验证者的余额为权重选择出来的。一个验证者可能在一个时隙中同时又是提议者,又是委员会成员,但这并非常态。发生这种事情的概率是1/32,所以我们估计每个时段会看到一次。上面这个示意图描绘的是验证者数量少于8192个时的情形,不然一个时隙至少会有两个委员会。本文着重考察的信标链委员会:为信标链服务的验证者。一个信标链委员会会被随机分配到一个分片上,在一个信标链区块链上产生交联。而且委员会成员不是长期不变的,负责产生交联的委员会都是逐块逐块替换的。仅仅为分片链产生区块的委员会留待日后解释。分片链验证者可能在不与信标链交互的情况下产生许多信标链区块,但是,如果一个分片要跟其它分片通信,它就需要信标链委员会把分片区块交联到一个信标链区块上。
-协议假设验证者总是给自己认为是区块链顶端的区块投票-上面这个图片综合了三个时隙内产生的情况。在时隙1,有验证者提议了一个区块,并且该块得到了两个验证者的见证;委员会A中的一个验证者离线了。在时隙2,又有人提议了一个区块,而委员会B里面的一个验证者没有看到,所以其见证消息表示TA认为信标链的顶端仍然是时隙1处产生的区块。注意,这个验证者跟时隙1时的离线验证者不是同一个。对信标链顶端区块的投票称作“LMDGHOST投票”。在时隙3,委员会C中的所有验证者都运行LMDGHOST分叉选择规则,并独立地投票同一个区块为信标链顶端。一个验证者在一个时段中只会参加一个委员会。一般来说,系统中的验证者会超过8192个,所以每个时隙会有多于一个委员会。委员会的规模都是一样大的,都至少有128个验证者。当系统中的验证者少于4096个时,安全性就会下降,因为委员会的规模将少于128个验证者。委员会:关键
1000万枚USDT从Tether Treasury钱包转入交易所:据WhaleAlert数据显示,北京时间08月01日06:57,1000万枚USDT从Tether Treasury钱包转入交易所,按当前价格计算,价值约999万美元。[2020/8/1]
在每个时段,验证者们被均匀地分配到时隙中,然后进一步分配到同等规模的各委员会中。所有验证者都要在自己所在的时隙出发出见证消息,指出信标链的顶端。每个委员会都要在自己所在的时隙尝试交联到特定的某个分片。混洗算法会增减委员会的数量,以保证每个委员会都至少有128名验证者。举个例子,假设有16384名验证者。其中512名验证者被伪随机地分配到时隙1,另外512个被分配到时隙2,等等。时隙1的512个验证者被进一步切分成4个委员会。所有512个验证者都要在时隙1处发起LMDGHOST投票;其中一个委员会的128名验证者尝试交联到分片33;另一个委员会的128名验证者尝试交联到分配55;另外两个委员会则尝试交联到分片22和分片11。在时隙2,这个过程会重复一遍。512名验证者一样被划分成4个委员会。假定他们被分配到的分片为41、20、17、15。所有的512个验证者都要在时隙2处为信标链的顶端投票;这几个委员会也会尝试为分片41、20、17、15提出交联。这个过程也会在该时段剩下的时隙中一一重复。每个验证者都会有所在的时隙,在那个时隙TA就可以发声、提出见证消息、产生交联。等到时段结束之时,所有16384名验证者都已享受过发起投票和交联的机会。但是,在上述过程中,验证者的投票都是基于时隙的,而不是基于时段的。有点像在给地方政府投票,而不是在搞全国大选。全体验证者未曾为同一个东西投票过。下面这个部分就要讨论检查点和确定性,解释各验证者需要在所在的时隙发起的、针对时段发起的投票。也就是说,在自己所在的时段,他们还要为时段的检查点投票。信标链检查点
检查点就是位于一个时段的第一个时隙内产生的区块。如果某个时段的第一个时隙内没有产生区块,则将最近的一个符合要求的区块认定为检查点区块。每个时段都会有一个检查点区块;一个区块有可能同时是多个时段的检查点。
-单时段包含64个时隙时的检查点示意图-注意,从时隙65到时隙128之间都是空块。时段2的检查点本来应该是时隙128处产生的区块,但因为该时隙被跳过了,所以时段2的检查点仍然是时隙64处产生的区块。时段3也类似,时隙192被跳过了,因此将时隙180处产生的区块认作时段3的检查点。时段边界区块是一些文献中用到的一个术语,可以认为是检查点的同义词。在发起一次LMDGHOST投票时,验证者也要为最近时段的检查点投票,投票者希望确立的新检查点叫做“目标检查点”。这种投票叫做CasperFFG投票,而且投票中也会包含投票者认定的上一个检查点,叫做“来源检查点”。在上图中,时段1中的一个验证者的投票将创世块作为来源检查点,然后推举时隙64处产生的区块为目标检查点。在时段2,同一个验证者又为相同的检查点投票了。只有被分配到某个时隙的验证者才需要为该时隙的区块投票,但是,所有验证者都要为每一个时段的检查点发起FFG投票。大多数
行情 | ETH 出现剧烈波动:据Bitfinex数据显示,下跌: ETH 价格$135.00,5分钟变化超过$1.42,波动较大,请做好风险控制[2018/11/20]
由所有活跃验证者总余额的2/3所支持的投票内容就是多数票。我们举简单一点的例子来说明一下,假设有3个活跃验证者,两个的余额是8ETH,另一个的验证者余额为32ETH。那么,只有包含了那个最大验证者的投票才可能是多数票;虽然另外两个验证者可能都投了另一个检查点,但是他们的余额总和只占50%,形成不了多数。确定性
一个时段结束的时候,如果其检查点得到了2/3的总余额支持,那么该检查点就被合理化了。如果一个检查点B已经得到合理化,其下一个时段的检查点也被合理化了,那么B就被敲定了。一般来说,一个检查点会在两个时段内得到敲定,大概就是12.8分钟。从平均的角度来看,用户的交易总是打包在一个时段的中间部分;那么距下一个检查点就还有半个时段的时间,因此,一笔交易经过2.5个时段就可以得到确定性。理想化情况下,超过2/3的见证消息会在一个时段的前22个时隙内完成打包。因此,交易敲定的平均时长是14分钟。区块确认则从区块见证消息,一步步升级到合理化,再到确定性。用户自己可以觉得他们要不要等到交易确定,还是更低一点的安全性就足够了。
-时隙64处的检查点被合理化,同时敲定时隙32处产生的上一个区块-为简化叙述难度,下文假设所有验证者的余额都相同。信标链的顶端
时隙96处产生了一个时段边界区块,而且包含了对时段2检查点的见证消息。见证消息的数量达到了2/3的多数要求。然后时段2的检查点就得到了合理化,同时,上一个合理化的检查点,也就是时段1的检查点,就被敲定了。时隙32处的区块得到确定性,会使得之前所有区块都得到确定性。在敲定检查点的时候,并没有对同时得到敲定的区块在数量上的限制。所以,虽然确定性仅在时段边界的时候产生,见证消息是逐个逐个区块累加的,下文的“从创世块到区块链顶端的历程”部分提供了另一种描述。从时隙1到时隙32的信标链区块所包含的所有交联,也会使分片链产生确定性。换句话来说,当一个信标链区块得到确定性时,该块所包含的交联所对应的分片链区块也得到敲定。交联本身不足以使一个分片区块得到敲定,只是对分片链的分叉选择有所帮助。从创世块到信标链顶端的历程
用同样的办法,可以观察到从创世块开始的一条故事线。所有的提议者,从时隙1到时隙36,一一提议了一个区块,而且这些区块都显现在链上。对于时段1的所有区块来说,其检查点累积获得了55%的验证者的见证。在验证者提议时隙64处的区块时,它也纳入了对时段1检查点的见证消息。现在,有70%的验证者都见证了时段1的检查点,因此时段1检查点得到了合理化。完成时段2时,时段2的检查点累积的见证消息还达不到2/3的多数要求。时隙96处的区块在提议时,也纳入了对区块2检查点的见证消息,所以,这时候,时段2的检查点也达到2/3的多数要求,被合理化了。合理化时段2的检查点同时也会敲定时段1的检查点及所有此前的区块。有时,合理化一个区块会敲定两个甚至多个时段以前的区块。Gasper论文讨论了这种情况,预计只有网络高延迟、网络隔离、遭遇强大攻击者的极端情况下,才会出现这种事。确定性对于分片及以太坊区块的用户来说是重中之重,因为确定性使他们能够确定,交易已经永远写在链上,不可更改了。确定性也降低了跨分片通信的复杂性。没有确定性,分片内部和分片之间交易的回滚会具有破坏性,甚至让分片的好处荡然无存。深入理解见证消息
行情 | ETH 出现剧烈波动 请密切关注行情:Bitfinex数据显示,当前 ETH 价格234.19美元,1小时下跌超过6.21美元,波动较大,请密切关注行情走势,做好风险控制。[2018/9/24]
一条见证消息里面包括了一个LMDGHOST投票和一个FFG投票。理想情况下,所有的验证者每个时段都会发出一条见证消息。一笔见证消息有32个时隙的机会被打包到链上。这就意味着,一个验证者可能在单个时段内有两笔见证消息被打包上链。见证消息打包上链的时间也决定了验证者可得的奖励幅度:在自己所在的时隙就打包上链可以得到最多的奖励;要是等到后续时隙才打包上链,验证者得到的奖励就会下降。为了给验证者足够的时间来准备见证消息,他们会在一个时段以前就预先知道自己所在的委员会。区块提议者则仅在时段开始之时分配一次。此外,隐蔽领袖选举研究还致力于减轻对区块提议者的攻击和贿赂。委员会机制使得汇总所有的见证人签名、变成单个聚合签名在技术上的优化成为可能。如果同一委员会中的所有验证者都作了同样的LMDGHOST和FFG投票,则他们的签名可以聚合起来。信标链验证者奖惩措施
为避免过度深入,我们仅讨论验证者激励相关的6种措施:见证人奖励见证人惩罚对质押者来说典型的贬值风险罚没及举报人奖励区块提议者奖励怠惰惩罚当期见证消息与其它多数验证者一致时,验证者可以得到奖励。在Eth2Phase1阶段,验证者发送交联也可以得到奖励。当区块得到敲定时,验证者奖励也就确定下来了。另一方面,如果验证者没有提交见证消息,或者投票支持了一个最终不能得到敲定的区块,他们也会受到惩罚。在列举不太常见的惩罚和奖励之前,你可能还想知道,成为质押者会面临怎样的贬值风险。答案是,你可能失去的ETH,恰好跟你能赚取的ETH数量对称。如果一个验证者一年的奖励回报率是10%,则作恶验证者在最坏情况下可能会失去10%。举个例子,如果一个验证者总是离线,或者总是给那些不能得到敲定的区块投票,则其损失的ETH数量,恰与一位总是及时提交见证消息,且所支持的区块总是得到敲定的验证者所得的奖励,在数额上相等。罚没的力度下至0.5ETH,上至一位验证者的全部权益。如果一位验证者所提交的见证消息触犯了协议所定义的罚没条件,则TA会损失自身权益的至少1/32,并被驱逐出验证者队伍。惩罚的力度就像该验证者离线了8192个时段一样。协议还会根据相近时间内被罚没的验证者数量施加一个额外的惩罚。此种额外惩罚的计算公式是:验证者余额×3×被罚没的验证者占比。那么,如果占全体验证者1/3数量的验证者都触犯了罚没条件,则他们会失去全部余额。相应地,检举这些不轨行为的验证者将会得到检举人奖励。区块提议者在所提议区块得到敲定之后,也会得到一个成比例奖励。总是在线,并且提议工作做得很好的验证者,其总奖励可增加约1/8。出现罚没事件的时候,提议者也会因为打包罚没证据而得到一小笔奖励。在Eth2Phase0中,所有的检举人奖励都会给予区块提议者。以太坊2.0系统中机制众多,对这些机制的评价应从所有机制的整体效果出发。最末一种奖惩措施是所谓的“怠惰惩罚”。基本上,如果距上一次敲定区块已过去了4个时段,所有验证者都会遭受怠惰惩罚,而且惩罚力度会呈平方级上升,直至新的检查点得到敲定。怠惰惩罚保证了:即使50%的验证者都离线了,系统也会在21天后重新开始敲定区块。罚没条件
罚没条件主要有三个,分别是:双重提议、FFG双重投票,FFG环绕投票。LMDGHOST投票是不会招致罚没的。双重提议是指区块提议者于所在时隙提议了多于一个区块。双重投票是指验证者在提交FFG投票时,多个投票指向同一个目标检查点,但引用的来源检查点却各不相同。环绕投票指的是验证者在提交FFG投票时,多个投票所指向的检查点恰成环绕形状。举个例子,假定一位验证者在时段5投票时,以时隙32的区块为来源检查点,以时隙128的区块为目标检查点:如果该验证者在时段6的投票以时隙64的区块为来源检查点,以时隙96的区块为目标检查点,那么该票就被TA自己在时段5的投票给包围起来了。如果该验证者在时段6的投票以时隙0的区块为来源检查点,以时隙160的区块为目标检查点,则该投票把TA自己在时段5的投票给包围起来了。如果这位验证者在时段6又给时隙128的区块投票,除非其来源检查点仍是时隙32的区块,否则就成了双重投票,也会被罚没。相同的FFG投票倒是不会被罚没的。拥有相同来源检查点的FFG投票也不会招致罚没。这是维持网络活性的重要条件。举个例子,如果两条分叉链各自都有50%的验证者余额支持,协议应该鼓励验证者通过投票给相同来源检查点、不同目标检查点,在分叉间切换。能够安全地在分叉间切换,验证者们就能打破僵局,尝试形成2/3的多数。检举他人的验证者需要在见证消息中纳入相互冲突的投票,以证明另一个验证者应该受到惩罚。要高效地从一长段历史中找出相互冲突的投票,在算法和数据结构上也是一种挑战。因此,开放工程挑战·罚没探测器也在寻找贡献者。得到良好控制的验证者一般是可以避免被罚没的:只需记得自己曾经签名过哪些见证消息就好。诚实的验证者也不会因为其它验证者的行为而受到波及。只要验证者不签名相互冲突的见证消息,不作出双重提议,就不会被罚没。为得到更好的运行体验、更值得信任的信息来源,乃至更好的DoS保护,验证者客户端可能会同时使用多个信标链节点。在这种模式中,包括使用备份的验证者客户端的时候,需要小心不要让验证者签署相互冲突的消息。信标链验证者激活及生命周期
每一个想成为验证者的用户都要先有32ETH才能获得验证者资格。用户质押32ETH到以太坊主网上的保证金合约中,就能获得一个验证者资格。另一方面,信标链也会劝退所有余额降低到16ETH的验证者;质押用户可以取出剩余的验证者余额,不过在Eth2Phase0还做不到。验证者在服务2048个时段之后也可以主动退出。退出时要先走完4个时段,质押用户才能取出自己的权益。在这4个时段内,该验证者的余额仍然是可以被罚没的。因此,诚实验证者的余额可以在约27小时之后取出。但是,如果验证者在此时被罚没,就只有再等8192个时段之后才能取出剩余款项。更多技术细节可看《以太坊2.0Phase0验证者生命周期》。下图亦来自这份资料:
为避免验证者集合在短时间内出现大规模的变动,单个时段内能激活和退出的验证者数量是有一个机制限制的。这样可以让激活许多验证者、快速攻击系统的攻击更难发动。信标链还使用了一个叫做“有效余额”的概念,这个有效余额回避验证者余额的变化更小,使得技术上的最优化成为可能。总结
在每一个时段,验证者都被均匀分配到不同时隙中,并进一步划分成相同规模的委员会。验证者只有1个应召的时隙,也只会存在于1个委员会中。因此:一个时段中的所有验证者,通过集体决策尝试敲定某个检查点;方法是FFG投票;各时隙中的所有验证者,通过集体决策尝试选出信标链的顶端区块:方法是LMDGHOST投票;一个委员会中的所有验证者,通过集体投票尝试将某个分片交联到信标链上。最符合协议的行为可以得到最多的奖励。信标链的启动需要至少16484名验证者。验证者的数量会因为罚没及资源退出而减少,也会因为质押用户的投入增加而增加。而且,随着Eth2Pahse1及后续阶段的升级,预计会有更多验证者参与进来。信标链需要至少262144名验证者才能使得单个信标链区块能包含64个交联。我们还从未拥有过一个去中心化系统和应用的可扩展平台。如果你想更深入地研究以太坊2.0,权威的参考来源是Ethereum2.0Specifications。该技术规范包含了信标链技术规范,还提供了其它关键信息源,而且提交issue可以获得奖金。当前,最紧迫的工程需要是点对点网络的组网功能。自己动手,或者推荐朋友参加挑战、参与ethresear.ch论坛或者EthereumMagician论坛,创造历史吧!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。