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

欢迎交流:twitter.com/songoku_web3

转载请注明出处~

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

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

因为生活所需!

因为易携带!

因为易切割!

因为稀缺!

因为共识!

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

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

  1. 货币的发行

  2. 交易的有效性

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

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

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

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

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

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

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

去中心化 & 双花

之前的一篇文章《BTC 学习笔记连载(6)——为什么会有比特币?》有介绍过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币

  • 美联储可以发行各种面额的数字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也是维护一套数据结构来检测一个币有没有被花过、被谁花过,只是该数据结构不再由美联储来维护而是由全网所有用户共同维护,这个数据结构就是区块链:

文章开头提到过任何能在市场上流通的货币都要解决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又会在后续区块中被不同的节点打包

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

那么,Bitcoin到底要对什么达成共识呢?

3秒钟想一下?

……

……

……

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

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

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

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

到底什么是共识?

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

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

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

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

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

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

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

币圈前几年有句话:SB的共识也是共识!

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

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

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

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

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

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

没有裁判,但有规则!

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

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

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

这就是比特币!

基于算力投票,账本在全网达成分布式共识!

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

补充一点

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

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

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

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

Subscribe to All in Web3
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.