中本聪认为比特币系统应该具有这样的特点:一旦该系统的 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. 那些找不回私钥的丢失了的比特币怎么办?
中本聪回复:这些比特币只会让其他人的比特币更值钱,可以把它看作是对所有人的捐赠。
本文转载来源:http://m.elecfans.com/article/1134170.html
附比特币白皮书链接: https://pan.baidu.com/s/1AdN12OKLzBGaY9oqDudfkQ
提取码: iavj