首页 > 技术文章 > Bitcoin: A Peer-to-Peer Electronic Cash System(比特币论文翻译)

huangshiyu13 2017-05-13 10:08 原文

比特币历史:

2008年,比特币论文诞生

2009年1月,第一批比特币诞生

 

2011年4月,比特币价格第一次达到了1美元

2011年6月,涨到30美元,然后开始跌

 

2013年1月,4美元

2013年11月末,价格到达1200美元(恐怖!!!),然后开始跌

 

2017年1月,1000美元

2017年12月,19,000美元,然后开始跌

 

2018年8月,6000千美元

 

比特币是一种虚拟货币,可以进行交易,商品买卖和兑换真币。可以通过耗费计算资源挖掘block,发现新的block可以获得比特币奖励和发生在此block上的交易奖励。

比特币拥有者会保留一个私钥,如果私钥被盗,比特币就会被转走,然后偷盗者通过“洗比特币”的方式,使得脏币无法被追踪,然后兑换真币获取财富。

 

Nakamoto, Satoshi. "Bitcoin: A peer-to-peer electronic cash system." (2008): 28.

 

摘要:这是一种电子现金,可以实现个人到个人的在线交易,而且不需要任何中间金融机构。数字签名是一种可行的解决方案,但是这种方案有一定的损失,就是需要第三方机构。我们提出一种端到端的网络来解决这个问题。这个网络会给交易打上时间戳,这种时间戳是基于哈希的,除非重置网路,这个时间戳是不变的。最长的链不仅是事件的见证,而且也表明它来自最强的CPU集群。只要大多数的CPU由节点控制,那他们就会超过攻击者的计算速度。这个网络本身只需要很小的结构。信息尽可能地被广播,而且节点可以随时离开和接入这个网络,在他们离开的时候也能即受到最长链的信息。

 

1.引言

互联网上的商业过度依赖于第三方金融机构。然而,网络系统对交易已经非常的的完善,但它依然受限于第三方机构体制。不可逆交易在金融机构的调解下是不现实的。这种调解增加了交易成本,限制了实际交易规模,减少了小交易的随意性。金融机构对用户十分谨慎,想用户询问过多的信息。一部分诈骗不可避免。这些成本和非确定性在真实货币上可以被避免,但是还没有一个能通过信道的非第三方认证机构的付款方式。

 

这里需要一个基于加密的证明而不是一个第三方机构去完成两个用户之间的认证和交易。不可逆计算可以保护卖方不被欺骗,常规托管机制能容易地被实现以保护购买方。在这篇论文中,我们提出一种对双方付费问题的端到端的交易解决办法,这种方法含有分布式的时间戳,具有计算可证明性。这种方法的安全性是基于好节点的CPU数量多于攻击者的CPU的数量。

 

2. 交易

 我们把电子金币定义为一串数字签名。对于每个金币拥有者,他如果想把金币交给下一个用户,他需要首先把上次的交易和下一个用户的公钥做一个hash,然后加到这个数字签名的后面就行了。而对于接受者来说,只要用自己的私钥进行验证,验证通过即代表拥有该金币。

这里存在一个问题,就是接受者不知道这个金币的上个拥有者是否多次使用过这个金币。一个通常的解决办法就是找一个可信赖的中央机构,让它来验证每一次交易是否合法,然后这个中间机构发出新的金币,保证这个金币只用过一次,这就有点像银行。

 

我们需要一个方法来让接受者知道前一个用户是否多次使用了这个金币。为了达到这个目的,就只有知道所有的交易历史。在中间机构的模型当中,中间机构知道所有的交易细节。但是为了达到这个目的而且不加入中间机构,就只有公开交易细节。这样接受者才能证明这个金币是第一被使用的。

 

3.时间戳服务

为了解决上面的问题,我们提出了时间戳服务。时间戳服务就是把以前的时间戳和现在的一些信息 做一个hash,然后在广播出去。那么这个时间戳就包含了当前数据的信息和以前的历史信息。

 

4.工作证明性

为了实现分布式的端到端的时间戳服务,我们需要使用一个叫做工作性证明的系统。这个工作证明系统就是从零序列进行做hash。

 

只要好的CPU比攻击的CPU多,那么就是安全的。

 

5.网络

网络上主要分为以下几步:

(1)新的交易广播到所有节点上。

(2)每个节点把交易嵌入一个block中。

(3)每个节点进行工作性证明的block计算。

(4)当某个节点发现工作性证明block,就会广播出去。

(5)所有节点在所有交易都处于就绪状态时,会接受这个block。

(6)节点接受这个block后会用这个block的hash,然后继续搜寻下一个block。

节点只会接受最长的链,然后继续扩展这个链。对于两个节点同时发出相同长度的链,那么一个节点会同时保留两个链,但只在第一个链上工作,如果有其他节点对其中一个链计算出了结果,则丢弃那个更短的链。

新的交易不用到达所有的节点,只要他们到达足够多的节点就行。不久后它们会融合进block当中。block的广播对于丢包也是鲁棒的。当一个节点没有接收到了一个block,他会发出请求下一个block。

 

6.激励

需要话费CPU的计算能力和电力去创造新的金币。一个攻击者如果拥有很多的CPU计算能力,他去偷金币的利润还不如去创造金币。 

 

7.回收磁盘空间

一旦最近的交易被足够多的block保存,那么很久以前的交易就可以被丢弃了,这样就能节省磁盘空间。 为了缓解这个问题,可以把hash组成一棵Merkle树。

 

8.简化的付款验证

可以通过保存最长链的副本来避免运行所有节点。 

 

9.组合和分裂值

为了更灵活的使用,需要使交易能够有组合和分裂的能力。

 

10.隐私

 

11.计算

 攻击节点很难赶上好节点的能力。

 

12.结论

 

参考文献:

 

推荐阅读