在Hyperledger Fabric中,阻止位置和有效性标准

时间:2018-04-04 11:12:55

标签: hyperledger-fabric blockchain hyperledger-composer

完全披露,一些用户已经询问了这一点,但答案以某种方式转移,使实际问题无法回答。

所以,在Hyperledger Fabric中:

  1. 对等实例上存储的物理块文件在哪里?
  2. 世界国家经常或何时根据底层分类帐/区块链进行验证?
  3. 我知道LevelDB用于世界状态,它可以切换到CouchDB,我读到某个地方,分类账也在LevelDB中编入索引但又可以引用世界状态,似乎没有人知道它的位置分类帐。

    我已经探索了对等实例和位置/var/hyperledger/production/ledgersData,它进一步包含链,historyLeveldb,ledgerProvider,pvtdataStore等目录,链目录包含通道,然后每个通道目录都有一个文件blockfile_000000并基于我的当前配置我已经执行了一些事务处理,但是我没有看到在我提到的位置下创建的任何新块。

    让我更感到惊讶的是,在每个对等体上,我已经完全删除了分类帐目录并且我的块链仍然工作得非常好,这引出了世界状态实际得到验证的问题,或者我们是否必须提供自己的实现根据我们自己的需要来验证世界各州对分类账的影响?

    我的网络相关配置:

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

    PS:在订购服务的日志中,我确实看到日志说“要等待更新的块”。 maxAvailaBlockNumber = [7],waitForBlockNum = [8]并根据配置创建新块,但我在上面提到的blockfile_000000中没有任何文件大小更改。

1 个答案:

答案 0 :(得分:2)

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

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

如果数据因某种原因在区块链和状态数据库之间被篡改或不同步,则对此同级的认可请求将基于与其他同级的不一致来识别不良数据。如果对状态数据库的完整性有疑问,则可以从状态链中删除状态数据库并进行重建。有关更详细的说明,请参见https://lists.hyperledger.org/g/fabric/message/4896上的帖子。