【问题标题】:Ledger or chaincode state?分类帐或链码状态?
【发布时间】:2018-01-24 19:26:34
【问题描述】:

我正在运行一个有 4 个对等点的 HLF 网络,每个对等点来自不同的组织、一个 kafka 订购者和一个 zookeeper 服务。 我的网络似乎运行良好,但有一个例外:我可以调用链代码,但除了调用链代码的对等方之外,似乎没有任何人记录状态更新。换句话说,如果我使用来自对等点 A 的一些链码更新状态,使用来自对等点 B 的一些链码查询状态将返回“null”,但来自对等点 A 运行的链码的相同查询(完全相同的代码)将返回正确表述。

这正常吗?我假设账本的状态独立于运行的链码对等点,还是状态真的是链码状态?

编辑:我已经测试在对等 B 上安装对等 A 的链码,一旦完成,它就可以根据需要查询状态。由于我使用不同的链码来控制谁可以调用哪些函数,有没有办法限制可以在链码中调用哪些函数?

【问题讨论】:

    标签: hyperledger-fabric


    【解决方案1】:

    使用安装的链码写入的数据仅特定于该链码。 如果要从链代码 B 访问链代码数据-A,则必须在链代码 B 内部调用链代码 A(前提是链代码 A 和 B 属于同一通道)。

    您想如何限制链码调用?如果它是基于用户/角色级别的,您可以通过链码中用户的属性进行检查并做出相应的决定。 (不过这是 v1.1 的功能)

    参考:https://jira.hyperledger.org/browse/FAB-5346

    【讨论】:

    • 感谢您的回复。从链码 B 内部调用链码 A 进行查询应该没问题。这是否意味着 PutState 函数只有在那时才将数据写入链码状态?我关于限制链代码调用的目标是,例如,我希望一些对等点能够执行事务,而其他对等点只能获取事务日志,因此一组对等点具有执行事务的链码(包括 PutState)另一个有链码,通过 GetStateByRange 返回账本的状态。
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2020-04-30
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多