在Hyperledger Fabric v0.6中,可以实现一个供应链应用程序,该应用程序允许追踪货源,避免双重支出(即,分发/销售比其现有的物品更多),从而避免假冒。例如,当供应商向分销商提供500件物品时,这些数据存储在分类账中。分发服务器可以通过调用"transfer“函数将指定数量的项分发给特定的分销商。传递函数执行以下操作:
按照这种办法,经销商分发的数量不能超过其所拥有的(例如,分发假货/走私物品)(即双倍支出)。
此外,消费者还可以通过查看分类账来追踪来源(例如,从reseller1购买的物品,后者来自经销商,而后者来自供应商)。
然而,由于它使用单一的分类账,隐私是一个问题(例如,reseller2可以看到reseller1订购的项目数量,等等)
在Hyperledger v1.0中使用多个通道是实施隐私的一种拟议解决方案。在这种方法中,供应商和分销商使用单独的渠道/分类账。类似地,分发服务器和reseller1使用单独的通道/分类账,分发服务器和reseller2使用另一个单独的通道/分类账。
然而,由于转售商(即reseller1和reseller2)无法访问供应商和分销商的渠道/分类账,转售商不知道供应商向分销商提供的实际数量。例如,如果供应商只向分销商提供了500个数量,则分销商可以向转售商声称从供应商那里采购了1000个数量。如果这样做,就无法避免双重开支/伪造。
此外,如何追查出处?消费者是否可以使用所有渠道/分类账?如果是这样的话,那么隐私再次成为一个问题。
有鉴于此,我们如何在Hyperledger Fabric v1.0中使用多个渠道,同时允许追踪出处并禁止双重支出?
发布于 2017-07-04 10:33:56
发布于 2017-07-25 17:25:41
正如阿特姆所指出的,今天没有一种直接的方法可以做到这一点。
链码可以跨通道读取,但只能是弱读,而且它们可能不会使读取的内容成为提交的偶然性。类似地,跨通道的事务没有排序,这会造成其他复杂情况。
但是,只要两个通道中至少有一个可信任的参与者,就应该可以安全地跨通道移动资产。您可以将此视为监管或审计师的角色。
要实现这一点,应用程序本质上必须在fabric之上实现互斥,以确保资源不会同时迁移到两个不同的通道。
假设A、B和监管机构R. A对A-R频道中的资产Q有控制权,B希望安全地控制A-B-R频道的资产Q。
为了安全地做到这一点,A可以这样做:
绿色之路已经完成。现在,假设B决定不购买Q,而A希望在A中将它卖给C。我们开始假设(1),(2),已经完成以上。
攻击路径,假设(1),(2)再次完成。
这里的关键是,B信任监管机构,以强制要求在A中释放Q之前,不能将Q解锁在A中。只要您包含一个单调的类型序列号,以确保资产锁定在正确的版本中,这些无序读取就可以跨越通道。
发布于 2018-07-12 10:15:23
从v1.2开始,
Fabric提供了创建私有数据集合()的能力,该功能允许在通道上定义一个组织子集--支持、提交或查询私有数据,而不必创建单独的通道。
现在,在您的例子中,您可以创建分销商数据的子集,使其对特定实体是私有的,而无需创建单独的通道。更多信息请参阅:织物Doc。
https://stackoverflow.com/questions/44896255
复制相似问题