木星链 木星链
Ctrl+D收藏木星链
首页 > 狗狗币 > 正文

VIEW:学术专栏——Harmony快速拜占庭容错

作者:

时间:1900/1/1 0:00:00

在过去的一个月里,我们一直致力于我们的视图更改协议。这是任何区块链的核心部分,我们可以从中判断协议是经过许可的还是无许可的,以及它是如何实现去中心化。

代码在这里:harmony/consensus。?

我们在6月28日在4个分片上推出了DayONE主网,共有600个节点。在过去的830,000个区块中,它一直运行顺畅。

在我们之前的测试中,我们观察到由于网络状况不佳而在某些分片中发生了视图更改。我们还通过杀死领导者节点以及其他类型的攻击来手动触发视图更改。攻击发生后视图发生了变化,网络按预期继续运行?-耶!!

在下文中,我们将首先解释拜占庭容错的基本概念,然后我们会介绍如何做出改进使得能够在实践中处理大量节点,最后介绍一下整体的代码结构和一些实现细节。

什么是拜占庭容错?

一个分布式系统是由多个节点组成,其中每个节点都是独立的服务器。它们通过网络发送消息并根据它们遵循的协议执行某些任务来相互通信。

这个过程中会出现很多类型的错误的类型,但它们基本上可以分为两大类。第一种错误是节点崩溃、网络故障、丢包等,这种错误类型的节点是没有恶意的,属于非拜占庭错误。

第二种类型是节点可能是恶意的。它们可以任意行动,不遵守协议规则。例如,验证器可以延迟或拒绝中继网络中的消息、领导者可以提出无效块、或者节点可以向不同的对等体发送不同的消息。在最坏的情况下,恶意节点可能会相互协作。这些被称为拜占庭错误。

考虑到这两种错误,我们希望系统始终能够保持两个属性:一致性(consistency)和活性(liveness)。

在区块链术语中,一致性意味着诚实的节点必须为任何给定的块数/高度提交相同的块;活性意味着链高度必须保持增长而不会停滞。

一个被许可的网络中只会出现第一类错误,这比较容易解决。例如,我们可以选择一个性能很强的节点作为领导者,所有其他节点将只听取领导者广播的内容并信任领导者建议的任何块。在这种情况下,我们只需要注意第一类错误,特别是当错误发生在领导者身上时。

中国国家核心学术期刊“首篇”NFT相关论文发布:金色财经报道,近日,由国内知名区块链专家高泽龙等发表的“非同质化代币的应用原理及身份识别场景解析”刊载在《网络空间安全》杂志上,可能成为了中国第一篇NFT相关的学术论文。高泽龙认为,目前NFT大部分是被用在游戏、艺术品、代币等领域,未来NFT更大规模的舞台可能是成为各行各业的基础设施和支撑平台,NFT核心是唯一身份、高效流转、价值承载、信用网络、映射连接等,可被用于比如金融票据、身份护照、房产汽车、税务征收、防伪溯源、版权登记、物码管理等无数领域,开启大规模商业应用。

《网络空间安全》由中华人民共和国工业和信息化部主管,中国电子信息产业发展研究院、赛迪工业和信息化研究院主办,是集学术性、技术性、专业性和权威性为一体的国家级学术期刊。[2022/7/21 2:28:14]

对于去中心化的网络,我们不能信任任何节点,因为第二种错误可能发生在任何节点中。这样我们只能基于一个基本假设,即恶意节点无法伪造其他节点的签名。密码学理论证明伪造签名的难度非常高,以至于今天的计算机在任何的实际时间长度内都无法破解。当量子计算机准备就绪时,情况可能会改变。但那时,我们将使用量子抗性加密算法。

拜占庭容错协议是一种即使系统中存在恶意节点也能保证分布式系统的一致性和活性的协议。所有这些协议都有一个基本假设,即恶意节点的数量小于某个阈值。这很容易理解,如果有超过50%的恶意节点,那么网络完全由恶意节点控制。

比特币的工作量证明要求不到50%的节点是恶意的。然而,自私挖矿将基本假设降低到25%。当只有少于在总计算能力小于25%的节点(是恶意的,PoW系统才是安全的。

在传统的分布式系统中有着对拜占庭容错协议深入的研究。事实证明,在Lamport的经典论文中,恶意节点应少于网络的33%。后来,著名的实用拜占庭容错论文让这种系统变得可实用化。

但是,依然还有两个问题。首先,这样的系统是经过许可的,不允许任意节点加入和离开。其次,它不能扩展到超过数百个节点。第一个问题源于女巫攻击,恶意用户可以轻松创建许多假身份并接管大部分网络。不过,这个问题首先在中本村的比特币白皮书中被解决了,主要是从经济效应的角度考量。在工作量证明之后,有许多新的设计,例如股权证明,权威证明等。我们不计算节点的数量,而是计算投票权的数量。在PoS中,节点的投票能力与其放样量(staking)成比例。第二个问题可以通过使用BLS签名方案的聚合签名解决,这在FBFT部分中有解释。

声音 | 人民论坛 :区块链助力学术诚信重构:人民论坛今日发表论文《区块链助力学术诚信重构》,其中提到,当前,一些不良学术风气严重影响哲学社会科学繁荣发展,学术诚信遭遇破坏和危机。区块链技术可以实现数据互信、价值互通和权益共享,同时基于它的信任机制,可以在学术诚信构建领域加以应用。利用区块链技术记录阅读和引用信息,追踪数据,将有效避免剽窃、抄袭现象,一稿多投等问题,同时,区块链技术通过“智能合约”为论文的复证提供了很大便利,对于繁荣发展我国哲学社会科学,打造良好的学风与学术生态具有重要意义。[2020/2/26]

实用拜占庭容错

像Raft和Paxos这样的协议主要用于处理第一类系统错误。实用拜占庭容错算法是现实世界里首批能够同时处理第一类和第二类错误的拜占庭容错协议之一。

我们将始终假设有N个节点最多有f个恶意节点,其中N=3f1。PBFT中有两种模式,即普通共识模式和视图更改模式。正常模式看起来像这样:

在一个视图中,有3个步骤/阶段:预先准备、准备和提交。

1.在预准备阶段,领导者将向其他节点广播宣布消息(announcemessage)。当验证者收到宣布消息时,它进入准备阶段。

2.在准备阶段,在验证者接收到宣布消息之后,它将向每个节点广播准备消息。当验证者收到足够的准备消息时,它将进入提交阶段。

3.在提交阶段,验证者将发送提交消息当验证者收到足够的提交消息时。它可以安全地提交区块。这结束了一轮正常的共识过程。

请注意,一般PBFT和区块链PBFT之间存在一些差异。主要区别在于区块链在两个区块之间是“同步的”,即我们不能在提交h(区块号)之前继续提交区块h1。在传统的PBFT中,我们可以在请求h之前提交客户请求h1。PBFT将保证所有节点的一致性。

从这个意义上说,区块链使共识过程更简单。确切地说,PBFT中有一个被称为“检查点过程”的步骤。检查点(checkpoint)是一个证书,其中序列号小于或等于检查点的区块都被视作已经最终确定,不可更改。在区块链中,每个已经确定的区块,都可以被视为检查点。

动态 | “数字经济与金融的法律治理”学术研讨会聚焦区块链法治及数字货币监管等:金色财经报道,“数字经济与金融的法律治理”学术研讨会日前在北京召开,聚焦区块链法治、数字货币监管、数字经济立法等热点法律问题。北京市法学会互联网金融法治研究会会长张柔桑教授提出,作为互联网金融法治研究会,要重点研究数字经济立法,数据的财产权界定,数据存储、流转、运用的私法、公法与主权问题,区块链、数字货币的法律问题。[2019/12/18]

当验证者在共识超时之前,如果还没有提交新块,验证器将开始发送视图更改信息,每个验证者都会选择一样的新的领导者。如果视图更改无法在超时之前完成,则验证者将建议另一个新的视图更改。

视图更改模式有两个步骤/阶段:

1.验证者通过向新领导者发送包含≥2f1个准备消息的视图更改消息来启动视图更改。如果它并没有收到足够的准备消息,它只需发送空的视图更改消息,给新的领导者。

2.新领导者收集足够的视图更改消息并广播接收到的所有视图更改消息。然后新领导者切换到正常模式。验证在收到来自新领导者的新视图消息时切换到正常模式,同时停止视图更改计时器并启动共识计时器。如果验证程序在视图更改超时之前未收到新的视图消息,则会将viewID增加1并开始另一个新的视图更改。

视图更改可以确保网络的活性。在视图更改过程中,我们需要确保提交的区块在整个视图更改中也是一致的。简单来说,接收2f1准备消息(preparemessage)只能确保同一视图中的一致性。接收2f1个提交消息(commitmessage)可确保不同视图之间的一致性。当节点收到2f1提交消息时,它可以安全地将块提交到区块链中。PBFT协议确保即使在视图更改的情况下,任何诚实节点都提交相同的区块。

一致性和活性

PBFT的一个关键概念是法定人数。法定人数是具有至少2f1个节点的任何子集。由于总共有3f1个节点,因此任何两个法定人数将至少有f1个节点相交。因为最多有f个恶意节点,故在两个法定人数的交集中将至少包含一个诚实节点。这就是我们需要法定人数来采取任何行动的原因。

动态 | 中国区块链论文首次入选计算机网络顶级学术会议NSDI:据搜狐科技快讯报道,2018年12月,计算机网络顶级学术会议NSDI宣布录用由王嘉平博士及汪浩博士撰写的区块链研究论文,该论文提出名为异步共识组Monoxide的区块链扩容方案,可以在由4.8万个全球节点组成的测试环境中,实现比比特币网络高出1000倍的每秒事务处理量,以及1000倍的状态内存容量,有望打破“不可能三角”这个长期困扰区块链性能的瓶颈。区块链“不可能三角”指区块链网络模型无论采用哪种共识机制来决定新区块的生成方式,都无法同时兼顾性能、安全、去中心化这三项要求,只能满足其中两项而牺牲另外一项,最多三者取其二。王嘉平博士现任创新工场执行董事,投资方向为区块链和人工智能,曾主导了对比特大陆的首轮机构投资。论文的两名作者,王嘉平博士与汪浩博士均毕业于中国科院计算所,中科院计算所也是这篇论文的联合署名单位之一。[2019/4/29]

一个视图中的一致性指的是:假设一个节点收到2f1准备消息,这些2f1个节点将形成一个法定人数。请注意,任何两个法定人数中将至少有一个共同的诚实节点,这意味着任何两个这样的法定人数在其准备消息中不能包含不同的区块哈希,否则共同的诚实节点允许两个相同高度的不同区块,这与它诚实的事实相矛盾。

不同视图的一致性指的是:假设一个节点收到2f1提交消息,这些2f1个节点形成一个法定人数,将其表示为Q1。当一个诚实的节点开始视图更改时,它会将准备好的消息发送给新的领导者。新领导者需要收集2f1个视图更改消息才能发送新的试图消息。Q1和Q2再次包含至少一个诚实节点。此节点包含2f1个准备消息,因为它在发送其提交消息之前必须先收到了足够的准备消息。这确保了不同视图中的诚实节点将提交相同的区块。

活性?:每个节点都有一个用于正常共识过程的计时器和用于视图更改过程的计时器。当计时器超时时,节点将通过增加一个视图来启动视图更改。在连续的领导者未能发送正确的新视图消息的情况下,视图更改计时器的超时时段将增加,以避免频繁的视图更改并确保最终足够的诚实节点将与诚实的新领导者具有相同的viewID。

现场 | 新加坡国立大学校长:将动员更多学术力量发展区块链等技术:金色财经7月18日现场报道,在新加坡举办的“革新、链接、财经(ICE)大会——了解你的数字DNA”上,新加坡国立大学校长Tan Eng Chye教授致开幕辞时说,本次ICE峰会是由NUS主办,希望到场的各位嘉宾可以真正认识到人工智能、区块链、云计算、大数据等技术对社会的巨大推动作用,NUS也将动员更多的学术力量发展以上四个方面的技术。本次会议中有EduCoin等区块链项目在本次峰会上进行演讲,NUS未来也会开设区块链课程,促进区块链技术发展。[2018/7/18]

快速拜占庭容错

作为对PBFT的改进,Harmony的共识协议在通信复杂性方面是线性可扩展的,因此我们将其称为快速拜占庭容错。在FBFT中,领导者不是要求所有验证者广播他们的投票,而是运行多签名的签名过程以在O(1)大小的多签名中收集验证者的投票,然后广而播之。因此,和接收O(N)签名不同,每个验证器仅接收一个多签名,从而将通信复杂度从O(N2)减小到O(N)。通过对视图更改消息的一些修改,视图改变复杂度也可以减少到O(N)。

BLS签名方案

在这里,我们对Boneh-Lynn-Shacham签名方案进行了非常简短的数学介绍,这是FBFT和PBFT之间的主要区别。BLS签名方案基于椭圆曲线配对。令E(Fp)为有限域Fp上的椭圆曲线,其中p为大质数。我们在此曲线上选择一个基本参考点g。私有BLS密钥是从Fp采样的随机数α,公钥是α?g,是椭圆曲线E上的一个点。给定一个消息m,签名计算为σ=α?H(m),这也是E上一个点,其中H是哈希到E的函数。在两条椭圆曲线E1和E2上的双线性映射e满足一下情况:

e(α?g1,g2)=e(g1,α?g2),g1∈E1,g2∈E2

e(g0g1,g2)=e(g0,g2)e(g1,g2),g0,g1∈E1,g2∈E2

e(g1,g2g3)=e(g1,g2)e(g1,g3),g1∈E1,g2,g3∈E2

现在我们可以看到如何通过聚合公钥来验证k个签名。

e(g1,σ1?σk)=e(g1,α1?H(m)?αk?H(m))

=e(α1?g1?αk?g1,H(m))

请注意,聚合签名就是一个普通签名,也就是椭圆曲线上的一个点,聚合公钥就是一个普通公钥,也是椭圆曲线上的一个点。这将2f1签名简化为仅1个聚合签名,这对于减少共识协议中的网络流量至关重要。

正常模式

在传统的PBFT中,节点在每轮共识中发送或接收的总消息大小是O(N2)。这是因为在准备和提交阶段,每个节点需要收集2f1=O(N)个签名并将它们广播到网络中的每个节点。通过使用BLS签名方案,我们将2f1个签名聚合成一个签名,这样,准备和提交阶段的消息大小为O(1),从而将总大小从O(N2)减少到O(1)回合。为了从BLS方案中受益,每个验证器将仅向领导者发送准备和提交消息,并且领导者负责收集足够的>=2f1个签名并将它们聚合成一个聚合签名,之后领导者分别在准备/提交阶段发送准备好/已提交的消息。从领导者的角度来看,这三个阶段是同步的,但从验证者的角度来看,他们仍然可以不按顺序接收消息,例如:验证者可以在宣布消息之前接收准备好的消息,但是在这种情况下,其准备签名将不会在准备好的消息中包含。

正常模式分为三个阶段:

1.在宣布阶段,领导者将向验证者广播宣布消息。当验证器收到宣布消息时,它进入准备阶段

2.在准备阶段,验证器向领导者发送准备消息。当领导者收到足够多的准备消息时,它会聚合从验证者收到的准备消息上的签名,并发出准备好的消息,其中包含聚合的准备签名。然后领导者进入提交阶段。验证器在收到来自领导者的准备好的消息时进入提交阶段。

3.在提交阶段,验证器向leader发送提交消息。当领导者收到足够的提交消息时,它会聚合从验证器接收的提交消息的签名,并发出提交消息,其中包含聚合的提交签名。然后领导者完成一个视图/回合。验证器在收到已提交的消息后完成一个视图/回合。当领导者或验证者完成一轮时,它将重新启动共识计时器。

在步骤3,也就是提交阶段,验证者在blockNum和blockHash上发送带有签名的提交消息。这可用于新加入网络的节点确认它是否和当前网络同步,同时不至于被恶意领导者。在状态同步模式部分中解释了共识过程如何与状态同步进行交互。

领导者选举

验证程序启动视图更改过程有两个原因。一个原因是当验证器检测到领导者在一个视图中提出两个不同的宣布消息时,它将立即开始视图更改。另一个原因是验证者在超时后没有任何进展。有两种超时:正常共识模式下的超时和视图更改模式下的超时。

在我们的区块链中,我们有了epoch的概念。每个epoch包含X个块。在每个epoch的开始阶段,委员会成员都是由在信标链中为这个epoch下注的人决定的。委员会成员的顺序由该时期的VDF随机性唯一确定。在一个epoch中,委员会将始终保持不变。假设顺序列表是,然后在epoch一开始,领导者是v0。如果发生视图更改,则下一个领导者是v1,依此类推。在这里,我们假设每个验证者具有相同的投票权。

视图更改模式

视图更改过程如下:

1.当共识定时器超时,节点通过向新的领导者发送包括视图ID(viewID)和准备好(preparedmessage)的消息的视图更改消息来开始视图更改。如果它没有收到准备好的消息,那它就只是发送空的视图更改消息,只包括viewID上的签名但不包括准备好的消息。

2.当新领导者收到足够的视图更改消息时,它会聚合viewID的签名,并从视图更改消息中选择一个准备好的消息。它广播新的视图消息,包括聚合签名以及选择出的准备消息。然后新领导者切换到正常共识模式。验证者在收到来自新领导者的新视图消息时切换到正常共识节点,同时停止视图更改计时器并启动共识计时器。如果验证程序在视图更改超时之前未收到新的视图消息,则会将viewID增加1并开始另一个新的视图更改。

第二步要求每个验证器在viewID上发送签名。目的是用于防备恶意领导者。确切地说,前一个领导者可以在准备阶段向不同的验证者发送不同的聚合签名。只要聚合签名有效,验证器就会接受它并在发生视图更改时提出它。在这种情况下,每个视图更改消息都包含不同的签名,新领导者不能进行签名聚合,所以新视图消息的大小为O(N),这是因为新的领导者必须证明接收到足够的有效视图更改消息。如果每个人都在viewID上签名,新的领导者很容易聚集签名,这样可以将新的试图消息的大小减少到O(1)。只有这样,我们才能在视图更改的情况下扩大网络中的节点数量。

状态同步模式

我们允许节点在区块链中自由加入和离开。当新节点加入共识时,它必须先进行状态同步,然后才能验证共识消息。此外,还存在节点在视图更改模式下卡住的情况。例如,当验证程序网络连接速度较慢时,可能无法在超时之前取得任何进展。在这种情况下,它将开始视图更改。但是,它无法从视图更改模式中退出,因为所有其他节点都在向前移动,视图更改会失败。在这种情况下,此节点需要执行状态同步才能赶上。

基本过程很简单。节点通过将其当前块高度和已提交消息中的最新块高度进行比较,如果检测出它不同步时,它将切换到状态同步模式并开始执行状态同步。完成状态同步后,它会切换到正常模式。

为了在状态同步完成后加入共识,节点需要知道谁是当前的领导者以及当前的viewID是什么。一种解决方案是盲目地接受来自共识消息的领导者和viewID。这种方法使恶意领导者有机会在共识消息中发送很大的viewID,强制使得每个验证者开始状态同步。更好的方法是仅在接收提交消息的时候接受领导者和viewID信息。在这种情况下,恶意领导者不能新节点。但它减缓了新节点加入共识的过程,因为在更新领导者和viewID之前,它无法验证宣布消息和准备好的消息。我们选择的方法是将领导者和viewID信息添加到区块头中。当节点完成状态同步时,它可以从最新的区块头中读取信息。如果在状态同步期间发生视图更改,那么来自最新块的信息已经过时。在这种情况下,新节点在收到提交的消息时通过更新领导者和viewID信息仍然可以得到最新的信息。

状态转换

下图是验证器的状态转换图。?领导者的状态转换相对比较简单在此省略。

有5种模式:3种正常模式,视图更改模式和状态同步模式。

模式之间的转换由不同的条件触发,例如接收特定类型的消息或满足某些条件,如超时。

条件列表:am,pm,cm,tc,to,nv,is,os。

欢迎大家扫码加社群管理员好友,进入官方微信群,了解Harmony最新动向!

标签:VIEWVIEBFT区块链LakeViewMetaMETAVIEbft币最新消息区块链是穷人的最后一次机会

狗狗币热门资讯
ING:S.Capital一周行业报告(7.26—7.31)

热点新闻莱特币挖矿奖励将在2019年8月5日减半,届时莱特币挖矿奖励将由现在的25个变为12.5个。全球第二大比特币矿机生产商嘉楠耘智已向SEC递交上市申请.

1900/1/1 0:00:00
POW:百倍矿币成新热点 它能填补IEO的“空虚”吗?

IEO、模式币、共振币之后,现在又火了一个矿币,朋友圈关于百倍矿币的造富故事又在“熟悉”的上演.

1900/1/1 0:00:00
BIKI:LAMBDA超级代表分红活动认购开启!(0731)

尊敬的用户,LAMBDA现开启超级代表分红活动,可电脑端点击https://www.biki.com/innovation/128参与认购;或者点击网页上方“BiKiLab”.

1900/1/1 0:00:00
TPS:比特国际数字资产平台上线AXE

尊敬的GJGlobal用户:比特国际数字资产平台创投区即将上线AXE,并开放AXE/USDT交易对.

1900/1/1 0:00:00
HTT:【活动】关于“IDCM将于7月2日上线GARD,千万GARD等你拿”活动奖励发放公告

尊敬的IDCM用户:“IDCM将于7月2日上线GARD,千万GARD等你拿”活动已圆满结束,活动奖励已全部发放,用户可登陆IDCM账户进行查看。如有疑问请通过邮箱与我们联系.

1900/1/1 0:00:00
WIN:KuCoin上线WINk (WIN)!

亲爱的KuCoin用户:KuCoin现已上线项目WINk(WIN)并支持交易对:WIN/BTC和WIN/USDT.

1900/1/1 0:00:00