比特币的区块链系统将数据分别存储在LevelDB 和文件系统中:
区块头和区块体数据以blk*.dat 文件的形式存储;包含交易花费out 信息的区块"undo"数据以rev*.dat 文件存储,用于区块链发生回滚时进行恢复。
比特币的状态数据UTXO 和区块元数据(区块在磁盘上存储的位置)则采用LevelDB 存储。
以太坊的区块链系统中数据最终存储形式是基于Key-Value 的键值对,并使用LevelDB 底层数据库进行存储数据.
以太坊中共建立了三个levelDB 数据库,分别是BlockDB、StateDB 和ExtrasDB:
BlockDB存储的是区块头和交易记录;
StateDB 存储账户的状态数据;
ExtrasDB 则存储收据信息和其他辅助信息。
超级账本(Hyperledger Fabric)支持多链,每个链对应一套账本。
每个账本包含的数据包括区块数据、区块索引、状态数据和历史数据。为此,超级账本系统中的每个节点会通过维护4 个LevelDB 数据库管理这些数据,其中区块数据以文件形式存储。
1)idStore:存储账本编号,用于用户快速查询节点中存储了哪些账本;
2)stateDB:状态数据库,存储世界状态数据,默认使用LevelDB,可以替换为CouchDB;
3)historyDB:历史数据库,存储状态数据库中key 的版本变化;
4)blockIndex:索引数据库,存储区块的文件索引。
《区块链系统中的分布式数据管理综述》-计算机学报-2019