0

所以我用 Remix IDE 和一个带有这个合同参数的构造函数做了一个名为“投票”的合同

我通过这样做调用了合同:

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

4

1 回答 1

1

我相信您使用的是较新版本的 web3。您可以恢复到以前的 0.20.0 版本或使用下面的新语法。

使用web3 1.0.x 版本时需要传入Application Binary Interface,即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"]})
于 2018-07-24T23:45:27.153 回答