(三)拜占庭将军问题

前言

因为比特币没有中心节点,各个节点都是平等的,并且可能存在恶意节点,那么怎么达成共识呢?
这里有个著名的拜占庭将军问题。

1. 拜占庭将军问题

拜占庭将军问题是Leslie Lamport(2013年的图灵奖得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。

这个例子大意是这样的:

拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队(一半以上)同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们怎么才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?

在拜占庭问题里,各军队最重要的事情是:所有将军如何能过达成共识去攻打敌国或者都不进攻以避免损失。
达成共识并非坐下来开个会那么简单,有的将军心机深不可测,口是心非,如果有叛徒,可能会出现各种问题:

叛徒可能欺骗某些将军自己将采取进攻行动。
叛徒可能怂恿其他将军行动。
叛徒可能迷惑其他将军,使他们接受不一致的信息,从而感到迷惑。

针对拜占庭问题的深入研究,科学家们得出一个结论: 若叛徒数为m,则将军总数n>=3m+1时才有解

解决方案

  • 每个将军给其他所有的将军发送消息,然后根据收到的所有消息以少数服从多说的原则决定是否进攻。
    原理如下:


    拜占庭将军问题.PNG
  • 这里假设有一个叛徒,则至少有4个将军。如上图所示,假设A,C,D为忠将,B为叛将。进攻为1,不进攻为0。假设A先发给BCD进攻的消息,则CD为忠将,接到进攻的消息后,也将收到的进攻消息发出去。而B为捣乱,会说收到的消息为不进攻。这样ACD都会收到2个进攻1个不进攻,按照少数服从多数原则,他们都会选择进攻,这样发起进攻的军队将会多于50%。


  • 假设将军A是叛将,则他会向三位将军发出不同的消息,比如上次的2次进攻,1次不进攻。而BCD三位忠将都会将收到的消息如实发出去。最后少数服从多数原则,三位忠将还是能达成进攻的共识。其他情况大家可以尝试推理一下,都是可以达成共识的。

  • 缺点:如果存在大量的节点,每个节点要向全网发送大量消息。

2 . POW共识机制

  • PoW(工作量证明 )通过计算一个数值( nonce ),使得拼揍上交易数据后内容的 Hash 值满足一定的条件。在节点成功找到满足的Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播打包区块,会立刻对其进行验证。
    如果验证通过,则表明已经有节点成功解迷,自己就不再竞争当前区块打包,而是选择接受这个区块,记录到自己的账本中,然后进行下一个区块的哈希运算。网络中只有最快算出答案的区块,才会添加到账本中,其他的节点进行复制,这样就保证了整个账本的唯一性。

  • 怎么防止恶意节点:要想获得记账权,就要耗费大量的算力去进行哈希运算,付出了很多成本。人是理性的,是逐利的,如果不作恶,正确的记账,就会获得奖励。而如果有任何的作弊行为,都会导致网络的节点验证不通过,直接丢弃其打包的区块,这个区块就无法记录到总账本中就不会得到奖励,而付出的算力也就白白付出了,相当于受到了惩罚。两相权衡,人们就失去了作恶的动机。因此在巨大的挖矿成本下,也使得矿工自觉自愿的遵守比特币系统的共识协议,也就确保了整个系统的安全。

  • 分叉:当有两名矿工在几乎在同一时间,各自都得了正确的答案,便立即传播自己的区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。假如这两个正确的区块分别为A、B,则有的节点会先收到A区块并将A加入区块链,而有的节点会先收到B。这时就导致了区块链分叉。

  • 最长链原则:刚开始分叉时旷工都在自己收到的区块的基础上进行延伸,两个块都收到的节点,会把其中长度更长的一条作为主链,另一条作为备用链保存(保存是因为备用链将来可能会超过主链长度成为新主链)。这样一段时间后所有旷工都会切换到最长的那条链,从而解决分叉问题。

  • 为什么10分钟出一个块:如果出块时间过短,也就意味着挖矿难度降低,这时就会有更大的几率多个旷工同时算出答案。又由于刚产生的区块在全网广播时需要一定的时间,其他节点也很容易收到不同的区块。简单来说就是出块过快容易导致频繁分叉。但是出块慢也有代价:确认时间变长了。

  • 51%算力攻击:理论上,当攻击者掌握了51%的全网算力时,其攻击总是能成功。因为他总能让自己的链成为最长的链。但是,如果他攻击比特币系统,比特币将不具备可信性,以至比特币必然崩盘,一文不值。这对他显然百害无一利。举个例子:现在有几个国家的原子弹都足以毁灭地球,但他们会这么干吗?

  • 电力消耗:比特币因为挖矿,消耗了大量电力,这是它的一大缺点。并且随着比特币价格越来高,全网算力越来越大,电力消耗也将越来越大。

小结:

本篇简单介绍了一下POW共识问题,后面还会有文章详细介绍挖矿的具体原理。

To be continued...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容