比特币白皮书原版(附比特币白皮书中文版)

时间:2024-10-31  分类:电子


16年前的今天是比特币白皮书发布的日子,那时候的比特币才$0.0025000美元,而今天的价格是72342美元,相信大家都想回到16年前吧!


2008年10月31日,中本聪(SatoshiNakamoto)在P2Pfoundation网站发布比特币白皮书《比特币:一种点对点的电子现金系统》。在白皮书发布16周年之际,为了重读这篇永远改变了金融世界的经典,再次刊发中文版比特币白皮书。


2008年10月31日


比特币白皮书的发布日期是2008年10月31日‌。比特币白皮书由一位署名为SatoshiNakamoto(中文译为中本聪)的密码学极客在metzdowd.net(密码朋克)网站的邮件列表中发表,题为《Bitcoin Peer-to-PeerElectronicCashSystem》(中文译为《比特币:一种点对点式的电子现金系统》)‌。


比特币白皮书的发布标志着比特币项目的正式启动。2009年1月3日,比特币创世区块在荷兰赫尔辛基的一台小型服务器内生成,标志着比特币的正式诞生。比特币早期的交易价格为0.0008美元,而按照历史最高价68789美元计算,比特币的价格涨幅超过了4300万倍‌。


作者:中本聪;译者:李笑来


概要:一个纯粹的点对点版本的电子现金系统,将允许在线支付直接从一方发送到另一方,而无需通过金融机构。数字签名虽然提供了部分解决方案,但,若是仍然需要被信任的第三方来防止双重支出的话,那么电子支付的主要优势就被抵消了。我们提出一个方案,使用点对点网络去解决双重支出问题。


点对点网络将为每笔交易标记时间戳,方法是:把交易的散列数据录入一个不断延展的、以散列为基础的工作证明链上,形成一个如非完全重做就不可能改变的记录。最长链,一方面用来证明已被见证的事件及其顺序,与此同时,也用来证明它来自于最大的CPU算力池。


只要绝大多数CPU算力被良性节点控制即,它们不与那些尝试攻击网络的节点合作那么,良性节点将会生成最长链,并且在速度上超过攻击者。这个网络本身需要最小化的结构。信息将以最大努力为基本去传播,节点来去自由;但,加入之时总是需要接受最长的工作证明链作为它们未参与期间所发生之一切的证明。


1.简介(Introduction)


互联网商业几乎完全依赖金融机构作为可信第三方去处理电子支付。虽然针对大多数交易来说,这个系统还算不错,但,它仍然被基于信任的模型所固有的缺陷所拖累。完全不可逆转的交易实际上并不可能,因为金融机构不能避免仲裁争议。仲裁成本增加了交易成本,进而限制了最小可能交易的规模,且干脆阻止了很多小额支付交易。


除此之外,还有更大的成本:系统无法为那些不可逆的服务提供不可逆的支付。逆转的可能性,造成了对于信任的需求无所不在。商家必须提防着他们的顾客,麻烦顾客提供若非如此(如若信任)就并不必要的更多信息。一定比例的欺诈,被认为是不可避免的。这些成本和支付不确定性,虽然在人与人之间直接使用物理货币支付的时候是可以避免的;但,没有任何一个机制能在双方在其中一方不被信任的情况下通过沟通渠道进行支付。


我们真正需要的是一种基于加密证明而非基于信任的电子支付系统,允许任意双方在不需要信任第三方的情况下直接交易。算力保障的不可逆转交易能帮助卖家不被欺诈,而保护买家的日常担保机制也很容易实现。在本论文中,我们将提出一种针对双重支出的解决方案,使用点对点的、分布式的时间戳服务器去生成基于算力的证明,按照时间顺序记录每条交易。此系统是安全的,只要诚实节点总体上相对于相互合作的攻击者掌握更多的CPU算力。


2.交易(Transactions)


我们将一枚电子硬币定义为一个数字签名链。一位所有者将一枚硬币交给另一个人的时候,要通过在这个数字签名链的末尾附加上以下数字签名:上一笔交易的哈希(hash,音译,亦翻译为散列值),以及新所有者的公钥。收款人可以通过验证签名去验证数字签名链的所属权。


这个路径的问题在于收款人无法验证曾经的所有者之中没有人双重支付过。常见的解决方案是引入一个可信的中心化权威方,或称铸币厂,让它去检查每一笔交易是否存在双重支付。每一次发生交易之后,硬币必须返回到铸币厂,铸币厂再发行一枚新的硬币。进而,只有铸币厂直接发行的硬币才是可信的、未被双重支付过的。这个解决方案的问题在于,整个货币系统的命运被拴在运营铸币厂的那个公司(就好像银行那样)身上,每一笔交易必须通过它。


我们需要一种方式,可以让收款人确认之前的所有者并没有在任何之前的交易上签名。就我们的目的而言,只有最早的交易是算数的,所以,我们并不关心其后的双重支付企图。确认一笔交易不存在的唯一方法是获悉所有的交易。在铸币厂模型之中,铸币厂已然知悉所有的交易,并且能够确认这些交易的顺序。为了能在没有被信任的一方参与的情况下完成以上任务,交易记录必须被公开宣布1,进而我们需要一个系统能让参与者们认同它们所接收到的同一个唯一的交易历史。收款人需要证明在每笔交易发生之时,大多数节点能够认同它是第一个被接收的。


3.时间戳服务器(TimestampServer)


本解决方案起步于一种时间戳服务器。时间戳服务器是这样工作的:为一组(block)记录(items)的哈希打上时间戳,而后把哈希广播出去,就好像一份报纸所做的那样,或者像是在新闻组(Usenet)里的一个帖子那样2 3 4 5。显然,时间戳能够证明那数据在那个时间点之前已然存在,否则那哈希也就无法生成。每个时间戳在其哈希中包含着之前的时间戳,因此构成了一个链;每一个新的时间戳被添加到之前的时间戳之后。


4.工作证明(Proof-of-Work)


为了实现一个基于点对点的分布式时间戳服务器,我们需要使用类似亚当伯克的哈希现金6那样的一个工作证明系统,而不是报纸或者新闻组帖子那样的东西。所谓的工作证明,就是去寻找一个数值;这个数值要满足以下条件:为它提取散列数值之后例如使用SHA-256计算散列数值这个散列数值必须以一定数量的0开头。每增加一个0的要求,将使得工作量指数级增加,并且,这个工作量的验证却只需通过计算一个哈希。


在我们的时间戳网络中,我们是这样实现工作证明的:不断在区块之中增加一个随机数(Nonce),直到一个满足条件的数值被找到;这个条件就是,这个区块的哈希以指定数量的0开头。一旦CPU的耗费算力所获的的结果满足工作证明,那么这个区块将不再能被更改,除非重新完成之前的所有工作量。随着新的区块不断被添加进来,改变当前区块即意味着说要重新完成所有其后区块的工作。


工作证明同时解决了如何决定谁能代表大多数做决定的问题。如果所谓的大多数是基于一个IP地址一票的方式决定的话,那么任何一个可以搞定很多IP地址的人就可以被认为是大多数。工作证明本质上来看,是一个CPU一票。所谓的大多数决定是由最长链所代表的,因为被投入最多工作的链就是它。如果大多数CPU算力被诚实的节点所控制,那么诚实链成长最为迅速,其速度会远超其他竞争链。为了更改一个已经产生的区块,攻击者将不得不重新完成那个区块以及所有其后区块的的工作证明,而后还要追上并超过诚实节点的工作。后文展示为什么一个被拖延了的攻击者能够追上的可能性将随着区块的不断增加而指数级降低。


为了应对硬件算力综合的不断增加,以及随着时间推进可能产生的节点参与数量变化,工作证明难度由此决定:基于平均每小时产生的区块数量的一个移动平均值。如果区块生成得过快,那么难度将会增加。


5.网络(Network)


运行网络的步骤如下: