LOADING

白话比特币核心技术:共识机制和拜占庭将军问题

思考1年前 (2023)更新 推比特
404 0

比特币有三大技术支撑:

  1. 非对称加密技术
  2. 点对点传输技术
  3. 哈希现金技术(共识机制)。

 

这三个基础技术中,最容易理解的是P2P点对点传输技术,毕竟大家都是用过BT下载的人,这个都不理解的话,能对得起自己硬盘里藏的小片么?然后是非对称加密技术,这个稍微难理解一点,但是只要不涉及代码,逻辑上还是很容易讲明白的,后面我会专门讲。最难理解的,就是哈希现金,它主要解决共识机制,典型如拜占庭将军问题。先不要被这一系列专业名词吓住,本文有信心让所有不懂技术的人从本质上理解共识机制!

 

三项技术中,我个人觉得,最精妙的恰恰就是最难理解的共识机制

 

先从拜占庭将军问题讲起,故事大概是这样的:中世纪的拜占庭帝国,富裕强大,幅员辽阔。但是,因为国土面积大,当镇守各地的将军们想统一行动的时候,问题就来了:万一某个将军,或者将军的核心部下是叛徒怎么办?叛徒可以会造成以下严重影响:

1,把进攻说成撤退,总之就是传递相反的指令,让自己军队做出相反的动作。

2,向临近将军传递相反的指令。

3,放各种烟雾弹,让自己人和其它军队搞不清楚状况,从而贻误战机。

……

 

这个问题是1982年,由 Leslie Lamport 与另外两人提出的,注意看年份,这个问题肯定不是拜占庭的将军们提出的,所以这是一个科学假设,但不可否认,现实中处处都有这样的问题!这是一个非常有现实意义的科学问题,如果能解决,将会对人类社会产生重大影响。然而可惜的是,在比特币诞生之前,没有人真正意义上解答出过这道题。

 

在历史上,曾经有科学家做过一个最小化的沙盘推演,说只要叛徒的数量大于等于三分之一,拜占庭问题就不可解。我们假设拜占庭一共就三个将军ABC:

1,如果发出信息的A是叛徒,那不用说,另外接到信息的两个将军,直接就废了。

2,如果A发出信息,另外两个人有一个是叛徒,这个叛徒就可以告诉另外一个人,A是叛徒,别听他的。另外一个人也很有可能废了,至少迷茫了。

所以,三个人中,只要有一个是叛徒,就会导致三分之二以上的问题,这场仗必输!

 

这里请大家思考,为什么比特币会存在51%算力攻击的风险呢?本源就在于共识机制的底层逻辑是基于人性的,而人性不可能无懈可击,就像国家无法避免军队里一定没有叛徒。我们只能假设,只要大部分将军靠谱就行,但是至少要三分之二以上都靠谱吧,不然你这国家还有存在的意义么?而比特币更牛,说不要三分之二,我们只要51%就能保障系统正常!牛逼,霸气,有没有?

 

让我们继续回到拜占庭将军问题,咱们先别扯那些高大上的了,先解决一个基础的现实问题:将军之间如何传递信息呢?古代肯定只能靠写信,在这种情况下,先别说军队里有叛徒了,你这信如果半路上被敌军截获了,那还搞毛啊!所以咱们必须加密!但问题是,我加了密之后,所有人都看不懂了怎么办?那就弄一个可逆加密算法呗,这个确实不难,古代人就已经搞出来各种类似的招数了,最简单就是弄一组对照表,也就是密码本。这个密码本各方公用,而且一旦协商好,就不能随便改了,因为一旦修改,那可是一个浩大的工程,而且如果这个密码本落入敌手,或者仅仅是丢掉了,那就 only shit 了,必须立刻重新编排整个密码本,而且还要把新密码本立刻安全送到所有友军情报机构,这本身又是一项不安全的行动!可见基于密码本的原始可逆加密算法不灵活。

 

那么有没有一种加密算法既安全又灵活呢?其实我们可以把加密规则分成两部分,一部分可变的,一部分不可变的,不变的永记心间,可变的只是密钥,如果我们的一个密钥被人破解了,只换密钥就好,而不用更换整个“密码本”。至于不变的部分,就算被人知道了也没关系,只要密钥敌军不知道,也是枉然。

 

到这里是不是就完美了,并没有,还有一个问题,就是所有人如果公用一个密钥,一方面不够安全,更重要的是,信息在传递过程中,无法记录追踪。当然以前可以通过在信件上盖章和签字来做记录,但这些都不安全,毕竟签字什么的,都可以伪造,能不能用密码学解决这个问题呢?

 

终于,最牛逼的非对称加密技术要登场了,这个技术会给所有的将军分配一对公钥和私钥,注意和之前的差别,之前是只有一个密钥。公钥是公开给所有友军情报机构的,所有人都可以通过这个公钥确认信到底是谁发来的,而私钥只有自己知道,这两个钥匙的具体值肯定是不一样的,这就是算法难度所在了:两个配对的、不同的密钥,然后混合任何加密内容,经过同一段公共加密算法,最终出来的结果又要一样,而且绝对不能发生第三种情况发生,这算法真心没大家想的那么容易弄出来。事实上,这个算法直到1976年,才由Whitfield Diffie 与 Marty Hellman 共同发明。

 

通过非对称加密技术,我们又完美解决了两个问题:

1,因为每个人都是自己的密钥,进一步加强了安全性。

2,自己的密钥是公钥和私钥配对的,这样你发送了那些信息,转发了那些信息,在加密和解密的过程中,天然就会被记录。

 

到此终于解决了加密和信息安全与记录的问题,不容易啊,拜占庭的将军们,终于可以通过这套机制达成一致,每个人都互相发送一遍信息,只要忠诚的将军多,最终的决策就能比较靠谱。而且每个人说什么都会被记录,等到战争一旦打响,谁是叛徒,立刻就会被发现。

 

这已经不仅仅是简单的密码学问题了,这已经是一种共识机制了!

 

然而。。。这一切在现实中并没有什么卵用,刚才说得头头是道的共识机制在历史的长河中,一直都没能实现,为什么呢?

1,非对称加密算法虽然完美,但加解密过程复杂,需要大量的运算,古代如果靠人力,效率太低了,几乎不可能大规模使用。

2,这种所有的信息都要互相传一遍的共识方式,在古代完全不可想象,那是一个远程传递信息只能靠马的时代啊,这么传来传去,战机早贻误了。

 

好在,人类今天终于迎来了计算机和互联网时代!

 

计算机解决了大量复杂运算的效率问题。

互联网则解决了信息传递慢的问题。

 

但是,别忘了,这个共识机制,需要所有的将军们能够直接互相通讯,而不是通过某个邮件服务商中转,否则就又不安全了,于是,还有一个技术是必须的,那就是点对点传输技术,专业名词是P2P,这一概念WIKI上说1964年就有人提出,但真正成熟应该是到上世纪八九十年代了吧?这里我没有拿到确切信息,了解的人欢迎留言赐教。

 

至此,一切具备,只欠东风,2009年,中本聪的比特币横空出世了。

 

先别急,还有两个小问题需要解决:

 

1,前面说了,为了达成共识,需要大家互相发消息,那么问题来了,到底谁先发呢?这是一个不说都没人意识到的问题,却是一个实践过程中必然碰到的现实问题。有些人会不假思索的说,这个重要么?随便谁先发都无所谓吧?这就像女朋友问你吃啥,你回一句:“随便!”,你说你是不是作死?因为你啥问题都没有解决,还把包袱丢给别人!而且如果所有人都同时发信息,有意义么?每个人都同时收到一堆信息,也看不过来啊,还特别混乱无序,甚至造成网络拥堵。所以,我们有必要建立一个发送规则,大家按照规则来。

 

然而,还没完,一旦要建立规则,就涉及到一个让人头痛的问题,就是怎么保障规则公平呢?为啥是A先发,不是我先发呢,虽然差别不大,但是你让A先发,你什么意思?你是不是内心深处看不起我?虽然我嘴上不说,但是我心里记住你了,以后找机会一定怼回去。为了避免这种情况发生,这个规则必须绝对公平,这世界上到目前为止,最公平的规则,恐怕只有随机了。而在计算机时代,这个随机获得发送优先权的方式肯定要基于计算机是不?而计算机能产生随机数的唯一方式,就是芯片了,当时主要是CPU,于是比特币挖矿(用CPU随机生成哈希数字决定谁发)的概念就诞生了,首先当然需要第一个人挖创世区块,第二个人按照这个公平的规则也挖到后,就接在第一条信息后面,第三个亦然,于是一条有序、安全、又透明的信息链条出现了,它就是当今的区块链原型。

 

2,终于,我们用CPU产生随机数挖矿的方式解决了在公平的前提下信息的有序发送问题,但一个新问题又诞生了,CPU产生随机数是需要耗电的,而且随着要发送信息的人越来越多,这个耗电量会变得越来越大。天下没有人愿意长期做亏本的买卖,虽然我是公平的共识机制的受益者,但是如果代价太高,我终究会无法承受。所以,我们必须给这些电力消耗者提供足够的补偿,于是,中本聪做了一个天才的设计,挖矿的人,一旦挖矿成功,就可以获得比特币奖励!于是公平挖矿动力的问题都解决了。

 

然而新的问题又出来了,如果这个比特币会无限制的挖出,而且竞争挖矿的人越来越多,生成的比特币也同比例越来越多,那么比特币本身不会升值,而且无限多的资源,大家只会觉得没意义,这样反而可能贬值。而且由于竞争过多造成的纯人为成本反而会提升,总体收益又会下降,有一天大家肯定又会觉得不划算,最终只能还是选择放弃这个共识机制。

 

怎么办呢?中本聪第二个天才设计来了,他给比特币设置了一个上限,总共就2100W,这样比特币在维持共识机制的同时,还有了稀缺性和保值性,不但矿工们愿意挖了,普通大众也可以收藏和流通,进一步提升币价,增加矿工的动力,一个完美的正循环从此彻底建立。

 

别急,最后还有一个问题,就是2100W枚挖完了,怎么办?每笔比特币转账收矿工费即可,因为如果当2100W枚都挖完了,说明比特币早就被世人普遍接受了,比特币的价格肯定也早已经飞上天,这时给交易收点矿工费,谁还会计较呢?而对于矿工,那一天到来的时候,虽然不再能直接挖到比特币,但是比特币的全球交易量肯定早已经爆表,在每笔交易中收一点点,全球加一起,那也是巨额财富了。

 

最终一个可信的、安全的、公平的、多方受益的、自洽运行的系统完美搭建完成!拜占庭将军问题,依托于密码学、计算机科学和互联网终于得以完美解决!

 

其实,为了保障大多数不懂技术的人看懂本文,我只是挑拣核心概念围绕着拜占庭将军这个具体的问题展开,有时为了保障逻辑上容易理解,忽略了很多细节,也屏蔽了一些重要的概念,尤其是加密算法、货币和金融方面的,但是没关系,毕竟本文主要是讲共识机制,不是讲数学和货币机制。

 

最后让我们简要梳理一下全文的逻辑脉络:

→有个拜占庭将军问题困扰了人类几百上千年,一直到现在,非区块链的人类组织中还是没彻底解决。

→为了保障将军们信息传递安全,首先需要搞定密码学。

→为了信息透明、可追踪、更安全、更灵活,将军们需要用非对称加密算法,互相发送信息,并签名。

→计算机、互联网和P2P技术,使这种加密算法得以在现实中运用,并使大规模信息传输和共享成为可能,共识机制已经可以实现。

→我们要解决信息发送规则的问题,为了最大程度保障公平,只能用扔随机数的方式,中本聪选择的是芯片挖矿。

→挖矿其实就是抢夺信息的打包和发送权力,需要消耗成本,于是设计了可以挖到比特币作为动力。

→为了长久的保持挖矿动力和系统稳定,给比特币设计了2100W枚的上限,同时加入交易费。

→一个可信的、安全的、公平的、多方受益的、自洽运行的共识系统完美搭建完成!

→一切都起源与人类对信任和安全的愿望与追求!

 

坚持读到这里的朋友,有没有觉得比特币的设计简直就是水到渠成,浑然天成?《人类简史》说,智人区别于普通原始人和动物的最大特点就是,智人会有想象的共同体,比如帮派、宗教、国家等等,想象共同体能够拥有至高的权力和巨大的财富,从而调动更多的人和资源完成伟大的事业,促进社会进步。然而人性是复杂的,不可靠的,历史上没有任何一个想象共同体能囊括所有人,并且经久不衰,而在基因技术爆发之前,我们又没办法彻底改变人性,那么是否有一种非人性的、公平的、可信又可靠的技术成为第一个全球想象共同体呢?比特币真的可以么?让我们拭目以待!

© 版权声明

相关文章

暂无评论

暂无评论...