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

bitcoin区块结构分析

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值

bitcoin区块结构分析相关推荐

  1. bitcoin区块链源码分析(一)网络发现

    bitcoin节点在接收peer发过来的块的处理流程 //所有全局变量 //CConnman 的一个关键属性m_msgproc: 如果本地没有peer.dat,  由第一线程CConnman::Thr ...

  2. Factom(公证通)--基于区块链的存证系统

    Factom这个Solution在2014年的时候就已经推出了,现在已经2018年了,我才来写这一篇分析文章可能有些迟了,但是它是十分具有参考价值的.因为现阶段来开区块链虽然炒得火热--养猫.养狗.草 ...

  3. 区块链入门 第二部分

    比特币环境搭建 比特币的基本环境安装,笔者使用vmware workstations+ubuntu16.04  首先安装ubuntu16.04操作系统.  安装完成后更新:  Ubuntu更新:(这一 ...

  4. 区块链知识系列 - BTC和ETH的区别

    Bitcoin的出块时间 Bitcoin的区块平均产生时间是10分钟,每个区块的大小限制在1M左右 一个事务有了6个确认,我们就认为这个事务已经确定了,所以一个事务要1小时左右才能保证成功(最快),不 ...

  5. java以太坊源码分析_以太坊区块链Java(EthereumJ)学习笔记:区块链结构-Go语言中文社区...

    本文对EthereumJ的区块链相关的代码做一个简单的介绍. 以太坊区块链 以太坊区块链是在Bitcoin区块链的基础上发展起来的.区块链的数据结构既保留了Bitcoin区块链验证数据的真实性和完整性 ...

  6. 15种区块链共识算法全面详解

    1,摘要 本文尽可能列出所有主要的共识算法,评估各自的优劣之处.共识算法是区块链的核心技术,本文会跟随作者的理解,持续更新.如果读者发现有所遗漏,或是存在错误,希望能通过评论指出. 2,区块链共识算法 ...

  7. 比特币官方客户端钱包是用什么语言开发的_5种主流比特币客户端的开发选型...

    bitcoin客户端是接入比特币网络的必备软件,也是开发者构建基于比特币区块链的去中心化应用的基础平台.本文将介绍主流的五种bitcoin客户端软件,开发者可以根据自己的需求进行选择. 1.Bitco ...

  8. CITA 技术白皮书

    比特币作为区块链的起源,创造性的解决了开放网络上的分布式共识问题,为世界呈现了一种基于分布式系统及密码学的全新技术架构.后继者以太坊很好的将通用计算融合进这个架构,让人们看到了智能合约的非凡潜力.而许 ...

  9. 通过 BTC Relay 来实现链与链的连接

    通过BTC Relay来实现链与链的连接 区块链技术彻底改变了价值的转移方式.在没有中介的情况下只需要几美分就能够转移数百万美元的巨额,这在比特币出现之前是闻所未闻的. 虽然这区块链这一创新技术早已成 ...

最新文章

  1. TypeScript 素描 - 模块解析、声明合并
  2. PL/SQL DEVELOPER 使用的一些技巧
  3. kde菜单图标显示不全_大小仅 1M!在电脑菜单栏上自定义日历,规划时间更方便...
  4. 让一个非窗口组件(non-windowed component)可以接受来自Windows的消息
  5. mysql不支持union_MySQL中Union子句不支持order by的解决方法
  6. eclipse启动tomcat 404
  7. Soul 网关源码阅读(四)Dubbo请求概览
  8. 如何在应用程序中隐藏2021款MacBook刘海?
  9. c++ 定时器_「正点原子Linux连载」第十九章定时器按键消抖实验
  10. 【读书笔记】 —— 《数学女孩》
  11. ILSVRC竞赛详细介绍(ImageNet Large Scale Visual Recognition Challenge)
  12. 实际波动率与隐含波动率的计算 python
  13. android app闪退原因,如何解决app闪退问题
  14. adb remount 报错:Binder ioctl to enable oneway spam detection failed: Invalid argument
  15. 应用ArcGIS和COORD软件进行坐标七参数转换的方法
  16. Jupyter Notebook主题字体设置及自动代码补全
  17. 「hdu6608」Fansblog【Miller_Rabin+威尔逊定理】
  18. 数据挖掘之坦坦尼克号获救情况分析
  19. 笑话集网站最近更新网站内容采集
  20. 证券IT:冬虫夏草之技术路线图

热门文章

  1. [转]详细说明等额本金和等额本息的计算方式与利弊
  2. android 解锁过程,Android-解锁与刷机(以一加为例)
  3. 自动化测试框架[Cypress元素操作详解]
  4. django-DIL模板自定义过滤器,自定义标签,自定义包含标签
  5. 支持微信多开、防止消息撤回的小助手
  6. 面对同行抄袭或者抹黑,应该怎么办?
  7. python抢购茅台抢购描述
  8. 姓氏 (C++)简单贪心
  9. 安利7个冷门好用的在线工具,每一个都足够惊艳
  10. PYNQ(ZYNQ)入门资料合集1