【发布时间】:2019-03-23 06:36:40
【问题描述】:
我搜索了这么多网站博客,但不知道 Quorum 区块链中的公共交易和私人交易之间到底有什么区别?
【问题讨论】:
标签: blockchain
我搜索了这么多网站博客,但不知道 Quorum 区块链中的公共交易和私人交易之间到底有什么区别?
【问题讨论】:
标签: blockchain
Quorum 区块链中的公共交易与以太坊中的完全一样。它们只修改区块链的公共状态。 而私人交易是通过指定额外的字段 privateFor 以及其他字段来完成的。其中我们给出了交易应该是私有的节点的星座公钥。 在私有事务中,仅修改完成事务的各个节点的原始状态。 并且您不能在同一事务中同时修改仲裁中的公共和私有状态。 希望它能给您一个起点,请参阅here 了解更多信息
【讨论】:
https://github.com/jpmorganchase/quorum/wiki/Transaction-Processing 对我来说似乎很清楚 -
公共交易以标准以太坊方式执行,因此如果将公共交易发送到持有合约代码的账户,每个参与者将执行相同的代码,并且他们的底层 StateDB 将相应更新。
然而,私人交易不是按照标准以太坊执行的:在发送者的仲裁节点将交易传播到网络的其余部分之前,它会用它从星座接收的加密有效负载的哈希替换原始交易有效负载/泰瑟拉。参与交易的参与者将能够通过他们的 Constellation/Tessera 实例将哈希替换为实际的有效负载,而非参与方的参与者只能看到哈希。
结果是,如果将私人交易发送到持有合约代码的账户,那些非交易方的参与者最终会跳过交易,因此不会执行合约代码。然而,那些参与交易的参与者将在调用 EVM 执行之前将哈希替换为原始有效负载,并且他们的 StateDB 将相应地更新。如果没有对 geth 客户端进行相应的更改,这两组参与者最终会得到不同的 StateDB,无法达成共识。所以为了支持合约状态的这种分叉,Quorum 将 Public 合约的状态存储在全局同步的 Public State Trie 中,而将 Private 合约的状态存储在全局不同步的 Private State Trie 中。在此基础上如何达成共识,请参考共识部分。
与常规 Eth 交易一样的公共交易,而私人交易似乎是一种限制可以在交易中成功执行智能合约的网络实体数量的方法。打个比方,考虑一下互联网和 http 与 https 网站。当您使用 http 时,网络中的任何人(嗯,您和远程站点之间的任何人)都可以窥探您的流量并知道您在做什么。在 https 中,只有目标站点,您才能知道自己在做什么。这两种流量类型都在公共网络上进行,并且可以看到各方之间流动的一些数据,但这些数据是否对每个看起来有意义的人或只有一些有权访问的人有意义,是不同的。 Quorum trans 也是如此——每个人都可以看到公共合同并采取行动,只有某些人可以看到私人合同并采取行动。它在更大的人口中建立了知道秘密的更小的群体
【讨论】: