github trufflesuite/ganache v7.7.4

latest releases: v7.9.2, ganache@7.9.2, v7.9.1...
15 months ago

 Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


Thanks to @MicaiahReid, @adjisb, @WyseNynja, @sewinter, and @davidmurdoch for your contributions to this release, which brings a couple of big fixes.

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, or open a PR to fix an existing issue.

We've changed 20 files across 4 merged pull requests, tallying 191 additions and 105 deletions, since our last release.


Fixes

  • fix: remove setting of private property (#4145)
  • fix: set the earliest block tag on startup when forking (#3755)
  • fix: make port 0 bind to any available port (#4070)

fix: remove setting of private property (#4145)

Before the latest upgrade of etheremjs-vm, we would manually set the _isInitialized property of the VM to avoid some extra computation that came along with initialization that we didn't need. After the ethereumjs-vm upgrade, creating the VM also initializes it, so this manual setting of the private property is unnecessary, but we didn't remove it. This change removes the manual setting of vm._isInitialized.

back to fixes

fix: set the earliest block tag on startup when forking (#3755)

This change updates Ganache's startup procedure when forking to retrieve the earliest block from the remote and cache this block as the earliest block in Ganache's block manager. This fixes a bug where calling eth_getBlockByNumber with the "earliest" block tag parameter yielded no result.

back to fixes

fix: make port 0 bind to any available port (#4070)

Specifying a port of 0 is a way to tell a server that you want the Operating System to let you bind to any open port. Ganache claimed to support binding to port 0, but would rudely yell at you if you tried: Port should be >= 0 and < 65536. Received 0 🤦! This PR rights our wrongs.

Using port 0 is useful when you don't care which port you bind to, you just want an open port.

You can use port 0 in a few ways:

On the cli:

$ ganache --port 0

RPC Listening on 127.0.0.1:35006

In detach mode:

note: port 0 binding in detach mode doesn't yet provide a scripting friendly way of returning the port

$ ganache --detach --port 0
frozen_caramel_doughnut

$ ganache instances list
┌───────┬─────────────────────────┬──────────┬─────────┬─────────────────┬────────┐
│   PID │ Name                    │ Flavor   │ Version │ Host            │ Uptime │
├───────┼─────────────────────────┼──────────┼─────────┼─────────────────┼────────┤
│ 58078 │ frozen_caramel_doughnut │ ethereum │ 7.7.3   │ 127.0.0.1:35006 │    14s │
└───────┴─────────────────────────┴──────────┴─────────┴─────────────────┴────────┘

and programmatically:

import ganache from "ganache";

const server = ganache.server();
await server.listen(0);
console.log("Listening on port: ", server.address().port);

Fixes #2643 and #3805

back to fixes

back to top


Miscellaneous

docs: align whitespace in README (#4141)

Some whitespace wasn't aligned, now it is.

back to top


Changelog

back to top


Known Issues

Top Priority:

  • debug_storageRangeAt fails to find storage when the slot was created earlier in the same block (#3338)
  • Add eth_createAccessList RPC method (#1056)

Coming Soon™:

  • Implications failed: fork.headers -> url (#2627)
  • In Geth chain-mode, logic to accept/reject transactions based on gas price/limit should match Geth (#2176)
  • evm_mine and miner_start don't respect --mode.instamine=eager (#2029)
  • evm_setAccount* is race-conditiony (#1646)
  • @ganache/filecoin@alpha doesn't work with ganache@alpha (#1150)
  • Launching ganache with fork is throwing revert errors when communicating with 3rd party contracts (#956)
  • Build a real pending block! (#772)
  • VM Exception when interfacing with Kyber contract (#606)
  • After calling evm_mine, eth_getLogs returns same logs for all blocks (#533)
  • personal_unlockAccount works with any password (#165)
  • --db Option Requires Same Mnemonic and Network ID (#1030)

back to top


Future Plans

Top Priority:

  • Accept a genesis.json file (#1042)

Coming Soon™:

  • Switch to esbuild to make build times faster/reasonable (#1555)
  • fork specific block & specific index (#952)
  • Allow to sync forked chain to the latest block (#643)
  • Implement a streaming trace capability (#381)
  • Improve log performance when forking (#145)
  • Log contract events (#45)

back to top

Open new issues, or give a +1 to existing issues to influence what gets implemented and prioritized.


💖 The Truffle Team

Don't miss a new ganache release

NewReleases is sending notifications on new releases.