@jaycenhorton/eth-gas-reporter

Mocha reporter which shows gas used per unit test.

Usage no npm install needed!

<script type="module">
  import jaycenhortonEthGasReporter from 'https://cdn.skypack.dev/@jaycenhorton/eth-gas-reporter';
</script>

README

eth-gas-reporter

npm version Build Status

A mocha reporter for Truffle.

  • Gas usage per unit test.
  • Average gas usage per method.
  • Contract deployment costs.
  • Real currency costs.

screen shot 2017-10-28 at 1 29 52 pm

Install

// Requires mocha
npm install -g mocha

// Truffle installed globally
npm install -g eth-gas-reporter

// Truffle installed locally (ProTip: This always works.)
npm install --save-dev eth-gas-reporter

Truffle config

module.exports = {
  networks: {
    ...etc...
  },
  mocha: {
    reporter: 'eth-gas-reporter',
    reporterOptions : {
      currency: 'CHF',
      gasPrice: 21
    }
  }
};

Options

Option Type Default Description
currency String 'EUR' National currency to represent gas costs in. Exchange rates loaded at runtime from the coinmarketcap api. Available currency codes can be found here.
gasPrice Number (varies) Denominated in gwei. Default is loaded at runtime from the eth gas station api
outputFile String stdout File path to write report output to
noColors Boolean false Suppress report color. Useful if you are printing to file b/c terminal colorization corrupts the text.
onlyCalledMethods Boolean false Omit methods that are never called from report.

Examples

Usage Notes

  • Method calls that throw are filtered from the stats.
  • Not currently shown in the deployments table:
    • Contracts that link to libraries
    • Contracts that never get instantiated within the tests (e.g: only deployed in migrations)
    • Contracts that are only ever created by other contracts within Solidity.
  • Tests run slower.

Credits

All the ideas in this utility have been borrowed from elsewhere. Many thanks to:

  • @maurelian - Mocha reporting gas instead of time is his idea.
  • @cag - The table borrows from / is based his gas statistics work for the Gnosis contracts.
  • Neufund - Block limit size ratios for contract deployments and euro pricing are borrowed from their ico-contracts test suite.

Contributors