0

一段时间以来,我一直在研究区块链,我一直在寻找解释区块链分类账保存在哪里以及如何在本地保存的信息(例如,在完整节点中本地保存)。我大部分时间发现的是以太坊或 Hyperledger Fabric 使用 LevelDB 或 RocksDB 等来保存状态信息的状态数据库。当我正在研究用于存储新数据的 LinkedList 和 Merkle 树(哈希树)时,除了保存在某些磁盘键值存储/数据库中的状态之外,我一直在努力了解区块链分类帐的保存位置被创建并被散列并保存在默克尔树中以供全节点和半节点验证目的的块可以查询和验证交易是否存在。

谢谢,最好的,

罗希特

4

2 回答 2

1

在 Hyperledger Fabric 中,状态数据库并非用于存储所有区块,它仅保存资产的当前状态,例如,如果银行账户有一笔 10 借记的交易和另一笔 2 贷记的交易,则状态数据库将具有当前值8。

实际区块保存在 peers 的本地文件中,可以通过 SDK 查询。

于 2018-11-20T16:28:34.877 回答
1

在比特币核心中,块存储在数据目录下的.dat文件中的文件中(Linux 上默认为)。这些文件不一定以任何严格的方式编号或组织,因为它们是在可用时下载的,而不是等待每个顺序块变得可用于从对等点下载。由于这些原因,文件有一个 levelDB (in ),它通过存储文件的名称和位置来索引区块链。blocks~/.bitcoin.dat~/.bitcoin/blocks/index.dat

链表和默克尔树不是数据存储机制,而是抽象的数据类型,可以存在于数据库中,作为平面文件等。默克尔树可以使验证更快,因为它提高了验证算法的效率,通常是哈希功能。

于 2018-11-20T14:28:57.597 回答