博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
比特币代码分析11 比特币存储机制
阅读量:7073 次
发布时间:2019-06-28

本文共 832 字,大约阅读时间需要 2 分钟。

比特币存储机制

  比特币存储系统由两部分组成: kv 数据库(levelDB)索引和普通数据文件。普通文件用于存储区块链数据,kv 数据库用于存储区块链元数据。用于存储区块链数据的普通文件以 blk00000.dat , blk00001.dat 文件名格式组成。其中 index 目录存储用于存储区块元数据。
普通区块数据文件
  为了快速检索区块数据,每个文件的大小是128 M Bytes。区块里的数据(区块头和区块里的所有交易)都会序列成字节码的形式写入 dat 文件中。在序列化的过程中,如果检测到当前写入文件尺寸加上区块尺寸大于 128 M Bytes,则会重新生成一个 dat 文件。
kv数据索引
  区块的索引元数据格式如 <blockHash,xxxxx+npos> 格式, 其中 xxxxx 为 dat 文件序号,npos 为区块写入 dat 文件的起始位置。 
  交易的元数据格式如 <txHash, xxxxx+npos+nTxOffset> 格式, 其中 xxxxx、npos 和上面的描述一致,nTxOffset 为写入 dat 文件的起始位置(基于npos 位置)。
  上述所有元数据都将写入 kv 数据库中,其中 blockhash/txHash 将作为后续查询具体数据在 dat 文件中的索引使用。
LevelDB
  Google 的 LevelDB 数据库存储区块链元数据。Leveldb是一个google实现的非常高效的kv数据库,并且是开源的。
  它的一个主要特点就是写的性能非常好,适用于比特币客户端这种应用场景。
  levelDB虽然是个数据库,但是并不像其它的主流数据库(mysql ,oracle等)可以提供客户端连接服务。它只是一个基于c++的lib库而已,所以我们使用起来也很简单,直接在工程里链接lib库文件。
比特币代码分析11 比特币存储机制

转载于:https://blog.51cto.com/13878196/2332015

你可能感兴趣的文章
Linux运维 第五阶段 puppet基础
查看>>
【自学Linux】Linux文件系统管理(二)
查看>>
我的友情链接
查看>>
二手交易市场将慢慢落幕还是繁华?
查看>>
DNS
查看>>
android之路重新开启
查看>>
linux设置时间服务器
查看>>
NetScaler配置证书自签发
查看>>
Virtio:针对 Linux 的 I/O 虚拟化框架
查看>>
mysql 安装
查看>>
python函数:zip()
查看>>
我的友情链接
查看>>
联机对战DEMO
查看>>
使用struct实现面向对象编程的封装
查看>>
2017.12.20 2周3次课
查看>>
oracle O7_DICTIONARY_ACCESSIBILITY 参数
查看>>
C++ Flash之间本地通讯
查看>>
C#.net数据库访问及其操作类
查看>>
微软大中华区副总裁:全线投入云计算领域
查看>>
Paste JSON as Code • quicktype 软件的使用
查看>>