# BTC 学习笔记连载(8)——BTC的共识协议


By [Crypto 吊车尾](https://paragraph.com/@imsongoku) · 2022-11-06

---

欢迎交流：[twitter.com/songoku\_web3](http://twitter.com/songoku_web3)

转载请注明出处~

货币本质上是由人类构建的一种社会机制（social institution），传统社会中货币被认为主要行使三种职能：**价值尺度、交换媒介、价值储藏。**

在人类几千年漫长历史中出现过的货币，诸如牲口、兽皮、贝壳、盐、宝石、铜/铁、金/银，当然还有美元！它们凭什么能行使货币的职能呢？

因为生活所需！

因为易携带！

因为易切割！

因为稀缺！

因为共识！

远古的事情我们不深究，但近现代的流通货币基本可以肯定都是因为政府公信力。

任何能在市场上流通的货币都要解决2个重要的问题：

1.  货币的发行
    
2.  交易的有效性
    

现代社会中流通的货币自然是由政府机构发行，因其价值由政府背书，所以交易有效性也得到了一定的保障。但也正是由于这种权利过度集中的模式，滥发货币基本是家常便饭，比如疫情肆虐下美联储似乎就热衷于通过滥发货币来缓解危机，然后借助美元霸权再转嫁给其他国家，可怜了这些生活在最底层的劳苦人民。

还记得中本聪在Genesis留下的那句话吗：

**Chancellor on brink of second bailout for banks** (财政大臣正处于第二轮救助银行的边缘)

这是比特币吹响挑战政府垄断货币的第一声号角！

正如Cypherpunk发起者之一Tim May30年前所言：加密算法将从根本上改变企业的性质和政府对经济行为的干预，而现代社会政府对经济行为最大的干预就是：**垄断货币！**

互联网天生就是无国界、国际化的，人们不但需要安全地传递信息，还需要安全地传递价值，应该有一个不被任何政府/机构操控或干预的货币系统，基于此Cypherpunk们开始尝试各种加密货币，而去中心化自然就成了首要目标。

这也是比特币诞生的源头。

去中心化 & 双花
---------

之前的一篇文章《[BTC 学习笔记连载(6)——为什么会有比特币？](https://mirror.xyz/imsongoku.eth/QaP9eA9JyyjUopUUQZQImVzyLCRdziACrcuip3PlmOo)》有介绍过Cypherpunk的一些历史，从1982年David Chaum的E-cash到1998年Wei Dai的B-money、Nick Szabo的Bit Gold，再到Bitcoin诞生的2008年，这20多年里Cypherpunk们一直在探讨、尝试不同的加密货币方案，但基本都在去中心化 & 双花2个核心问题上遇到障碍。

B-money的第1版方案已经非常接近后来的Bitcoin了，但是共识机制有问题，全网节点无法对账本达成共识就不可能解决双花问题。

Bit Gold是非常接近Bitcoin的另一个方案，Szabo的那句经典名言有印象吧：

**值得信赖的第三方本身就是安全漏洞！**

但就是这么热衷于去中心化的Szabo，最终还是将Bit Gold解决方案绕回了中心化。

B-money和Bit Gold真的是只差一步了，但就是这一步整个世界等待了10年！

直到2008年中本聪Bitcoin才巧妙地同时解决了这2个问题，为什么这么难？

**什么是双花？**

双花(Double Spending)即双重支付，指同一笔资金支付给两位及以上收款方。

以前我们很少听说双花这个词，是因为纸币天然就没有双花问题，手上的100元买东西支付给张三了，就不可能再支付给李四。

但在计算机的世界里就麻烦了，任何文件都是可以无成本拷贝的，所以很容易造成一份数字货币支付给不同收款方的情况。这是数字现金系统的潜在问题，仅凭协议无法彻底解决该问题，因为用户通常都无法验证收到的资金是否已经支付给其他人。

**中心化数字货币就很容易解决双花！**

比如美联储要发行一个**数字xx币**：

![](https://storage.googleapis.com/papyrus_images/52d78f401dc4683460773adab797be592680075ffceac9233c6a2b0add78b4c9.png)

*   美联储可以发行各种面额的数字xx币 如图可以100、50、1等面值
    
*   为了防伪每张数字xx币都用美联储私钥签名 接收方只需要用美联储的公钥验证即可知道这是不是伪钞
    

比如上面的100元，如果没有特殊处理，是可以先支付给张三再支付给李四的，因为张三、李四用美联储的公钥一验证，好家伙~ 都tm是真钞，于是这100元就可以一直这么循环地支付下去。

对于货币系统来说这显然就乱套了，交易的有效性无从谈起。

怎么办？

对于美联储这种中心化机构来讲，这很easy：

*   每张数字xx币都赋予一个唯一编号，跟纸币类似
    
*   然后在中心化服务器里维护一个Key-value表 记录每张钞票属于哪个用户或地址
    
*   任何一笔Transaction发生之后，更新Key-Value表 钞票所属用户或地址发生变化
    

甚至可以做得更像加密货币一点，比如张三要消费数字xx币时需要用自己的私钥签名，李四收到之后用张三的公钥验证，其实这个步骤对于中心化货币来讲是完全没有必要的，只需要请求服务器验证即可。

**任何中心化账本的状态都可以高度统一**，被消费过的任意数字xx币都不可能再消费一次。因为它很明确的记录了任意一份数字xx币有没有被用过、被谁用过。

虽然双花的问题没了，但中心化又带来另外的问题：

*   任何人的任何资产情况都被清楚掌控
    
*   任何终端钱包账户都被无死角监控 包括资金来源、流转记录
    
*   任何人的特征都将被中心化大数据拿捏得清清楚楚 比如消费行为、购物偏好、商业兴趣等
    

任何规则都是有利有弊的，基于这种数字xx币我们也可以列举很多好处，比如：

*   规避诈骗：任何诈骗资金都可以不费吹灰之力追踪到
    
*   避免偷税漏税：除了权贵谁还敢
    
*   有利于公益：那些捐赠给xx会的钱还敢挪为己用 (可能是我天真了)
    

但是所有这些好处都无法弥补其带来的坏处：**隐私泄露、私有资产随意侵犯**。理论上中心化机构可以在任意时间以任意理由冻结任何人的资产。 （不知道以后再听到什么数字xx币的时候，是不是可以淡定一点了……）。

这显然是不符合Cypherpunk精神的，我们需要一个在互联网上既能规避双花问题又去中心化的货币系统。

Bitcoin的共识机制
------------

B-money和Bit Gold发表之后第10年，中本聪巧妙地解决这这个问题，我们来看看Bitcoin是如何以去中心化的方式解决双花问题的。

前面讲到美联储要发行数字xx币，以Key-value的形式管理账本，可不可以直接将这个账本由全网分布式的节点来共同管理呢，这样就不再依赖任何中心化机构了：

*   全网每个节点维护一个庞大的KV余额账本 每当有合法Transaction发生之后，更新该KV账本
    
*   每个节点还需要存一份交易记录 记录历史发生的每一笔交易
    

这个系统非常像Wei Dai提出的第一版B-money，自然其问题也一样。各记各的帐无法达成统一，久而久之节点之间都互相不承认对方账本的交易，账户的余额状态无法达成共识，最终整个系统必将崩溃。

全网分布式节点如何对账本达成共识？为了解决这个问题，Wei Dai引入了POS方案。

这里我们先不深入了，直接看看Bitcoin是如何解决的。

跟前面讲的中心化Key-value账本类似，Bitcoin也是维护一套数据结构来检测一个币有没有被花过、被谁花过，只是该数据结构不再由美联储来维护而是由全网所有用户共同维护，这个数据结构就是区块链：

![](https://storage.googleapis.com/papyrus_images/6f29c23e548117b60270bd62b635bf2048ed13c5a02ad4edd0a3ce99198ddd54.png)

文章开头提到过任何能在市场上流通的货币都要解决2个重要的问题：**货币发行、交易有效性**。货币的发行在Bitcoin中是由挖矿决定的，我们先看一下交易有效性问题，也就是Bitcoin是怎么规避双花的：

*   Block 1记录了一笔铸币交易转给张三50个BTC
    
*   Block 2记录了张三转给李四5个BTC、转给王五10个BTC
    
*   Block 3记录了李四转给老六2个BTC、转给张三3个BTC
    

Block 2中张三能够给李四、王五转币，**需要说明币的来源**，也就是指向了Block 1中张三接受到的50个BTC。

**为什么需要说明币的来源？**

避免双花！

比如在Block 4中李四试图给Lee’ 再转账2个BTC，这笔交易不会被其它诚实节点所接受，因为这笔转账同样需要说明币的来源，当往前寻找币的来源时发现Block 2的产出已经在Block 3花费掉了，自然给Lee’ 转账2个BTC就是一笔非法Transaction。

这就构成了一个最简单地区块链，这就是Bitcoin最初构建的原型。

账本基于这种协议就不可能出现双花。

那这样一个账本怎么在全网达成一致呢？

我们先问几个问题：

1.  全网节点为什么要维护账本，记录交易？ 为了去中心化的梦想？其中的开销谁来承担？
    
2.  节点会不会选择性地记录交易？ 只记录对自己有利的交易，而忽略其它合法交易
    
3.  节点之间互相不认可对方账本 各自记账久而久之必然账本不可能统一
    

上面的所有问题都被中本聪设计的Mining巧妙地解决了：

*   全网所有节点都要通过解决一个哈希难题争夺最新区块的记账权 只有获得记账权的节点才有资格将区块写入区块链账本 这就在全网达成了账本的统一
    
*   获得记账权的节点会得BTC奖励，即每个区块的第一笔铸币交易 这个收益非常可观，使得全网的节点都会争相提高算力争夺记账权 大家都会积极记账，而不会认为这是负担
    
*   一个合法的区块将被全网所有节点接受 Mining成功后，区块会被节点广播出去 所有收到最新区块的节点都要检查该区块是否合法，包括交易合法性、区块难度是否符合规范、区块大小、版本号等诸多信息
    
*   所有Miner都将沿着最新的Block继续Mining 本质上是全网诚实节点都会沿着最长合法链继续Mining
    
*   每个节点Mining时打包的Transaction都不同 但这没有关系，只有获得记账权的区块会被写入区块链 未上链的合法Transaction又会在后续区块中被不同的节点打包
    

![](https://storage.googleapis.com/papyrus_images/61e179506e8dff65178214ca48e11455b02629abc0f384605b56ee4c54e0b1bf.png)

这就是我们本篇要讲Bitcoin共识机制！

那么，Bitcoin到底要对什么达成共识呢？

3秒钟想一下？

……

……

……

对比特币会涨到40万美金达成共识？

对比特币很有价值达成共识？

对每个人都该拥有2.1个比特币达成共识？

对区块链就是未来达成共识？

### 到底什么是共识？

简单点理解就是对某件事的认知达成一致。

而为什么会达成一致就复杂了。

有些事情多数人容易达成一致，比如Messi踢球很有天赋。

有些事情达成一致就很困难，比如几成熟的牛排更好吃。

有些事情达成一致，靠CX就可以了，那种几百人的大会，主讲人吼得脸通红… 梭哈是一种智慧！下面的大爷大妈手都要拍烂，至于台上的老师讲的对不对不重要。

有些事情达成一致，靠的是严密的逻辑、数学、加密学，全世界最顶尖的数学家、加密爱好者、技术极客经过严密推理很容易就能达成统一，哪需要喊喇叭。

有些共识是区域性的，比热RMB在大陆达成共识基本不需要理论，但是放到拉美地区可能大多数人都不想收。

币圈前几年有句话：**SB的共识也是共识！**

是的，只要能让足够多的SB相信你，你也可以做空气币。

最近那个Pi又死灰复燃了，而且还上线了火必，大爷大妈们手机里的Pi涨幅达到惊人的几千倍，但就是提不出来，我完全能在脑子里浮现大爷大妈们看着Pi涨上的兴奋以及卖不出去的那种复杂心情。

![](https://storage.googleapis.com/papyrus_images/5a46ed848542459309c899a36328a4e5cc3a0ad73bba1c83780bdef46273f225.jpg)

说是因为主网还没上线，既然主网都没上线就没法存入交易所或提取出来，火必上的Pi又是啥骗子玩意儿呢？在豁鬼么？前2年我也在手机上装过，只要通过身份认证就能每天挖矿，除了收集个人信息我没看出来有什么卵东西，能够对这种垃圾玩意儿有“共识”的也只能是大爷大妈了，传销盘完美用户群体。很多信仰者甚至认为Pi就像是2008年的比特币，指日可待！

拜托，把它跟Bitcoin放一起比较是对整个区块链从业者的集体侮辱。

那世界上各种精英为什么对Bitcoin有如此共识呢？

其实Bitcoin的诞生就是区块链的诞生，与其说中本聪发明了Bitcoin还不如说他发明了区块链，区块链的诞生让世界第一次拥有了一个去中心化的记账系统，这个系统：

**没有裁判，但有规则！**

没有裁判说的是没有任何中心化机构裁决或限制某些事情，有规则是说这个系统大家都认同并按照这些规则来运行，任何不按照这些规则行事的都不会被其它人接受。

比如交易有效性、手续费、广播交易/区块、区块大小、POW机制、挖矿难度、最长合法链机制、区块奖励/铸币交易…… 这一系列的规则何在一起构成比特币共识协议！

比特币全网能对这一系列规则达成共识，是因为其背后的加密学保障；是因为其货币发行机制设计合理；是因为其它第一次实现了真正意义上的去中心化电子现金系统，是因为它在人类历史上第一次用技术保障了私有资产神圣不可侵犯！

这就是比特币！

**基于算力投票，账本在全网达成分布式共识！**

只要全网大多数都是诚实节点，那么区块链账本就能在全网达成统一，非法的交易无法被诚实节点接受，用户的资产也就可以得到安全的保障。

### 补充一点

其实全世界对比特币机制真正能达成共识的并不多，很多人其实并不信也理解不了比特币，他们连白皮书都没看过，也可能一辈子都搞不懂非对称加密是怎么回事。

所以他们对比特币的共识并不是建立在对这个系统的深入理解上，而是建立在KOL或身边人的cx中，涨的时候喊区块链革命，跌的时候喊区块链骗局。

全世界最能达成共识的是数学，1+1=2 我相信没有任何正常人有异议，但你要说到黎曼猜想是怎么回事一般人基本就搞不懂了。

比特币也一样，虽然建立在数学/密码学的基础上，但对一般人来说的确太难了，还是cx简单点。

---

*Originally published on [Crypto 吊车尾](https://paragraph.com/@imsongoku/btc-8-btc)*
