为什么私有数据的散列应该在 hyperledger-fabric 上共享?
Why hash of private data should be shared on hyperledger-fabric?
我读了
https://hyperledger-fabric.readthedocs.io/en/release-2.0/private-data/private-data.html 说
"A hash of that data, which is endorsed, ordered, and written to the ledgers of every peer on the channel. The hash serves as evidence of the transaction and is used for state validation and can be used for audit purposes."。
但是,我认为交易签名足以证明合同已达成一致。
为什么数据的散列应该在每个节点之间共享?
私人交易不像public交易那样存储在链中的区块中。所有加入通道的节点共享同一个通道链。因此,如果私有交易正常存储在链中,则每个节点(甚至来自交易未指定的组织的节点)都可以读取私有交易参数(并重建其他节点的私有状态)。为了避免这种情况,基本上,一个散列存储在块中的位置,以便共享私有数据的组织仍然可以检查完整性。
编辑:
让我们看看,如果你仔细阅读https://hyperledger-fabric.readthedocs.io/en/release-2.0/private-data/private-data.html#transaction-flow-with-private-data,你会发现任何时候都没有对私有数据进行签名(读取集、写入集、输入和输出都没有)。在第 3 步中,仅在其散列(嵌入在交易中)上生成签名。没有其他的。私有数据(数据,而不是交易)通过八卦协议简单地分发并临时存储在临时数据存储中(第 2 点),在第 5 点提交。私有数据的唯一证据是哈希(这是嵌入交易并签名)。 gossip协议有其安全机制,但不提供证据,不保证交易顺序。
现在,举个例子,后来恶意组织为了获得某种利益,单方面改变了它的私有状态。链中的哈希将是解决与其他组织争端的唯一证据。除了该散列之外,没有其他关于商定的有效值(和执行顺序)的证据。对等方未签署纯文本私有数据。
Fabric 就是这样。这是有道理的。请记住,有必要保证数据的完整性和交易执行的顺序,因此在某些时候排序者(第 4 点)必须参与确定顺序(在大多数情况下是顺序交易确实改变了产品)而没有透露真实数据。
我的感受是,当只共享签名时,其他节点如何验证签名的用途?反之亦然,如何验证它是否实际上是由声称的所有者签署的?因此,我们共享交易的哈希值 + 该哈希值的签名。现在可以使用该所有者的 public 证书验证此签名。此外,由于交易是散列的,它仍然是私有的,但分类帐(相互链接的块)在所有对等点之间是相同的。
我读了 https://hyperledger-fabric.readthedocs.io/en/release-2.0/private-data/private-data.html 说
"A hash of that data, which is endorsed, ordered, and written to the ledgers of every peer on the channel. The hash serves as evidence of the transaction and is used for state validation and can be used for audit purposes."。
但是,我认为交易签名足以证明合同已达成一致。
为什么数据的散列应该在每个节点之间共享?
私人交易不像public交易那样存储在链中的区块中。所有加入通道的节点共享同一个通道链。因此,如果私有交易正常存储在链中,则每个节点(甚至来自交易未指定的组织的节点)都可以读取私有交易参数(并重建其他节点的私有状态)。为了避免这种情况,基本上,一个散列存储在块中的位置,以便共享私有数据的组织仍然可以检查完整性。
编辑:
让我们看看,如果你仔细阅读https://hyperledger-fabric.readthedocs.io/en/release-2.0/private-data/private-data.html#transaction-flow-with-private-data,你会发现任何时候都没有对私有数据进行签名(读取集、写入集、输入和输出都没有)。在第 3 步中,仅在其散列(嵌入在交易中)上生成签名。没有其他的。私有数据(数据,而不是交易)通过八卦协议简单地分发并临时存储在临时数据存储中(第 2 点),在第 5 点提交。私有数据的唯一证据是哈希(这是嵌入交易并签名)。 gossip协议有其安全机制,但不提供证据,不保证交易顺序。
现在,举个例子,后来恶意组织为了获得某种利益,单方面改变了它的私有状态。链中的哈希将是解决与其他组织争端的唯一证据。除了该散列之外,没有其他关于商定的有效值(和执行顺序)的证据。对等方未签署纯文本私有数据。
Fabric 就是这样。这是有道理的。请记住,有必要保证数据的完整性和交易执行的顺序,因此在某些时候排序者(第 4 点)必须参与确定顺序(在大多数情况下是顺序交易确实改变了产品)而没有透露真实数据。
我的感受是,当只共享签名时,其他节点如何验证签名的用途?反之亦然,如何验证它是否实际上是由声称的所有者签署的?因此,我们共享交易的哈希值 + 该哈希值的签名。现在可以使用该所有者的 public 证书验证此签名。此外,由于交易是散列的,它仍然是私有的,但分类帐(相互链接的块)在所有对等点之间是相同的。