v7.3.1
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!
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.
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:
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.
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.
- #2983 perf: improve JSON-RPC data types; better, faster, stronger (@jeffsmale90)
- #3247 fix: remove redundant await in
evm_mine(@MicaiahReid)
Top Priority:
Coming Soon™:
debug_traceTransactionmay crash on Node.js v12 (#2106)evm_mineandminer_startdon't respect --mode.instamine=eager (#2029)evm_setAccountNonceis race-conditiony (#1646)- Add
eth_feeHistoryRPC endpoint (#1470) @ganache/filecoin@alphadoesn't work withganache@alpha(#1150)- sort executable/pending transactions that have the same price by the time at which the transaction was submitted (#1104)
- Add
eth_createAccessListRPC 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 checkpointserror when starting ganache forking with infura RPC endpoint (#618)- --db Option Requires Same Mnemonic and Network ID (#1030)
- 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
blockHashto JSON-RPC methods which accept a default block parameter (#973) - Upgrade custom rpc method
evm_mineto return the new block (#536) - Add
personal_ecRecoverandpersonal_sign(#995) - Add flag for starting ganache in detached mode (#1001)
- Implement
eth_getProofRPC 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)
Open new issues (or join our team) to influence what we gets implemented and prioritized.
💖 The Truffle Team

