github trufflesuite/ganache v7.2.0

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

 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.


Highlights

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


New Features

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


Fixes

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


Miscellaneous

  • 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


Changelog

back to top


Known Issues

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 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.