繁体   English   中英

部署智能合约时获取“未定义”的参数数量无效

[英]Getting Invalid number of parameters for “undefined” when deploying smart contract

我正在尝试在 testRPC 上部署我的第一个投票合约,下面是我的代码..出于某种原因,当我开始部署时它会抱怨。

错误似乎来自 arguments 参数。 我尝试传递一个空数组,它说“得到 0 预期 1!”。 我试着只传递一个名字,它说“value.forEach”不是一个函数。

Web3 = require('web3')
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
sourceCode = fs.readFileSync('Voting.sol').toString()
solc = require('solc')
compiledCode = solc.compile(sourceCode)
abiDefinition = JSON.parse(compiledCode.contracts[':Voting'].interface)
VotingContract = new web3.eth.Contract(abiDefinition)
byteCode = compiledCode.contracts[':Voting'].bytecode

VotingContract.deploy({
    data: byteCode, 
    arguments:['Joseph','Sean','Matthew']
}).send({
    from: '0x00D1AE0A6fC13B9ecdefA118B94cF95ac16D4ab0', 
    gas: 4700000
})
.on('error', function(error) {
    console.log(error);
}
.then(function(newContractInstance) {
    console.log(newContractInstance.options.address)
}

任何帮助将不胜感激。 谢谢。

在迁移中,在部署程序中添加您的参数。

// Deploy a single contract with constructor arguments
deployer.deploy(A, arg1, arg2, ...);

其中 A 是您的智能合约,arg1、arg2 等是参数

文档中提到了这一点: https : //www.trufflesuite.com/docs/truffle/getting-started/running-migrations#deployer-deploy-contract-args-options-

对于需要构造函数参数的合约,尝试这样的操作

var bytecodeWithParam = MyContract.new.getData(
    param1,
    param2,
    { data: compiledByteCode });

您将这个 bytecodeWithParam 粘贴到“字节码”字段中。 仔细看,最后会看到 param1 和 param2 是 32 字节的压缩包。

另一个例子

var MyContract = web3.eth.contract(abiArray);

// instantiate by address
var contractInstance = MyContract.at(address);

// deploy new contract
var contractInstance = MyContract.new([constructorParam1] [, constructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});

// Get the data to deploy the contract manually
var contractData = MyContract.new.getData([constructorParam1] [, constructorParam2], {data: '0x12345...'});
// contractData = '0x12345643213456000000000023434234'

https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM