代码之家  ›  专栏  ›  技术社区  ›  rohitpaniker

区块链分类账存储

  •  0
  • rohitpaniker  · 技术社区  · 6 年前

    我从一段时间以来一直在研究区块链,我一直在寻找解释区块链分类账保存在何处以及如何在本地保存的信息(如,在完整节点中的本地)。我发现的大部分时间都是以太坊或hyperledger fabric使用leveldb或rocksdb e.t.c来保存状态信息的状态数据库。我一直很难知道区块链分类账是从哪里保存的,除了保存在一些磁盘上的键值存储/数据库中的状态,因为我正在研究LinkedList和Merkle树(哈希树),它们被用来存储创建的、哈希的和保存在全节点和半节点用于验证的merkle树可以查询并验证是否存在事务。

    谢谢,最好,

    罗希特

    2 回复  |  直到 6 年前
        1
  •  1
  •   JBaczuk    6 年前

    在比特币内核中,块存储在 .dat 文件中 blocks 数据目录下的filder(Linux上的默认值是 ~/.bitcoin )这些文件不一定是以任何严格的方式编号或组织的,因为它们是按可用的方式下载的,而不是等待每个序列块成为可从对等方下载的。出于这些原因, DAT 文件有一个leveldb(in ~/.bitcoin/blocks/index )它通过存储 DAT 文件夹。

    链表和merkle树不是数据存储机制,而是抽象数据类型,它们可以以平面文件等形式存在于数据库中。merkle树可以使验证更快,因为它提高了验证算法(通常是哈希函数)的效率。

        2
  •  1
  •   adnan.c    6 年前

    在hyperledger fabric中,状态数据库是 为了存储所有块,它只保存资产的当前状态,例如,如果一个银行账户有一笔10借方的交易,另一笔2贷方的交易,则state db的当前值为8。

    实际块保存在对等方的本地文件中,可以通过sdk进行查询。