松露智能合约错误:参数数量无效

时间:2019-01-22 08:37:55

标签: ethereum solidity truffle go-ethereum quorum

我跟随松露仲裁的教程: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参数。

有人知道如何解决此问题吗?

3 个答案:

答案 0 :(得分:1)

嘿@BlockChainProgrammer。感谢您指导我如何使用Quorum代理。奏效了。

对于此错误,请尝试将松露版本升级/降级到v4.1。

$ npm install -g truffle@4.1.10

并在truffle-config.jsSimpleStorage.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功能兼容。

但是对于像我这样的非法定用户 该错误通常表示在合同中定义一个变量,而不是编译器问题。很有可能在构造函数中未设置参数。

可以更正