HL Fabric - 状态、交易但不同的密钥

HL Fabric - states, transactions but varied keys

编辑:Bump——有人知道这个问题的答案吗???

基本问题: - 在单个 HLF 应用程序中,不同的交易可以有不同的密钥吗?

上下文: 开发一个 1.4.2 HLF 应用程序,该应用程序反映了织物样本商业票据示例,但具有不同的交易密钥。例如,在商业票据中,PaperNet 商业票据的 key 是通过连接 Issuerpaper 属性形成的,例如MagnetoCorp0001。虽然 Issuerpaper 可能会改变 paper 总是与 Issuer 结婚。这在整个商业票据示例中是一致的。

然而,在我们的示例中,不同的交易将根据状态具有不同的密钥。例如,PartyA 与 BigBiz 签订合同,以便能够付费许可小部件。我们认为这是一个 contracting transaction 并且完成后它的状态是 underContract key 因为它是 licensor + licensee + contractNumber 或在这个例子中:BigBizPartyA123.

在我们的生命周期中,需要先签订合同,然后 BigBiz 才能为小部件提供许可。 available widget transactionavailable 状态键是 licensor + widgetID 或者在这种情况下 BigBiz0001.

在我们的 licensing transaction 中,我们 licensed 状态的关键是 licensor + widgetID + licenseeBigBiz0001PartyA.

问题 - 这现实可行吗?

paperNum 始终存在的商业票据不同,我们的生命周期 POV 应用程序不会有 widgetID,除非 contracting transaction 达到 underContract 状态。所以没有我们可以键入的 widgetID。同样,我们还有其他交易,如支付交易,也与小部件无关,因此我们输入例如 licensor + contractNumber.

这在复杂的 HLF 应用程序中是否正常?谢谢

您的问题似乎与 1) 管理唯一密钥以及 states/statelists 和 2) 资产是什么以及您的交易参数(适用于资产生命周期或参与者生命周期)有关。是的,如您描述的那样有不同的键是正常的。

首先,我建议您参考 Fabric 文档中流程和数据设计部分的多状态评论中的逻辑和物理表示 -> https://hyperledger-fabric.readthedocs.io/en/release-1.4/developapps/architecture.html#logical-representation

如果你的区块链网络联盟中的其他人可以类似地创建记录(并防止与你网络中的其他人发生冲突),那么你的密钥形成就可以了,因为 keys/records 其他 orgs/entities将提交给同一个区块链网络中的分类帐。

从你的问题来看,你似乎有合同(资产)和可授权的小部件(资产)。

您的合同资产(复合)密钥看起来不错 - 它在很大程度上是关于唯一性并允许增长。该资产是由(比如说)createContract 交易创建的。

您的小部件资产密钥似乎没问题(例如,刚刚创建的资产,还没有被许可人),因为该密钥组合可能在网络中是唯一的 - 这是由 'available' 交易创建的。初始许可状态为 'none'..etc.

最后,'licensing' 交易可以更新现有的小部件(在 trxn 中有一个被许可人参数 - 'licensee' 是 'widget' 的一个属性(如果有多个被许可人则为数组) , 绑定回同一个 licensor/widgetId 键)。第一个被许可人将小部件的状态更新为 'licensed'(而不是 'none' 等)

至于 'payment' 交易,信息不足:但您需要询问,正在更新什么资产(它是否存在 - 它的资产密钥是什么)以及交易的参数是什么,这将应用于资产(或不同的资产,如果一个工作单元更新 'multiples')——顺便说一句,你是说 'ContactNum/Licensee' 吗?总之,深思。