拜占庭将军问题
在讨论比特币为什么会被称为主流币之前先看一个有趣的问题,这个问题的名字叫做拜占庭将军问题。
这个问题是由莱斯利·兰伯特提出的点对点通信的基本问题。
为什么会被称为拜占庭将军问题呢?有两大历史渊源。
一、拜占庭位于如今土耳其的伊斯坦布尔,是东罗马帝国的首都,由于罗马帝国当时土地辽阔,每个军队都相隔较远,信息传递全靠信差。而在战争时拜占庭的所有将军必须达成是否攻击的共识,这样才能赢得战争。但是因为有叛徒和间谍的存在就会扰乱秩序,使得难以形成正确的共识。拜占庭将军问题就这样形成了。
二、Leslie Lamport(2013 年的图灵讲得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。
Leslie Lamport在20页的文章中举了一个具体的例子来描述什么是拜占庭将军问题,拜占庭排出了10支部队去围攻一个城池,10支部队由10个将军带领,分布在城池的四周靠通信兵传递信息,由于敌人实力强悍,必须要6队或以上的人马同时发起进攻才能赢得战争。如何保证至少6支军队可以同时发起进攻。
从字面上看起来似乎不是一个很难的问题,其实际解决起来却没那么容易,在中本聪提出比特币网络概念之前这个问题一直就没有得到较好的解决。
为什么这么难解决呢?
因为信息传递是分散的,并且其中还可能存在间谍叛徒捣乱。
先不考虑有叛徒和间谍的情况,光10个将军想要统一一个发动进攻的时间都很难,举例:每一个将军都有着自己的进攻想法,想要统一一个进攻时间就要将自己的想法让通信兵传达给剩余的9位将军,并询问是否同意在这个时间发起进攻,又由于路途远近的不同,收到的提议的时间都不同,这样就很容易形成一个混乱的局面。
如果再加上叛徒和间谍就更可怕了,叛徒和间谍可以向不同的将军发出不同的提案,或者同意多个将军的进攻提案。
这样来看这个问题是不是就极其复杂了。
其实拜占庭将军问题,就是要解决分散的人们在没有一个中心化指挥时,如何达成共识的问题。
那中本聪如何成功解决拜占庭将军问题的呢?
POW工作量证明
中本聪提出用工作量证明的方法解决这个问题。
POW工作量证明通过增加信息发送的成本,降低节点发送信息的速率,保证在一个时间只有很少的节点进行信息的传递,并且信息的传递附上签名的办法很好的解决了拜占庭将军问题。
那工作量证明是什么呢?其实际就是一个散列函数,当你输入一个任意值X进入这个函数进行运算,会对应得到H(X)的结果,但当你稍微变动一下X,H(X)就会发生巨大的变化,也就是说理论上你无法在得知H(X)的情况下反推出X的结果,想要算出X唯一的办法就是穷举运算,也就是我们常说的一个一个带进去试。由于这个运算量很大,而运算的过程就是工作的过程。
哈希函数
前面说到的散列函数实际上就是哈希函数,只是翻译不同哈希是Hash的音译。
其实在比特币网络的整体架构中,哈希函数到处都有体现,整个网络的运行就是围绕中哈希函数展开的。
比特币在记账时,使用哈希函数对记录的数据进行哈希,数据哈希可以带来一下好处,首先信息变短并且原始信息被隐藏,其次有了标识和验证信息的办法。
下面用一个大概流程进行展示。
区块链在记账时先把正常的信息进行Hash,会得到一个Hash值。
1.Hash(序号0、记账时间、交易记录) = 123456ABC
账页的信息和Hash值组合就构成了一个完整的区块。
在记下一页账时,将上一个区块的Hash值和当前的账页信息一同Hash。
2.Hash(上一个Hash值、序号1、记账时间、交易记录) = 654321CBA
这样第二个区块不仅包含自己区块的信息还间接包含了前一个区块的信息。
矿工在挖矿时,实际上就是在计算Hash函数。之后会专门写一篇文章来讲解挖矿的过程。
在确定数字货币所有权方面,其实也是经过两次Hash从私钥得到了地址,这个地址平常我们打币使用的地址。谁拥有私钥谁就可以进行交易,私钥就是你唯一的资产凭证,所以一定要保管好自己的私钥。
为什么比特币可以被称为主流币呢?不是因为它涨幅有多么惊人,市值有多高,而是因为它的出现解决了许多问题,给人们提供了一种全新的点对点电子分布式网络架构。
网友评论