合约应该是私有的,但每个节点都可以访问分类帐

The contract is supposed to be private but every node can access the ledger

我正在尝试学习本教程 https://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains。 我配置了 2_deploy_simplestorage.js 和
命令 deployer.deploy(SimpleStorage, 42, {privateFor: ["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]}).

当我尝试验证值的隐私时,似乎每个节点都可以访问数据,这可能是什么问题! 我不得不提一下,commend 将值首字母缩写为 42,但当我验证它是 0 时! 这是智能合约:

 pragma solidity >=0.4.17;

 contract SimpleStorage {
 uint public storedData;

 function inita (uint initVal) public {
 storedData = initVal;
 }

 function set(uint x) public {
 storedData = x;
 }

 function get() view public returns (uint retVal) {
 return storedData;
 }
 }

私有状态仅供参与者使用。 如果您尝试在非参与者节点上查询状态,那么它将 return 一个空结果。 因此 42 的值将 returned 在参与者节点上。非参与节点将return值为0。

问题出在我使用的 solc 版本上。使用法定人数时,您有一种拖车分类帐,一个是私有的,另一个是 public 所有参与者节点都可以访问的。当我使用 privateFor 时,我指定了应该访问私有分类帐的节点的地址,而其他节点不应该看到分类帐的修改。