INT中的授权拜占庭容错算法(dBFT)和权益授予证明(DPoS
INT中的授权拜占庭容错算法(dBFT)和权益授予证明(DPoS)
第一章
跨链通信中确权的重要性
对于所有希望实现跨链通信的区块链来说,客观而明确的100%确权是一个关键属性。如果没有100%确权,一条链上的重复可能会在所有相互关联的区块链上产生不可调和的连锁反应。——Daniel Larimer
这可拆分成两部分——互联网络间的确权和可扩展性。
“确权”,即所有权转让的不可逆转性,是我们在日常交易中经常忽略的东西。我们以为,当工资发到银行账户中时,钱就是自己的了,想怎么花就怎么花;在超市购物付款刷卡时,一旦显示“成功付款”,就可以带走购物车里的商品;当看见比特币成功显示在电子钱包中,觉得那就是自己的资产......而隐藏在背后的逻辑其实是一个经过仔细思考的交易大概率会成功的判断。正如普通生活中最不易被察觉的微小事物一样,“确权”对于每一个交易系统的正常操作都至关重要。
“确权”不是一个绝对的事儿。各种错误也可发生,银行可能被烧毁、故障会发生、代码也有可能出现漏洞。不同程度上存在着任何可能,可能摧毁你以为你所拥有的一切财产。在像银行这样的信任中心化的系统中,你的资金是否有效,是否可以进行交易,这都取决于银行。只有银行才能决定你的交易是否有效。然而在区块链中,也存在着同样的交易风险。某条链上产生了一项交易,但网络可能连接至另一条链上,在这条链上偷偷把刚刚发生的交易删除。
为什么“确权”在可互操作的网络中如此重要?
如果想要打造一个能够实现互操作的网络区块链,那么该网络中的合约与行为将会由多个链上数据和交易决定,这时“确权”就变得十分关键。基于一条子链上的任何价值交换行为,如果该子链没有能力保证自身信息的正确性,且交易无法撤销,那么该网络即可废弃。
正如我之前写过的文章所述,INT正在通过创建一个可实现轻松扩展和无缝互操作的物联网区块链,来寻找互操作性的圣杯。又正如INT白皮书所述(详情请查看此处),为了实现互操作性,INT构建了一个异构多链框架,该框架使得子链与“众神”中继主链并行运行。该众神链将作为网络的状态转换机而存在,“监督”众多并行子链的运行,同时促进共识、进行出块操作,而子链只需负责验证交易即可。这大大增加了子链的交易吞吐量,实现了子链之间的完全互操作性,因为所有子链中的信息都位于中央。众神链的超级节点即为子链的主节点,也是子链之间跨链通信的中介。
以众神链为子链中继运行的INT异构多链架构
实现状态转换机的分离需要两层共识来达成互联网的广泛协议。众神链作为子链间信息传播的中继,交易确权必须得到保证。这使得众神链的授权拜占庭容错算法(dBFT)成为主要共识,权益授予证明机制(DPoS)成为自链交易验证的共识。
正如我们所见,授权拜占庭容错算法(dBFT)让共识机制变得效率高且更加完善,同时利于网络速度的提升,扩展性以及互操作性的实现。这些都是应用程序运行的基础。
区块链的确权
由于没有中心化的权威,区块链只依赖于分布式协议来确认什么是有效的历史记录。又由于该协议需要一定的时间才能生效而且在此之前不具有保障性,包含交易的区块或链可能在未来不会生效。这就是为什么通常交易在生效前需要在网络中进行“确认”。经过每个额外区块的确认,进一步验证交易并且减少交易回撤的可能性。
但是那又有什么关系呢?为什么不在交易不太可能回撤之前找出最佳区块并重新设置呢?这种做法肯定适用于比特币,以太坊和任何其他加密货币等资产交易,也正是交易所在收到你的定金后的做法。等交易达到区块链中的某个“深度”之后才允许你进行交易。
如果切换到一个能够传递可储存变值的数据的系统,或者是一个能够和其他网络实现互操作的网络呢?在物联网中,当天气传感器发送70°F的读数数据,但在得到“完全”的确认前又不可被使用,此时的数据传输是没有任何意义的。另一方面,当一个复杂的合约依赖于另一条链上的资产转移,而该交易得到确认之后又撤回,这会在大范围内产生严重的后果。从该案例你可以发现确权的更加重要了,同时,当在一个可进行互操作的网络的链上,完全依赖于某一交易的确权在运行时也是极为重要。
为什么共识机制的选择很重要
区块链网络内交易确权是否明确完全取决于共识机制,出块时间和节点通信。这三个变量共同决定在某个固定信任的水平上的失败点以及确权的具体时间。
在工作量证明(PoW)中
在工作量证明(PoW)网络中,从来就没有100%确权。随着交易在区块链中深入,一条链被判定有效的概率逐渐增大,但也不排除被判定无效的可能。仍存在这样的风险,矿工会自动转至另一条链,该链从你的交易所述的区块之前的区块(但不包含)开始。
工作量证明共识机制(PoW)采用最长的链,意味着大多数的工作是在上面完成的,相应地,大多数的矿工作为公认的主链而存在。因此,在特定时刻可能存在众多主链的替代链,每个替代链都提供了一个新的交易时间线。如果其中的一个分叉借助系统漏洞或恶意篡改让矿工继续工作,那么就同时形成了两个有效记录。在2013年,比特币网络曾发生过类型情形。当时一个版本的软件出现了错误,而可替代的另一版本暂未形成,这就导致出现了两条链竞争的情况。此竞争持续了6个小时,直到一条链最终比另一条长,抵消了替代链并消除这6小时交易历史记录,问题才得以决解。
那么在一个工作量证明机制的网络中,我们应该何时确定一个交易的确权呢?我们可以通过想象某人以双重攻击的形式通过计算解决了问题,来理解确权。假设某链只拥有不超过25%的算力,但是我们希望拥有大于99%的大概率交易撤回。这样的话就只有25%的概率替代链会在主链之前出块,而75%的概率不会出块,这样的话在这场竞赛中失去成为主链的机会。以下是其数学表达形式。
其中x是替代链成为主链所需的“步骤”或区块数量,F是成功概率,因此确权f可以表达为1-F
落后1个区块,成功概率即为33%。这意味着如果我们落后一个区块或一项确认,一个拥有25%算力的恶意程序在区块上篡改交易的概率就增加到了33%。
替代链每落后一步或一区块,成为主链的概率会呈指数型下降。
2个区块后,概率下降为11%; 3个区块后,概率为4%,依此类推。 在延迟6个区块之后,是0.1%。
这就是为什么在工作量证明机制的网络中通常公认的确权需要6个区块或经过6次确认的原因。一旦经过确权,你的交易不会被另一条在该区块前有原始记录的链撤回的概率将近99.8%。
如果你想要一个拥有更高级别安全的交易确权,那么领先10个区块后确权即可达99.998%,15个区块后达到99.999993%。这也表明概率永远不会变为0,所以不存在100%的确权。
这就是为什么具有51%算力的中心化的控制很重要的原因。如果恶意程序拥有51%的算力,那么很有可能造成一次大规模的双重攻击。
那么我们需要多长时间来实现99%的确权呢?这就是出块时间在实现确权的过程中重要的体现。在比特币中,如果区块时间为十分钟,那么,6次确认就需要60分钟。在以太坊中,如果区块时间为10秒,6次确认就只需要1分钟。
在权益证明(PoS)中
在权益证明机制的网络中,确权并非由最长链定义,而是通过签署区块的验证器的数量而定义。简单介绍下权益证明机制,网络中的验证器是以矿工的形式而存在,其具有挖矿能力的或影响力与拥有的币数量成正比。如果你是验证器并拥有网络中代币总量的2%,你将能够验证网络中的2%的交易或2%的区块。
权益证明机制中验证器的问题在于它本身并不能抵制像工作量证明机制中那样具有最长链规则的替代链。不存在任何一种机制能够保证一部分验证者投票一个区块后,不会投票给另一个有争议的区块,这就导致了两个链的出现。这就是所谓的拜占庭将军问题,也是每个权益证明机制在某种程度上必须应对的问题,即使在中心化的系统中也是如此。
在拜占庭将军问题中,为了确保军队采取的行动,无论是攻击(验证区块)还是撤退(不验证区块),都是通过在所有将军(验证器)做出共同决定来实现的。在军队中必须建立一个系统来确保恶意程序(该情况下称为不诚实的验证器)行为无效或受到惩罚。拜占庭将军问题的解决方案被称为拜占庭容错。
在最简单的情况下,如果诚实的验证器拥有多数赞同并且不考虑任何异议投票,则可容忍此类攻击。虽然这能阻止网络中的任何分裂行为,但不能避免验证者不诚实(无利害关系问题)。在许多权益证明机制的网络中,这是通过惩罚那些对有效区块投反对票的验证器来实现的。
具体需要多少个验证器来实现共识以及如何对不诚实验证器进行惩罚,这都需要根据实际情况决定。一般而言,为达到共识拜占庭容错的标准是网络验证器总数的三分之二。这是所需验证器的最大数量,以防止网络分裂和验证器勾结,同时最大限度地减少验证器所需的获胜票数。
如何惩罚不诚实的验证器是一个十分微妙的讨论。某些网络在给定时间内会取消对验证器的奖励,撤销节点权限(如EOS)或摧毁整个数字资产权益(如以太坊卡斯珀 POS机制)。正如Vlad Zamfir所说,想象一下这样的工作量证明机制,如果你参与51%的攻击,那么你的采矿硬件会被烧毁。这里的想要说明的是,一个诚实的验证器不仅可以获得经济上的利益,而且会以其最佳利益行事。
除了经济上的确权,链重组的勾结成本也能保证确权,因为软件定义具有可变性,所以也会存在主观的确权。客户在预先裁定的区块深度后不会推翻确权,因此无论验证器提出何种相反的建议,都不会改变最终确权。
好了,回到确权上
说了那么多,在权益证明机制的网络中,确权的时间f定义为:
其中n是网络中共识所需的验证器节点的数量,ω是协议开销(验证器每秒需要处理的消息数)。这与速度=距离/时间的经典物理问题非常相似,如果你想在f时间内处理n个消息(距离),那么每秒需要处理的消息数(速度)是ω= n / f。你可以看到这三个变量问题,您只能为一个变量选择最佳方案,或者在小于最佳值的情况下,综合考虑。将其放入图表形式:
Vlad Zamfir关于以太坊卡斯珀协议的论文
中心化和低开销吗?确权将会需要很长时间。你想要高度去中心化和低确权时间吗?节点行为要求会极高。你想要低开销和低确权时间吗?你必须限制一小部分节点的网络。当然在一系列妥协中存在着无限可能的变量。
每秒消息的数量ω取决于所选择的机制。在PBFT或DBFT中,每个节点必须将其响应发送到区块建议,而在基于PoS或DPoS的链中,网络选择一个验证器来验证区块。
对于BFT机制来说,由于每个节点必须在生成下一个区块之前发送一个对该区块签名的消息,因此每个区块的消息数量是每个节点发送到(区块建议)的消息数加上(区块签名)发出的消息数除以出块时间B,或ω= 2n / B.对于PoS机制来说,由于每个块只有一个验证器,因此每个块时间只有一个消息,因此ω简化为1 / B.
让我们将其带入数字。假设有一个权益证明机制的网络,其区块时间为5秒(比较快),那么ω= 1/5,以及10,000个验证器(高度去中心化)。我们得到10,000 /(1/5)或10,000
* 5或50,000秒(约14小时)的最终确权。如果我们想建立一个拥有同样速度的区块时间,同时确权时间也要短暂的网络,我们必须牺牲去中心化来规范网络验证器。30个验证器会给我们30 * 5 = 150秒(2.5分钟)的确权时间。当然,你可以折中处理,使用1000个验证器并要求这些验证器以每秒1条消息的速度进行通信,这将产生1000秒(约17分钟)的确权时间。
因为拜占庭容错机制(BFT)需要来自网络中至少2/3的节点的响应以达成共识,所以它们相对于给定的网络设置时间更快地实现确权,而代价是与网络中的验证器数量成比例的开销。以上面的例子为例,对于具有5秒区块时间和10,000个验证器的授权拜占庭容错算法(DBFT)网络,开销ω= 20,000/5或4,000条消息每秒,这给我们10,000 / 4,000或2.5秒的确权,相当于等效的50,000秒权益授权证明(DPoS)的设置。
INT通过限制去中心化的途径来支持快速出块和快速确权,它有31个验证器和10秒区块时间。这要求验证者保证高额开销,以便及时达成共识。
来总结一些权益证明(PoS)项目的结果,EOS细心挑选了少量验证器(区块生成器)来支持其以权益授予证明(DPoS)和拜占庭容错(BFT)为基础机制的网络;Neo的验证器(簿记员)则更少,在他们基于授权拜占庭容错算法(DBFT)的网络中,这些验证器受到更为中心化的控制(目前)。INT采用的是两者融合的方式,精心挑选(已投入使用)少量验证器(元节点)以支持其以授权拜占庭容错算法(DBFT)为基础的众神链,而另一组验证器(超节点,也在使用中)来支持其以权益授予证明(DPoS)为基础的子链。 INT的确权将由以授权拜占庭容错算法(DBFT)为基础的众神链驱动。
物联网领域的确权
物联网是一个功能多元化的网络,从高频率的小数据集到更大的可分析数据组,再到价值转移。因此,在确权上使用一刀切的方法是没有意义的。许多人都认为以区块链为基础的物联网无法正常工作,因为他们印象中区块链交易处理时间很长,而基于有向无环图(DAG)的代币交易更快,即“未来”。值得记住的是,交易包含于区块中和接收交易是两回事。比特币或任何其他区块链交易耗时较长的原因是无法交易代币,直到存在一种极大可能——交易无法撤回。网络中的交易与IOTA或Nano一样快,之所以不是更快是因为它们受网络的光延迟速度(平均为1-3秒)影响。像INT这样的基于区块链的物联网网络会把整个网络中的大多数低价值数据交易进行基本延迟,使得最基本运行变得和外界所有网络一样快。完全确权将仅用于资产交换等更高价值的交易,即便如此,INT中的完全确权时间也需要大约5秒。
注释和参考:
在此进一步强调一下,假设在一个以加密货币为媒介的带有用于转让不动产的智能合约的区块链上,只有当交易链上的交易被撤回时,交易才可能发生,不动产所有权的转让才能生效。任何规模或任何价值的此类事件都是不可接受的。
2/3是拜占庭容错算法目的的标准。如果调整至3/4,那么26%的验证器可以串通以阻止确权;如果调整至51%然后使用2%拜占庭因素,加上网络分割,你可以创建一个应用场景,其中一半网络确权于A而另一半确权于 B。2/3的阈值确保这两种攻击都需要1/3拜占庭容错才能完成,这在数学上被证明是最安全的。- VitalikButerin