为什么我们在谈到比特币或者比特币的区块链技术时,很多人都要提到拜占庭将军问题呢?
这主要是因为,拜占庭将军问题本质上就是如何解决计算网络中不可靠的点对点通信的问题,目标就是要达成一致,即达成共识,这跟比特币作为一种去中心化的P2P网络要解决的问题是一样的。
P2P网络
拜占庭将军问题自提出以来,一直没有人能够给予圆满解答,这也就是在比特币之前,为什么这么多的加密数字货币一直没能成功的主要原因,直到比特币的出现。
所以真正解决拜占庭将军问题的人是——中本聪。
发送信息的成本作为一个大学主修计算机专业的人,同时又有过通信的工作经验,自然认为,拜占庭将军们应该要有一套可靠的通信解决方案,不过我这里要提到专网无线通信里的一个功能,即对讲机的半双工通信功能。
用过对讲机的人应该知道(我这里为了简单化,就以通常小区里保安用的那种直通对讲机为例),比如在一个小区里,一般只有一个频率点可以使用,那么每次通话就必须只有一个人讲话,只有等这个人讲完了,其他人才能讲。
但是如果通信的情况改为小区里的保安们都可以同时双向讲话,即全双工通信,那么是不是就乱了呢?
而如果拜占庭将军们在用计算机进行点对点网络通信时(计算机网络就是全双工的),如果也同时开始发送信息,那么通信状况肯定也混乱不堪。
这就是发送信息的成本,节点越多,这个成本越大。
所有必须达成一种共识,按照一定规则来发送信息,比如,每个节点给予10分钟的通信权利,轮流发言,降低发送信息的成本。
又或者谁先解出某个数学难题,谁就拥有发言权,而这个恰恰就是比特币的解决方案:工作量证明,具体参见“浅谈区块链(十九):工作量证明”
比特币之所以用工作量证明来决定谁获得这个权利,主要是因为,要通信的节点实在太多了,就像状元只有一个,必须要那个最先解出题目的人一样。
区块链技术彻底解决了拜占庭将军问题拜占庭将军问题其实要解决以下几个问题:
1.信息的私密性(如果将攻击信息公布出来那么攻击就失败了);
2.信息发送的身份追溯;
3.不可伪造的签名;
4.发送信息的规则(信息发送不能毫无规则,否则就像开会时,你说你的,我说我的,完全混乱);
比特币的区块链技术就是解决了上述四个问题,才造就了比特币今天的成功。
针对“信息的私密性”,比特币的区块链通过将数据进行加密,就解决了信息的私密性问题;
针对“信息发送的身份追溯”,比特币的区块链通过时间戳以及每个区块的哈希值,前后串连起来,形成一个个区块形成的链条,即区块链,使之可追溯;
针对“不可伪造的签名”,比特币的区块链通过不对称加密,信息发送时,用私钥签名(加密),信息接收者通过发送者的公钥来验证其签名的真伪;
针对“发送信息的规则”,通过工作量证明来解决这个问题,即谁先解决出某个数学难题,谁就获得这个权利;