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.
- 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);
back to fixes
back to top
docs: align whitespace in README (#4141)
Some whitespace wasn't aligned, now it is.
back to top
- #4145 fix: remove setting of private property (@MicaiahReid)
- #3755 fix: set the
earliest
block tag on startup when forking (@adjisb) - #4070 fix: make port
0
bind to any available port (@davidmurdoch) - #4141 docs: align whitespace in README (@davidmurdoch)
back to top
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
andminer_start
don't respect --mode.instamine=eager (#2029)evm_setAccount*
is race-conditiony (#1646)@ganache/filecoin@alpha
doesn't work withganache@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
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