到目前为止,我还没有找到很好的教程或文章来回答这个问题,也许您可以帮上忙。我想做的是以下事情:
组织1中的对等A调用链码,此链码只能访问组织2中可用的数据,而对等A从不访问完整信息。
我知道Hyperledger Fabric支持私有通道和私有数据,是否可以实现此要求?如果是,您能指出我正确的方向吗?
答案 0 :(得分:3)
是的,有可能。以下是要完成的步骤。 通过使用私有数据,您可以满足您的要求,但只需很少的工作。您还遵循面料文档,我在这里提供了链接。
客户端应用程序提交提案请求以调用链码功能(读取或写入私有数据)给背书的对等方,这些对等方是集合的授权组织的一部分。私有数据(或用于以链码生成私有数据的数据)在提案的临时字段中发送。
认可对等方模拟事务并将私有数据存储在临时数据存储区(对等方本地的临时存储区)中。他们根据收集策略通过八卦将私有数据分发给授权的对等方。
认可对等方将提议响应与公共数据一起发送回客户端,其中包括私有数据密钥和值的哈希。不会将任何私人数据发送回客户端。
请检查是否获得认可: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