请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

EOS中所采用的共识算法DPOS详解

Delegated Proof-of-Stake Consensus
委托权益证明的共识
A robust and flexible consensus protocol
一个具有高鲁棒性(鲁棒是Robust的音译,也就是健壮和强壮的意思。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。)、灵活的共识协议
timg_meitu_1.jpg

一,DPoS的协议背景描述

委托权益证明(DPOS)是目前所有共识协议中最快,最有效,最分散,最灵活的共识模式。 DPOS利用利益相关方批准投票的权力以公平和民主的方式解决共识问题。 所有网络参数,从费用估算到块间隔(减少区块间隔可以减少延迟,但是当系统处于不一致时会导致不稳定,而且区块链也会有改编的风险.)和交易规模,都可以通过选定的代表进行调整。 块生产者的确定性选择允许平均仅需要1秒就能确认交易。 也许对我们来说,最重要的在于共识协议旨在保护所有参与者免受不必要的逻辑检查。因为这一块对于大部分共识协议来说,是最大的瓶颈。

我们回顾下对于任何一个共识协议,我们都应该考虑以下问题:
谁应该生成应用于数据库的下一个更新块?
下一个块应该何时产生?
该区块应包含哪些交易?
协议的变化如何应用?
竞争的交易历史应该如何解决?
对于任何一个共识协议,我们的目标是找到这些问题的答案,对于防范那些希望获得网络控制权的攻击者而言,确保我们的共识过程是强大的。 实际上,获得控制意味着获得单方面控制了审查交易的能力。因此我们希望这个共识协议的整个实现过程应该是强大的,即使攻击者利用不同计算机上数据库状态中的临时不一致性来进攻整个共识协议也应该是能够被防范的。

二,被选举的见证人区块生产过程描述

选举见证这个词是因为它是一个不受监管的法律上中立的词。 传统的合同通常有见证人(Witnesses)签名的地方。但是对于非常重要的合同,有时会使用公证人来进行公证。 见证人和公证人都不是合同的缔约方,但是他们在证明”整个合同是在指定时间由指定人签署而非其他人”起到非常重要的作用。 在比特股中,见证人通过将其包含在链的区块中来起到类似的验证签名和时间戳事务的作用。
在DPOS的共识协议下,利益相关方(Stakeholders又名股东)可以选择任意数量的见证人来生成区块。在这里,区块是指一组更新数据库状态的事务。 每个账户允许每个见证人拥有一张选票,这个过程称为被批准投票。 如果说通过总审批的前N名证人被选中,那么见证人数目(N)的定义必须至少有50%的投票,利益相关方才能认为整个投票过程是足够的去中心化的。 当利益相关者提出他们所希望的见证人数量时,他们也必须投不低于该数量的投票。 同时也不能说为了实现去中心化而投出比见证人数量更多的票。
每当见证者们生产一个区块时,他们都会为他们付出的服务进行费用的收取。 他们的费用高低由利益相关者通过他们选出的代表制定(稍后讨论)。 如果见证人没有生产出一个区块,那么他们就没有收入,同时还有可能在未来被投票出局失去见证人身份。
每次经过一个维护间隔时间(目前为一天)活动证人的名单会更新一次,同时当选票会被记录。 然后将所有见证人轮换进行所谓的洗牌过程,并且每个见证人轮流在每2秒的一个固定时间内产生一个区块。 在所有见证人轮流直至洗牌结束,见证人再次进行洗牌过程。 如果在一次洗牌过程中,证人没有在他们的时间段中产生一个块,那么该时间段(2秒)后将见证人会被跳过,下一个证人产生下一个块。如此循环。
在整个过程中,任何人都可以通过观察见证人的参与率来监测网络健康状况。 历史上,比特股一直保持了99%的见证参与。 如果在某个时候见证人的参与程度都低于一定水平,那么整个区块链交易网络用户可以被允许用更多时间进行交易确认,而且还会提醒用户需要对他们的网络状况保持高度警惕。 该特性为BitShares提供了独特的优势,可以在出现问题后的1分钟内提醒用户区块链网络上可能存在潜在的问题。

三,选定的代表可以进行共识协议参数调整

这些能够进行参数修正的选定代表们(Elected Delegates)其选举方式的产生类似于证人的方式。 代表成为特权帐户的共同签名者,该特权帐户有权提出对网络参数的调整。 这个特权账户通常被称为创始账户。 这些参数包括交易费用,区块大小,见证人服务费用和区块生产的间隔时间等等。 在大多数代表批准了提议的变更后,利益相关方被授予2周的审查期,在此期间他们可以为代表投票是否同意或者取消提议的变更。
这种设计的选择是为了确保在技术上代表们没有直接的权力,并且网络参数的所有变更最终都需要得到利益相关方的批准。 这样做是为了保护代表不受可能适用于加密货币自身的管理员或者项目方的影响。 在DPOS下,我们可以确切地说,行政权力掌握在用户手中,而不是单方面的代表或见证人。
代表与见证人不同的是代表是一个公益身份,并不会有酬劳。 当然,一般来说,对整个区块链网络这些参数的调整是非常非常少的,毕竟涉及到整个网络。生成帐户可以在技术上执行任何其他帐户可以执行的任何操作,这意味着可以将资金发送到创建帐户或指定创建帐户作为托管代理。 起源账户也可以用来发行新资产。 当选代表可以帮助利益相关者执行需要高度信任和责任感的任务时,有大量的应用程序。

四,关于分叉

有时需要升级网络以添加新功能。 在DPOS的共识机制下,所有变更必须由积极的利益相关方批准才能触发。 虽然技术上见证人可以单方面串通和改变他们的软件,但这样做并不符合他们的利益。 基于见证人自己在对区块链政策保持中立的承诺才能被选举上,因此见证人一般会通过保持重力来免受区块链网络管理员/经理/业主/经营者的指控,毕竟见证人也是他们的雇员。
只要利益相关方批准,开发人员可以实施他们认为合适的任何更改。这项政策不仅可以保护开发者,同时它还可以保护利益相关者,并确保没有任何人单方面控制区块链网络或让区块链网络失控。
硬分叉是如同替换了51%的见证者,因此利益相关者参与的越多,其对应的选举证人越多,那么整个系统的安全性就越高。
当然最终能够进行硬分叉,其实最终取决于网络上的每个愿意升级他们的系统的用户。并且不存在一个能够强制硬分叉的区块链协议。这意味着如果大部分用户愿意进行系统升级,那么就可以在没有需要利益相关方投票的情况下推出硬分叉来进行“错误修复”的操作。
实际上,很少通过直接大部分用户直接升级软件的方式进行硬分叉。一般来说,无论多小的内容升级,开发者和证人都应该遵循流程,等待利益相关者批准之后再进行分叉操作。

五,双花问题

在任何一个包含“前序交易”的区块链上都会发生双花问题,而使用DPoS共识机制下,该问题通过自身系统区块链重组来排除此类问题,因此这意味着即使见证人会因互联网基础设施的中断而导致通信故障,但通信故障导致双花的攻击行为可能性会非常低。同时该网络会在在发生故障导致见证人未能按计划生产区块的同时,能够监测自己的健康状况,并可以立即检测到通信中出现的任何损失。如果发生这种情况时,用户可能需要等到一半以上的证人确认交易后才能继续进行下一个交易,这个过程可能会长达一到两分钟。

六,交易权益证明机制

网络上的每个事务可以可选地(Optionally)包含最近块的散列哈希。 如果这样选择触发此项机制,那么交易的签署人可以在任何一个包含该交易的区块链中确信他们的交易。但这一过程的副作用是随着时间的推移,所有利益相关者需要验证整个历史的交易信息。

七,区块链重组

一般来说,由于所有见证人都是选举产生的,理因是高度负责任的,并且其自身是在专用时间段来生产区块,因此很少有可能存在两条竞争链的情况。虽然网络延迟会时不时阻碍到一名见证人及时收到前一个区块。 如果发生这种情况,下一个见证人将通过构建在他们首先收到的任何一个区块上来解决问题。 最后凭借整个区块链上99%的证人参与,来确认一个有99%的机会被验证的交易。
尽管该系统有强大的鲁棒性,能够通过对原链重组来对抗发生的区块错误。但该系统仍然存在一些潜在的软件错误、网络中断或无能/恶意的见证人会创造长于一个或两个块的多个竞争链的情况。 因为软件始终选择见证人参与率最高的区块链。但见证人自己每此只能产出一个区块,因此参与率总是比大多数人低。 所以,没有任何证人(或少数证人)能够做出更高参与率的区块链。 而参与率的计算是通过比较预期产生的区块量与实际产生的区块数量来进行的。

八,最大限度的去中心化

在DPOS共识机制下,每个利益相关者的影响力与其利益成正比,没有任何的利益相关者(用户)会被排除在行使这种影响力之外。 但是市场上的其他共识系统几乎都存在这种情况。 以下有很多种来排除了据大多数利益相关者(用户)影响力的方式。 其中一些方式是通过设计邀请制的机制来减少大多数利益相关者(用户)的系统控制参与度。 其他则是通过让参与费用高于他们的收入费用来排除其(用户)参与。 还有一种是通过技术上允许每个利益相关者(用户)参与,但是他们却可以被产生绝大多数块的一些大型玩家(庄)轻易地(safely)忽略其影响力。 而只有DPOS确保块生产的区块平均分配给整个系统的大多数人,并且每个人都有一种经济可行的方式来影响这些人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则