DPOS(Delegated Proof-of-Stake)股份授权证明
DPoS 机制是在 PoS 的基础上进行了改良,举例来说就是大家公认的投出选票,选举出一定数量的代表,让这些代表进行验证和记账等,可以理解为PoS 的升级版。与PoS的主要区别在于持币者投出一定数量的节点,代理他们进行验证和记账。其合规监管、性能、资源消耗和容错性与PoS相似。
DPoS的工作原理为:每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。DPoS的投票模式可以每30秒产生一个新区块。
简单点说:DPoS 委托权益证明通过由持币人投票选举出一定数量的代表来达成共识。 每个持币人的投票所占的比重 与他持有的币种数量有关,持有的越多,所占的比重越大。被选出的代表可拥有记账权,轮流进行记账;未能很好履行职责的代表还会被投票除名。这一任期结束后,新的代表会再次通过投票产生。
代表token:EOS、TRX等。
优点
- 比 PoS 机制拥有更高的效率和性能:相比于 PoS 机制,DPoS 大幅缩小了参与验证和记账的节点数量,可以达到秒级的共识验证。
缺点
- 整个共识机制还是依赖于token,很多商业应用是不需要代币存在的。
- 去中心化程度低:相比较于只能说是弱中心化;
- 安全问题严重:类 PoS 机制的通病,相信大家都看到过报道,如被黑客攻击等等。
PoC(Proof of Capacity)容量证明机制
PoC 机制早在 2014年存在了,但只是一直处于“落魄阶段”,简单说就是没火,无人问津。2019年随着POC一大公链Yottachain的崛起,越来越多的矿工加入了POC硬盘挖矿这个行业大军了。它是POW共识机制的一种,以硬盘作为共识参与者,它的特点是牺牲性能获得安全可信,相对POW减少了非常多的安全和信任成本,更低成本解决了全局信任和安全,几乎不耗电力资源,并且可共享和复用的信任生态。
PoC 机制是通过普通硬盘挖矿的共识机制。简单来说就是利用计算机硬盘中的闲置空间来进行存储进行挖矿获取收益,硬盘空间越大,存储的内容越多获得的收益就越大。 它更多地关注内存而不是处理能力。 从某种意义上说,这是对PoW的改进,即使在挖掘开始之前,容量证明也要求节点将预先计算的哈希值存储在其硬盘驱动器和其他内存单元上,这个过程称为绘图,绘图使容量证明成为比工作证明更快的机制。这种方法的另一个优点是它可以节省大量能源,这与工作量证明机制不同。更不用说,硬盘存储更多哈希值的任何技术改进也将为不在区块链中的人改进技术,这与许多制造商制造的专用芯片不同,后者除了采矿之外什么都不做。
IPFS 也类似,但不同的是 IPFS 衍生的区块链项目(激励层Filecoin)是一种去中心化存储服务的 Marketplace(撮合交易的市场),它的重点在于如何在系统参与者互不信任的条件下,实现存储和检索工作的量化;PoC 是一种底层共识机制,与 PoW、PoS一样都是去中心化网络达成一致性状态的算法。由此来看,两者是完全不同的概念,唯一的共同点就是都可以使用硬盘向网络贡献价值来换取收益。
代表token:BTT、BHD等。
优点
挖矿门槛较低:只要有硬盘就可以进行挖矿,大大降低了挖矿门槛;PoC的矿机耗电量低、噪音小、成本低,适合家庭挖矿和人人挖矿。
去中心化程度较高:抵押机制提高了算力集中化的门槛,即便有超级矿工出现,普通散户也可以继续获得收益。
能源消耗低,节能:相比于PoW,POC挖矿将算力替换成硬盘空间,在很大程度的杜绝了POW挖矿造成的资源浪费以及对环境不友好等问题,同时降低了挖矿成本,让矿工从挖矿中赚取更多的利润。
反垄断:用硬盘容量替代了算力,天然具有抗ASIC的属性
缺点
- 未来发展的局限性可能较大
- 可能会有政策性风险
- PoC并没有实现真正的平等
DAG(Directed acyclic graph)有向无环图:无区块链概念
有向无环图是计算机科学中众所周知的数据结构。事实上,区块链也是DAG的一个例子,因为它有一个明确的方向,没有任何循环,并且是一个图。1OTA使用的Tangle也是DAG共识机制的一种形式。在这种机制中,每个块必须有两个父块。所以,为了通过DAG共识机制完成一笔交易,用户需要验证自己之前的两笔交易。这种机制的最大优势是它可以减少延迟和交易费用。然而,这种共识模型对提高可扩展性几乎没有任何作用,而且极易受到攻击,因为任何攻击只需要34%的哈希算力就可以破坏系统。
DAG最初出现就是为了解决区块链的效率问题。其通过改变区块的链式存储结构,通过DAG的拓扑结构来存储区块。在区块打包时间不变的情况下,网络中可以并行的打包N个区块,网络中的交易就可以容纳N倍。
之后DAG发展成为脱离区块链,提出了blockless无区块的概念。新交易发起时,只需要选择网络中已经存在的并且比较新的交易作为链接确认,这一做法解决了网络宽度问题,大大加快了交易速度。
代表token:IOTA、byteball等。
前段时间国内首个基于DAG的物联网区块链项目ITC万物链也取得了不小的涨幅。
优点
- 交易速度快;
- 无需挖矿;
- 极低的手续费
缺点
- 网络规模不大,导致极易成为中心化;
- 安全性低于PoW机制
PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错:分布式一致性算法
实用拜占庭容错在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。
在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机(Coordinator / Commander)或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息,导致影响最终的系统一致性。拜占庭将军问题就根据错误计算机的数量,寻找可能的解决办法,这无法找到一个绝对的答案,但只可以用来验证一个机制的有效程度。而拜占庭问题的可能解决方法为:在 N ≥ 3F + 1 的情况下一致性是可能解决。其中,N为计算机总数,F为有问题计算机总数。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。
优点
系统运转可以脱离币的存在,pbft算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。
共识的时延大约在2~5秒钟,基本达到商用实时处理的要求。
共识效率高,可满足高频交易量的需求。
缺点
当有1/3或以上记账人停止工作后,系统将无法提供服务;
当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据
实用拜占庭容错主要应用于央行的数字货币以及布萌区块链。
dBFT(delegated BFT)授权拜占庭容错算法
小蚁采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。dBFT和PBFT的关系类似于PoS和DPoS的关系。
dBFT在PBFT基础上进行了以下改进:
将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;
将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;
为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);
在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。
优点
专业化的记账人;
可以容忍任何类型的错误;
记账由多人协同完成,每一个区块都有最终性,不会分叉;
算法的可靠性有严格的数学证明;
缺点
当有1/3或以上记账人停止工作后,系统将无法提供服务;
当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;
以上总结来说,dBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。
Pool验证池——私有链专用
基于传统的分布式一致性技术,加上数据验证机制;之前曾是行业链大范围在使用的共识机制,但是随着私有链项目的逐渐减少渐渐开始势微。
优点
不需要token也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
缺点
去中心化程度不如bictoin;更适合多方参与的多中心商业模式。
参考
拜占庭将军问题
拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
这一问题是一种对现实世界的模型化,尤指网络当中由于软硬件错误、网络阻塞及恶意攻击导致的各种未知行为。
显然,在此处默认了将军们在达成一致的过程中正确的传递出了自己的决定,也就是说叛徒只存在于将军当中,不存在于传令兵当中。故要让拜占庭将军问题有解,必须要具备一个重要前提,即信道必须是安全可靠的。关于信道可靠问题,会引出两军问题。两军问题的结论是,在一个不可靠的通信链路上试图通过通信以达成一致是基本不可能或者十分困难的。
拜占庭容错
拜占庭将军问题提出后,有很多的算法被提出用于解决这个问题。这类算法统称拜占庭容错算法(BFT: Byzantine Fault Tolerance)。简略来说,拜占庭容错(BFT)不是某一个具体算法,而是能够抵抗拜占庭将军问题导致的一系列失利的系统特点。 这意味着即使某些节点出现缺点或恶意行为,拜占庭容错系统也能够继续运转。本质上来说,拜占庭容错方案就是少数服从多数。
拜占庭将军问题的原始论文给出了一些解决思路,但其更注重理论上的可行性。算法效率不高,算法复杂度为指数级,且文中明确指出时间成本及消息传递数量很大。因此不具备太大的实用价值。
拜占庭容错系统需要达成如下两个指标:
● 安全性:任何已经完成的请求都不会被更改,它可以在以后请求看到。在区块链系统中,可以理解为,已经生成的账本不可篡改,并且可以被节点随时查看。
● 活性:可以接受并且执行非拜占庭客户端的请求,不会被任何因素影响而导致非拜占庭客户端的请求不能执行。在区块链系统中,可以理解为,系统需要持续生成区块,为用户记账,这主要靠挖矿的激励机制来保证。
拜占庭系统目前普遍采用的假设条件包括:
● 拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;
● 节点之间的错误是不相关的;
● 节点之间通过异步网络连接,网络中的消息可能丢失、乱序、延时到达;
● 服务器之间传递的信息,第三方可以知晓 ,但是不能窜改、伪造信息的内容和验证信息的完整性;