solidity 使用web3 调用智能合约设置value、gas

时间:2024-04-13 09:50:32

智能合约中 往往会出现gas费用 和 消耗的wei,当用MetaMask 配合remix的时候是可以设置gaslimitd 和 wei的,但如果当你用web3的时候就会出现问题。
如:注册合约限制了payment+fee,如果不传则此函数不会通过
solidity 使用web3 调用智能合约设置value、gas

这个时候需要传一个value,保证payment 要>= exitPrice + fee,
web3.eth.estimateGas(callObject , callback)
callObject: Object - 要发送的交易对象,可包含以下字段格式为**{from:aaa,to:b,value:10}**:

1.from: String - 指定的发送者的地址。如果不指定,使用web3.eth.defaultAccount。

2.to: String - (可选)交易消息的目标地址,如果是合约创建,则不填.

3.value: Number|String|BigNumber - (可选)交易携带的货币量,以wei为单位。如果合约创建交易,则为初始的基金。

4.gas: Number|String|BigNumber - (可选)默认是自动,交易可使用的gas,未使用的gas会退回。

5.gasPrice: Number|String|BigNumber - (可选)默认是自动确定,交易的gas价格,默认是网络gas价格的平均值 。

6.data: String - (可选)或者包含相关数据的字节字符串,如果是合约创建,则是初始化要用到的代码。

7.nonce: Number - (可选)整数,使用此值,可以允许你覆盖你自己的相同nonce的,正在pending中的交易11。

8.callback:Function - 回调函数,用于支持异步的执行方式

调用函数参数如下:

web3.eth.register(contractAddr, desc, exitPrice,{value:30000000}, function (e, result) {
            console.log(result);
            var rest = "no result";
            if (result != null) {
                rest = result;
            }
            document.getElementById("registerResult").innerHTML = rest;
        });

这里的value 就是传入的支付需要的金额