以太坊估算交易gas消耗量

以太坊估算交易gas消耗量

以太坊DApp开发有一个区别于传统应用开发的地方,就是你调用合约的方法有时不是免费的,需要支付gas。那么,在发送交易或者调用合约方法时,应该如何计算需要消耗多少gas呢?

在以太坊中,使用estimateGas()方法来估算一个交易要消耗的gas消耗量。我们区分普通转账交易和合约方法交易,分别说明如何计算交易要消耗的gas。

怎么计算普通转账交易的gas消耗量?

对于普通转账交易而言,使用web3.eth.estimateGas()方法来估计gas消耗量。例如:

var from = web3.eth.accounts[1]
var to = web3.eth.accounts[2]
var quantity = web3.eth.estimateGas({
  from:from,
  to:to,
  value:50000000000000})
console.log('大约要消耗gas:',quantity)
var amount = quantity * web3.eth.gasPrice
console.log('转出方的账户余额大约要减少:',amount,'(wei)')

 

怎么计算调用合约方法交易的gas消耗量?

对于合约方法交易而言,使用合约对象上该方法的estimateGas()调用来计算gas消耗量。例如,对于下面的合约:

pragma solidity ^0.4.8;
contract EzTest {
    uint public num;
    function setNum(uint newNum) {
        num = newNum;
    }
}

 

可以在js中估算setNum()方法的gas消耗量。例如,下面的代码对setNum(4)调用要消耗的gas量进行估算:

//inst 是EzTest合约的实例对象
inst.setNum.estimateGas(4, {from: web3.eth.accounts[1]})
posted @ 2018-08-20 15:53  web3网络科技  阅读(1236)  评论(0编辑  收藏  举报