github trufflesuite/ganache v7.3.1

latest releases: v7.9.2, ganache@7.9.2, v7.9.1...
2 years ago

 Highlights   Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


Today we have a smaller release so that we could get out a hot fix for an issue opened by @weiyuan95 (thanks Lee Wei Yuan!). We also have a performance improvement by @jeffsmale90, so upgrade to v7.3.1 to enjoy Ganache at even higher speeds!

Millennium falcon entering hyperspace

If you have some time, we encourage you to browse our issues to find anything you'd like implemented/fixed sooner. Give them a +1 and we'll use this community feedback to help prioritize what we work on! Or better yet, open a new issue, open a PR to fix an existing issue, or apply to join our team (we're hiring!) if you really want to get involved.

We've changed 58 files across 2 merged pull requests, tallying 1264 additions and 790 deletions, since our last release.


Highlights

The great @jeffsmale90 has whipped up an awesome performance improvement for Ganache's internal JSON-RPC data types that also manages to make us more inline with correct JSON-RPC data representations. Jeff started working on this change even before he formally started here at Truffle 3 months ago (oh the joys of working on open-source tech with highly motivated people), so he was pretty thrilled to have this one released. Introducing:

JSON-RPC Data Type Improvements: Better, Faster, Stronger

with actual footage of Jeff as this PR was released:

Man dancing on subway wearing Daft Punk helmet

back to top


Fixes

fix: remove redundant await in evm_mine (#3247)

In v7.3.0 we released a fix to the evm_mine RPC method that ended up breaking evm_mine in strict instamine mode. The previous fix ensured that blocks were saved before evm_mine would return. However, in strict instamine mode, we had an explicit call to wait for the blocks to be saved. This attempt to wait for blocks to be saved became redundant and caused evm_mine to hang indefinitely. This is now fixed, and we've added some tests to verify that evm_mine continues working in both strict and eager instamine modes.

back to top


Miscellaneous

perf: improve JSON-RPC data types; better, faster, stronger (#2983)

As part of an ongoing effort to make Ganache ⚡ Lightning-Fast ⚡, the internal representations of JSON-RPC data (Data, Quantity, and Address) have been rewritten to be quicker, and does not change how you should use Ganache.

These classes also now validate input values correctly, following the guidelines established by the Ethereum Foundation. This makes Ganache behave more correctly, but may cause some failures in existing code bases where invalid values are being passed into RPC functions.

This change has a significant impact on forking performance. The Convex Shutdown benchmark simulates a call to Convex's systemShutdown method. With a hot cache, Ganache's performance, with and without this change is below:

Ganache Version Cached
7.3.0 - before 0m28.015s
7.3.1 - after 0m19.312s

Which is an approximately 31% speed up!

Note: Benchmarks were performed on macOS 12.2.1 with M1 Pro CPU and 16 GB LPDDR5.

back to top


Changelog

back to top


Known Issues

Top Priority:

  • Unable to install Ganache (npm) on MacOS 10.15.7 (#2445)
  • get forking working in the browser (#1245)

Coming Soon™:

  • debug_traceTransaction may crash on Node.js v12 (#2106)
  • evm_mine and miner_start don't respect --mode.instamine=eager (#2029)
  • evm_setAccountNonce is race-conditiony (#1646)
  • Add eth_feeHistory RPC endpoint (#1470)
  • @ganache/filecoin@alpha doesn't work with ganache@alpha (#1150)
  • sort executable/pending transactions that have the same price by the time at which the transaction was submitted (#1104)
  • Add eth_createAccessList RPC method (#1056)
  • Launching ganache with fork is throwing revert errors when communicating with 3rd party contracts (#956)
  • Build a real pending block! (#772)
  • Add an upper limit to # of accounts that can be generated by ganache (#736)
  • Incorrect gas cost for SSTORE opcode when using fork feature (#625)
  • Cannot get state root with uncommitted checkpoints error when starting ganache forking with infura RPC endpoint (#618)
  • --db Option Requires Same Mnemonic and Network ID (#1030)

back to top


Future Plans

  • Reduce Bundle Size (#2096)
  • Switch to esbuild to make build times faster/reasonable (#1555)
  • Opt-in tracking (#945)
  • Mine txs in same block with provided sorting (#899)
  • Add eip-155 support (#880)
  • Add support for debug_accountAt RPC method as implemented by Turbo-Geth (#813)
  • Enhance the database to allow for better UX and determinism (#756)
  • Create Project and set Milestones for Ganache interactive docs (#680)
  • idea: add in warning to help switch over to new "pending tx" mode (#674)
  • evm_snapshot ids should be opaque (#655)
  • Support for EIP 1898- Add blockHash to JSON-RPC methods which accept a default block parameter (#973)
  • Upgrade custom rpc method evm_mine to return the new block (#536)
  • Add personal_ecRecover and personal_sign (#995)
  • Add flag for starting ganache in detached mode (#1001)
  • Implement eth_getProof RPC message (#382)
  • Implement a streaming trace capability (#381)
  • Allow mining to be completely disabled on startup (#248)
  • Add support for eth_getRawTransactionByHash (#135)
  • Log contract events (#45)
  • Support IPC endpoint (#759)
  • Accept a genesis.json file (#1042)

back to top

Open new issues (or join our team) to influence what we gets implemented and prioritized.


💖 The Truffle Team

Don't miss a new ganache release

NewReleases is sending notifications on new releases.