eth-gas-reporter
A mocha reporter for Truffle.
- Gas usage per unit test.
- Average gas usage per method.
- Contract deployment costs.
- Real currency costs.
Install
npm install -g eth-gas-reporter
npm install --save-dev eth-gas-reporter
Truffle config
module.exports = {
networks: {
...etc...
},
mocha: {
reporter: 'eth-gas-reporter'
}
};
Options
You can also create a .ethgas.js
config in the root directory of your project to set
gasPrice
and currency
options. Available currency codes can be found here.
module.exports = {
currency: "CHF",
gasPrice: 21 * 1e9
}
Examples
Usage Notes
- Table will not print if any tests fail (this is a bug, possibly rooted in
truffle
). - 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)
- Tests that make assumptions about the value of
block.timestamp
sometimes fail using this utility. - 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.