Highlights
New Features
Fixes
Miscellaneous
Changelog
Known Issues
Future Plans
Not much in this release, as we just wrapped a huge hackathon here at ConsenSys. During the hackathon we got to actually use Ganache on our own project, which is actually not something we do very often, and in doing so found lots of new ways to improve the overall experience, so you can expect some really amazing changes in the weeks to come.
Thanks to @adjisb, @RiccardoBiosas, and @davidmurdoch for their contributions to this release!
We've changed 41 files across 5 merged pull requests, tallying 714 additions and 780 deletions, since our last release.
This release brings official Node v18 support to Ganache. Ganache was already working fine in Node v18, but because our tests harnesses were failing in CI we couldn't yet claim full support. Now we can!
back to top
feat: add __experimental_info export to core (#2529)
This is an internal and private feature for Truffle. Truffle needed a way to programmatically get the list of chains Ganache fully supports in order to enable the dry-run feature for those chains.
This introduces a new experimental and private (this will likely change in a future release!) __experimental_info
export:
Readonly<{
version: string,
fork: Readonly<{
/**
* Chains Ganache is known to be compatible with. Operations performed
* locally at historic block numbers will use the Ethereum Virtual Machine
* OPCODEs, gas prices, and EIPs that were active at the time the historic
* block originally took place.
*/
knownChainIds: number[],
}>
}>
back to top
fix: enforce eip-2 imposed limits and secp256k1 upper bound for private keys (#2944)
Sending transactions from an impersonated account with a "large" account number, like fffffffffffffffffffffffffffffffffffffffe
, would result in the error "The nonce generation function failed, or the private key was invalid" due to the way we fake transaction signing in ganache. Previously we would take the account number plus the first 12 bytes of the account number, fffffffffffffffffffffffffffffffffffffffe
+ ffffffffffffffffffffffff
, and would use that as a fake private key. This results in an invalid key, as secp256k1, the elliptic curve used in Ethereum cryptography, has an effective maximum private key value of 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364140n
(AKA secp256k1_n - 1
, or the total number of non-trivial points on the curve). This fixes #2586.
While implementing this fix it was discovered that we were not rejecting transactions with too-high s-values; i.e., s-values that are greater than (secp256k1_n - 1) / 2
. This restriction was added way back in Ethereum's first hardfork, homestead, as part of EIP-2 in order to remove the possibility of "malleable" transactions. While somewhat unrelated to the core reason for this fix, it has been added as part of this PR. This fixes #2600.
back to top
- chore: support node 18 (#2988)
- docs: add documentation of
eth_call
overrides (#3007) - chore: update @ethereumjs/vm to v5.9.0, add support for sepolia (#2528)
chore: support node 18 (#2988)
Ganache now supports and is tested on Node versions 12.0.0, 12.x, 14.x, 16.x, and 18.x on operating systems Windows 2019, Ubuntu 18.04, Ubuntu 20.04, and macOS 11, with the exception of Node v18 on Ubuntu 18.04, as Ubuntu 18.04 is not supported by Node v18.
Happy upgrading!
back to miscellaneous
docs: add documentation of eth_call
overrides (#3007)
This PR adds some documentation of the eth_call
overrides object to or RPC method docs, fixing #3002.
back to miscellaneous
chore: update @ethereumjs/vm to v5.9.0, add support for sepolia (#2528)
We've updated @ethereumjs/vm
to v5.9.0 and added support for forking the new "sepolia" test network.
back to miscellaneous
back to top
- #2944 fix: enforce eip-2 imposed limits and secp256k1 upper bound for private keys (@davidmurdoch)
- #2529 feat: add __experimental_info export to core (@davidmurdoch)
- #2988 chore: support node 18 (@davidmurdoch)
- #3007 docs: add documentation of
eth_call
overrides (@MicaiahReid) - #2528 chore: update @ethereumjs/vm to v5.9.0, add support for sepolia (@davidmurdoch)
back to top
Top Priority:
- Unable to install Ganache (npm) on MacOS 10.15.7 (#2445)
- Ganache v7.0.0 - typings are broken (#2134)
- Add option to set fork block's timestamp to the time the actual block was mined (#2122)
- get forking working in the browser (#1245)
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)
back to top
- 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)
back to top
Open new issues (or join our team) to influence what we gets implemented and prioritized.
💖 The Truffle Team