「力场」——公链挖矿第一社区
入币圈以来看项目白皮书或者介绍的时候,经常看到“拜占庭将军”问题,那么什么是拜占庭将军问题呢?拜占庭将军可不是一个将军的问题,它是一个点对点通讯的经典问题。
从网上的资料看拜占庭将军问题有2个说辞,一种是拜占庭帝国想用十个军队要攻击邻国,另外一种是十个邻国想合伙攻击拜占庭帝国,两种说辞虽然不大一致,但是都体现出了问题的所在,简单描述一下拜占庭将军问题。
拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗?
简单分析一下核心问题:
1:所有将军在任何时候都可以发起任何时间进攻的提议
2:将军中存在叛徒,如果只有6人同意进攻,6人中有2人是叛徒,进攻是失败
3:由于其中存在叛徒,消息传递过程中是否会被篡改进攻时间
那么区块链是如何解决这个问题的?
1:首先区块链上主链是唯一的,争取出块的矿工可以有多个,但是最终记账的都是唯一一个矿工,不会存多个矿工同时记账的问题(也就是不会存在多个将军同时提起进攻的提议)。
2:共识机制,每次出块都在链上进行广播,对该区块的合法性达成一致。并且每次提议的结果不需要所有节点马上跟上,节点选择最长的链进行链接即可。
3:区块链采用了加密技术,对信息进行加密存储,并且每个区块都存储这条信息,除非有51%攻击,否则无法篡改。
通过这种方式,达成分布式网络中的共识。
网友评论