当前位置:首页 > 官方资讯 > 基于区块链的DAPP开发笔记(3)-对比特币共识的理解

基于区块链的DAPP开发笔记(3)-对比特币共识的理解

rrtad 2年前 651 0

@@ -0,0 +1,35 @@

1.比特币的共识

是指由矿工节点组成的比特币网络对所有该产生的合法区块进行确认(同时否认不合法区块,丢弃掉)。由于每个区块又包含了若干交易, 所以也就等于对所有交易进行了确认,达到共识。
这里的合法,我认为是合乎比特币设计算法规定,而不是法律意义上的合法。

2.分布式

由于参与比特币挖矿的节点数量巨大,地理上又分布于不同的地方,网络状况也不尽相同。是一个极端分散的分布式系统。每个矿工节点收到网络上广播的用户交易的顺序,数量都不一样。每个矿工看到的都是不同的view。因此,比特币的共识算法本质上就是要随机选择出一个具体块的矿工。之前在知乎上看到一位大牛的说法,适当的随机数产生算法对公链的设计是最关键的。

3.随机数

选择当前的出块节点必须是随机的。如果某个节点知道某一个高度的块一定产生于自己,那么他就可以没有成本的作弊。为了让那些试图伪造比特币交易(例如double spend)的人增加成本,比特币选择了一种需要大计算量来产生随机数的方法。这就是工作量证明,PoW。

4. PoW

矿工在把若干交易打包在之后,就需要选择一个随机数c。这个c的值要满足一个条件,就是把c和打包好的交易放在一起进行一个Hash运算,产生了Hash值h。由于采用了Hash256,所以运算结果h是一个256bit的数字。该数字类似于一个随机数,因为你无法根据c来大致猜测这个数字在什么范围。
比特币网络有一个难度值d,该难度值是动态调整的。每个时间段都会进行调整。
如果h <pow(2, 224) / d。那么就认为c是合法的,然后把c和交易一起打包在一个区块中并广播出去。
由于我们无法根据c的值来得知h的范围。所以只有枚举所有c的值进行SHA256的计算。如果d的值越大,h值的合法区间就越小,那么尽快找到c的概率就越低。如果系统算力增加,那么通过调
整d的值就可以调整c被发现的概率速度。

6.分叉

为了保证交易的顺序性,每个区块里面还要记录上一个区块的hash,也就是对父亲区块的引用。从而形成一条chain。但是由于系统的分布性,在同一个时段内,很有可能系统的多个矿工节点都产生了的区块并且被广播出来。这些区块都有相同的父亲。这些分叉就形成了一个树。后面随后产生的block有可能又引用这些分叉上的任一个区块作为父亲,那么这个树就越来越大,越来越长。

7.共识

由于交易的顺序性,我们不可能选择多个分叉记录在案,所以只能选择一条分叉。其余的就会被丢弃。比特币网络的选择就是最长的一条分叉。根据概率,在大致相同的时间段内形成一个同样高度的3层树的概率比两层树低很多,更多层的树如果有相同高度的两个分叉的概率就更低。
所以一般认为,如果到六个区块产生之后,就可以有一个最长的分叉宣布胜出了。(大概需要1个小时)

8.没有完全的共识

由于比特币的完全分布化。整个系统的节点数量处于不断变化中。有些网络会不时的断掉。
考虑一个极端情况,假定由于某种原因(比如防火墙),整个世界的网络在两个小时内分为两个区域。每个区域都会产生自己的最长分叉。当网络情况好转,两个区域合并的时候,必然有一个分叉会被丢弃。
似乎,在一个完全分布化,又不停的有节点加入退出的网络是没有100%的确认的?只有无限接近100%。

9. Double Spend

根据上面的分析,具有51%算力的人,更大的概率可以在同一时间让自己提交的分叉高度比较其他节点产生的分叉高一点。那么就可以用自己长的分叉来替代别人以为被确认的短分叉。

10.和BFT的区别

BFT的一致性更好,而且,理论上可以达到100%确认。因为系统中的出块节点个数是预知的,得到2/3节点确认就可以完全确认了。
我的理解是,BFT的出块节点是互相全联通的。而且是互相知晓的。要加入出块,是需要permission的。速度会很快,但是如果出块节点增多的话,根据全联通图的特点,其通信开销呈指数增加,很快就受不了了。

发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

相关文章

新流量红利:如何花1500元,成功裂变带来24000+曝光?

新流量红利:如何花1500元,成功裂变带来24000+曝光?

我们人人通证第二轮产品内测已经正式结束了,粉丝和KOL该分钱的都分了。其实一开始,我是震惊的!首先这次活动,来自各方面对于我们的肯(tu)定(cao),还是有的。赞助商对人人通证V积分争霸赛的评价毕竟...

基于区块链的Dapp开发笔记(2)-没来得及映射随机账号,如何创建自己的EOS账号?

基于区块链的Dapp开发笔记(2)-没来得及映射随机账号,如何创建自己的EOS账号?

问题1:没账号因此不能创建账号由于懒,我们没来得及在六一之前将EOS提取到钱包,因此也就失去了在EOS全网映射的时候获得账号的机会。然而下一步,我们计划基于EOS做DAPP开发,因此必须要实现这个账号...

利息、四川交子和XMX,比特币以及文末福利

利息、四川交子和XMX,比特币以及文末福利

我们很好奇,新兴的价值是如何被发现,如何被实现,又如何变化的。于是产生了本篇讨论。一、新价值的产生和变化从历史上来看,我们对价值多样性的认识,是不断拓展的。它总是崛起于主流价值边缘,一开始没有被定义,...

区块链中的物理学装逼指南(1)-熵

区块链中的物理学装逼指南(1)-熵

零、缘起这两天看到一些通证经济的文章,提及很多让人不明觉厉的物理概念,比如:“货币量子态”又或者:“奖惩透过整个人类组织间接地支配着负熵”“它(奖惩)有着比负熵更好的流动性,也有着比负熵更好的普适性”...

基于区块链的Dapp开发笔记(1)如何解决以太坊中的nounce冲突问题

基于区块链的Dapp开发笔记(1)如何解决以太坊中的nounce冲突问题

基于区块链的Dapp开发笔记(1)如何解决以太坊中的nounce冲突问题近期我们做了一个小的基于以太坊的DAPP-告白世界,一共4个独立页面(见下图),其中主要是将告白信息上链,来做到对告白信息永久保...