[转帖]比特币区块链的数据结构解析

比特币区块链的数据结构解析

发布者: 无主之地 发表于: 2015-8-13 18:37 来自: 比巴克

16608 1 分享

http://8btc.com/article-1915-1.html

区块链(数据区块、数据块、数据块链)作为比特币的核心概念,对于理解比特币结构起着至关重要的作用。在《什么是数据区块》中,编者从数据区块分布式交易记录的角度简单的介绍了数据区块的概念。今天,编者从数据区块的程序结构上来详细的分析数据区块里面到底记录了什么信息。

数据区块文件的位置
如果你用的是Bitcoin-Qt客户端,那么数据区块的信息就存在你的电脑里面。每次当你打开Bitcoin-Qt,数据区块都会跟整个P2P网络分布式数据库同步。根据操作系统的不同,数据区块目录blocks一般存放路径为:

Windows: %APPDATA%\Bitcoin\ 
Linux:~/.bitcoin/ 
Mac OS: ~/Library/Application Support/Bitcoin/ 

打开数据区块文件
我们打开blocks文件夹,便可以看到很多名为blkXXX.dat的文件,这些文件中保存了传说中的数据区块记录。

blkXXX.dat文件在终端下面可以用hexdump打开。
hexdump -n 10000 -C blk00000.dat

数据区块结构
hexdump程序把数据区块文件转化为十六进制+ASCII表示,编者解释一下:每一个数据区块记录了六个内容:神奇数、区块大小、数据区块头部信息、交易计数、交易详情。在这当中,数据区块头部信息的HASH值是下一个新区块的HASH值的参考目标数,最后一项交易详情记录了该区块中所有的交易记录(编者会在以后详细说明交易记录的结构)。
数据区块结构如下图:

数据区块头部结构
数据区块头部结构中记录了:版本号、前一个区块的记录、Merkle树的根值、时间戳、目标特征值、随机数。
在比特币矿工挖矿的过程就是产生新的数据区块的过程(编者以后会详细说明),这个过程需要对比前一个数据区块头部的HASH值和随机数,如果满足一定条件则生成新的区块。Merkle树的根值为该区块中所有被记录交易的根节点HASH值,中本聪用一个HASH树来对每一比交易进行数字签名,以确保每一比交易都不可伪造和没有重复交易,Merkle树就是HASH树的一种。数据区块头部结构如下图:

交易记录

交易记录就像一个记账本一样,记录了所有比特币的交易信息,每一个比特币玩家的比特币收支情况都被永久的嵌入了数据区块中以供别人查询,这也就是为什么每一比比特币交易都是可以查询到的。这个这些数据区块中的交易数据存放在每一个比特币玩家的客户端节点中,所有的这些节点则组成了比特币那及其坚韧的分布式数据库系统。任何一个节点的数据被破坏都不会影响整个数据库的正常运转,因为其它的健康节点中都保存了完整的数据库。
在本文中,编者将详细解析数据区块中交易记录的结构。

交易记录结构
数据区块的交易记录中,详细记载了比特币的交易记录和相关细节。其中在比特币收支详情里面,记录了收支的比特币地址和merkle节点值等情况,因此收支详情是交易记录中最重要的部分。
完整的交易记录结构如下表格:

比特币支出和接收交易的结构
在数据块中,比特币支出和接收交易是写在一起的,整个收支记录包括很多比记录。每一比记录都有自己的索引编号以供查询。

每一比记录中包括了生成时间、引用交易的哈希值、交易记录索引编号、比特币支出地址、支出地址数量等细节。每一比收支交易记录都有一个Merkle节点值,这个hash节点值是整个Merkle树的一部分,决定了每一个地址都不能重复交易和被伪造。
收支交易结构图如下:

区块链

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/8124051.html

时间: 2024-10-05 06:39:00

[转帖]比特币区块链的数据结构解析的相关文章

如何将Bitcoin比特币区块链数据导入关系数据库

在接触了比特币和区块链后,我一直有一个想法,就是把所有比特币的区块链数据放入到关系数据库(比如SQL Server)中,然后当成一个数据仓库,做做比特币交易数据的各种分析.想法已经很久了,但是一直没有实施.最近正好有点时间,于是写了一个比特币区块链的导出导入程序. 之前我的一篇博客:在区块链上表白——使用C#将一句话放入比特币的区块链上  介绍了怎么发起一笔比特币的交易,今天我们仍然是使用C#+NBitcoin,读取比特币钱包Bitcoin Core下载到本地的全量区块链数据,并将这些数据写入数

Bitcoin Cash为什么要对比特币区块链进行分叉Hard fork?

区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:吴寿鹤 来源:区块链兄弟 原文链接:http://www.blockchainbrother.com/article/30 著权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 经过长达几年的讨论之后,比特币扩容问题似乎终于要尘埃落定,但不管最终采取何种方案,总是会有一些用户对结果不甚满意.代码优化隔离见证(SegWit)经过优化发展到了如今的Segwit2x提案,而且距离该方案的激活也只剩几步之遥.但另外

第六章 比特币--区块链思想诞生的摇篮

一.比特币项目简介 特点: 去中心化:没有任何独立个体可以对交易进行破坏,任何交易请求都需要大多数参与者的共识 匿名性:账户地址是匿名的,无法从交易信息关联到具体的个体,这也意味着很难进行审计 通胀预防:发行量上限2100万个,无法超发,每四年减半. 1. 比特币大事记 2008.10.31,中本聪发布比特币白皮书 2009.1.3 18:15:05,中本聪挖出第一批50个币 2010.5.21 佛罗里达的程序员用1万个币买了价值25美元的披萨优惠券 2012.11.28 产量第一次减半 201

比特币区块链的局限

很多人说比特币是目前区块链最成功的应用,这么说有一定道理,但更贴合实际的说法是:由于在创造比特币时,并没有现成的.可以支持比特币系统运行的底层技术架构,所以中 本聪创造了区块链.也就是说,中本聪创造区块链的初衷是为了实现一个点对点的电子现金系统.因此,当我们对于区块链的用途有更高的期待时,它的一些局限就体现出来了. 首先,比特币区块链的设计只考虑了比特币的交易,本身并不支持定义其他资产,或是定义复杂的交易逻辑.如果要添加新功能,就要对系统进行升级,然而困难在于,对于比特币 这样的完全去中心化的系

比特币——区块链

区块链: 一种实时记录全部交易的去中心化公开数据库,在区块链上进行支付时全网计算机共同查询区块链数据,共同验证这笔支付交易是否有效.确认支付后将写入区块链并产生一条不可篡改记录. 区块:区块大小是1M,包含父哈希.Merkle根.时间戳.难度目标.随机数.程序上近似每10分钟增加一个BLOCK,block就是当前账本区块,如果矿工运算高于这个时间则下次下调难度,如果低于这个时间则增加难度,难度由当前算力确定. 区块链:每一个网络中的用户不需要完整的blockchain, 不过拥有完整blockc

(转)区块链 (数据结构)

https://baike.baidu.com/item/%E5%8C%BA%E5%9D%97%E9%93%BE/13465666?fr=aladdin 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块 [1]  .

[转帖](区块链补习班)ERC20很多人都听过,但ERC是什么你真的了解吗?

(区块链补习班)ERC20很多人都听过,但ERC是什么你真的了解吗? http://baijiahao.baidu.com/s?id=1600948969290990883&wfr=spider&for=pc 区块链福利社 发布时间:18-05-2012:15 ▌今日币价 Btc$8505/ Eth$707/Eos$12.94 本文不介绍技术代码相关,具体代码可在文末自行下载学习,为了方便阅读下文,特此做几个定义的解释: 可替代性通证(fungible token):在本文指的是基于区块链

区块链和比特币

何为区块链 ? 何为比特币? 比特币采用区块链技术, 但不等于比特币就是区块链 如果用一句通俗的话来概括:区块链,是一种(去中心化)技术,它解决的是市场经济中最核心的"信任"问题,把陌生人之间的信任成本降到极低的水平,对于中介成本很高或者缺乏信任场景的领域很适用区块链技术. 市场经济体制下,有一个很重要的问题就是信任, 如果没有信任, 任何交易都不可能成立. 曾经有一度我经常在想, 比如在初中 高中 大学的食堂, 如果有丧心病狂的人在饭菜里下毒那可怎么办? 困惑了我很久, 还好我没有遇

区块链快速入门(七)——比特币

区块链快速入门(七)--比特币 一.比特币简介 比特币(BitCoin,BTC)是基于区块链技术的一种数字货币实现,比特币网络是历史上首个经过大规模长时间检验的数字货币系统.自2009 年正式上线以来,比特币价格经历了数次的震荡,目前每枚比特币市场价格超过6000 美金,并曾经一度接近20000美金.比特币网络在功能上具有如下特点:A.去中心化没有任何独立个体可以对网络中交易进行破坏,任何交易请求都需要大多数参与者的共识.B.匿名性比特币网络中账户地址是匿名的,无法从交易信息关联到具体的个体,但