我正在通过hyperledger fabric V1.0。需要了解超级分类帐的内部结构。
1)在内部以超链接方式保存块和交易的方式和位置。
2)是否在NoSQL DB(Level DB,Couch DB)中。如果是的话,结构是什么,它的保存方式是什么?
3)我在哪里可以找到V1.0的端到端设置文档(包括CA,结构,订购者设置。目前我正在关注链接,该链接正在更新。
答案 0 :(得分:13)
对于下面的所有代码参考,请使用the fabric
git repo作为指南。 (S / O阻止我发布超过2个链接,因此我无法直接链接到代码片段。)
首先在订购服务上将交易收集到块/批次中。在满足BatchSize
时或在BatchTimeout
过去时(在提供非空块的情况下)会切断块。
参考:
configtx.yaml
位于common/configtx/tool/
目录中,了解有关区块切割标准的更多信息。Block
中的protos/common/common.proto
类型定义。这些块在本地存储到每个订购服务节点上的磁盘以及LevelDB,以按编号索引这些块 - 请参阅orderer/ledger/file
。
然后将这些块(通过订购服务的Deliver
RPC)传递给提交的对等体。它们将它们存储在本地,并维护基于LevelDB的块索引(类似于订购者的索引),基于LevelDB的历史索引,用于跟踪区块链上每个键的历史记录,以及维护最新值的状态数据库。区块链上的所有键。此状态DB可以是LevelDB或基于CouchDB的。有关详细信息,请参阅the ledger doc。
PS:问题#3无关紧要,应该分解为一个单独的主题。
答案 1 :(得分:0)
答案 2 :(得分:0)
<f:for each="{settings.linklist}" as="item">
和BatchSize
是订购服务创建块的定义标准。 BatchTimeout
非常简单,但是BatchTimeout
具有三个子参数-BatchSize
,MaxMessageCount
和AbsoluteMaxBytes
。因此,如果将PreferredMaxBytes
设置为一个很高的值,那么BatchTimeout
将有助于决定何时创建块。如果消息的大小不是真的那么大,则在累积块大小<= {BatchSize
时,消息数量首先等于MaxMessageCount
的情况下,或者在累积大小达到的其他情况下,都会创建一个新块如果达到最大字节数阈值,则该块最终将具有任意数量的消息,以使累积大小不会超过PreferredMaxBytes
。另一方面,如果事务量很大(> PreferredMaxBytes
),则将创建带有较少编号的块。累计大小受限制的交易数量不会超过PreferredMaxBytes
。