1. 程式人生 > >solidity 使用web3 呼叫智慧合約設定value、gas

solidity 使用web3 呼叫智慧合約設定value、gas

智慧合約中 往往會出現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 就是傳入的支付需要的金額