到目前为止,我没有找到一个很好的教程或文章来回答这个问题,也许你可以帮忙。我想要做的是以下内容:
Org 1 中的 Peer A 调用链代码,该链代码只能访问 Org 2 中可用的数据,而 Peer A 永远无法访问完整信息。
我知道Hyperledger Fabric支持私有通道和私有数据,有没有可能实现这个要求?如果是的话,你能指出我正确的方向吗?
到目前为止,我没有找到一个很好的教程或文章来回答这个问题,也许你可以帮忙。我想要做的是以下内容:
Org 1 中的 Peer A 调用链代码,该链代码只能访问 Org 2 中可用的数据,而 Peer A 永远无法访问完整信息。
我知道Hyperledger Fabric支持私有通道和私有数据,有没有可能实现这个要求?如果是的话,你能指出我正确的方向吗?
对的,这是可能的。以下是要完成的步骤。通过使用私有数据,您可以完成您的要求,但需要做的工作很少。你也可以关注面料文档,我在这里提供了链接。
客户端应用程序提交提案请求以调用链代码功能(读取或写入私有数据)给作为集合授权组织的一部分的背书节点。私有数据,或用于在链码中生成私有数据的数据,在提案的瞬态字段中发送。
背书节点模拟交易并将私有数据存储在临时数据存储(节点本地的临时存储)中。他们根据收集策略将私有数据通过八卦分发给授权的对等方。
背书节点将提案响应连同公共数据发送回客户端,包括私有数据密钥和值的散列。没有私人数据被发送回客户端。
检查这个以获得认可:https ://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data-arch.html#endorsement
客户端应用程序将交易提交给排序服务(带有私有数据的散列),该服务被正常分发到块中。具有散列值的块被分发给所有对等点。这样,通道上的所有对等点都可以以一致的方式使用私有数据的哈希验证交易,而无需知道实际的私有数据(这是您需要完成的)。
在区块提交时,授权节点使用收集策略来确定他们是否有权访问私有数据(用于读取区块数据)。如果他们这样做了,他们将首先检查他们的本地临时数据存储,以确定他们是否已经在链码背书时收到了私有数据。如果没有,他们将尝试从另一个对等方提取私有数据。然后他们将根据公共区块中的哈希验证私有数据并提交交易和区块。在验证/提交后,私有数据被移动到私有状态数据库和私有写入集存储的副本中。然后从临时数据存储中删除私有数据。
资源:https ://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data/private-data.html