所以我与Remix IDE和一个带有该合同参数的构造函数签订了一份名为“Voting”的合同
我通过这样做来调用合同:
var Contractabi = web3.eth.contract(contract Abi from Remix)
var vote = Contractabi.at(Smart contract @ in REMIX );
所以到现在为止一切正常!但现在我需要使用带有参数
的构造函数来部署智能我发现这样的方法很少:
var MyContract = web3.eth.contract(abiArray);
// deploy new contract
var contractInstance = MyContract.new([constructorParam1] [, constructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});
但它对我不起作用! 我如何从我的web3.eth.contract调用REMIX中的参数调用我的智能合约构造函数! 谢谢:D
答案 0 :(得分:1)
我相信您正在使用Web3的较新版本。您可以还原到以前的版本0.20.0,也可以使用下面的新语法。
使用web3的1.0.x版本时,您需要传递应用程序 二进制接口,即abi。并使用
new
关键字
文档https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html#eth-contract
Here is an example
var contractABI = [{your contract abi}]
var subtestContract = new web3.eth.Contract(contractABI,{
from: account1,
data: "your contract data",
gas: '4700000'
})
//arguments go inside deploy() using an array as follows
subtestContract.deploy({arguments: ["hello"]})