gpt4 book ai didi

blockchain - 在 Hyperledger Fabric V1.0 中实现同一 channel 内节点之间的 channel 间安全

转载 作者:行者123 更新时间:2023-12-04 01:10:32 26 4
gpt4 key购买 nike

我已经按照以下步骤在本地成功创建了一个 Hyperledger Fabric v1.0 网络 Building Your First Network并使用 fabric-sdk-java 从我的 Java 应用程序与该网络通信.
在这里,它使用cryptogen 工具创建了证书,并且能够通过参与同一 channel 的每个对等方调用/查询链码。


我的实现是这样的:
我有四个组织 Org1、Org2、Org3 和 Org4,每个组织都有一个对等体。当 Org1 使用链码 C1 创建数量为 100 的 Assets A1 时,它必须像

Org2.peer0 A1: with quantity 40
Org3.peer0 A1: with quantity 30
Org4.peer0 A1: with quatity 20
And remaining 10 only will be available for Org1.peer0

所有这些同行都加入了同一个 channel channel1。我的要求是

If Org1 try to query the data for Org2 : error
If Org1 try to query its own data: return the Asset with the corresponding quantity.

目前它允许查询 channel 中所有节点的所有数据。为了使其对其他组织隐藏一个组织的 Assets ,最好的方法是什么?

最佳答案

我认为您混淆的根源是您将应用程序逻辑与通常在链代码中实现的业务契约(Contract)逻辑混合在一起。

假设你想在 4 个不同的参与方之间建立 Fabric 网络,你需要定义一个规则来定义你将如何在这些参与者之间拆分/分配 Assets 。现在,让我们把同行放在一边。在您的链代码中,您对 Assets 的概念和可能的用户概念进行编码以避免混淆,让我们称他们为人。所以你有 4 个人:Alice、Bob、Charlie 和 John,业务规则规定一旦 Alice 提交 Assets ,它必须分别根据 40%、30%、20% 和 10% 进行分配。

接下来,继续假设 Alice 在 Org1 工作,Bob 在 Org2,Charlie 在 Org3 和 John 在 Org4。现在你可以实现一个链码,它将根据提交交易的人应用业务规则。此外,您可以根据提交者身份实现 ACL,从而防止 Bob 查询比方说 John 的余额。

合理的问题是为什么我需要 4 个节点来实现如此简单的逻辑。由于您只能有一个部署了链码的对等节点,为所有 4 个组织配置的 channel ,您所需要的只是发送交易提案以调用链码。

这种方法的警告非常明显,您需要决定哪个组织将托管和运行该对等节点和链代码,因此由于所有 4 个组织并不真正相互信任,他们希望托管自己的对等节点并调用链代码反对他们自己的同龄人。为了防止每个组织互相欺骗并减少对抗性/非确定性行为的影响,他们将就背书政策达成一致,这实际上将确保其他组织的同行在模拟期间也能收到与您相同的结果。

现在回到你的问题,节点用于模拟当前状态的交易并在结果上签名,将结果发送回客户端,客户端根据策略聚合背书,并将结果提交给排序服务,排序服务切割 block 并将它们传递给peer 将验证区 block 中交易的正确性,并最终将它们提交到账本更新状态。

因此,您的链代码应该对客户/用户/个人的概念进行编码,您将在其中分配 Assets ,这些用户可以映射回客户端应用程序(真实世界的用户),这些应用程序可能注册到不同的组织,因此具有不同的证书由适当的组织 CA 签署。最后,您将能够利用链代码的 GetCreator API 了解哪个客户端调用了链代码,并根据您定义的业务逻辑应用业务逻辑和访问控制。

很抱歉让我的回答太长,但总结一下。您的应用程序/服务将基于两层:第一层是应用程序层——映射到 org 的用户,第二层是持有分类账和部署的链代码的对等层——模拟和执行事务。因此,您将有 4 个节点和 4 个客户端,它们将向节点提交交易,您的逻辑将基于客户端身份而不是节点。

希望我的解释对你有意义;)

关于blockchain - 在 Hyperledger Fabric V1.0 中实现同一 channel 内节点之间的 channel 间安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com