比特币历史:

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.结论

参考文献:

Bitcoin: A Peer-to-Peer Electronic Cash System(比特币论文翻译)的更多相关文章

  1. Bitcoin: A Peer-to-Peer Electronic Cash System

    Bitcoin: A Peer-to-Peer Electronic Cash System Satoshi Nakamoto October 31, 2008 Abstract A purely p ...

  2. Peer To Peer——对等网络

    今年的考试.大问题没怎么出现. 就是考英语第二天的下午,发生网络阻塞的现象,不影响大局.可是事出有因,我们还是须要看看是什么影响到了考生抽题.最后查了一圈,发现其它几场的英语考试听力都是19M大小,而 ...

  3. Peer to Peer File Sharing Through WCF

    http://www.codeproject.com/Articles/614028/Peer-to-Peer-File-Sharing-Through-WCF https://github.com/ ...

  4. 《The Google File System》论文阅读笔记——GFS设计原理

    一.设计预期 设计预期往往针对系统的应用场景,是系统在不同选择间做balance的重要依据,对于理解GFS在系统设计时为何做出现有的决策至关重要.所以我们应重点关注: 失效是常态 主要针对大文件 读操 ...

  5. 经典论文翻译导读之《Google File System》(转)

    [译者预读] GFS这三个字母无需过多修饰,<Google File System>的论文也早有译版.但是这不妨碍我们加点批注.重温经典,并结合上篇Haystack的文章,将GFS.TFS ...

  6. 《The Google File System》论文研读

    GFS 论文总结 说明:本文为论文 <The Google File System> 的个人总结,难免有理解不到位之处,欢迎交流与指正 . 论文地址:GFS Paper 阅读此论文的过程中 ...

  7. The Google File System(论文阅读笔记)

    概述 ​ GFS:一个可扩展的分布式文件系统,用于大型分布式数据相关应用,TB级的数据,成千上万的并发请求. 设计概览 假设 组件的失效比异常更加常见 多数的文件修改操作是追加数据而不是重写原来的数据 ...

  8. 一、Bitcoin比特币与BlockChain区块链技术

    一.比特币历史 2008 年 10 月 31 日,一个网名叫中本聪(英文翻译过来滴)的家伙发布比特币唯一的白皮书:<Bitcoin:A Peer-to-PeerElectronic Cash S ...

  9. 比特币_Bitcoin 简介

    2008-11   Satoshi Nakamoto  Bitcoin: A Peer-to-Peer Electronic Cash System http://p2pbucks.com/?p=99 ...

随机推荐

  1. iOS tabbar 图片,最佳大小方式

    iOS tabbar 图片,最佳大小方式 文档大小 30 *30 retaina 60 *60 最佳大小 48 *32 参考:http://stackoverflow.com/questions/15 ...

  2. es6- ArrayBuffer

    ArrayBuffer对象.TypedArray视图和DataView视图是 JavaScript 操作二进制数据的一个接口. 简单说: ArrayBuffer对象代表原始的二进制数据, TypedA ...

  3. JUnit 3.8 让所有测试程序 实现 复合的测试(TestSuite)

    之前是单个单个程序测试,这种方式在测试类比较少的时候可行, 但测试类多了,单个单个的这个测试方式就不推荐了,那得使用 复合的测试了 一个TestSuite是一个复合的测试.它运行测试用例集.   这个 ...

  4. Android 打造完美的侧滑菜单/侧滑View控件

    概述 Android 打造完美的侧滑菜单/侧滑View控件,完全自定义实现,支持左右两个方向弹出,代码高度简洁流畅,兼容性高,控件实用方便. 详细 代码下载:http://www.demodashi. ...

  5. 后台管理-基于 Bootstrap 开发的网站后台管理面板

    Bootstrap 开发框架真的很强大,今天推荐几个非常不错的基于 Bootstrap 开发的网站后台管理面板,全部都是响应式布局,细节做得都很不错.可以搜索keenthemes. Metronic ...

  6. STS IDE 个性化修改

    JDK: Eclipse或MyEclipse文件系统不同步的解决方法 STS汉化: 1.解压STS中的language文件夹 以我的安装目录为例,我的STS的安装在D:盘下.将解压后的“languag ...

  7. Spring4.* 中整合 Hibernate

    1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...

  8. export、exports、modules.exports 和 require 、import 的一些组合套路和坑

    推荐阅读第三方文章: http://www.tuicool.com/articles/uuUVBv2 引入: require / import 导出:export / module.exports / ...

  9. 采用 EventHandler 模式发布事件(转载)

    采用 EventHandler 模式发布事件 (如果不需要与事件一起发送自定义数据,请跳过此步骤,进入步骤 3a.)在发行者类和订阅方类均可看见的范围中声明自定义数据的类. 然后添加保留您的自定义事件 ...

  10. Python目录常用操作

    os.path.basename(path) #取文件名 os.path.getsize(path) #取文件大小 os.path.exists(path) #文件是否存在 os.path.dirna ...