【区块链】比特币白皮书简介
这篇文章简单的整理了比特币白皮书
的相关内容。
当初我刚开始对区块链感兴趣的时候,直接看了比特币的白皮书,
感到一头雾水,根本就看不明白到底是在说什么。
虽说只有8页(中文9页)的篇幅,而且主要内容不到6页,后面页是讲计算相关的。
建议大家也是不要直接看白皮书,先找找资料了解一下比特币的一些概念和大致的结构。
要不会很有可能跟我一样…^^;;
比特的白皮书下载地址:
https://bitcoin.org/en/bitcoin-paper
有中文版,如果不是英语大神,大部分的人都会看中文版吧?
比特币的白皮书一共有11个部分组成。 下面是我对比特币白皮书的每个部分的理解和简介。
摘要Abstract
比特币是实现点对点电子货币系统,为了实现去中心化的货币系统,
需要数字签名,hash算法,以及工作量证明等技术。
1.简介Introduction
要通过于密码学原理建立一个去中心化的交易系统,
为了解决双重支付问题,需要基于时间把交易串起来验证交易的是否重复。
只要大部分的节点是诚实的话,这个系统就安全。
2.交易Transactions
比特币是基于交易的系统。为了安全和意思每个交易需要验证存的是公钥和hash值。
但是没有中央服务器,所以为了确认双重支付问题,
需要验证上一笔交易的的有效性和有没有使用过的记录。
所以收款人在每笔交易时,都需要多数节点认同此交易是最先收到的证据。
3.时间戳服务器Timestamp Server
每个时间戳的哈希值都纳入了上一个时间戳,形成一条链,
后面的时间戳进一步增强前一个时间戳。
4.工作量证明Proof-of-Work
这部分解释的很官方,如果之前没有看过相关资料比较难理解。
其实简单的说就是区块打包权利的争取。
比特币的系统是由一个个的区块组成的。
每个区块的头部都包含着下一个区块的哈希指针,形成一个链表。
比特币系统是去中心化的系统,存在很多节点,那这么多节点中谁打包交易创建一个新的区块呢?
大家一起求一个随机数,谁先求出来,谁就可以先打包交易创建区块,广播出去。
求随机数的简单逻辑是,打包好交易的值 + 随机数 算hash值,
这个hash值小于某个值(通过难度值算出), 就可以打包好区块,广播到各各节点。
算hash值的时候,哪怕有小小的变化,hash值就有天壤之别。
所以这个随机数是没有什么判断依据的,只能是一个一个的算求这个随机数。
这一个为了区块打包权利,一直求随机数的的一过程就叫工作量证明。
这个随机数的难度值是会整个系统的处快速度为依据自动调整。
5.网络Network
这部分白皮书整理的很明确 运行网络的步骤如下:
- 新交易向所有节点广播。
- 每个节点将新交易收集到一个区块。
- 每个节点为它的区块寻找工作量证明。
- 当一个节点找到了工作量证明,就向所有节点广播这个区块。
- 节点只有在区块内所有交易都是有效的且之前没有被支付的情况下接收这个区块。
- 节点通过使用这个区块的哈希值作为上一个哈希值在链中创建下一个区块的方式表示对这个区块的接受。
这需要注意的是如果同时有两个地方求出了上述随机数出现2个区块的话,
过些时间看在哪个区块的后面先最佳区块形成更长的链。
这样短的链就会被抛弃,大家都往更长的链写入下一个区块了。
6.激励Incentive
工作量证明又耗时,耗资源。谁愿意去做?
所以需要有个激励机制去鼓励大家去做工作量证明。
这里有2个机制: 1.打包区块的人给出块奖励。50个比特币开始,大约没四年减半,现在出块奖励是6.25个比特币 2.打包区块的人收交易手续费。
7.回收磁盘空间Reclaiming Disk Space
比特币系统设置是大约没10分钟会出一个区块,这些区块的内容搜需要保存对磁盘存储的压力也很大。
所以使用默克尔树的结构,只存储头部信息,以便于不是全节点系统节省磁盘空间。
merkle tree的解释需要一些篇幅,相关的内容可以自行查找。
8.简化的支付验证Simplified Payment Verification
交易的验证也是跟克尔树的结构有关。
简单的说利用了hash算法的特性,可以跟自己头部的hash值和对应交易单的hash值
比较合法性,这样就大大的简化了验证方式。
9.合并和分割交易额Combining and Splitting Value
因为比特币是交易单位基础的货币系统,所以交易时的币未必来源于一个交易。
当输入的交易单很多的时候,输出的交易单仍然是2个,
一个是收货的交易单,一个是找零的交易单。
10.隐私Privacy
隐私部分是每个人都是用自己的公钥加密保存交易单的。
所以想是用改货币,需要用自己的私钥解密才能适用。
加上公钥是无法推断出私钥,所以保证的是别人无法知道你的信息。
但是可以知道你的公钥相关的交易单。
11.计算Calculations
这部分是解释了,这系统的计算逻辑,有点复杂没细看…^^;;
12.总结Conclusion
比特币系统是通过密码学原理,链表的结构保障系统的安全和隐私,
使用工作量证明,防范恶意节点的攻击,
追加最长节点的方式处理,结构和数据上的冲突。
前提是一半以上的算力是是诚实节点。
欢迎大家的意见和交流
email: li_mingxie@163.com