UTC时间2008年10月31日18时10分0秒,北京时间11月1日凌晨2点10分0秒,密码学邮件列表发出了一封自称中本聪(Satoshi Nakamoto)的发件人投递的电子邮件,邮件主题为“比特币点到点电子现金论文”(Bitcoin P2P e-cash paper)。邮件正文开门见山:
I’ve been working on a new electronic cash system that’s fully
peer-to-peer, with no trusted third party.
The paper is available at:
http://www.bitcoin.org/bitcoin.pdf
The main properties:
Double-spending is prevented with a peer-to-peer network.
No mint or other trusted parties.
Participants can be anonymous.
New coins are made from Hashcash style proof-of-work.
The proof-of-work for new coin generation also powers the
network to prevent double-spending.
我正在设计一个新的电子现金系统,它完全是点对点的,没有受信任的第三方。
该论文可在以下位置获得:
http://www.bitcoin.org/bitcoin.pdf
主要特性:
通过点对点网络来防止双重花费。
没有铸币局或其他受信任方。
参与者可以是匿名的。
新硬币是由哈希现金风格的工作量证明生成的。
用于新硬币生成的工作量证明也为网络提供了防止双重花费的能力。
这篇只有9页纸的论文,又被称为比特币的白皮书。在去年,白皮书发表12周年之际,刘教链公众号发表了《比特币12周年和中本聪的12个预言》
第1个知识点:电子硬币就是一串数字签名。
位置:白皮书第2页,第2小节“交易”。
让很多人惊讶的是,比特币的区块链上并没有比特币,只有一个个的电子硬币。这些硬币的面额是一个自然数,单位是0.00000001 BTC。后来比特币社区为了纪念中本聪,就把这个单位命名为“聪”(sats)。
所以,并没有所谓“1个比特币”这种东西。只有很多个面额不同的电子硬币,比如这一个面额是100,000,000(1 BTC),另一个面额是5,000,000(0.05 BTC),诸如此类。
电子硬币的结构是怎样的呢?其实电子硬币就是一连串的电子签名,是每一次硬币换手的记录,是硬币换手的全部交易历史。
换手交易就是花费掉旧硬币,生成新硬币的过程。由旧硬币的所有者对要花费的旧硬币和接收方的地址进行数字签名,确认所有权的转移,生成新硬币。
值得注意的是,比特币的白皮书里并没有出现UTXO(未花费的交易输出)的字样。这个概念通常指称没有被花费掉的新硬币。
在比特币的硬币模型中,不同于传统金融系统普遍采用的账户模型,一枚电子硬币只有两种状态,被完全花掉,或者尚未被花掉。不存在花费一半或者一部分的情况。
第2个知识点:用哈希串起来的区块链作为时间戳服务器。
位置:白皮书第2页,第3小节“时间戳服务器”。
区块链的最大作用其实是为交易定序,也就是确定交易的先后顺序。有顺序,而后有历史。有历史,而后有时间观念。
比特币的区块链本身就是一个滴滴答答的时钟。它的每一个区块的哈希,都像石英钟每一秒秒针的跳跃。时间并不是连续的,至少在比特币这座时钟内部是这样的。
比特币的内生时间是独立自存的,不依赖于区块链外部的计算机时间,也就是所谓的墙上时间(wall time)——墙上挂着的钟表的时间。
值得注意的是,比特币白皮书中并没有区块链(blockchain)这个合成词。这个词是后人拼凑和发明的。
第3个知识点:使用工作量证明,把时间戳服务器实现在分布式的点到点网络上。
位置:白皮书第3页,第4小节“工作量证明”。
工作量证明,英文Proof-of-Work,缩写为PoW。业内总是把PoW,以及后来的PoS,PBFT,DPoS等等,统统称之为所谓的“共识算法”,或者“共识机制”,其实是一种误导。
类似PBFT等各种算法,确实设计目标就是为了解决节点间达成一致性的问题,也就是所谓共识问题。在开放网络条件下(互联网是封闭网络),这一问题又被称为拜占庭将军问题。
但是中本聪引入PoW绝不是冲着拜占庭将军问题去的,虽然最终效果确实是解决了这个问题,而是冲着发明和制造一台无法停止的、遍布全球的超级时钟而去的。
所以,虽然比特币当然克服了拜占庭将军问题,而且PoW链或者说时间链确实是拜占庭将军问题的解,但是中本聪无论是在白皮书正文,还是在参考文献中,都丝毫没有提及这个困扰分布式系统领域数十年的问题。
第4个知识点:通过调节工作量证明的计算难度,自适应网络算力的波动,确保出块速度保持稳定。
位置:白皮书第3页,第4小节“工作量证明”。
每一个仔细了解比特币工作原理的人,都会惊讶于比特币网络在缺乏中心化协调的情况下,能够自行调较自己这台超级时钟,让出块间隔在统计学意义上追踪现实世界的10分钟时长。
有点儿像对表。比特币自己会对表,一块是自己这块超级时钟,另一块就是现实世界的墙上时钟。
第5个知识点:网络节点通过最长链原则来实现共识。
位置:白皮书第3页,第5小节“网络”。
有了一块全局的超级时钟,就可以对交易进行定序。
网络无需特殊规定的拓扑结构(比如像DPoS那样规定多少个超级节点之类的),通讯可以采用最简单的gossip,网络传输也不需要特别保障,只需要采取最大努力原则就好。如此就能轻松达成全球共识,只需要大家都相信一个谢林点,也就是包含最大工作量证明总量的那条链(最长链)。
注意最长链不是指区块个数最多,而是指包含的每个区块的PoW难度,过去近13年累积起来,总值最大的那条链。
如果我们读一读Leslie Lamport在上世纪80年代关于拜占庭将军问题的最初论文,就会发现,中本聪关注的点是在常人之外的。
BFT——包括后来的非开放网络下的分布式一致性算法比如Paxos——的研究者们通常把研究重心放在协商方法上,比如投票机制。而他们把时钟同步性假设自动作为默认的前提条件,甚至都不会在论文里进行讨论。
我猜可能是因为FLP定理的缘故,异步网络下拜占庭将军问题不可解。
但是中本聪就是要深挖时钟同步性假设这个很少有人注意和讨论的要害。当我们不能做这个假设了,那又会怎么样?
中本聪的答案是,我们需要首先发明一个全局的超级时钟。
他把这个超级时钟发明出来了。然后我们就发现,所谓的拜占庭将军问题顺道儿也就迎刃而解了。
第6个知识点:网络通过区块奖励和交易费来激励出块节点,以使之保持诚实。
位置:白皮书第4页,第6小节“激励”。
这是一个巧妙的博弈论设计。
区块链是一个公共账本。如果维护账本的安全、正确得不到什么好处,篡改、破坏账本却能欺诈获利的话,那么人人都会破坏账本,最终比特币归零,所有人都得不到任何好处。这就是典型的“公地悲剧”问题。
这种人人选择理性自利最大化,却最终导致全体得利最小化的情况,在博弈论中被称为“囚徒困境”。囚徒困境下各方的理性选择,陷入一种均衡,谁也摆脱不了,被称为“纳什均衡”。
在人类过去的历史上,要克服这个问题,采取的方法是中心化的方法。通过引入中心化的权威机构,对做坏事的人进行惩罚,就像我们现实社会中的各种法律法规,多数是惩罚性的机制,以外力推动纳什均衡点的移动,以扭转公地悲剧问题,让人们得以逃脱出囚徒困境的互相伤害。
是中本聪创造性地发明了由一个去中心化的系统,通过自动地施以奖励性的机制,辅以密码学对作恶能力的约束,同样神奇的推动了纳什均衡点的移动,扭转了公地悲剧,摆脱了囚徒困境的内卷博弈。
至于奖励的标的,正是对PoW的计算。公平、公正、公开。因为PoW的计算,无法作弊。
区块链行业创新层出不穷,模仿比特币设计各种挖矿激励机制的项目也不少,可是,很少能找到像PoW一样好的不能作弊、没有后门、公平公正的奖励标的。
第7个知识点:区块奖励同时也是实现比特币去中心化发行的方法。
位置:白皮书第4页,第6小节“激励”。
更妙的是,用于改变博弈结构的区块奖励,同时顺道儿完成了比特币从无到有的发行和分发。
因为奖励是去中心化的,奖励的行为是去中心化的,所以比特币的发行也就自动是去中心化的了。
第8个知识点:用默克尔树把交易数据从区块中分离出去,剩下的数据称为区块头,具有很小的数据量。
位置:白皮书第4页,第7小节“回收磁盘空间”。
这是一个优化。数据拆分后,区块头的剩余数据量非常小,可以轻松装进内存里,快速计算。
同时,默克尔树还支持剪枝,可以剪掉已花费掉的硬币数据,从而节省磁盘空间。这里就看出硬币模型比账户模型的一个好处了。硬币只有两种状态,没花费,花费了。花费了就可以剪掉。
后来到了2017年,为了对比特币进行扩容而不损害其安全性,核心开发组最终决定采取保留区块物理尺寸限制,而把交易数据中的签名部分,也称为见证数据,从区块中拆分出来,这样就达到了逻辑扩容的目的。这个技术,被称为“隔离见证”(segwit)。
隔离见证技术扩大了比特币区块的逻辑容量,缓解了交易量增长带来的应对压力。
第9个知识点:可以允许用户只保留最长链的区块头数据,这种技术被称为简化支付验证(SPV)。
位置:白皮书第5页,第8小节“简化支付验证”。
当我们剥离了交易数据之后,剩下的区块头数据是很小的。甚至可以装进移动设备里。这就可以用来实现轻量级钱包,或者叫轻量级节点。
不过对于很多币民来说,可能炒币多年,只会用中心化交易所托管自己的比特币。这种就建议还是尽早学习掌握《如何用私钥保管比特币》
第10个知识点:一笔转账交易可以允许有多个输入和多个输出。
位置:白皮书第5页,第9小节“合并和拆分价值”。
类似金币的熔融和重铸。比特币的交易允许有多个UTXO作为输入,然后拆分成多个输出,分别分发给不同的地址,诸如此类。
这给予了比特币转账交易很大的灵活性。也给予了我们使用只有两种状态的硬币来应对任意数额支付需求的能力。
我们可以选择一个足以满足需求的大额硬币,或者多个小额硬币组合起来,完成支付需求,并把剩余的金额,转移到我们自己的一个新地址中去。这个新地址,常被称为“找零地址”(change address)。
输入的金额加起来,和输出的金额加起来,往往是不相等的。它们之间有一个差额。输出小于输入。差额就是暗示了该笔交易愿意支付给出块矿工的交易费,也叫做“矿工费”。
千万不要忘记设置找零地址。否则你有可能把全部剩下的金额全部给了矿工!比如你输入了1 BTC,给了张三0.1 BTC,没有设置找零,那么该笔交易暗含的矿工费就是0.9 BTC。
有的人为了懒省事儿,就重复利用输入地址作为找零地址。比特币网络并不会组织你这么做。但是,这里有一个安全性问题,以及一个隐私性问题。隐私性问题在下面两个知识点会提到。安全性问题则和量子计算机有关。
量子计算,如果能够实用化(虽然还差十万八千里),从理论上能够破解ECDSA签名算法,但是很难破解SHA-256哈希算法。一个没有做过交易的干干净净的地址,签名公钥是不上链的。链上只有公钥的哈希,也就是,从未动过币的比特币地址具有量子计算抗性,足以在量子计算机面前保护其中的资产。
第11个知识点:比特币网络不收集任何用户隐私数据。
位置:白皮书第6页,第10小节“隐私”。
在今天的大数据时代,隐私问题已经成为一个严重的社会问题。而这一切早在1993年埃里克·休斯写出《密码朋克宣言》的时候就已经预见到了。
比特币的思想渊源,正是来自于密码朋克。密码朋克宣言中讲到的隐私货币,正是对比特币的前瞻。
导致隐私问题的是全面收集、随意使用的互联网商业模式。传统的解决方案就是引入中心化的强有力的监管。
监管的方法存在几个可能的缺点:1,立法的滞后性;2,执法的高成本;3,中心化腐败和被收买的可能性。
中本聪给出的解决方案则更为彻底:从一开始就拒绝触碰任何个人隐私。触碰都不触碰,更别说收集了。
第12个知识点:中本聪建议每次交易都换一个地址,以更好地保护隐私。
位置:白皮书第6页,第10小节“隐私”。
虽然比特币系统不收集任何隐私,但是互联网系统可是千疮百孔的筛子。你的个人隐私信息在网上无处不在,如果你恰好公开过自己的地址,那么通过大数据分析,很容易把你的身份和地址给关联起来。
所以中本聪建议,“打一枪换一个地方”。
如果是应用在商业场景里,比如做一个支持比特币支付的电商网站,那么最好为每一个订单单独生成一个地址。
但是管理这些地址,是一个繁重的活儿。为了简化这项工作,后来的社区提出了所谓的HD钱包技术,又称分层确定性钱包技术。
第13个知识点:随着全网算力增强,到账不必等待6个区块确认。
位置:白皮书第8页,第11小节“计算”。
很多人都听说过比特币到账需要所谓6个区块确认的说法。6个区块,平均每个10分钟,6个区块确认就是要等1小时。于是有人就据此诟病比特币交易速度慢之类的。
但是翻开比特币白皮书,并没有所谓等待6个区块确认的说法。
其实所谓的6个区块确认,实在是后人对比特币白皮书的一种刻板学习的结果。
中本聪在白皮书第8页进行了大量计算后得出了一系列数据。其中结论性的数据是:要让确认后被推翻的概率下降到千分之一以下,那么当恶意算力相当于全网算力的10%时,需要等待延伸5个区块(算上打包该笔交易的第一个区块总共就是6个区块)。
这只是中本聪计算的第一个结果。后面他又连续给出了更多结果。比如紧接着就是,若恶意算力相当于15%,那么要等待8个区块。……
在比特币全网算力已经高达150E的今天,恶意算力很难掌握10%这么高的算力。或者反过来说,掌握高达10%算力的人,也不会对欺诈你的三毛两毛感兴趣。他完全可以拿这些算力去正儿八经地开采比特币,这样收益会更稳定、更高。这就是比特币导恶向善。
某些币把人变成鬼,比特币把鬼变成人。
而中本聪推演的,是最坏的情况。(即便如此,对欺诈最敏感的交易所如coinbase也早已将比特币充值到账的确认数减少到了3个区块)
很多时候,我们可以做更加乐观的假设。
比如星巴克可以假设付款买咖啡的顾客几乎不会为了几十块钱的咖啡去攻击比特币系统。比如你可以假设你的好友、熟人几乎不会欺诈你。那么在这些存在外部信任的情况下,可以大幅缩短确认数,甚至实施零区块确认。
中心化系统,确认到账与否由平台说了算。去中心化系统,确认到账与否由你自己判断。
去中心化的比特币,赋能个体,还权于民,是全面的、彻底的。
谢谢你,中本聪。
(公众号:刘教链。知识星球:公众号回复“星球”)
(免责声明:本文内容均不构成任何投资建议。加密货币为极高风险品种,有随时归零的风险,请谨慎参与,自我负责。)