风险提示:理性看待区块链,提高风险意识!

比特币是如何解决了拜占庭将军问题?

2个回答

王乾、1325星评价

2020-11-02 14:18:25

比特币是如何解决了拜占庭将军问题?

比特币其实就是一个公共的电子对账本,网络上分布着无数节点分别记录最新的交易数据。如何维护这个公共账本是这个问题的关键,也就是如何达成共识。有学者对这种问题进行了抽象就是所说的拜占庭将军问题,实际就是解决公共P2P网络如何实现信任。

拜占庭将军问题如下:

拜占庭将军问题(Byzantine Generals Problem)--

拜占庭是古代东罗马帝国的首都。强大的拜占庭将军协商一同围攻一个敌人。n个将军包围着这个敌人,他们需要协商一个一致的时间,同时对敌人发起总攻,才能确保战争的胜利。但其中一些背叛的将军可能会通过发送错误的消息造成混乱,干扰忠诚的将军同时发起总攻。如果同时发起进攻的将军数量少于m个,可怕的后果就是,拜占庭将军不仅不足以歼灭敌人,反而有可能被敌人歼灭。怎样才能保证至少有m个将军在同一时间一起发起进攻呢?

现实世界中,在互联网世界由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为,是有可能发生的。那比特币系统给出了它的解决办法:

1、工作量证明;

2、奖励机制。

工作量证明:同一时间只有一个节点记账(谁算对了谁记账,解决了记账权的问题,否则大家都来记账听谁的),那如何保证他记账是准确的呢?因为所有流水帐大家都能在网络上查到,各个节点都有自己的一本帐,即是公开透明的,他要想恶意破坏,除非有51%的"同盟"一起帮他做坏。

奖励:如何能保证节点都来记账呢?系统给出奖励,谁来记账给谁奖励比特币(记账奖励),谁验证交易给谁验证奖励(验证奖励),这样节点就有动力去不停的记账和验证了,这样就共同构建了一个健壮的比特币网络。

小熊猫NO.10星评价

2020-09-22 16:21:32

拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。

这是拜占庭问题的起源,最初是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义为在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。

其实这是个假设,是对现实世界的模型化,在互联网世界由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。

如果传输的信息不一致或者不可靠,那么所传递的信息就不会被赋予价值。现有的互联网系统解决了信息的快速传递和存储问题。比特币系统为了保障信息在信道传输中的一致性和可靠性,采用工作量证明机制给发送信息加入适当成本,采用非对称加密技术和Hash算法给信息进行数字签名,使得信息在缺乏信任的分布式网络中传输得以可信,也使得价值在互联网上传输成为可能。

工作量证明机制(POW)

我们设想一下,拜占庭时代有个墙高壁厚的城邦拜占庭,高墙内有超级多财富。它被其他10个城邦所环绕。它的十个邻居都觊觎拜占庭的财富,希望占领它。任何单个城邦入侵都会失败,十个邻居的一半以上同时进攻才能攻破它。而且,邻居之间通讯和协调统计时间的唯一途径是通过骑马传递信息。然而,他们可在任意时间以任意频率派出任意数量的信使到任意的对方。问题是如果每个城邦向其他九个城邦派出一名信使,十个城邦每个派出九名信使,也就是在任何一个时间有总计90次的传输,且每个城分别收到九个信息,每一封都写着不同进攻时间。除此以外,部分城邦会答应超过一个的攻击时间,故意背叛,所以他们将重新广播超过一条的信息链。这个系统迅速变质成不可信的信息和攻击时间相互矛盾的纠结体。

比特币系统为解决这样类似的问题,为每一个发送信息者加入成本,降低信息传递的速率。所加入的成本就是工作量证明。工作量证明是基于计算一个随机哈希算法的。它唯一做的事情就是获得一些输入然后进行计算,并得到遗传64位的随机数字和字母的字符串,就像这个:

d70298561fedce6147b5bf509e28d29627078d9a01a8f86b

单个哈希值计算机可以即时计算出来,但比特币系统规定,只有一个前面13个字符是0的哈希值结果才能被比特币系统接受成为“工作量证明”。这样一个13个0的哈希值是极其不可能与罕见的,在目前需要花费整个比特币网络大约10分钟的时间才能被计算出来一个。在比特币计算网络中找到一个有效哈希值之前,上十亿个无效值会被计算出来。这样就减慢了信息传递速率同时也可获得整个系统可用的“工作量证明”。

用非对称加密技术和Hash算法给信息数字签名

在POW技术基础上,信息传递还得使用非对称加密算法对信息加密,产生公钥和私钥。用公钥对信息进行加密只有对应的私钥才能解密,这使得信息公开传输和密钥管理问题得以高效解决。在比特币系统中,除了使用非对称加密解决信息传递的可信问题外,还使用安全散列算法(Hash算法)来对信息进行数字认证签名,从而快速验证用户的身份。要想证明对此信息拥有所有权和更改权,就必须在网络中广播发送请求,所有的网络节点都可以使用公钥来验证这个请求是否对应于这个签名,若对应则信息被验证。