我跟随松露仲裁的教程:https://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains
现在,我想将SimpleStorage.sol智能合约迁移到区块链,但要使其添加“ PrivateFor”参数。
这是我的智能合约:
document.getElementById('category').selectedIndex = "0"
这是我的:2_deploy_simplestorage.js
$output = explode(ltrim($lblCode, 'QR Code:'), '|')[0] ;
但是当我进行松露迁移时,会出现此错误:
pragma solidity ^0.4.17;
contract SimpleStorage {
uint public storedData;
constructor(uint initVal) public {
storedData = initVal;
}
function set(uint x) public {
storedData = x;
}
function get() view public returns (uint retVal) {
return storedData;
}
}
当我不添加“ privateFor”参数时,它会起作用:
var SimpleStorage = artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage, 42, {privateFor: ["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]})
};
但是我需要这个privateFor参数。
有人知道如何解决此问题吗?
答案 0 :(得分:1)
嘿@BlockChainProgrammer。感谢您指导我如何使用Quorum代理。奏效了。
对于此错误,请尝试将松露版本升级/降级到v4.1。
$ npm install -g truffle@4.1.10
并在truffle-config.js
和SimpleStorage.sol
中将solidity的版本更改为0.4.24,然后在迁移文件中重新添加privateFor。
答案 1 :(得分:0)
问题解决了!
我要做的是使用以下命令将松露降级到“ 4.1.10”:
truffle uninstall -g
然后
npm install -g truffle@4.1.10
非常感谢@ TS28
答案 2 :(得分:0)
在法定人数的情况下,
{
privateFor: ["ROAZBWtSacxXQrOe3FGAqJDyJjFePR5ce4TSIzmJ0Bc="]})
};
未在合同中定义,因此出现这种错误,但是特定的松露编译器与Quorum功能兼容。
但是对于像我这样的非法定用户 该错误通常表示在合同中定义一个变量,而不是编译器问题。很有可能在构造函数中未设置参数。
可以更正