如何在超级边缘结构中创建块

时间:2017-03-13 04:33:33

标签: hyperledger hyperledger-fabric

我正在通过hyperledger fabric V1.0。需要了解超级分类帐的内部结构。

1)在内部以超链接方式保存块和交易的方式和位置。

2)是否在NoSQL DB(Level DB,Couch DB)中。如果是的话,结构是什么,它的保存方式是什么?

3)我在哪里可以找到V1.0的端到端设置文档(包括CA,结构,订购者设置。目前我正在关注链接,该链接正在更新。

https://hyperledger-fabric.readthedocs.io/

3 个答案:

答案 0 :(得分:13)

对于下面的所有代码参考,请使用the fabric git repo作为指南。 (S / O阻止我发布超过2个链接,因此我无法直接链接到代码片段。)

首先在订购服务上将交易收集到块/批次中。在满足BatchSize时或在BatchTimeout过去时(在提供非空块的情况下)会切断块。

参考:

  1. configtx.yaml位于common/configtx/tool/目录中,了解有关区块切割标准的更多信息。
  2. Block中的protos/common/common.proto类型定义。
  3. 这些块在本地存储到每个订购服务节点上的磁盘以及LevelDB,以按编号索引这些块 - 请参阅orderer/ledger/file

    然后将这些块(通过订购服务的Deliver RPC)传递给提交的对等体。它们将它们存储在本地,并维护基于LevelDB的块索引(类似于订购者的索引),基于LevelDB的历史索引,用于跟踪区块链上每个键的历史记录,以及维护最新值的状态数据库。区块链上的所有键。此状态DB可以是LevelDB或基于CouchDB的。有关详细信息,请参阅the ledger doc

    PS:问题#3无关紧要,应该分解为一个单独的主题。

答案 1 :(得分:0)

科斯塔斯对第一和第二的答案非常惊人。对于问题3,文档自3月以来已经发生了很长时间,我找到的最佳设置是https://github.com/hyperledger/fabric/blob/master/docs/source/getting_started.rst它给出了关于为代言人切换到couchdb的明确指示,对配置文件和工具的良好解释以及链代码部署的脚本是一个很好的脚手架,可以添加自己的部署。另一个隐藏的宝石是docker-compose-e2e-template文件,其中包含证书颁发机构。请密切注意编辑该文件所需的事实,而不是在执行a./network_setup时要包含的docker-compose-e2e.yaml文件。另外,如果你查看./network_setup.sh的顶部,它会引用被注释的“复制”的docker-compose-e2e.yaml。

答案 2 :(得分:0)

<f:for each="{settings.linklist}" as="item"> BatchSize是订购服务创建块的定义标准。 BatchTimeout非常简单,但是BatchTimeout具有三个子参数-BatchSizeMaxMessageCountAbsoluteMaxBytes。因此,如果将PreferredMaxBytes设置为一个很高的值,那么BatchTimeout将有助于决定何时创建块。如果消息的大小不是真的那么大,则在累积块大小<= {BatchSize时,消息数量首先等于MaxMessageCount的情况下,或者在累积大小达到的其他情况下,都会创建一个新块如果达到最大字节数阈值,则该块最终将具有任意数量的消息,以使累积大小不会超过PreferredMaxBytes。另一方面,如果事务量很大(> PreferredMaxBytes),则将创建带有较少编号的块。累计大小受限制的交易数量不会超过PreferredMaxBytes