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

\(\color{red}{预备知识}\)

\(\color{blue}{数字签名}\)

数字签名,就是附加在数据单元上的一些数据,或是对数据单元所作的密码交换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。其主要功能是验证消息确实是由发送方签名并发出来的,二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥
数字签名应用了公钥密码领域使用的单向函数原理。单向函数指的是正向操作非常简单,而逆向操作非常困难的函数

例子
假如现在 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:
1.Alice 准备好要传送的数字信息(明文);
2.Alice 对数字信息进行哈希运算,得到一个信息摘要
3.Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上;
4.Alice 用 Bob 的公钥对发送信息进行加密,将加密后的 DES 密钥连同密文一起传送给Bob;
5.Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,
6.Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要;
7.Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
8.Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

发送:发送者的私钥,接受者的公钥,以及哈希函数
接收:接收者的私钥,发送着的公钥,以及哈希函数

为了构造一个点对点,无第三方机构的电子货币系统,产生了区块链,为了激励目的,产生了虚拟货币

\(\color{red}{简介}\)

本文提出了一种完全通过点对点技术实现的电子现金系统(基于密码学原理而不基于信用,使得任何达成一致的双方,能够直接进行支付。),它使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构。
其工作原理主要是,通过随机散列对全部交易加上时间戳,将它们合并入一个不断延伸的基于随机散列的工作量证明(proof-of-work)的链条作为交易记录,除非重新完成全部的工作量证明,形成的交易记录将不可更改。只要诚实的节点所控制的计算能力的总和,大于有合作关系的(cooperating)攻击者的计算能力的总和,该系统就是安全的。

协议:
将交易广播出去
只认可有签名的交易
不可超支

主要工具:密码哈希函数
把计算工作量作为信任的基础

\(\color{red}{交易}\)

我们定义了一种像数字签名链条的电子货币,每一个交易者通过货币底部的数字签名将货币转移给下一个,这个签名包含了前一个交易的哈希以及下一个用户的公钥。收款方可以通过验签来确认当前链的所有者。
该过程的问题在于,收款人将难以检验,之前的某位所有者,是否对这枚电子货币进行了双重支付。通常的解决方法是引入第三方机构来对每一笔交易进行检验。如果想要在电子系统中排除第三方中介机构,那么交易信息就应当被公开宣布(publicly announced)[1] ,我们需要整个系统内的所有参与者,都有唯一公认的历史交易序列。收款人需要确保在交易期间绝大多数的节点都认同该交易是首次出现。

\(\color{red}{时间戳服务器}\)

时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,并将该随机散列进行广播,就像在新闻或世界性新闻组网络(Usenet)的发帖一样.每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(reinforcing),这样就形成了一个链条(Chain)。

工作量证明

区块有了工作量证明才被认可
在区块中补增一个随机数(Nonce),这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0(一开始可能是60个0)。我们通过反复尝试来找到这个随机数,直到找到为止,这样我们就构建了一个工作量证明机制.(因为这个数和区块信息被hash了, 只能是随机猜测).当找到了并验证这个值,就会得到奖励(虚拟货币).所有的工作量本身就对应了交易信息,如果修改了交易信息(如付钱取消),哈希值就会改变,这你得重新找到新的哈希值,这段时间内,诚实的节点链表长度已经远远大于你修改后的伪造链表长度了

每个区块就像彩票,大家都在拼命地快速猜数字,直到有个幸运儿找到一个特殊数字,使得整个区块的哈希值开头有许多个零.他就得到奖励
对于普通使用者来说,他们只需要把听到的区块保存到自己的区块链中

比特比的每个区块,只允许包含大约2400笔交易

\(\color{red}{网络}\)

运行该网络的步骤如下:

  1. 新的交易向全网进行广播;
  2. 每一个节点都将收到的交易信息纳入一个区块中;
  3. 每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
  4. 当一个节点找到了一个工作量证明,它就向全网进行广播;
  5. 当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
  6. 其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。
    节点始终都将最长的链条视为正确的链条,并持续工作和延长它

\(\color{red}{激励}\)

我们约定如此:每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的一种方法。这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。此时,CPU的时间和电力消耗就是消耗的资源。

posted @ 2018-03-04 20:41  blog_hfg  阅读(136)  评论(0)    收藏  举报