智能合约中 往往会出现gas费用 和 消耗的wei,当用MetaMask 配合remix的时候是可以设置gaslimitd 和 wei的,但如果当你用web3的时候就会出现问题。
如:注册合约限制了payment+fee,如果不传则此函数不会通过
这个时候需要传一个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 就是传入的支付需要的金额