【问题标题】:How could I get unique IDs in Hyperledger Fabric我如何在 Hyperledger Fabric 中获得唯一 ID
【发布时间】:2016-09-12 13:20:40
【问题描述】:

鉴于 Hyperledger Fabric 的链码需要确定性,因为它在所有验证对等方 (Are blocks mined in HyperLedger Fabric?) 上执行,如何获得唯一 ID,以便我可以“插入行”和唯一值。

例如,如果我执行代码以将新记录附加到表中,我需要一个唯一键。如果我在 Validating Peer 1 (vp1) 上获得 GUID,如果我在 Validating Peer 2 (vp2) 上获得 GUID,这将是一个不同的键。如果我使用毫秒作为键也是一样的。

有没有一种方法可以让我从链代码中获取链代码中的确定性唯一 ID,而不是从“客户端”传递它?

【问题讨论】:

    标签: hyperledger-fabric hyperledger


    【解决方案1】:

    我倾向于将其实现为存储在表格旁边的 putstate 中的单调递增序列变量。 IOW,在您的 Init() 函数中初始化 PutState("nextsequence", 0) 之类的东西,然后在您需要新 ID 时随时使用 RMW。 RMW 突变将隐式耦合到您的行插入,并且应该在所有实例中都是确定性的。

    【讨论】:

    • 使用计数器键/值对意味着所有事务都必须在此计数器上进行序列化。一旦超级账本结构可以并行执行事务,这将限制链码的可扩展性。
    【解决方案2】:

    如果 ID 应该由链码生成,那么单调递增的计数器是一个很好的解决方案。如果 ID 应该由 tx 生成应用程序选择,您应该强制执行 ID 不能重复使用的规则,并鼓励 tx 生成器使用的协议来选择抗冲突 id。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 1970-01-01
      • 2018-08-19
      • 2019-10-10
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      相关资源
      最近更新 更多