Skip to content

Releases: cgewecke/hardhat-gas-reporter

v2.2.2 Support solc 0.8.28 features

25 Nov 18:35
Compare
Choose a tag to compare

What's Changed

  • Update solidity-parser/parser to 0.19.0 by @cgewecke in #249
  • Highlight need for Etherscan api keys in README and config examples by @cgewecke in #241
  • Docs fix spelling issues by @nnsW3 in #242

New Contributors

Full Changelog: v2.2.1...v2.2.2

v2.2.1 Fix L1 Etherscan api key logic

12 Aug 03:39
Compare
Choose a tag to compare

Bug Fixes

Recently, Etherscan began requiring an api key to fetch live gasPrice and baseFee data for Ethereum mainnet. This release fixes a bug in the way the L1Etherscan api key option was set which caused those data calls to fail.

  • Fix L1Etherscan option logic by @cgewecke in #240
  • Fix premature return bug in deployment delta tracking loop by @cgewecke in #235

Full Changelog: v2.2.0...v2.2.1

Gas Golfing Support

24 May 02:31
6584603
Compare
Choose a tag to compare

New

This release adds a trackGasDeltas option.

When enabled, the reporter displays changes in gas usage between test runs - super useful for optimization work.

Many thanks to @0xVolosnikov for writing this feature.

Screen Shot 2024-05-23 at 11 40 47 AM

Bugfixes

  • A bug that prevented correct identification of factory deployed contracts in some cases has been fixed. (Thanks to @CSY54 for reporting and providing a nice reproduction case to add to the test suite).

PRs

New Contributors

Full Changelog: v2.1.1...v2.2.0

Allow sub-gwei `blobBaseFee`

06 Apr 00:33
Compare
Choose a tag to compare

What's Changed

  • Fix bug in pricing for OP stack chains when the reported L1 blobBaseFee drops below 1 gwei by @cgewecke in #228

Full Changelog: v2.1.0...v2.1.1

Arbitrum & Base L2 Network Support

03 Apr 01:33
a81be54
Compare
Choose a tag to compare

What's New

  • Arbitrum and Base have been added to the list of L2 networks the gas reporter can emulate
    gasReporter: {
      L2: "arbitrum" | "base" | "optimism",
      L2Etherscan: "ABC....",
      coinmarketcap: "abc...",
    }
  • blobBaseFee is now fetched directly from the OP stack GasOracle contracts (should be accurate)
  • ⚠️ To get live blobBaseFee prices for L2 emulation you'll need to set the L2Etherscan api key option.
  • the JSON output object now includes a separate intrinsic gas measurement for each transaction. This could be convenient if you want to do more complex post-processing with the gas data.

What's changed

Full Changelog: v2.0.2...v2.1.0

v2.0.2 Fix crash with --parallel flag

15 Mar 01:10
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.0.1...v2.0.2

v2.0.1 Optimism Ecotone (EIP-4844)

14 Mar 20:08
Compare
Choose a tag to compare

What's Changed

  • Finalize Optimism Ecotone support and set as default hardfork by @cgewecke in #213

Full Changelog: v2.0.0...v2.0.1

v2.0.0: Optimism L2 & View/Pure Method Gas

14 Mar 04:35
Compare
Choose a tag to compare

Screen Shot 2024-03-14 at 12 48 35 PM

What's New

  • Configuration for chains with Etherscan support has been simplified to a single key. Just set the L1 option to one of the supported networks and the reporter will take care of the rest. (You'll still need a coinmarketcap api key)

    gasReporter: {
      L1: "gnosis",
      coinmarketcap: "abc...",
    }
  • Gas reporting for L2 networks is coming online, starting with Optimism.

    gasReporter: {
      L2: "optimism",
      coinmarketcap: "abc...",
    }
  • Gas metrics for view and pure methods are now available as an option. You can also exclude intrinsic gas costs for state-changing methods. (⚠️ There are performance hits when the view and pure options are enabled)

    gasReporter: {
      // Debits intrinsic gas for state-changing method calls in order to model contracts
      // that will never be called by an EOA
      includeIntrinsicGas: false,
    
      // This option executes an additional `eth_estimateGas` for every `eth_call`
      // detected by the reporter. If you have 1000's of tests setting it to true has a
      // noticeable performance impact
      reportPureAndViewMethods: true,
    
      // This option can add SIGNIFICANT LAG to test startup time if you have
      // 100's of contracts in your project. (It parses all the sources in your dependency tree
      // to identify state variable declarations)
      excludeAutoGeneratedGetters: true,
    }
  • There are multiple report formats, including markdown.

  • The reporter now supports sub-gwei gas prices. Sub-penny cost display is possible by configuring the currencyDisplayPrecision option

  • Dedicated support for the OpenZeppelin Upgrades plugin has been added. (Their proxy pattern often resulted in missing gas data because the reporter didn't know what contract was being called - that's all handled under the hood now.)

  • Dedicated support for the hardhat-viem plugin has been added (this was broken and should be fixed by this release)

  • There are many new output, display and low-level options - check out the Config Examples section of the docs

  • There's additional support for custom proxy contract resolution. If you're routing your calls through contract middleware you can configure the reporter to understand how that works and get the data you expect.

  • Additionally:

    • eth-gas-reporter's logic has been ported here and translated to Typescript
    • The plugin has been decoupled from Mocha so it can be seamlessly integrated with lots of other tasks or test frameworks
    • There have been big architectural changes and testing improvements and additional features are in the pipeline

Breaking

  • Codechecks support was removed because it hasn't been accepting users for a while. I loved codechecks. (Building a github action for the reporter is on the V2 roadmap though).
  • The JSON object emitted by the reporter has changed to reflect the plugin's internal types. If you've been post-processing that data you'll need to look at the JSON Output docs and update your logic.
  • The gas-reporter:merge task has been renamed hhgas:merge
  • The onlyCalledMethods option has been renamed showUncalledMethods and must be set to true (if you want that).

Funding

Work on V2 was funded in part by OpenZeppelin via DRIPS, a public goods protocol that helps direct funding to packages in your dependency tree. If you're using DRIPS and want to add hardhat-gas-reporter to the packages you support its page is here.

Full Changelog: v1.10.0...v2.0.0

1.10.0

31 Jan 02:57
Compare
Choose a tag to compare

What's Changed

Fixes

Dependabot

Full Changelog: v1.0.9...v1.10.0

1.0.9-viem.0

31 Jan 02:38
bae9546
Compare
Choose a tag to compare
1.0.9-viem.0 Pre-release
Pre-release

This pre-release contains a work-around patch to make the gas reporter work with Hardhat's viem tooling. It can be installed with:

npm install --save-dev hardhat-gas-reporter@viem

⚠️ Important: for the plugin to work correctly, it must be listed before the hardhat-viem plugin in hardhat.config.ts e.g

import "hardhat-gas-reporter" // <--- first
import "@nomicfoundation/hardhat-toolbox-viem"

There is ongoing work to make this part of the normally published package in #167 but it will not be released until v2.0 (probably end of February at the earliest).