首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Hyperledger Fabric v1.0中,我们如何在使用多个通道提供来源跟踪时强制执行隐私?

在Hyperledger Fabric v1.0中,我们如何在使用多个通道提供来源跟踪时强制执行隐私?
EN

Stack Overflow用户
提问于 2017-07-04 02:49:21
回答 3查看 829关注 0票数 10

在Hyperledger Fabric v0.6中,可以实现一个供应链应用程序,该应用程序允许追踪货源,避免双重支出(即,分发/销售比其现有的物品更多),从而避免假冒。例如,当供应商向分销商提供500件物品时,这些数据存储在分类账中。分发服务器可以通过调用"transfer“函数将指定数量的项分发给特定的分销商。传递函数执行以下操作:

  • 检查分销商是否有足够数量的项目可分发给特定的经销商(即,如果数量转移<=当前数量)
  • 更新分类账(即减去分销商的当前数量并将其添加到分销商的当前数量中)

按照这种办法,经销商分发的数量不能超过其所拥有的(例如,分发假货/走私物品)(即双倍支出)。

此外,消费者还可以通过查看分类账来追踪来源(例如,从reseller1购买的物品,后者来自经销商,而后者来自供应商)。

然而,由于它使用单一的分类账,隐私是一个问题(例如,reseller2可以看到reseller1订购的项目数量,等等)

在Hyperledger v1.0中使用多个通道是实施隐私的一种拟议解决方案。在这种方法中,供应商和分销商使用单独的渠道/分类账。类似地,分发服务器和reseller1使用单独的通道/分类账,分发服务器和reseller2使用另一个单独的通道/分类账。

然而,由于转售商(即reseller1和reseller2)无法访问供应商和分销商的渠道/分类账,转售商不知道供应商向分销商提供的实际数量。例如,如果供应商只向分销商提供了500个数量,则分销商可以向转售商声称从供应商那里采购了1000个数量。如果这样做,就无法避免双重开支/伪造。

此外,如何追查出处?消费者是否可以使用所有渠道/分类账?如果是这样的话,那么隐私再次成为一个问题。

有鉴于此,我们如何在Hyperledger Fabric v1.0中使用多个渠道,同时允许追踪出处并禁止双重支出?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-04 10:33:56

目前,在HyperledgerFabrice1.0中还没有提供跨两个不同渠道的直接来源的方法。支持这种设想的方向不多:

  1. 第一种方法是能够保存分类账中的部分数据,并在通道中提供离散的隔离,这里描述的工作项是:FAB-1151
  2. 此外,还有人建议增加对私有数据的支持,同时保持证明存在的能力,并在邮件列表中张贴索赔资产的所有权。

您目前可以做的是利用应用程序端加密来提供隐私,并将所有相关事务保持在相同的通道上,例如相同的分类账(与您在第0.6版中使用的方法非常相似)。

票数 3
EN

Stack Overflow用户

发布于 2017-07-25 17:25:41

正如阿特姆所指出的,今天没有一种直接的方法可以做到这一点。

链码可以跨通道读取,但只能是弱读,而且它们可能不会使读取的内容成为提交的偶然性。类似地,跨通道的事务没有排序,这会造成其他复杂情况。

但是,只要两个通道中至少有一个可信任的参与者,就应该可以安全地跨通道移动资产。您可以将此视为监管或审计师的角色。

要实现这一点,应用程序本质上必须在fabric之上实现互斥,以确保资源不会同时迁移到两个不同的通道。

假设A、B和监管机构R. A对A-R频道中的资产Q有控制权,B希望安全地控制A-B-R频道的资产Q。

为了安全地做到这一点,A可以这样做:

  1. A建议将A-R序列0的Q锁定到A-B-R信道。接受并承诺。
  2. A在A中提出了Q在序列0的存在,由R(谁执行交叉通道读取到A以验证资产锁定在A)。接受并承诺。
  3. A建议在A-B中,按0顺序将Q转换为B.所有检查Q在序列0处的记录是否存在,并将其包含在它们的读集中,然后将其设置为在其写集中的序列1。

绿色之路已经完成。现在,假设B决定不购买Q,而A希望在A中将它卖给C。我们开始假设(1),(2),已经完成以上。

  1. A建议将资产Q从A-B-R频道的考虑中删除。R在序列0处读取q,在序列1处写入它,并将其标记为不可用。
  2. A建议在A中解锁资产Q。R执行A中读取的交叉通道,并确认序列为1,在A中认可解锁。
  3. A在A-C-R中提出了Q在序列1中的存在性,并如(1)所示。

攻击路径,假设(1),(2)再次完成。

  • 提出了A-C-R中Q在0序列上的存在性。R将改为A,并发现它没有锁定在A,不会背书.
  • A建议在after中的事务将控制权转移到B之后,将资产Q从at中删除。移动和解锁事务在相同版本中读取该值,因此只有一个会成功。

这里的关键是,B信任监管机构,以强制要求在A中释放Q之前,不能将Q解锁在A中。只要您包含一个单调的类型序列号,以确保资产锁定在正确的版本中,这些无序读取就可以跨越通道。

票数 5
EN

Stack Overflow用户

发布于 2018-07-12 10:15:23

v1.2开始,

Fabric提供了创建私有数据集合()的能力,该功能允许在通道上定义一个组织子集--支持、提交或查询私有数据,而不必创建单独的通道

现在,在您的例子中,您可以创建分销商数据的子集,使其对特定实体是私有的,而无需创建单独的通道。更多信息请参阅:织物Doc

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44896255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档