如何在 REMIX(Solidity IDE)中从 web3 调用带有参数的构造函数

Posted

技术标签:

【中文标题】如何在 REMIX(Solidity IDE)中从 web3 调用带有参数的构造函数【英文标题】:how to call constructor with arguments in REMIX (Solidity IDE ) from web3 【发布时间】:2018-10-16 11:43:47 【问题描述】:

所以我使用 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

【问题讨论】:

【参考方案1】:

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

使用 web3 1.0.x 版本时需要传入 Application 二进制接口,即 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"])

【讨论】:

以上是关于如何在 REMIX(Solidity IDE)中从 web3 调用带有参数的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

“指定的输入源无效” - Remix Solidity IDE 错误

Remix 以太坊Solidity IDE搭建与初步使用

Remix-IDE

区块链入门Truffle 项目实战,Solidity IDE, 智能合约部署

Remix连接本地项目(Solidity)

一基本remix环境及HelloWord contract《2022 solidity8.+ 版本教程到实战》