上期在
大妈都能看懂的区块链“去中心化”
中我们讲到在去中心化以后,整个系统中没有了权威的中心化代理,信息的可信度和准确性便会面临问题。那么如何解决这个问题呢?我们先了解一下拜占庭将军的故事。
拜占庭将军问题
拜占庭帝国想要进攻一个强大的敌国,为此派出了10支军队去包围这个敌国。这个敌国虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。
但这个过程中会出现以下问题:
1. 这些军队中会有存在叛徒的机率,叛徒会擅自变更进攻意向或者进攻时间。
2. 传递信息时会敌国截获。
3. 无法确认信息的准确性。
4. 信使在传递消息过程时会存在弄丢信的风险。
5. 这些军队距离很远,不能每遇到一个问题就聚集在一起商讨。
那么拜占庭怎么才可以赢得战斗呢?
在这种状态下,拜占庭将军问题反映到区块链领域中来,可以理解为在一个去中心的系统中,有一些节点是坏掉的,它们可能向外界广播错误的信息或者不广播信息,在这种情况下如何解决呢?
非对称加密技术加持,达成共识机制
我们可以把这些军队,看成一个由互不信任的多个节点组成的分布式网络。
传统的解决拜占庭问题主要有两种方式:口头协议和书面协议。但这两种方法都存在显著的缺陷,前者无法做到信息的溯源,后者无法解决信息传输延时、签名记录中心化存储问题。
直到区块链的出现,才从根源上解决了拜占庭将军的问题。区块链在传递信息的过程中加入了节点,以保证在一个时间只有一个军队可以进行传播消息,且必须在这个军队传播完之后,才能向其他军队继续传播消息。当某军队发出“进攻”的消息后,各个军队收到消息后必须签名盖章,确认各自的身份。
比如A将军给B将军发送进攻消息,为了防止消息泄露,A将军需要用B将军的公钥为信息加密,然后B将军只有他自己才能使用的私钥解密。B将军可以写一段“签名文本”来证明自己的身份,用私钥签名并广播出去,其他将军可用B将军的公钥来验证该签名,确定B将军的身份。随后,B将军发给C将军时,会在原来的消息上加入B将军已查阅该信息的记录,并加盖时间戳。其他将军接受消息后,重复此流程直至所有将军都收到消息。
如果叛徒想修改进攻信息,其他将军会立刻意识到无法通过加密技术验证的异常信息,同步的虚假信息将不被认可。而且叛徒无法破坏10个军队中的至少6个军队,也就无法破坏大部分的节点,这样信息的一致性就得到了保证。
至此,运用非对称加密的方法,一个不可信的分布式网络变成了一个可信的网络,所有的参与者在传递信息时达成共识,拜占庭将军问题得以解决。
领取专属 10元无门槛券
私享最新 技术干货