不知什么时候,一提到比特币,总绕不过“拜占庭将军”。当然,这里所说的“拜占庭将军”指的是,存在比特币中的“拜占庭将军问题”。
谈谈比特币中的“拜占庭将军问题”
在谈比特币中存在的“拜占庭将军问题”之前,我觉得有必要帮一部分读者普及一下历史:
拜占庭将军问题(Byzantine Generals Problem),首先由Leslie Lamport与另外两人在1982年提出,很简单的故事模型,却困扰了计算机科学家们数十年。
拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗?
这和比特币,区块链有什么关系呢?
还别说,关系挺大的!!
如何在一个不基于信任的分布式网络中就信息达成共识?很明显,拜占庭将军问题说明一个“信任”问题。
因为只有当至少6支军队同时袭击才能取得成功。问题是,很有可能在所有军队中,有某些军队会叛变。如何才能让各将军相互信任,并且成功执行完任务呢!我想你应该猜到了,最好的方式是制定一个协议或约定,大家都按照协议上的约定执行。
为了解决这个问题,数学家设计了一套算法,让将军们在接到上一位将军的信息之后,加上自己的签名再转发给除自己之外的其他将军。在这样的信息连环周转中,将军们可以在不找出叛徒的情况下达成共识,从而保证得到的信息和作出的决策是正确的。
在互联网数字货币交易时,获得对方的信任是最最重要的。之前有中心化机制作为双方信任的保障,但比特币没有!!比特币是怎么做的呢?
比特币基于区块链技术的去中心化,公共账本的特质,进而提出了“发送信息成本”机制。其目的就是,在一段时间内只有一个节点可以传播信息。
而加入的成本就是“工作量的证明”。每个节点必须完成一个计算工作之后才能像其他军队传递消息。谁先完成,谁优先传递消息。
当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。比特币引用现代加密技术为这个信息签名。这种加密技术完全可以解决以上问题。
这种加密签名技术的特性在于:消息传送的私密性,能够确认身份,签名不可伪造、篡改。它可以保护消息内容, 并且让消息接收方确定发送方的身份。
比如,a将军想给b将军发送消息,为防止消息泄露,a将军只需要使用b的公钥对信息加密,而b的公钥是公开的,b只需要用只有他自己知道的私钥解密即可。
b将军想要在信件上声明自己的身份,他可以自己写一段”签名文本“,并用私钥签名,然后发布出去,所有人可以根据b的公钥来验证该签名,确定的b的身份。
这样的话,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事在达成一致。
那如何排除叛徒呢?
这种通过工作证明,加密签名技术实现的分布式网络的好处在于:
1)每个将军都有一份实时与其他将军同步的消息账本。
2)账本里有每个将军的签名都是可以验证身份的。如果有哪些消息不一致,可以清楚的知道是哪位将军。
3)即使有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。
由此可见,在这种约定协议下,无需担心有叛徒问题。比特币加入了工作证明机制之后,通过信息签名巧妙的解决了“拜占庭将军”中存在的共识问题。这也是藏在比特币背后的“区块链”的伟大之处。
网友评论