我研究区块链已经有一段时间了,我一直在寻找解释区块链账本保存在哪里以及如何在本地保存的信息(例如,在本地完整节点中)。我发现的大部分时间是状态数据库被以太坊或Hyperledger Fabric使用,使用LevelDB或RocksDB e.t.c保存状态信息。当我研究LinkedList和Merkle Tree (哈希树)时,我一直在努力了解区块链账本除了保存在一些磁盘上的键值存储/数据库中的状态之外,还保存在哪里,这两个节点用于存储创建的新块,并由全节点和半节点查询和验证事务是否存在,并将其保存在merkle树中用于验证目的。
谢谢,也是最好的
Rohit
发布于 2018-11-20 22:28:58
在比特币核心中,数据块存储在数据目录( blocks默认是~/.bitcoin)下的linux中的.dat文件中。这些文件不一定以任何严格的方式编号或组织,因为它们是作为可用下载的,而不是等待每个连续的块变得可从对等设备下载。由于这些原因,.dat文件有一个levelDB (在~/.bitcoin/blocks/index中),它通过存储.dat文件的名称和位置来索引区块链。
链表和merkle树不是数据存储机制,而是抽象数据类型,它们可以存在于数据库中,作为平面文件等。merkle树可以使验证更快,因为它提高了验证算法的效率,通常是哈希函数。
发布于 2018-11-21 00:28:35
在Hyperledger Fabric中,状态数据库不用于存储所有块,它仅保存资产的当前状态,例如,如果一个银行帐户有10个借方的交易和2个贷方的另一个交易,则状态DB的当前值将为8。
实际分块保存在对等体的本地文件中,可通过SDK查询。
https://stackoverflow.com/questions/53389668
复制相似问题