我对Hyperledger-Fabric有几个问题,在文档中我没有找到明确的答案。
1。)世界状态
分类帐由区块链(包含交易)和世界状态(存储在数据库中)组成。每笔交易永远存储在区块链中。此外,数据库似乎不仅存储键/变量的当前值,而且还存储过去的版本(请参见文档中的下图):
因此,我的理解是否正确:分类帐不仅可以保存所有交易,还可以保存曾经存在的所有世界状态? 如果是这样,为什么将所有状态从状态0保存到当前状态?为什么不只保存a)所有交易,b)仅保存当前的世界状态?那还不够吗?
****************************
2。)频道和世界状态
假设我有一个Hyperledger-Fabric应用程序,不同的成员可以在其中评论彼此的个人资料图片。
进一步假设有三个成员(“组织”):亚当,鲍勃和萨拉。
此外,亚当和鲍勃之间还有一条通道。亚当和莎拉之间还有第二条通道。
很明显,这意味着
假设有一个名为“ addCommentToProfile”的事务,可用于向其他概要添加注释。
假设Sarah发送事务“ addCommentToProfile”,并添加注释“您的头发看起来很好!”到亚当的个人资料。
很明显,鲍勃看不到交易(因为它只是亚当和莎拉之间渠道的一部分。)
但是交易的结果(在亚当的个人资料上有一条新评论“你的头发看起来很好!”)是否也看不见?
以不同的方式提出,假设亚当参加了两种不同的渠道-亚当是否也存在两种不同的世界状态-一种对鲍勃可见,而一种对莎拉可见?
****************************
3。)“ Hyperledger Explorer”与“ Hyperledger Composer Historian”
有“ Hyperledger作曲家历史学家”(https://hyperledger.github.io/composer/v0.16/business-network/historian)和“ Hyperledger Explorer”(https://www.hyperledger.org/projects/explorer)
它们是否是同一件事(即如果使用Hyperledger Composer Framework,那么“ Hyperledger Explorer”简称为“ Hyperledger Composer Historian”)?还是两个不同的东西? 如果它们是不同的:我如何防止业务网络中的参与者访问“ Hyperledger Explorer”记录?
答案 0 :(得分:1)
1。)世界状态-状态数据库不包含历史记录,尽管有版本号,但是状态数据库中仅存储当前版本。
2。)频道-频道是完全独立的,因此在您的示例中,Adam有2个配置文件,每个频道一个。您的链码(智能合约)将分别安装并在每个通道上实例化。
3。) Composer 和资源管理器-完全不同。 Composer建立在Fabric之上,可以从基础Fabric创建一个抽象级别,并创建一个简化的编程模型。然后,Composer包含了Historian功能以简化审核。
您应该知道,Composer(IBM)的大多数代码贡献者已决定显着减少Composer的开发工作,并专注于通过Fabric Node SDK改善开发人员的体验。更多details of the decision are here。因此,如果您打算在短期内计划一个快速的POC或演示,Composer会很有帮助,但是如果您正在寻找一个正在进行的重要开发项目,则可能需要仔细考虑。
如果您选择不使用Composer,则“历史记录”是区块链的关键功能,并且本机Fabric编程模型允许您访问对象的“历史记录”,但这并不像Composer中的Historian功能那么简单。
Hyperledger 资源管理器是Hyperledger Fabric的友好查看器(现在可以通过REST API调用事务)。