A mocha reporter for Truffle.
- Gas usage per unit test.
- Average gas usage per method.
- Contract deployment costs.
- Real currency costs.
// Truffle installed globally
npm install -g eth-gas-reporter
// Truffle installed locally (ProTip: This always works.)
npm install --save-dev eth-gas-reporter
module.exports = {
networks: {
...etc...
},
mocha: {
reporter: 'eth-gas-reporter'
}
};
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", // Default: "EUR" (loaded at run-time from the `coinmarketcap` api)
gasPrice: 21 * 1e9 // Default: (~5 gwei, loaded at run-time from the `blockcypher` api)
}
- 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.
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.