比特币历史:

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. sql server Service Broker 相关查询

    sql server Service Broker 相关查询 -- 查看传输队列中的消息 --如果尝试从队列中移除时,列将表明哪里出现了问题 select * from sys.transmissio ...

  2. Java之字节码(3) - 简单介绍

    转载来自 首先了解一下理论知识: 字节码: Class文件是8位字节流,按字节对齐.之所以称为字节码,是因为每条指令都只占据一个字节,所有的操作码和操作数都是按字节对齐的.如:0×03表示iconst ...

  3. 〖QT编程〗在Qt编程中使用/显示中文编码

    在main.cpp中添加: #include "QTextCodec" QTextCodec *codec = QTextCodec::codecForName("Sys ...

  4. ISO镜像安装UbuntuKylin 13.04 64位,启动菜单制作实例

    1.将光盘镜像中的vmlinuz.efi.initrd.lz,和镜像本身(ubuntu....iso) 三个文件复制到U盘根目录下.如果下面的方法没成功启动,你可能要把U盘格式化为USB-HDD FA ...

  5. linux 源码安装 Nginx

    1.安装前环境准备安装make:# yum -y install gcc automake autoconf libtool make安装g++:# yum install gcc gcc-c++ 2 ...

  6. 初始化列表(const和引用成员)、拷贝构造函数

    一.构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 构造函数的执行分为两个阶段 初始化段 普通计算段 (一).对象成员及其初始化  C++ Code  1 2 3 4 5 6 7 8 9 1 ...

  7. 浅谈AngularJS的$parse服务

    $parse 作用:将一个AngularJS表达式转换成一个函数 Usage$parse(expression) arguments expression:需要被编译的AngularJS语句 retu ...

  8. ACdream 1084 寒假安排(阶乘素因子分解)

    题目链接:传送门   分析: 求A(n,m)转化成k进制以后末尾0的个数.对k素因子分解,第i个因子为fac[i], 第i个因子的指数为num[i],然后再对n的对A(n,m)进行素因子分解,设cou ...

  9. Atitit. 委托的本质 c#.net java php的比较

    Atitit.class 与type的区别,抽象的级别 class, delegate,interface委托的本质 1. 委托是粒度更细的接口 1 2. 委托模式 1 3. Java中的委托 1 4 ...

  10. Experience on Namenode backup and restore --- checkpoint

    Hadoop version: Hadoop 2.2.0.2.0.6.0-0009 Well, We can do this by building Secondary Namenode, Check ...