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_traceTransaction
may crash on Node.js v12 (#2106)evm_mine
andminer_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 withganache@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)
- 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
andpersonal_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)
Open new issues (or join our team) to influence what we gets implemented and prioritized.
💖 The Truffle Team