主页 > imtoken苹果 > 比特币代码分析11 比特币存储机制

比特币代码分析11 比特币存储机制

imtoken苹果 2024-01-06 05:07:38

比特币存储机制

比特币存储系统由两部分组成:kv 数据库(和)索引和公共数据文件。 普通文件用于存储区块链数据,kv数据库用于存储区块链元数据。 用于存储区块链数据的普通文件以 blk00000 开头。 数据,blk00001。 dat 文件名格式。 索引目录存储用于存储块元数据。

强公共块数据文件

比特币dat文件_比特币分叉对比特币的影响_比特币文件什么样子

为了快速检索块数据,每个文件的大小为 128 字节。 区块中的数据(区块头和区块中的所有交易)都会以字节码的形式写入到dat文件中。 在序列化过程中,如果检测到当前写入的文件大小加上块大小大于128字节,则会重新生成一个dat文件。

kv数据指标

比特币dat文件_比特币文件什么样子_比特币分叉对比特币的影响

块的索引元数据格式为<; blockHash, xxxxx + npos>,其中xxxxx为dat文件序号比特币dat文件,NPO为block写入dat文件的起始位置。

交易的元数据格式为<; txHash, xxxxx + 非营利组织 + nTxOffset> 格式,其中xxxxx, 非营利组织与上述描述一致,nTxOffset为写入dat文件的起始位置(以非营利组织所在位置为准) .

比特币分叉对比特币的影响_比特币文件什么样子_比特币dat文件

以上所有元数据都会写入kv数据库比特币dat文件,blockhash/txHash会作为dat文件中的索引,用于后续查询具体数据。

强大和

比特币dat文件_比特币文件什么样子_比特币分叉对比特币的影响

Google 的 LevelDB 数据库存储区块链元数据。 Leveldb 是 Google 实现的一个非常高效的 kv 数据库,并且是开源的。

它的一大特点是写入性能非常好,适合比特币客户端的应用场景。

比特币分叉对比特币的影响_比特币dat文件_比特币文件什么样子

LevelDB虽然是数据库,但它不像其他主流数据库(mysql、oracle等)那样提供客户端连接服务。 它只是一个基于c++的lib库,所以我们使用起来非常简单,直接链接工程中的lib库文件即可。

比特币代码分析11比特币存储机制

比特币代码分析11 比特币存储机制