Hyperledger fabric 在Hyperledger结构中,块位置和有效性标准

Hyperledger fabric 在Hyperledger结构中,块位置和有效性标准,hyperledger-fabric,blockchain,hyperledger-composer,Hyperledger Fabric,Blockchain,Hyperledger Composer,完全公开,一些用户问了这个问题,但答案不知何故转移了注意力,留下了实际问题的答案 因此,在Hyperledger结构中: 对等实例上存储的物理块文件在哪里 根据基础分类账/区块链验证世界状态的频率或时间 我知道LevelDB用于世界状态,它可以切换到CouchDB,我在某个地方读到分类账也在LevelDB中索引,但这可能再次引用世界状态,似乎没有人知道分类账的位置 我已经研究了对等实例和位置/var/hyperledger/production/ledgersData,其中进一步包含诸如chai

完全公开,一些用户问了这个问题,但答案不知何故转移了注意力,留下了实际问题的答案

因此,在Hyperledger结构中:

  • 对等实例上存储的物理块文件在哪里
  • 根据基础分类账/区块链验证世界状态的频率或时间
  • 我知道LevelDB用于世界状态,它可以切换到CouchDB,我在某个地方读到分类账也在LevelDB中索引,但这可能再次引用世界状态,似乎没有人知道分类账的位置

    我已经研究了对等实例和位置
    /var/hyperledger/production/ledgersData
    ,其中进一步包含诸如chains、historyLeveldb、ledgerProvider、,pvtdataStore和chains目录确实包含通道,然后每个通道目录都有一个文件blockfile_000000,根据我当前的配置,我执行了很多事务,其间有一些延迟,但我没有看到在我提到的位置下创建的任何新块

    更让我感到奇怪的是,在每一个对等机上,我都递归地完全删除了分类账目录,我的区块链仍然工作得很好,这就引出了一个问题:世界状态是否真的得到了验证,还是我们必须提供自己的实现来根据我们自己的需要根据分类账验证世界状态

    我的网络的相关配置:

    OrdererType: Kafka
    BatchTimeout: 2s
    BatchSize:
      MaxMessageCount: 10
      AbsoluteMaxBytes: 1 MB
      PreferredMaxBytes: 512KB
    

    PS:在订购服务的日志中,我确实看到日志上写着‘准备等待新的区块’。MaxAvailableLockNumber=[7]、waitForBlockNum=[8]和新的块是根据配置创建的,但我在上面提到的块文件\u000000中没有任何文件大小的更改。

    区块链存储在块文件的LedgerData/chains目录中。每次提交块时,块文件都将写入并同步

    状态数据库保存在LevelDB(ledgersData/stateLeveldb目录)或外部CouchDB中。每次提交块时,块的状态更新都将提交到状态数据库


    如果数据以某种方式在区块链和状态数据库之间被篡改或不同步,那么对该对等方的背书请求将基于与其他对等方的不一致性来识别坏数据。如果对状态数据库的完整性有任何疑问,可以从区块链中删除并重建状态数据库。有关更深入的解释,请参阅。

    是的,这是我很久以前提出的一个问题,我们后来发现,当时还不知道物理文件写入或重新同步的确切时间。这可能是基于fabric新版本的行为。