v7.0.2
Fixes
Changelog
Known Issues
Future Plans
Two more fixes are ready in this release! Thank you to our issue reporters for these bringing these to our attention (@Ruj89 and @davidmurdoch). It means a lot to us that you use Ganache and want to be a part of making it even better.
In this release we've changed 3 files across 2 merged pull requests, tallying 151 additions and 46 deletions.
Last call for T-shirts
If you helped contribute to Ganache v7 in any way, we tagged you in our v7 release notes to let you know you're eligible to receive a limited edition Ganache T-shirt. We've had many of you claim the goods and want to get these bad boys made, but we want to be sure all of our contributors have had the chance to claim them first. If you're on the list¹ and you're interested, email us at [email protected] by Thursday, February 10th to claim.
Fix how we return logs from eth_subscribe
(#2268)
In an oversight on our end, we unintentionally had a breaking change between Ganache v6 and v7 in which we started aggregating event logs and emitting them once for every transaction that triggered them. Ganache v6 was inline with Geth's logging, which emits separately for each event.
With this release we've fixed this behavior to once again be inline with Geth. When using eth_subscribe
to subscribe to logs, you can expect each emitted contract event to emit a separate log with the following structure:
{
type: "eth_subscription",
data: {
result: {
address: address,
blockHash: blockHash,
blockNumber: blockNumber,
data: data,
logIndex: logIndex,
removed: removed,
topics: topics,
transactionHash: transactionHash,
transactionIndex: transactionIndex
},
subscription: subscriptionId
}
}
Fix type compatibility with Web3 (#2272) (#4743 in ChainSafe/web3.js)
After the initial release of Ganache v7 we found that our provider type wasn't playing nice with Web3's provider type. After a little digging, we found that both repos had bugs. Our side of the fix is available in this new release, and we've opened a PR in the web3.js repo to fix it on their end. This should be merged in their coming 1.7.1 release. Shout out to the ChainSafe team for getting this merged and for all of the sweet stuff they make.
- #2272 fix: jsonrpc types and provider compatibility with web3 (@MicaiahReid)
- #2268 fix:
eth_subscribe
logs (@MicaiahReid)
Top Priority Issues:
evm_mine
andminer_start
don't respect--mode.instamine=eager
(#2029)- Ganache forking is not working as expected (#2122)
- Ganache v7.0.0 - typings are broken (#2134)
- A rejected transaction should possibly be added back into the pool (#2176)
- Shutting down the Ganache Server v7.0.2 (#2185)
- Node.js v12 outputs a µWS warning in the console (#2095)
Simulating transactions on Ganache v7 fork throws insufficient funds error (#2162)Ganache's provider type is not compatible with Web3 (#2125)Websocket logs subscription not supported by Geth Client (#2206)
Coming Soon™:
evm_setAccountNonce
is race-conditiony (#1646)--miner.callGasLimit
implementation is wrong (#1645)- We don't return a proper pending block (#772)
- Forking doesn't work in the browser (#1245)
- Uncles aren't fully supported when forking (#786)
- Forking may fail in weird and unexpected ways. We need to "error better" here (#615)
- Node.js v12 doesn't handle memory as well as 14+ and may crash computing very large
debug_traceTransaction
results (#2106) - Our bundle size is larger than ideal (#2096)
- Update the
eth_maxPriorityFeePerGas
RPC method to return as Geth does,eth_gasPrice - baseFeePerGas
(#2097) - Add support for the
eth_feeHistory
RPC method (#1470) - Support for enabling eligible draft EIPs before they are finalized or considered for inclusion in a hard fork (#1507)
- New hard fork support well in advance of the hard fork launch (#2099)
- Add an
eth_createAccessList
method (#1056) - Track test performance metrics over time (#2105)
- Track real world Ganache usage (opt-in and anonymized) to better tune performance and drive bug fixes and feature development (#2100)
- Track test coverage (#2101)
evm_mine
will return the new blocks instead of just0x0
(#536)- Add new
evm_setCode
andevm_setStorageAt
RPC methods (#649) - Make
evm_snapshot
ids globally unique (unpredictable instead of a counter) (#655) - Support
eth_getRawTransactionByHash
RPC method (#135) - Support
debug_accountAt
RPC method (#813) - Allow "mining" to be disabled on start up (#248)
- Set CLI options via config file, package.json, or ENV vars (#2102)
- Create a CLI interactive/REPL mode (#2103)
- Enable a CLI daemon mode (#2104)
- "Flavor" Plugins: We're building support for Layer 2 plugins into Ganache so we can start up and manage other chains. e.g., The
ganache filecoin
command will look for the@ganache/filecoin
package and start up a Filecoin and IPFS server. - Multi-chain configurations: you'll be able to start up your project's entire blockchain "ecosystem" from a single ganache command: e.g.,
ganache --flavor ethereum --flavor filecoin --flavor optimism
.- this is where defining your CLI options via JSON config will come in very handy!
- We've laid the groundwork for additional performance improvements. We expect to see an additional 2-5x speed up for typical testing workloads in the near future.
Open new issues (or join our team) to influence what we gets implemented and prioritized.
1. Ganache v7 Contributors:
@davidmurdoch @MicaiahReid @gnidan @eggplantzzz @kevinweaver @cds-amal @haltman-at @kevinbluer @seesemichaelj @tcoulter @nicholasjpaterno @eshaben @CruzMolina @honestbonsai @domob1812 @moda20 @0xGorilla @fedgiac @FFdhorkin @NicsTr @convexman @rainwater11 @aliveli186 @winksaville @anvacaru @nepoche @gas1cent @Fatorin @0xng @wilwade @MatthiasLohr @alexhultman
💖 The Truffle Team