35

屡屡被提及拜占庭将军问题,究竟和比特币是什么关系?

 4 years ago
source link: https://www.tuicool.com/articles/VJnQRvy
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

vAfUzuR.jpg!web

拜占庭将军问题是区块链领域的常见术语,也是密码学的核心问题。

拜占庭将军问题(Byzantine Generals Problem),是由莱斯利·兰波特( Leslie Lamport)在其论文《分布式系统一致性问题(Distributed Consensus)》中提出的分布式对等网络通信容错问题。

在区块链中文词典中,对这一问题是这样描述的:拜占庭将军问题是指“在存在消息丢失的不可靠信道上,试图通过消息传递的方式达到一致性是不可能的”。因此,在系统中存在除了消息延迟或不可送达的故障以外的错误,包括消息被篡改、节点不按照协议进行处理等问题,将会潜在地会对系统造成针对性的破坏。

这或许听起来有些晦涩难懂,接下来,我们用喜羊羊和灰太狼的例子来讲述一下什么是“拜占庭将军问题”。

拜占庭将军问题

假设某一天,灰太狼抓走了慢羊羊村长,为了村长的安危,羊村中的5只小羊需要进攻狼堡,营救村长。

在这里我们假设这5只小羊的作战能力是均衡的,他们分别驻守在狼堡外的5个战略地点,只能通过信使互相联系,而且只有他们其中的至少4只一起行动,才有可能成功营救村长。

为了简化问题,我们将小羊们的行动策略限定为进攻或撤离两种。为了表示民主性,他们决定通过投票,根据多数性原则来达成一致策略,决定进攻还是撤离。

在投票过程中,每只小羊都需要通过信使,将自己的投票信息传递给其他5只小羊,这样每只小羊都可以根据收到的消息,结合自己的选择,根据少数服从多数的原则,达成一致的共识,选择进攻或者撤退。

但问题是,在他们的队伍可能存在叛徒,有一只小羊可能已经被灰太狼策反了。

假设被策反的小羊收到了两票进攻,两票撤退的消息,此时,他只要给投票进攻的两只小羊传递进攻的消息,给投票撤退的两只小羊传递撤退的消息,那么就会出现两只小羊进攻,两只小羊撤退的情况,这就破坏了队伍的协同性,营救行动就会失败。

并且,由于小羊们的消息需要信使传递,因此,被策反的小羊极有可能伪造信件,假装其他小羊的身份传递假的消息。

即使所有的小羊都是忠诚的,也依然存在着信使被灰太狼替换,甚至截杀(虽然动画片里不会发生)的情况。

在以上这几种种情况下,如果忠诚的小羊仍遵循了票数的大多数原则,营救村长的任务就会失败。

所以,由于这些风险的存在,导致每只小羊都会小心行事,不敢轻易相信其他小羊的消息,从而影响总体的行动。

这就是拜占庭将军问题。

比特币的出现

将这个故事映射到计算机系统,我们可以将小羊看作计算机的节点,将信使看作通信系统:拜占庭将军问题的核心就是 如何在可能存在不可靠节点和不可靠通信的情况下交换信息,达成共识。

而且根据科学家们对这个问题的研究,假如叛徒的数量大于等于1/3,那么拜占庭将军问题将不可解。

这个问题在1982年被提出,但直到2008年中本聪(Satoshi Nakamoto)提出比特币,才得到一定程度的解决。

我们可以看到,拜占庭将军问题有本质性的问题有两个:“一致性”和“正确性”问题。而它之所以难解,其中有两个重要的原因:

1、 信息不加密,容易被破解,冒充和伪造;

2、节点恶意行为影响共识的成本很低;

那么,比特币的底层技术是如何解决拜占庭问题的呢?

非对称加密技术

比特币网络可以将节点发送的信息进行加密,即使用非对称加密技术保护节点发出的信息。

这种技术有三个特点:

·消息传送的私密性

·能够确认身份

· 签名不可伪造、篡改

由于区块链网络是去中心化的,信息在每个节点上是共享的,因此,降低了由于信息不透明导致的向不同节点传递不同信息的可能性。

另外,非对称加密算法的加密和解密使用不同的两个密钥:"公开密钥"(公钥)和"私有密钥"(私钥),这解决了节点信息被篡改,泄露,伪造的问题。

拜占庭容错

比特币网络增加了信息发送的成本,并规定,在一段时间内,只有一个节点可以传播信息。

这个成本指的就是工作量证明——POW(Proof Of Work)机制,所谓的信息发送,也就是我们所说的挖出比特币后在区块上进行的广播。 在这个机制下,只有第一个完成证明(挖出比特币)的节点才能广播区块。

而这个方案的具体实施,就是根据的拜占庭容错算法。

拜占庭容错是区块链技术中的一种共识算法。

拜占庭容错算法的基本想法可以用一句话来描述: 系统中任何人都是不可靠的,当一个人收到其他人的消息后,不需要立即做出判断,而是把自己收到的消息再传递给另外的人,这样,消息在各个成员之间就是透明的 (如A发给B进攻,B就将自己的想法连同A的想法一起发给C,C就可以看到A,B两个人的信息)。 因为系统中诚实的节点占多数,所以每个人根据总信息对比后进行判断,最终出现差错的可能性就会大大降低

根据研究,如果系统中有 N个节点,那只有不诚实节点的数量F达到F=(N-1)/3时,才会影响系统的正常运行。

比特币网络上拥有超过30,000个节点,攻击这些节点进行作恶所需付出的算力和成本是非常高的。所以,即使系统中存在恶意的节点,但是只要大多数节点是好的,就完全有可能实现 去中心化的共识(Consensus)

这似乎也解释了为什么挖矿不是资源浪费——毕竟建立信任的成本不是0。

可以说,比特币提供了一个拜占庭将军问题解决方案,而这个方案,可以推广到任何核心问题是分布式网络上缺乏信任的领域。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK