主页 > imtoken钱包官网苹果版 > 如何打开dat格式的文件 如何在电脑中打开DAT类型的文件 如何查看...
如何打开dat格式的文件 如何在电脑中打开DAT类型的文件 如何查看...
比特币节点(Bitcoin Core)的~/.bitcoin/blocks/目录下的blk.dat文件包含节点接收到的原始区块数据。 区块链数据分析是获取比特币区块和交易数据最高效的方式。 本文将介绍比特币区块数据文件的格式、数据结构和读取方法原理怎么看比特币dat文件真假,并介绍三种常用的工具软件。
一、blk.dat的工作机制
比特币节点(比特币核心)收到的每个块都被写入 blk.dat 文件。 出于性能考虑,节点不会将所有块写入单个巨型文件,而是将它们拆分成多个 blk*.dat 文件。
~/.bitcoin/blocks blk00000.dat blk00001.dat blk00002.dat …
节点先将收到的块写入blk00000.dat,如果文件已满(约128MB),则写入blk00001.dat,然后写入blk00002.dat...,以此类推。
2. blk.dat文件内容示例
blk.dat 文件中的数据以二进制格式存储,节点接收到的新块将附加到文件末尾。 我们可以看看创世块的内容。 读取 blk00000.dat 的前 293 个字节:
f9beb4d91d01000001000000000000000000000000000000000000000000000000 00000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a 51323a9fb8aa4b1e5e4a29ab5f49ffff001d1dac2b7c0101000000010000000000 000000000000000000000000000000000000000000000000000000ffffffff4d04 ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e 63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f7574 20666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548 271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4 f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000
3.blk文件结构
以上数据可以分为五个部分:
数据结构如下:
[ magic bytes ][ size ][ block header ][ tx count ][ transaction data ] <- 4 bytes -> <- 4 bytes -> <- 80 bytes -> <- varint -> <- remainder ->
利用size字段分析上面的数据,我们知道读取整个block需要293个字节:size的二进制编码为1d010000,处理如下:
转换字节顺序得到0000011d 转换成十进制得到285
因此,我们添加 4 个字节的魔法字节和 4 个字节的大小以获得该块的 293 个字节。
4、注意事项 4.1 块不按顺序下载
如果您正在解析 blk.dat 文件,请务必记住块不一定按顺序排列。 例如,在处理文件时,您可能会按以下顺序读取块:
A B C E F D
这是因为出于性能原因怎么看比特币dat文件真假,比特币节点并行下载块。
4.2 blk.dat文件最大128MB
此限制在源代码中由宏 MAX_BLOCKFILE_SIZE 控制。
5.块文件读取工具
如前所述,blk.dat 文件中的数据是二进制编码的,因此如果直接在文本编辑器中打开该文件,可能看不到太多有价值的信息。 有几种工具可以为您提供帮助。
5.1 od - 十六进制查看工具
od 是一个简单的工具,可以将文件的内容导出为您选择的格式。 例如:
od -x --endian=big -N 293 -An blk00000.dat
在:
od 通常内置于各种 linux 发行版中。
5.2 hexdump——十六进制和ascii查看工具
与od类似,但hexdump可以显示数据的ascii文本,方便快速查看交易中包含的信息。 例如:
$ hexdump -C -s 8 -n 285 blk00000.dat 00000008 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000018 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000028 00 00 00 00 3b a3 ed fd 7a 7b 12 b2 7a c7 2c 3e |....;...z{..z.,>| 00000038 67 76 8f 61 7f c8 1b c3 88 8a 51 32 3a 9f b8 aa |gv.a......Q2:...| 00000048 4b 1e 5e 4a 29 ab 5f 49 ff ff 00 1d 1d ac 2b 7c |K.^J}._I......+|| 00000058 01 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 |................| 00000068 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000078 00 00 00 00 00 00 ff ff ff ff 4d 04 ff ff 00 1d |..........M.....| 00000088 01 04 45 54 68 65 20 54 69 6d 65 73 20 30 33 2f |..EThe Times 03/| 00000098 4a 61 6e 2f 32 30 30 39 20 43 68 61 6e 63 65 6c |Jan/2009 Chancel| 000000a8 6c 6f 72 20 6f 6e 20 62 72 69 6e 6b 20 6f 66 20 |lor on brink of | 000000b8 73 65 63 6f 6e 64 20 62 61 69 6c 6f 75 74 20 66 |second bailout f| 000000c8 6f 72 20 62 61 6e 6b 73 ff ff ff ff 01 00 f2 05 |or banks........| 000000d8 2a 01 00 00 00 43 41 04 67 8a fd b0 fe 55 48 27 |*....CA.g....UH'| 000000e8 19 67 f1 a6 71 30 b7 10 5c d6 a8 28 e0 39 09 a6 |.g..q0..\..(.9..| 000000f8 79 62 e0 ea 1f 61 de b6 49 f6 bc 3f 4c ef 38 c4 |yb...a..I..?L.8.| 00000108 f3 55 04 e5 1e c1 12 de 5c 38 4d f7 ba 0b 8d 57 |.U......\8M....W| 00000118 8a 4c 70 2b 6b f1 1d 5f ac 00 00 00 00 |.Lp+k.._.....|) 0000125
在:
它还可以指显示原始十六进制数据:
$ hexdump -C -s 8 -n 285 blk00000.dat | cut -c 11-58 | tr '\n' ' ' | tr -d ' '
在:
hexdump 通常内置于各种 linux 发行版中。
5.3 BlockETL——加载区块和交易数据到SQL数据库
不同于前两个简单的工具,BlockETL软件包用于比特币区块链数据分析中的数据提取、转换和加载,也就是说BlockETL是更大的区块链数据分析生态中的一个基础工具,这个工具是当你阅读比特币 blk.dat 文件以进一步分析数据时最有价值。
BlockETL的主要特点如下:
BlockETL 是一个 Java 应用程序,也是一个支持 Windows、OSX 和 Linux 等各种操作系统的开发工具包。 配置数据目录、数据库连接等基本信息并启动后,可以看到blk文件中的区块和交易数据加载到SQL数据库的进度:
BlockETL官网:.
原文链接: