0前言
在区块链漫谈(1)中我们提到,区块链是一个通过多种方法建立共识并解决多方互信问题的系统,该系统需要解决拜占庭将军问题:网络中存在恶意节点(叛徒将军)的情况下如何对某一提案和请求达成一致(不同将军发出的进攻撤退指令不同,以谁为准?)。对拜占庭将军不熟悉的读者可以移步到上一篇内容
传统情况下,解决这一问题的办法是设立一个中心化节点或者第三方裁决组织,来对网络中的提案进行判断从而达成一致。但该方法与区块链非中心化(慎用去中心)的设计理念相违背。那么,区块链是通过什么方法解决拜占庭将军问题的呢?
本篇我们追本溯源,不从技术视角入手,而是从经济视角出发,以比特币这个最初也是最成功的区块链应用来说明其解决拜占庭将军问题的方式
1.提高提案成本——比特币系统中解决拜占庭将军问题的思路
拜占庭将军问题中,各将军发出攻打或撤退的指令几乎没有成本,只需要传令即可。在这种情况下,系统内就会存在多个不同的提案。在没有强中心决策的分布式系统中,系统各方对于提案的确认就变得十分麻烦,因为发声的成本过低,识别和确认的成本随着节点数量增多显著高企。
比特币所提供的解决思路是:提高系统中节点提案的成本,限制一段时间内整个系统中提案出现的数量。这个思路最终落地实施就是PoW(工作量证明共识算法)。
通俗来说,比特币区块链是记录比特币交易的账本,现在当你阅读这篇文章的10分钟时间里,假设系统中发生了20笔交易,但这10分钟里账本只能记录10笔交易的话,那么对于区块链系统来说,它在接下来的时间里要做的事情有:
(1)确定这20笔里的哪10笔能够被记进账本;———(保存提案)
(2)确定谁来记这10笔帐; ———(确定提案权)
(3)确定某人记的这10笔帐整个系统中的其他人都同意 ———(确定提案合法)
对于环节1和2来说,如果提案成本很低,则整个系统可能会有多种提案:A选出20笔中的10笔,B也选出了20笔中的10笔,C…..但他们选择的方法不同。于是系统当中缺乏一种规则,来确认提案权。
比特币PoW算法实际上就是通过以增加提案成本的方法来确定提案权。解决的方法是给每一个节点出一道难于计算但易于验证的数学题,在现今的技术手段下只能通过穷举的方式找到符合这个问题的解。通过这种方法,同一时间内算出这道题的节点相对而言必然不会很多,因为这需要大量的算力和投入;此外,幸运节点再算出该题后将结果广播,比特币区块链系统会对幸运儿算出的题加盖全网统一的时间戳,其他节点收到消息验证之后即可发现该幸运儿先于他们算出这道题,且结果正确(难于计算易于验证)。
2.众包—-经济激励作为制度设计
“我们每天所需要的食物和饮料,不是出自屠夫、酿酒师和面包师的恩惠,而是出于他们自利的打算”—-《国富论》,亚当斯密
上一节中关于提案权的确认实际上会引出很多问题,其中一个关键问题就是:
其他节点跟你我互不相识,凭什么要为你和我之间发生的交易做记账并提案到区块链中?
比特币区块链,或者其他很多公有链实际上都采取了我认为是“众包”的制度设计,即让别人帮你记账,并给记账者奖励。下述几个小标题阐述了这个逻辑:
(1)提案者和提案内容本身并无联系(AB的交易C来作证)
(2)提出提案付出成本(C需要进行挖矿/计算难题)
(3)为没有联系的他人提案并付出成本不理性
(4)为报酬(比特币)付出成本则可行
对于一个公有链,面向世界上所有人开放,因此你并不知道所有的节点是谁,实际上是一个陌生人网络。鼓励陌生人之间彼此协作通过单纯的技术设计难以实现,因为协作动机的本身实际上涉及到经济利益。
比特币将陌生人作为记账员,本质上是将记账(提案)的工作众包给了所有愿意参与该系统的人。记账行为本身就是在维护系统的正常运转(比特币区块链是一个记录比特币交易账目的系统),记账的动机就是争夺比特币。有些读者看到这里肯定会问,比特币本身就是个数字,没有什么价值,这些人为什么要争夺呢?关于这个问题实际上涉及到了经济学中稀缺性和物品价值的讨论,笔者在此不做赘述,这实际上是在讨论激励本身有没有价值。我们本篇所讨论的是,给他人一些激励,让他人能够有动机维护区块链系统,进而保证其他参与者交易有效的制度设计。以结果来说,比特币区块链这一套众包—-利己——利他的自恰逻辑运行进十年而不倒,其中的精巧也自然有过人之处。
3.博弈——作恶还是行善
“蜂群被称为分布式系统,是以生物逻辑建立的群集模型。它有四个突出特点:没有强中心控制,次级单位具有自治特性,次级单位之间彼此高度链接,点对点影响通过网络形成非线性因果关系”——《失控》,凯文凯利
从比特币的区块链系统来看,其正如一个蜂群没有领导,但仍能协作并容忍错误和恶意节点,并保持着一种自治性。一个经常被问到的问题是,如果该系统的提案权归属很大程度上依赖于算力的多寡,那么当某几个节点的算力大到一定程度的时(如51%),其是否可以破坏整个系统的稳定从而自由的作恶?进而颠覆掉整个自治系统?
从理论上来说,这个可能是存在的。但是从经济视角来看,这样做并不理智:
(1)拥有大算力意味着能够更大概率的找到数学难题的解,此时如果按系统规则办事选择诚实,则能够获得更多的奖励;破坏该系统得不到任何奖励。
(2)拥有大算力到一定程度必然会造成其他人的忌惮和忧虑,其他人在比不过的情况下会离开这个系统,因为每一轮的难题竞争几乎都没有胜算。多数人离开之后该系统则变成寡头维护,其他人并不会认可激励的比特币价值(奖励全归你,没人跟你玩,你把奖励卖给谁?)因此大算力节点出于博弈的考虑,会有意识的压制自己的算力在51%以下,因为他知道垄断对自己没有任何好处,会破坏系统生态。
由此观之,以比特币为代表的公有区块链系统在解决拜占庭将军的同时,还规划了激励和算力制度使得系统参与者的利益息息相关,通过制度设计来限制作恶行为。系统并没有反对作恶,只是作恶得不偿失。当然以目前的情况来看,虽然比特币系统没有节点会把自己的算力提高到51%以上,但是少数大算力节点还是垄断了出块权,并相互制衡。这离最初的去中心化其实有一定距离,逐利和竞争思维驱使下,记账权和维护系统权的“多中心化”趋势在所难免。
本篇仅从经济视角上探讨了公有链情况下拜占庭将军问题的解决,实际上较为通俗的阐述了PoW共识算法的原理以及它对系统和生态产生的影响。后续会讨论联盟链场景下解决拜占庭将军问题的方法。