bitcoin区块结构分析

https://zhuanlan.zhihu.com/p/42584683

bitcoin区块结构分析

Eric

Eric

​关注他

区块链

区块链是由一个个包含交易数据的区块按照时间顺序链接组成。它可以存储到文件中或者轻量级数据库中,例如:Google的LevelDB或者D. Richard Hipp创建的SQLite。

区块链的结构如下图:

 

图片来自:Satoshi Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System" https://bitcoin.org/bitcoin.pdf

每个区块中都包含前一个区块的Hash(上图中的Prev Hash),以及本区块的时间戳,从而形成一个按时间顺序排列可以追溯到第一个区块的链式结构。

 

前一个区块的Hash值是通过对前一个区块的区块头运行SHA256算法计算得出。从上图的结构中可以看出每个区块都包含上一个区块(父区块)的区块头Hash,所以如果要修改已加入区块链中的区块信息,需要把该区块后续的子区块、孙区块的信息都进行修改,这种连锁式的效应导致如果要修改某个区块,也必须重新通过工作量证明(POW)计算该区块后的所有区块,重新计算需要消耗巨大的计算机算力,一般认为一个区块在后面跟了五个区块后,该区块里的交易将是不可逆转的。

 

区块

区块是一种数据结构,它主要由区块头和交易列表组成。

 

区块头

 

交易列表

区块中的交易列表,实际上是区块中交易的Hash列表。类似下面这样:

[

"4d7e38663dbe2a61f2bbf175e02a9eea6f7f9ea6e12411ed51795bfd6a48142c",

"8e189263e983816df24c9f75c1ecd0c0a5012e01832ccaf95cd7d0f496f40500"

]

 

区块JSON数据分析

通过bitcoin core RPC控制台获取的区块信息如下:

getblock 0000000000000002a6e7c1fc7f26d58bb5d4dd4667c9bc5516fc67ff540e5a6f

{

"hash": "0000000000000002a6e7c1fc7f26d58bb5d4dd4667c9bc5516fc67ff540e5a6f",

"confirmations": 9632,

"size": 994,

"height": 579042,

"version": 536870912,

"versionHex": "20000000",

"merkleroot": "b89e7206aaa8b9a16c70808208a9ff2624ba84f7f4f713826c36a793bc4f1d20",

"tx": [

"4d7e38663dbe2a61f2bbf175e02a9eea6f7f9ea6e12411ed51795bfd6a48142c",

"8e189263e983816df24c9f75c1ecd0c0a5012e01832ccaf95cd7d0f496f40500"

],

"time": 1528576496,

"mediantime": 1528574674,

"nonce": 3519684336,

"bits": "190401da",

"difficulty": 1071787469.797805,

"chainwork": "0000000000000000000000000000000000000000007cb85621cccdbd508b7ac3",

"previousblockhash": "0000000000000003edc68dcdae70d279fc040505b3d3f4d0dcc995a70d8791a1",

"nextblockhash": "00000000000000031ccf028a8a9a1dbdcba4c0c1316b22dac4c0cdaff905c2d0"

}

字段说明

  1. hash:当前区块Hash
  2. confirmations:区块链网络确认数
  3. size:区块大小
  4. height:区块高度
  5. version:区块版本
  6. versionHex:区块版本的16进制表示
  7. merkleroot:区块中所有交易的merkle根Hash
  8. tx:交易列表
  9. time:区块的时间戳
  10. mediantime:过去11个区块的中值时间
  11. nonce:32位的任意随机数,挖矿时用于工作量证明算法的一个扰动输入参数
  12. bits:区块的难度目标
  13. chainwork:区块链上的总计工作量,它是一个32位的整数,代表了区块链上所有区块的计算工作量,把上例中的

“0000000000000000000000000000000000000000007cb85621cccdbd508b7ac3”转换为十进制表示“1.5077730592060008e+26”,我们可以看到是一个非常巨大的计算工作量

14. previousblockhash:前一个区块的Hash值

15. nextblockhash:下一个区块的Hash值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值