学堂----比特币白皮书深度解读

avatar
发表时间:08月22日 17:59 icon

  


今天将从比特币网络、交易、双花、时间戳、工作量证明、激励机制、磁盘存储、简单支付校验、交易的组合与分解、隐私和攻击问题,这几个维度给大家立体展现比特币白皮书的魅力。  可能都是名词解读,会略显枯燥,有兴趣的可以耐心看下去。


一、解读分析

读之前必须要了解一个基础概念,哈希(hash)。哈希作为动词就是把任意的输入长度通过散列算法变成固定长度的输出,而且无法逆向推倒,哈希值就是所输出的固定长度。



中本聪在标题里就给比特币下了定义:一种点对点的电子现金系统(A Peer-to-Peer Electronic Cash System)。 一种最纯粹的点对点电子现金在交易过程中只涉及到交易双方,不会有第三方金融机构参与 不过想绕过第三方机构,双花(同一笔钱花两次)问题是要必须要解决的。


所以,我们需要的是一种基于密码学证明而不是基于信任的电子支付系统,以实现任何两个人可以不通过第三方可信机构实现直接交易。


一个从计算机科学机制上不可回滚的交易,将会保护卖家不受欺诈的危害,而通常的担保机制在这种情形下同样也可以非常轻易的被实施以保护买家。在这篇论文中,我们提议了一种解决方案,这个方案通过使用点对点分布式时间戳服务器去生成按照时间排序的交易序列的电子证明的方式,解决了“双重支付”问题。只要诚实节点集体地,比任何联合起来的恶意攻击节点控制更多的CPU算力,这个系统就是安全的。


在现在的转账系统,也就是存在第三方金融机构的转账系统中,信任问题是不可避免的。完全不可逆的交易实际上不可能存在,总会存在纠纷,仲裁花费就会增加交易成本。同时由于支付是可能逆转的,商家要提防客户,要求他们提供更多的信息,所以信任必须存在。

 

电子支付系统需要的是加密证明,而不是基于信任。这样双方就可以直接交易,不需要第三方的参与。

 

在这个系统里,比特币就是一串数字签名链。每个人在转账过程中,签署币过去的转账记录的哈希和下一个接收者的公钥,接收者验证签名后就能宣示所有权了。

 

  

 

在这里解释一下公钥和私钥的关系。私钥是由256位数字0和1组成的随机数,将其转换成64位十六进制显示。所以比特币的私钥共有2^256个,数量和可见宇宙中所有原子数差不多。 公钥由私钥通过椭圆曲线加密算法得到,比特币地址由公钥通过哈希得到。  

 


他们之间严格按照私钥得出公钥,公钥得出地址的顺序,不能逆推。用私钥加密过的信息可以用公钥解密,用公钥加密过的信息可以用私钥解密,地址是用于转账,可以由公钥证实。

 

所以交易信息(哈希值)用私钥签名后,用公钥验证签名就能确定“比特币”之前的所有者。由于每次的交易信息都不同,所以每次交易都会有新的签名信息。


二、名词解读


1、什么是比特币网络

比特币网络就是一个基于点对点的分布式系统,它依据交易发生的先后顺序,对交易进行打包,在进行记录的同时加入工作量证明和激励机制,只要比特币中诚实节点能够控制整个网络的算力,即诚实节点提供的算力大于比特币网络整体算力的51%,或者说诚实节点的算力大于攻击节点的算力,这个分布式系统就是安全可靠的。


2、交易

我们说一个人拥有一个比特币,并不是有一个记帐系统来标明这个人名下有一个币。实际上我们说的比特币是比特币系统中的交易,更确切地说是拥有一个未支付的交易输出,即我们经常听到过的 UTXO (英文全称是unspent transactions output)。


一个币事实上是一个签名链,链末端的数额表示某个地址拥有币的数量,任何一个币向上追溯都会到达链的起始端,即比特币矿工挖出这个新币时的一个签名点。


一个币的所有者通过交易将币转移给另外一个地址,这时需要对前一个交易及接收地址进行签名来实现,前一个交易里的接收地址得是这个币所有者的地址,实际就是说你能签名的前提是这个币是属于你自己的,交易的验证者会用前接收者的公钥验证这个签名的合法性从而确定这个签名的真伪。


3、 时间戳

比特币的做法是先对发生的一组交易进行打包,形成一个区块,同时在这个区块上添加这个时刻的时间戳,然后计算出此区块的区块头的哈希值,再把这个哈希值广播到网络中。


在这个过程中主要完成了这么几件事:

a.对交易进行打包,形成一个区块。

b.在区块里加入时间戳,来证明交易发生的时间。

c.计算区块的头哈希。

d.把区块头哈希向全网广播。


接下来生成的每一个区块都会记录前一个区块的哈希值,形成一个区块链。这里我们涉及了两个概念,第一个概念是区块,区块里包含了交易,同时记录了一个时间;第二个概念是区块链,即后一个区块里包含前一个区块的头哈希,使各区块形成一个前向链。这也就提示了比特币网络事实上就是一个区块链系统。


4、工作量证明

什么是比特币的工作量证明呢?一句话概括就是: 不断改变区块内容,使得区块头的哈希值小于即定的一个阈值。

网络采用哪个节点生成的区块?区块首先要满足区块头哈希阈值的限制,在此基础上谁先产生出新区块,网络就用谁的。 所以: 区块满足工作量证明的前提下,谁快用谁的


5、激励机制

比特币生成新币消耗的是CPU时间及电力。新币仅仅是矿工奖励的一部分,每笔比特币交易的交易费用也是矿工奖励的一部分,当所有的比特币被挖完后,奖励就会全部来自于交易费用。


6、磁盘空间

比特币的区块头大小仅有80个字节,现在比特币区块的生成速度为第10分钟一个,那么一年产生的区块头大约是4.2MB。通常我们PC系统的内存都大于2GB,这样即使将所有区块头都存储于内存中都不是问题。


此功能概括一下就是:一个区块中的交易采用Merkle树来排列,区块头只记录树根。 这也是比特币的一大特性, 树根不发生变化就意味着树上的每个数据都没有发生变动。


7、简单支付校验

首先是简单支付校验。在使用比特币进行交易时,需要对已经发生的交易进行校验。对支付的验证,并不一定要运行一个保存有全部交易的全节点。用户只需要保存所有区块的区块头,再结合这个区块中的有关此交易的Merkle路径即可确认支付的有效性。


8、交易的组合与分解

比特币网络允许一个交易有多个输入及多个输出,这样就可以对比特币进组合或者分解。一笔交易的输入既可以是另外一个复杂交易的其中一个输出,也可以是多个交易的输出组合。


9、隐私

比特币交易是发到整个网络上的,比特币用密钥地址代替了帐户地址,提供了另外一种保护隐私的方式。

如果交易用户还想再增加一些安全性,就可以在每次接收比特币的时候采用一个新密钥对,这样一个人就会有多个密钥对,其它用户也很难把这些分散的多个密钥对联系到一个人的身上。这种隐私保护的特点就在于,你看到了比特币地址,但你很难将其与个人信息关联起来。


10、攻击问题

想象一下比特币网络被攻击,攻击者的算力超过了诚实节点的算力,有能力更快地制造出更长的链,使之成为全网公认的链,这时会发生什么事?攻击者所能做的就是更改自己的交易信息,试图拿回已经支付给别人的钱。


攻击者是不能凭空造出比特币的,也不可能把其他人的比特币划归到自己的名下,因为他没有其他地址对应的私钥信息。


三、总结


以上所说的就是比特币的本质,概括起来就是四个核心点: 货币所有权、交易排序、工作量证明、激励机制, 这四个方面保证了比特币网络能健康长久地发展下去。


本期分享结束,下期再见!

免责声明:本文由财路用户上传并发布,内容为用户独立观点,不代表财路平台立场。

文章标题:学堂----比特币白皮书深度解读