Hyperledger fabric 如何在Hyperledger结构中获得唯一ID

Hyperledger fabric 如何在Hyperledger结构中获得唯一ID,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,假设Hyperledger结构的链码需要是确定性的,因为它在所有验证对等方()上执行,那么如何获得唯一ID,以便我可以使用唯一值“InsertRow” 例如,如果我执行代码将一条新记录附加到表中,我需要一个唯一的键。如果我在验证对等点1(vp1)时获得GUID,那么如果我在验证对等点2(vp2)时获得GUID,则将是另一个密钥。如果我用毫秒作为键,也是一样的 有没有一种方法可以从链码中获取链码中的确定性唯一ID,而不是从“客户端”传入 我倾向于将其作为一个单调递增的序列变量来实现,该序列变量存储

假设Hyperledger结构的链码需要是确定性的,因为它在所有验证对等方()上执行,那么如何获得唯一ID,以便我可以使用唯一值“InsertRow”

例如,如果我执行代码将一条新记录附加到表中,我需要一个唯一的键。如果我在验证对等点1(vp1)时获得GUID,那么如果我在验证对等点2(vp2)时获得GUID,则将是另一个密钥。如果我用毫秒作为键,也是一样的


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

我倾向于将其作为一个单调递增的序列变量来实现,该序列变量存储在表旁边的putstate中。在Init()函数中初始化PutState(“nextsequence”,0)之类的内容,然后在需要新id时对其进行RMW。RMW变异将隐式耦合到行插入,并且在所有实例中都是确定的。

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

使用计数器密钥/值对意味着必须在此计数器上序列化所有事务。一旦hyperledger结构能够并行化事务执行,这将限制链码的可伸缩性。