比特币白皮书全面解读
扫描二维码
随时随地手机看文章
重新为比特币白皮书划重点,并附送 8 个今天读起来依然散发着智慧光芒的中本聪问答。
中本聪认为比特币系统应该具有这样的特点:一旦该系统的 0.1 版本开始运行,整个系统的核心设计将永远保持不变。他把该目标作为比特币工程实现的指导,最典型的一个体现就是使用脚本引擎,使得系统可以支持未来每一种可能的交易类型。
十年过去了,比特币系统似乎正如中本聪希望的那样,并未发生核心设计的改变。这也意味着,在十年之后的今天,比特币白皮书仍然是我们理解比特币、甚至理解区块链时,最重要的文献。
当初大家在邮件列表和 bitcointalk 论坛中对比特币提出的那些问题,现在也可能依然会困扰我们。那么,中本聪当时的回答也许可以作为我们如今讨论这些问题的起点。就像中本聪更偏爱的系统设计思路是「不重复造轮子」,在讨论问题时,我们也可以避免重复造轮子。
出于上述两方面的原因,我撰写了本文,希望从重读比特币白皮书开始,从源头理解比特币。
本文包含两个部分:第一部分是对比特币白皮书的解读,不过需要指出,我的这种解读只是理解白皮书的一个角度,而且这种解读更多是从技术角度来理解比特币;第二部分,是邮件列表和 bitcointalk 论坛里关于比特币的一些问题,以及中本聪对这些问题的回答,我觉得这些问题放在今天,依然对更好的理解比特币有着重要的启发意义。
细读比特币白皮书,从这几个点入手
1. 电子现金
比特币白皮书的标题是《比特币:一种点对点的电子现金系统》,它指的是比特币是一种完全通过点对点技术实现的电子现金系统。这其中的关键词「电子现金」也许可以作为我们理解比特币的重要线索。
当我们在互联网上进行交易时,并不像在线下使用现金时那样可以直接把钱给到参与交易的另一方,而是必须依赖金融机构作为可信第三方来处理这笔电子支付。这种基于信任的模型有很多缺陷,比如会增加交易成本,比如所有的交易实际上都是可逆转的。
有没有可能在电子支付中、或者说在互联网支付中,发明一种新的交易媒介,它允许任意双方在不需要信任第三方的情况下直接交易,就像现金交易一样?
这正是比特币系统想要实现的目标:电子现金。
中本聪曾在讨论比特币价值的时候,让大家想象一种稀有的金属:它没有任何实际的用途,也不适合用作装饰,但它非常神奇地可以在通信通道中传输。那么,当这种金属不论是因为什么原因获得了某种价值后,人们是否想要拥有这种金属作为交易媒介。中本聪的这个比喻有助于我们更好地理解「电子现金」的含义。
2. 电子现金的所有权问题
要实现电子现金,第一件事是要能够确定「现金」的所有权。在线下这种识别很容易,谁拿着那张钱,那张钱就是谁的;但在线上没有实体货币,这种方法显然不行,因此比特币通过「数字签名」识别所有权,该方式与雅浦岛上确认货币所有权的方式有几分相似之处。
太平洋的雅浦岛上没有金属资源,岛上的居民从距离该岛 400 英里的帕劳岛上开采石灰岩,再把石头运回小岛作为货币使用。买卖双方在交易中决定买家使用多大的石币付费,如果那块石头太大,那么收款人只需要在付款人的石头上做个标记,就可以把这块石头的所有权转移给自己,虽然石头可能依然放在付款人的家中。
比特币在网络中的存在形式是一个数字签名链。交易时,原所有者在该数字签名链的末尾加上新所有者的公钥(实际是公钥的哈希),就完成了比特币所有权的转移,就像雅浦岛人在石币上做个标记 / 签名就完成了石头所有权的转移一样。
也就是说,比特币数字签名链上最新的公钥是属于谁的(拥有与公钥对应的私钥),这笔「电子现金」就是谁的。
3. 电子现金的双重支付问题
在实现了电子现金的所有权后,接下来需要解决的问题就是双重支付(或称为「双花」)的问题。这或许是设计电子现金时最核心、也最难解决的问题。
让我们回到现金,通过对比找出电子现金为什么会面临双重支付问题,以及可以如何去解决该问题。
在使用现金支付时,我们把一张钱先给了谁,那张钱就是谁的,因此我们无法花费同一张钱两次,抽象理解的话就是,我们用时间确定支付事件发生的先后次序,并只认可先发生的那笔支付。
与现金支付相同的是,在分布式网络中,我们同样只认可最早发生的那笔交易。与现金支付不同的是,在分布式的网络中,我们无法通过时间确定交易发生的顺序,因为网络的参与者们并未对时间达成共识。最简单的例子,一台计算机认为时间是上午 9:01,另一台计算机可以认为时间是上午 9:02,物理时间是行不通的。
中本聪选择的方法是通过时间戳,实现参与者在时间上的共识,从而使得系统能使用这种时间共识确定事件发生的顺序。
时间戳功能是比特币的核心,以至于中本聪称比特币系统是一个「分布式的安全的时间戳服务器」。
我们也许可以这么去理解时间戳:在现实世界中,一秒就是一秒,每一秒与另一秒的长短是完全相同的,一秒接着一秒构成时间的顺序;在比特币系统中,「一秒」就是一个时间戳,如果用物理时间衡量,每一秒的长短是由一个新区块被挖出来的时间决定的,大约等于 10 分钟,每一秒与另一秒的长短各不相同。但如果用比特币时间衡量,可以认为每一秒与另一秒并无区别,一秒接着一秒(每一个新的时间戳被添加到之前的时间戳之后)构成一个连贯的时间的顺序。
交易被打包进区块,区块被盖上时间戳,也就相当于每笔交易都有唯一确定的发生「时间」,节点在处理新的交易时,会去检查这笔交易对应的「电子现金」在当下的时间之前有没有被花费过,如果没有,就接受这笔交易,并为它打上时间戳(确定发生的时间);如果被花费过,就拒绝这笔交易。如此一来,「电子现金」的双重支付问题就得到了解决。
在一个分布式系统中,谁来盖时间戳,或者说谁来决定上一秒的时间结束了,接下来进入到下一秒?通过工作量证明(PoW),谁能抢先算出落在某个区间内的哈希数值,谁就能盖时间戳。
这个时间戳如何获得共识?最长链原则,最长链代表的是大多数(大多数算力)的决定。工作量证明加上最长链原则也被称为中本聪共识,共识是所有区块链系统最核心的部分,它的本质是为了实现分布式的时间戳服务。
当所有权问题和双重支付问题都得到解决之后,我们就有了一种可以在网络中使用的电子现金,它使得在线支付可以从一方直接发送给另一方,而无需通过金融机构。中本聪把他实现的这种系统称为比特币。
二、八个依然散发智慧光芒的中本聪问答
中本聪在邮件列表和 bitcointalk 论坛中回复了许多关于比特币的问题,他对自己的答案很有信心,他认为这些问题几乎都是他在设计系统前就已经考虑到了的。多年之后,这些回答读起来依然散发着智慧的光芒。
我们选择了那些放到今天依然有意义的问答,并归纳整理如下。
1. 挖矿是不是浪费能源?
中本聪回复:这和黄金开采相似。黄金开采的成本与黄金的价格水平是一致的,开采是一种浪费,但这种浪费远少于黄金作为交换媒介所产生的效用。比特币也一样,把比特币用于交换媒介所产生的效用远远高于挖比特币需要的电力。
2. 比特币的价格模型是可持续的吗?
中本聪回复:当比特币还没有在市场上确立价格之前,基于生产成本的估值模型是有意义的,任何商品的价格都趋向于生产成本。但是在几年以后,当新挖出来的比特币只占供应量很小一部分的时候,将会是比特币的价格决定生产成本,而不是反过来。NLS (一位社区成员)的基于能源消耗的估值模型是一个很好的起点。但在未来,市场力量将是决定比特币价格的主要因素。
3. 如果「坏人」比「好人」有更多的算力怎么办?
中本聪回复:这首先要求单个「坏人」的算力比所有「好人」的算力之和更大;其次,即使单个「坏人」的算力更大,他能做的只是双花自己的钱,他需要通过买东西花费这笔钱(如今可以是在交易所交易),然后在收到「货物」之后,通过攻击网络重新花费这笔钱。这种攻击对于攻击者来说或许并不划算,如果有这种算力还不如好好的挖矿。
4. 比特币是匿名的吗?
中本聪回复:比特币的匿名性取决于比特币地址是否关联了使用者的个人信息。如果没有,那么就是匿名的,因为比特币地址是一串随机数字,它本身是不包含识别信息的。为了保护隐私,每个比特币地址最好只使用一次。
5. 比特币网络可以发送「私人信息」吗?消息加密是比特币的内置功能吗?
中本聪回复:全世界都可以看到这条消息,它是完全公开的。因为 ECDSA 只能用于数字签名,不能用于消息加密。RSA (比特币并未使用该算法)可以用于消息加密,但它的数据量太大了,不管是对存储空间还是对带宽的要求都比 ECDSA 大一个量级,使用 RSA 是不合适的。
永久记录一条所有人都可以看到的消息是不明智的。如果需要消息系统,它应该是一个与比特币网络平行的独立系统,消息不应该被记录在区块链上。可以用比特币密钥对给消息签名,以证明消息的来源。
6. SHA-256 被攻破了怎么办?(此问题类似于量子计算来了怎么办)
中本聪回复:SHA-256 非常难以被破解,即使被破解了,我们可以在麻烦到来之前就有序地用新的算法替换掉它。
7. 比特币的可分割性好吗?
中本聪回复:比特币显示为 1.00,但它实际上包含 8 个小数位,是 1.00000000。
8. 那些找不回私钥的丢失了的比特币怎么办?
中本聪回复:这些比特币只会让其他人的比特币更值钱,可以把它看作是对所有人的捐赠。
三、重回最开始的地方
人们对比特币的解读有很多,对区块链的解读以及由此延伸开来的关于区块链能做什么的论点则更多。但如果你想从源头出发认识比特币、认识区块链,下边是还不错的旅程开始的地方。
看上去最远的路,也许是最快的路。