3

鉴于 Hyperledger Fabric 的链码需要是确定性的,因为它在所有验证对等方上执行(在 HyperLedger Fabric 中是否开采了块?),如何获得唯一 ID,以便我可以“InsertRow”具有唯一值。

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

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

4

2 回答 2

4

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

于 2016-05-18T15:05:21.980 回答
0

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

于 2016-05-24T22:13:06.467 回答