比特币白皮书

摘要:区块链的一切皆因比特币而生,要懂区块链亦应从比特币开始。本文将用“不精致”化的描述为读者诠释比特币的业务机制。这或许比仅弄明白椭圆加密算法等些许技术点,更接近中本聪中教主的原教旨。(本文内容略长,需要花费15分钟左右)

近来区块链又火,有的朋友虽已看过书看过网刷过各种知了,但还是诸多疑惑,找我推荐正道干货。于是乎把中本聪的《比特币白皮书》重新翻出来,旧文重看,可叹依然还是满满“精致的”味道。
“精致”之说源于学者刘瑜,其认为欧美学术圈流行“精致的平庸”(貌似中国也差不多),简单说就是一种癖好,不管多破的事,只要换成“精致的”腔调,然后“故弄玄虚堆砌辞藻把人绕晕”,就能成为圈子里可发表的抢手货,否则万事莫提。

区块链的一切皆因比特币而生,要懂区块链亦需从比特币开始。《比特币白皮书》是中本聪唯一公开发表的论文,此白皮书有多“精致”呢?简书上某大神针对其中“交易”一节有如下慨叹:“问题是,他说的每一句话我都看懂了,可我还是看不明白这张图到底在说什么。也许比特币的交易在中本聪的脑海里就是这个样子,所以我一直怀疑他是不是潜伏在地球的外星人,脑回路跟地球人不一样”。然后这位大神只好通过源代码去学习交易的机制和原理。

当然《比特币白皮书》背后的思想与创意是伟大的,所以当得“精致的不平庸”。笔者现用“不精致”的“白话文”,把这白皮书的重新叨叨一遍,着重于诠释比特币业务机制,而适当弱化一些不关键的技术点。若读者们能静心15分钟左右看完本文,结合文末笔者自绘的业务模型,当可知晓比特币的机制——这或许比仅弄明白椭圆加密算法等些许技术点,更接近中教主的原教旨。

为便于理解,原文中的果因倒置、重复诠释、夹杂叙述等等被“不精致”化了;另外,原文中一些“明明说着苹果树,又莫名冒出一句上面的鸟巢”的描述,本意是中教主表达严谨的科学态度的,也被“不精致”化了。还有一些技术细节,对于总体业务逻辑理解帮助不大的,笔者也去掉了(例如“网络”一节中长短链的运作机制等)。笔者自己又添加了一些"不精致”化词句,并在最后有若干名词解释,以期有助于读者理解业务。以下正文:

比特币:一种点对点的电子现金系统

摘要

纯粹的电子现金系统压根不需要第三方金融机构,而直接就能实现从买家到卖家的在线支付(此为中本聪核心观点之一,比特币机制主要目的是废掉类似XX宝、XX逊之类的中间商)。俺中本聪,也有叫我老中的,首先通过无敌的数字加密技术解决了上述方案中的一部分问题。其次通过对等网络的妙招,解决了“双花(double-spending)【1】问题。第三就是俺将单个的区块,用链串接起来,形成了一条完备的区块记录链。这些区块链中可能会有分支,但只有最长的那条链得到所有节点的共识。比特币世界的消息们可以四处随便窜,矿工节点们则是想来就来,想走就走,但一旦加入,就要按俺老中的规矩来,必须在最长的那一条链下面干活。

介绍

在现实中,买卖双方当面支付、钱物两清,简洁而明确。但目前在互联网上依赖于类似XX宝这样的第三方机构来处理电子支付。这种基于信任的模式,其实天生缺陷。例如:奸诈的买家拿到了货却利用种种漏洞抵赖(这是一种信任缺失);又或是卖家卖出高仿假冒货品而买家无法有效申辩(此是又一种信任缺失)。凡此种种,于此机制下,网络中的欺诈行为无法根除。

俺,老中,创造了一个伟大的信任机制,这是一个基于密码学的无敌安全的电子支付系统,不需要第三方做担保,任何两个交易者均能实现可靠交易。俺这发明中的不可逆交易机制将保护卖方免受欺诈,而常规的托管机制又可以很容易地保护买方。在本文中,俺还提出了“双花”问题的解决方案。

交易

各位看官请铭记:比特币就是数字签名链。或者说,你现在可以把1个比特币(BTC)看作一沓写着交易记录的小纸条(transaction),这些小纸条永不损坏,字迹永不磨灭,也不可更改。它的第一张上写着“某时发行此1BTC,拥有者张三”。此后岁月斗转,这1BTC每经一次转手,就增加一张小纸条。现在看上图,一个BTC的转移支付操作可理解如下:

1. 由转让者张三新写一张“小纸条”(transaction),并在纸条上端写好接收者的“姓名”:王五(Public Key)【2】;

2. 张三定睛细看,认真验证纸条上的交易信息、接收者姓名,确认无误后,在纸条下端盖下一个转让有效的“私印”(Signature),但此私印上的名字却不是转让者的姓名张三,而是他的“别号”:张幺娃(Privage Key)【2】;

3. 把这张最新的“小纸条”放到“小纸条堆”的最下面;

4. 这1个BTC的拥有者换成了王五。

此处小结:1)如要核实此比特币的真实拥有者身份,只需翻看最后一张“小纸条”上的拥有者“姓名”,如果有必要,还可以回看以前的小纸条,翻看历史记录(中本聪的意见是回翻两张足以验真);2)一个个比特币其实就是在区块链(电子账本)上的一条条记录;3)一笔笔的比特币转让交易记录,也存放在区块链(电子账本)中,这些交易记录可以回溯转换成一沓沓上述的“小纸条”。

至此,收款人还不能验证和解决双花问题。不过只要所有人均知晓所有的交易,便不再需要第三方,也不再会有双花,所以俺创造了一个机制——公开宣布交易(publicly announced,此为中本聪的核心观点之二:通过公开透明的交易数据灭杀第三方机构)。此机制实现了:1)让参与者(各个矿工节点)按时序在各个时段接收全网广播的交易信息;2)这些交易信息传到各个矿工节点,经验证确认后被接受。

此处小结:1)交易信息的传播就像中央人民广播电台每天播报新闻,矿工节点们则是拿着小本子一边听一边把新闻抄录到自己随身带的新闻小本子上;2)后面介绍的区块数据在网络传播也是这个机制,只不过是记录到随身保管的(区块链)账本上。

时间戳服务

俺的解决方案从时间戳服务开始。首先对预备广播的最新区块数据(基于block的一组item)进行哈希算法加密,然后盖上一个时间戳,之后向全网广播这个区块数据。每次进行时间戳操作时,必须把上一个区块的(经哈希算法加密过的)数据摘要也加到这个新区块当中,这样就形成了一个链。

此处小结:区块数据可以理解为电子账册,区块链就是一册册电子账本组成的总账本。只有加盖了时间戳的电子账册才能向网络广播。

工作证明(挖矿

为了避免向全网广播“盖好时间戳的最新区块数据”的这一个操作,会像网上发帖那样大水漫灌,俺借鉴了Adam Back提出的Hashcash方法【3】,搞了个工作证明机制。俺的工作证明说白了就是小小的投名状,想发起广播者,首先要参加一次数字猜谜,第一个猜对的就能向全网发起广播。这数字猜谜游戏有点难,要基于SHA-256算法和指定的nonce字段进行各种倒腾,不过验证是否猜对很容易。

数字猜谜活动每10分钟搞一次,一旦猜谜胜出,就叫做完成一次工作证明(成功挖矿一次)。

工作证明机制也解决了网络上少数服从多数的伪命题。如果多数是基于一个IP地址一票通过,那么任何能够分配多个IP的人都有可能推翻它。工作证明本质上是一个CPU一票(现在是一个挖矿池一票了)。最长的一条链表示这是多数人的决定,这条链上投入的工作证明最大。如果大部分的算力由诚实节点控制,诚实链将增长最快,并超过任何竞争链。要修改一个过去的区块数据,攻击者必须重做该区块数据以及其后所有区块的工作证明,并赶超诚实节点工作的区块链,俺掐指推算过了,这其实是不可能的。

随着时间的推移,俺猜想人们可能会为了加快解谜而不断提升硬件能力,因为要想快速解谜就得配置强劲的硬件平台,其中CPU的计算能力最为重要(后来升级成了GPU能力,现在则是矿池的能力了)。当然不用担心,在俺的机制设定中,工作证明的难度会动态的调整。中教主,你猜对了,现在愚蠢而贪婪的人类已经把硬件升级到了极致,工作证明的难度也随之达到了极致,一般的CPU、GPU早就淘汰了,他们已经用巨型矿池来猜谜了。当年教主您只需花费1美分的电费挖到1BTC,现在2020年,挖到1BTC需要的电费是3000美元。

网络

运行网络的步骤如下:

1、新的交易(注意不是区块,是交易,例如A转了2BTC给B)将广播到所有矿工节点;

2、每个矿工节点将最新收集到的交易信息打包到一个预备区块NB中(大致等同于上述的时间戳服务);

3、然后每个矿工节点基于区块NB的预备数据,开始全力挑战此时段的工作证明(即数字猜谜,此处简化业务逻辑见下图);

4、当一个节点完成一次工作证明时,它立即将上述2中预备好的“盖好时间戳的最新区块数据”广播给所有节点;

5、只有当这个(被广播的)区块数据中所有交易都有效且尚未被记录过,各矿工节点才接受这个成功解谜者所广播的最新区块;

6、网络上的矿工节点们确认“该区块”有效后有如下操作:1)在自己保管的区块链(账本)末尾添加“该区块”;2)刚才自己准备的没用上的预打包区块作废,基于此刻最新的交易数据、关联区块的数据摘要等重新预备打包又一个新区块。


奖励

奖励一,每时段新区块的创建者(亦即猜谜成功者)可即时发行一次指定额度的新货币(最开始是50BTC,每4年减半,现在是12.5BTC),同时指定这笔硬币属于自己,这也是每个区块中的第一笔交易(CoinBase),具体操作是当运行到上节网络的步骤“2”处,预备新区块数据时,矿工们在交易数据区第一行先写上“因某猜谜有功,得奖50BTC”,若猜谜成功,这就被所有矿工节点记录在案了——梦想成真!否则就是一次自嗨。)这既激励了矿工节点们的热情,又不需央行就可发行BTC,还可轻松实现货币流通。(中本聪的核心观点之三:货币发行由人民群众说了算。

奖励二,交易佣金。交易时,交易发起者可以自主设定交易的手续费(佣金)额度。该佣金是将此交易信息添加到新增区块中的奖励(记账佣金)。只有被成功记录到完整区块链上的交易,才算是获得了所有矿工节点对其的共识,也才最终有效。(此奖励其实只有每个时段的猜谜优胜者获得)

这些奖励有助于鼓励节点保持诚实。如果一个攻击者试图窃取他人的BTC,或者妄想自己生成伪币,他或许能够装配出一台比超级强力的硬件设备。但他会发现遵守规则更有利可图,因为在俺的规则下,拥有强劲硬件能力更利于他通过规则,快速解题,发行新货币,而不是破坏制度获利。(这是中本聪又一伟大的创造,通过博弈、投名状、思想动员等等,让敌人主动变成了自己人——恍惚间回到了淮海战役的华野纵队?

比特币白皮书所述的简化业务逻辑如下图,当然实际的比特币比这复杂精细一些。

限于篇幅,原文后面的硬盘回收等内容本版本略去,不影响读者对业务理解。


名词解释:

【1】双花(double-spending),网络支付的欺诈手段,常见两种手法:一是诈骗者用一枚电子货币买下商品甲,然后利用技术漏洞(例如网络延迟)又买下商品乙,此为交易双花;二是诈骗者用一枚真的电子货币A买了商品甲,又用伪造的电子货币a买了商品乙,此为货币双花。

【2】关于公钥(Public Key)私钥(Privage Key),读者可以理解为公钥为“名”,私钥为“字”。江湖险恶,平常只得以“名”示人,交易用“字”签押。人人皆知公钥“关羽”,却不知私钥“云长”正是“关羽”。比特币机制中,通过非对称加密算法,私钥可以映射到公钥,但公钥不能反推找到私钥。

【3】Adam Back的Hashcash论文,其主旨是:所有想给我发送电邮的人,都必须先做对一个计算才行,亦即发送人得付出一点CPU的计算代价。即使一次计算只需几秒,对于垃圾邮件的系统来说都是要命的,因为这些系统每天要发送数以万计的垃圾邮件,多花费的CPU时间对它们来说代价巨大!

作者欧德张,IT老兵。