本文由币乎社区(bihu.com)内容支持计划奖励。
1)区块链技术的解决的主要科学问题是什么?
2)答:拜占庭将军问题
3)那啥叫拜占庭将军问题?
4)可以见《拜占庭将军问题深入探讨》(http://www.8btc.com/baizhantingjiangjun)
5)拜占庭将军问题(Byzantine failures)是由2013年图灵奖得主、微软科学家莱斯利·兰伯特提出的点对点通信中的基本问题,点对点通信可以理解为分布式网络中通信,而拜占庭将军问题(Byzantine failures)问题指存在不可靠信息通道的消息传递过程要达到一致性是不可能的。这个问题描述比较难以理解,由于莱斯利·兰伯特打了个比方,让人们更容易理解这个通信问题。
6)拜占庭将军问题(Byzantine failures):拜占庭帝国(395年-1453年)国力昌盛时横跨欧洲、亚洲和非洲,国土辽阔,分散于全国的各个将军要发动军事行动去进攻相同实力的国家,分散兵力不可能获胜,于是必须要一起行动,这时会有如下问题:
不能一起碰头开会,万一开会时被一锅端了怎么办?
通信时有叛徒怎么办?叛徒发布假信息,让一些将军出兵,另一些将军不出兵,没有全力一致的军事行动各个将军会被对方逐个击破。
7)该问题在区块链技术出现前被认为无解(failures),因此研究该问题时一般假设通信网络没有叛徒。
8)该问题实质是要解决分布式网络中各个节点的一致性与正确性问题,如何保持通信一致并正确:达成正确共识?
9)回到,区块链技术的BTC中,回顾一下BTC的挖矿环节,BTC系统功能是所有矿工争夺记录交易帐本权利,谁抢到了,谁有奖。
10)在这里,所有的矿工就是拜占庭将军问题中的将军,分散于全世界的各个角落,他们要相互通信,保持帐本一致性:
不能碰头开会,那样还是中心化的系统;
通信过程中有叛徒怎么办?
11)BTC系统规定了,所有将军发言时要完成一个工作量证明(proof of work),要完成这个工作量证明一般要10分钟才能完成,谁先完成,谁才能向所有其他将军发送一条消息:第XXXXXX区块的交易是这些这些……
12)这个规则的加入的好处,通信成本极剧上升,哪个将军获得发言权,所有其他将军一致行动。没有这个规则,分布式节点间通信的问题是谁都可以提意见,还有一些错误的,最后没人拍板,最后吵成一锅粥。但是通过工作量证明这个环节,分布式节点间通信一次一个节点只能说一次话,谁说了,就当是正确的内容(信息正确),其他人必须听(达到一致),快速达成正确共识。
13)那通信中的叛徒也要抢发言权怎么办?
14)这时候,通信中的将军其实就分成了两派,一派是诚实的将军,一派是不诚实的叛徒将军。
15)诚实的将军拼命完成工作量证明,成功了发一言,我决定几点进攻,由于诚实的将军发表正确信息,其他将军听从指挥即可。
16)不诚实的叛徒将军要想抢到话言权,同样要拼命完成工作量证明,发布不正确的信息,于是为提高获得发言权的概率,不诚实的叛徒将军要获得更高的计算力,完成工作量证明,当其掌握的算力要大过诚实的将军的算力,他才有50%的概率获得发言权,即51%算力。
17)于是,不诚实的叛徒将军将面临一个经济学问题:
为了获得这51%算力,不诚实的叛徒将军要投入多大资金量;
在达到51%算力前,不诚实的叛徒将军长期要进行劳动改造,完成工作量证明;
达到51%时,不诚实的叛徒将军已经有了指挥拜占庭帝国的权利,他为什么还要当叛徒呢?
18)在BTC的白皮书里,作者提出了一个 计算:
为了防止不诚实的叛徒将军的进攻,当不诚实的叛徒将军掌握的算力为10%时,5个区块后,不诚实的叛徒将军将成功攻击区块链的概率小于千分之一;
当掌握20%算力时,11个区块后,不诚实的叛徒将军将成功攻击区块链的概率小于千分之一。
所以有了一条“6区块后(1个小时)作为不可逆确认”的常识。
图来自白皮书https://bitcoin.org/bitcoin.pdf
19)而实际情况是,全世界的矿池都很小心的控制自己的算力稳定成长,但使其算力占比小20%:
因为矿工的建设投入资金量巨大,他必须向人们证明他没有想当不诚实的叛徒将军的野心,人们信任这个去中心化矿工系统,矿池才能拿回投入资金并获得劳动回报;
而任何意图破坏这个系统的人,都将是矿工的敌人。
图片来自btc.com
20)矿工是BTC系统的军队与防御力量,诚实的将军所掌握的算力,将是不诚实的叛徒将军的所要攻克的长城。
感谢您的关注!
网友评论