DATx系列之二 - 共识机制(下篇)
发布:中币网 时间:2018-02-12 11:08:28 加入收藏 打赏
DATx共识机制
鉴于DATx需要高并发、低延迟处理交易的需求,我们采用股份授权证明共识机制,即DPOS共识机制。
DATx中,DPOS共识机制被分为了两部分,其一是选举一组区块生产者,其二是调度生产。选举流程要尽量保证,权益所有者最终能控制整个网络,因为一旦网络出现问题,权益所有者损失的将会最大。
1 选举区块生产者
1)成为代表
成为一名代表,用户必须在网络上注册属于他自己的公钥,然后其会被分配一个32位的特有标识符,该标识符会被每笔交易数据的“头部”引用。
2)授权选票
每个钱包有一个参数设置窗口,在该窗口里用户可以选择一个或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。
3)保持代表诚实
每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户去换一个新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。
4)抵抗攻击
在抵抗攻击上,因为前100名代表所获得的权力权重是相同的,每名代表都有一份相等的投票权。因此,无法通过获得超过1%的选票而将权力集中到一个单一代表上。因为只有100名代表,可以想象一个攻击者对每名轮到生产区块的代表依次进行拒绝服务攻击。幸运的是,由于事实上每名代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易被减轻。这将使确定DDOS攻击目标更为困难。而代表之间的潜在直接连接,将使妨碍他们生产区块变得更为困难。
2 调度生产
我们还需要重点知道的是,当区块生产者选好后,如何达成共识。为了说明DPOS共识机制,我们先假设只有三个区块生产者,A,B,C。当然在实际场景中,会有更多的区块生产者。
因为共识需要2/3 +1 个成员来应对所有场景,所以在这里,我们假设区块生产者C是那个破局者。另外,如POW(工作量证明)共识一样,基本规则是我们总是应该选择最长的区块链。任何时候,一个诚实的节点看到另一个合法的且更长的区块链,它应该总是切换到那个更长的分支上。
1)正常情况
在正常情况下,区块生产者轮流每3秒产生一个区块。假设没有生产者错过自己顺序,那么他们生产的链条势必是最长的链条。另外,在区块生产者在非指定时间生产区块会被认为是无效的。
注意,实际情况中生产者的顺序是随机的。
在后面所有的例子中,我们展示的是一个轮流选择区块生产者的方案。但在实际中,生产者集合是随机的,每N个块就将随机一次,其中N是生产者的数量。这种随机保证区块生产者B不能总是忽略区块生产者A,打破多个同样的分支等待。
2)少数群体的分叉
可以允许最多1/3的节点是恶意节点或者是故障节点,从而导致出现分叉。这里我们假设A、B、C中C是恶意节点或者恶意节点。在这种情形下,少数分支(下图下方的链)将只能在9秒内生产1个块,而大多数分支(下图上方的链)由于数量多一倍,将预期能在9秒内生产2个块。所以,诚实的2/3的大多数可以比小的那一部分创建一个更长的链条。
3)隔离环境下的重复块生产
少数群体可能尝试创建一个无限数量的分叉,如下图中,节点C尝试创建了多个分叉(C0,C1,C2,C3)。但是即使节点C创建了很多分叉,分叉的链的长度比主链都要短,而且,分叉链的成长速度比主链要慢。
4)网络碎片
网络非常有可能碎片化,没有哪一个链上的区块生产者占到了所有区块生产者中的大多数。在此情景下,最长的那个链将变成最大的一个少数群体。当网络连接恢复正常后,相对较小的那些群体将自然的切换到最长的链,从而将恢复明确的共识。
还有一种非常可能的情况是,三个分支中,最大的两个分支一样大。此时,将由相对更小的第三个分支加入网络时来打破僵局。存在奇数个区块生产者,所以僵局一般不会持续很久。在区块生产者的清洗中,会将生产者随机生成顺序,以确保即使两个分支具有相同数量的生产者,分支也将以不同的长度爆发增长,导致一个分支最终接管另一个分支。
5)少数群体重复生产
在这种情景下,少数群体C在自己可以生产的时间节点,同时创建两条或多条的区块链。下一个执行的生产者A,将选择C创建的可选链中的任一条,A选中的这条链将成为最长的链。下图中,节点A选择了上一区块为C的节点。之后,即便节点C再次创建一个节点,下一个节点A也不会选择节点C1,而是选择长链。所以,无论少数恶意节点结点制造多少的链,他们在下一轮中,肯定不会是最长的那个链。
6)最后的不可逆区块
在网络碎片的情况下,多个分叉可能持续较长时间的隔离。长远来看,最长的链将最终受到认可。但观察者需要一种手段来确定某个块是否是在最长链条的一部分(确认共识)。这可以通过2/3 + 1个区块生产者是否对某个块有确认。
下图中,块B被A、C确认了,这意味着2/3 +1都已经确认了。由此我们可以为不可能存在更长的链了,因为2/3的区块链是诚实的。
需要注意的是这个规则与比特币的6个区块确认类似。一些聪明的人可以设计一系列事件,其中两个节点可能会在不同的最后不可逆块上结束。这种极端情况需要一个攻击者,精确控制通信延迟,并需要在几分钟内实施不止一次,而是二次攻击。如果发生这种情况,那么最长链条这一长期规则仍然适用。我们估计这种攻击的可能性足够接近0,经济后果也微不足道,不值得担心。
7)不足法定区块生产者
这种情况下,生产者没有明确达到法定人数,少数人可能继续生产块。在继续生产的区块中,利益相关者可以包含一些改变投票的交易。这些投票会选举一组新的区块生产者,并将区块生产参与度恢复到100%。一旦发生这种情况,少数人链最终会超过其它低于100%参与链。
当这个情况发生时,所有的观察者必须要明白整个网络处于不稳定的状态,直到多于67%参与者出现后才会稳定下来。哪些选择在这种情景下发起交易的,与那些在比特币中接受低于6块就确认交易成功那样,冒着类似的风险。他们必须明白,存在某些情况下,共识最终会以另一个链为准。在实践中,这种情形比在比特币中接受少于3个块就确认更加安全。
8)大多数的区块生产者的腐败
如果大多数区块生产者合谋变得腐败,他们制造无限数量的分支,每一个分支都有多于2/3的大多数的签名。如下图中节点B和节点C合谋,恶意创建无限数量的分支。
在这样的场景中,最后不可逆转块算法退化为最长链算法。此时最长的,获得了最大的群体认证的,将由少数的诚实节点的加入来确定。这样的情形不会持续很久,因为利益相关者会最终投票替换掉这些区块生产者。
交易即权益证明(TaPOS,Transactionsas Proof of Stake)
当用户对一个交易进行签名时,潜在假设是他们知道当前区块链的状态。如果关于最长链的共识发生了变化,那么对应当用户签发交易时所作的潜在假设也失去了基础。
TaPoS,是指所有的交易,包括最近区块的哈希。如果它不存在于区块历史中,那么他就被认为是无效的。任何人在一个孤立的节点上签名交易,交易本身将不会得到承认,而且也不能被移植到主网络上。
这个流程带来的一个副作用是,为网络带来安全,可以抵挡长程攻击,试图生成一个替代链。个人利益相关者每次交易就是对区块链的一个投票。随着时间的推移,所有的块都被所有利益相关者确认,这是一个不能在伪造链中复制的东西。
最后
DATx通过DPOS和并行链的方式解决延迟和数据吞吐量的问题。目前可观的情况下,DPOS(委托权益证明)都是强健的,甚至在面对相当数量区块生产者舞弊的情形时也是安全的。选择块生产者和验证节点质量的算法赋予了DPOS的安全性。运用赞成投票的过程可以确保一个人即使拥有50%的有效投票权也不能独自挑选哪怕一个生产者。DPOS大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
程式化广告中,一直比较重要的是投放的实时决策、个性化投放需求和大量交易等问题。DATx采用的DPOS共识机制在我们的交易中占据了重要的地位,其在处理比任何其它区块链更多交易的同时持续达成共识,在DATx广告生态中展现出了非凡的一面。
来源:
来源:中币网 https://www.zhongbi.net/news/jishu/19227.html 声明:登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。 此文如侵犯到您的合法权益,请联系我们3111859717@qq.com,我们将第一时间处理。