Skip to content

Releases: trufflesuite/ganache

v7.7.7

13 Mar 23:37
ca4a558
Compare
Choose a tag to compare

 Highlights   Fixes   Changelog   Known Issues   Future Plans 


A huge thanks to @MicaiahReid for all of his hard work making this release possible. We've had a vision to create "Interactive Documentation" for JSON-RPC since we started the Ganache rewrite back in April of 2019. This documentation had been 80% complete for well over a year, and as most of us know, it's the last 20% that is always the hardest. Micaiah revived this stalled docs initiative and took on the challenge of finishing up that last 20%; he decreased the "time to interactive" from dozens of seconds down to under 3 seconds, fixed tons of bugs, and polished up the interface (with the help of @OnlyOneJMJQ) for a much more usable and consistent look and feel.

We consider this a "first-pass" at interactive documentation, and we have big (top secret!) plans for this platform we hope to bring to life in the future. If you discover any issues, or have ideas on how we can improve the user experience let us know by opening a new issue.

Scroll down to the Highlights section to learn more!

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 if you really want to get involved.

We've changed 29 files across 1 merged pull request, tallying 18716 additions and 4094 deletions, since our last release.


Highlights

Download high-res video with audio

We are beyond thrilled to announce the official launch of our new interactive documentation site, ganache.dev!

ganache.dev will be the new home of Ganache's documentation. We're starting with interactive JSON-RPC documentation, but we will be building on this platform to provide 100%-in-browser tutorials, examples, and how-to guides, in addition to this reference documentation.

We designed ganache.dev to be useful for advanced users, but also (hopefully) easy for those new to the JSON-RPC layer of Ethereum. If you want to help improve this new "education" initiative there are a few ways you can help:

And if you really want to help, get the word out! Here's a handy link that will draft a tweet for you:

A tweet that says: 'I don't know who needs to hear this, but ganache.dev has by far the best Ethereum JSON-RPC reference out there, super valuable!

Tweet

Happy hacking!

back to top


Fixes

fix: improve styling and performance for interactive docs (#4033)

This PR:

  • fixes the slow rendering issues of the current interactive docs by lazy-loading the monaco windows as you scroll
  • fixes some bits of buggy UI/UX
  • fixes all examples from api.ts
  • fixes links to source code (they now point to code at commit hash that generated docs [note, in development you'll have to push your changes for these links to work])
  • adds color theme switcher
  • adds themes to monaco editor to allow ganache styling
  • borrows heavily from @OnlyOneJMJQ's PR for styling (#4035)
  • improves rendering consistency for users with JS disabled
  • groups RPC methods and orders groups in a way that makes sense
  • lazy loads ganache
  • probably some other stuff

Known Issues:

  • arguments list is one string, returns are split on colon
  • non-primitive types, like Transaction, DATA, QUANTITY, etc aren't documented
  • TypeScript types for the ganache provider is not loaded into the editors
  • The console and assert helpers in the editors are incomplete implementations (and lack types)

back to top


Changelog

back to top


Known Issues

Top Priority:

  • 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

...

v7.7.6

02 Mar 22:41
74c3a7b
Compare
Choose a tag to compare

 Fixes   Changelog   Known Issues   Future Plans 


Thanks again to @MicaiahReid for his excellent work, and to @benams and @adjisb for their contributions!

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, open a PR to fix an existing issue if you really want to get involved.

We've changed 5 files across 2 merged pull requests, tallying 174 additions and 112 deletions, since our last release.


Fixes


fix: eth get block transaction count by hash to work with forks (#3739)

The RPC method eth_getBlockTransactionCountByHash had a bug that caused it to not return results when requesting a block before the effective "forkBlockNumber".

back to fixes

fix: log warning regarding transactions with future-nonces when in eager mode (#4166)

@benams ran into a confusing situation in which future-nonce transactions that are sent to Ganache running in eager mining mode (the default) appear to hang indefinitely, rather than being mined or rejected. This is expected behavior in eager mode, as Ganache does not return the hash until after it is mined. To help alleviate the confusion we now log a message about the status of these kinds of transactions.

Closes #4165

back to fixes

back to top


Changelog

  • #3739 fix: eth get block transaction count by hash to work with forks (@adjisb)
  • #4166 fix: log warning regarding transactions with future-nonces when in eager mode (@MicaiahReid)

back to top


Known Issues

Top Priority:

  • 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 to influence what we gets implemented and prioritized.


💖 The Truffle Team

v7.7.5

16 Feb 00:32
e0bb8e3
Compare
Choose a tag to compare

 Fixes   Changelog   Known Issues   Future Plans 


Thanks to @davidmurdoch, @MicaiahReid, @tenthirtyone, and @haltman-at for your contributions to this release, which brings a fix to the debug_storageRangeAt RPC method.

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 9 files across 2 merged pull requests, tallying 588 additions and 562 deletions, since our last release.


Fixes

fix: make debug_storageRangeAt return all known keys at transaction index (#3470)

debug_storageRangeAt would sometimes fail to find storage that was there at the start of the transaction if the storage slots were written to in the same block as the target transaction. Ganache now waits to read storage slots until after the requisite transactions in the block have been processed.

Fixes #3338, also fixes #3468

ci: remove python configuration from CI setup (#4238)

Remove unnecessary boilerplate setting npm python config.

back to top


Changelog

back to top


Known Issues

Top Priority:

  • 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 we gets implemented and prioritized.


💖 The Truffle Team

v7.7.4

01 Feb 23:58
533f002
Compare
Choose a tag to compare

 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)

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

v7.7.3

09 Jan 22:49
6e73ca7
Compare
Choose a tag to compare

 Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


Thank you to our contributors @legobeat, @MicaiahReid, @brendene, and @jeffsmale90 for your contributions to this release!

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, open a PR to fix an existing issue if you really want to get involved.

We've changed 18 files across 8 merged pull requests, tallying 184 additions and 140 deletions, since our last release.


Fixes


fix: add "EADDRINUSE" as code to server Error (#4045)

This PR sets the code property related to the error "listen EADDRINUSE: address already in use { address }" to "EADDRINUSE", making detecting this kind of "address in use" error programmatically much easier and straightforward. This property existed in Ganache v6 and earlier and was removed in v7.0.0 in error.

Previously:

{
  "message": "listen EADDRINUSE: address already in use 127.0.0.1:5001"
}

Now:

{
  "code": "EADDRINUSE",
  "message": "listen EADDRINUSE: address already in use 127.0.0.1:5001"
}

Fixes #4020

back to fixes

fix: store transactions with the correct effectiveGasPrice (#4112)

Previously we were returning the wrong gasPrice when a transaction was fetched via eth_getTransactionByHash. This was happening because when we saved the transaction to the chain, we didn't update the transaction's effectiveGasPrice field based off of the baseFeePerGas of the block that the transaction was mined onto in some cases.

However, the effectiveGasPrice returned on a receipt was correct because when the receipt was fetched, we would calculate the effectiveGasPrice on the fly just to correct what we return to the user, rather than directly using what the database returned.

This change removes the on-the-fly calculation of the effectiveGasPrice on the receipt, and presets the transaction's effectiveGasPrice based off of the next block's baseFeePerGas when the transaction is added to the pool. As block's are mined, the miner updates all pending transaction's effectiveGasPrice based off of the next block's baseFeePerGas.

Fixes #4094.

back to fixes

fix: evm_revert fails in some cases (#4136)

Resolves an issue where evm_revert would fail with error .for is not iterable. This happened when a user would attempt to revert a change that deletes a key that exists in an upstream network.

fixes: #4093

back to fixes

back to top


Miscellaneous


ci: update docker release action (#4030)

Some of the GitHub Actions commands used by our Docker Publish Action are deprecated. This PR updates the Actions to versions that have since been updated to stop using these deprecated commands.

back to miscellaneous

docs: expand on troubleshooting node-gyp errors (#4013)

This PR adds a note in our CONTRIBUTING.MD document that instructs contributors to ensure they do not use npm as the root user.

back to miscellaneous

ci: drop macos-11, add macos-12 (#3407)

Just updating CI to run the newer macos-12 runner instead of macos-11.

back to miscellaneous

ci: update setup-python action to v4.4.0 (#4072)

The GitHub Actions runner was warning about deprecated API use by the setup-python package, so this PR updates it to the latest tagged version.

back to miscellaneous

ci: drop ubuntu-18.04, add ubuntu-22.04 (#3405)

Updating CI, including the "Release" action, to use Ubuntu 22.04, while also dropping support for ubuntu-18.04.

back to miscellaneous

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

v7.7.2

19 Dec 21:36
5fc653d
Compare
Choose a tag to compare

 Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


Here's another hotfix that corrects issues for some users facing Unhandled Promise Rejection... on NodeJs/Operating System combinations using eth_estimateGas.

We've changed 5 files across 2 merged pull requests, tallying 59 additions and 295 deletions, since our last release.


Fixes

fix: handle eth_gasEstimate reverts correctly to prevent potential process crash (#4056)

When updating to support the Merge hardfork code that handled eth_gasEstimate was refactored. A code block that previously "short circuited" the function no longer did, causing a JavaScript Promise to be fullfilled with a handled rejection, but then also an unhandled rejection. 🦡

We've fixed the short circuit code and added a test to prevent this from regressing in the future.

back to top


Miscellaneous

chore: remove Promise.allSettled shim (#4003)

This was TODO'd to be removed if we bumped typescript to 4.2.3+

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 to influence what we gets implemented and prioritized.


💖 The Truffle Team

v7.7.1

16 Dec 22:06
070ab5c
Compare
Choose a tag to compare

 Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


We released v7.7.0 yesterday, but it caused installation problems for Windows users without windows-build-tools. This hot fix resolves the issue for those affected users.

If you are still experiencing issues installing Ganache please open a new issue.

We've changed 3 files across 3 merged pull requests, tallying 12 additions and 9 deletions, since our last release.

To install this latest release, run

npm install ganache@latest --global


Fixes

fix: add leveldown back to bundle for Windows installation (#4046)

For reasons not yet understood, the leveldown package must be bundled or installations on Windows without windows-build-tools installed fails. This puts the leveldown package back into the ganache package's bundledDependencies.

This PR also introduces changes to our CI process to build a release candidate tarball during test runs.

Fixes #3661

back to top


Miscellaneous


docs: fix build status badge on README.md (#4048)

Reason for this change: badges/shields#8671

Before:

Before

After:

After

back to miscellaneous

chore: remove tarball that was accidentally added to the repo (#4052)

In my haste to get the hot fix out to fix v7.7.0 I added a release candidate tarball to a PR and we didn't notice until it was merged into the develop branch 🤦. This PR just removes that mistake.

back to miscellaneous

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 to influence what we gets implemented and prioritized.


💖 The Truffle Team

v7.7.0

15 Dec 20:00
5d4deb3
Compare
Choose a tag to compare

 New Features   Miscellaneous   Changelog   Known Issues   Future Plans 


It's been just two days since our last release, but we just couldn't wait any longer! This release has just two PRs, one which adds support for the Merge to Ganache, and the other which fixes an issue with the previous PR 😅. Skip ahead to read the details of the Merge PR.

We use your feedback to plan our roadmap, so if you have some time, we encourage you to browse our issues to find anything you'd like implemented/fixed sooner. Give them a 👍 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 134 files across 2 merged pull requests, tallying 7230 additions and 4319 deletions, since our last release.

To install this latest release, run

npm install ganache@latest --global


New Features

feat: add support for the merge hardfork (#3971)

This release (re)introduces support for the Merge! In preparation for the merge, our friends at ethereumjs were working hard on a huge new release with quite a few breaking changes. Because we rely so heavily on the work that ethereumjs does, these breaking changes impacted just about every nook and cranny of the Ganache code base. We wanted to get the merge features to our users as soon as possible, while also doing our due diligence to make sure the sweeping changes made by the ethereumjs upgrade don't affect Ganache's stability. With all that in mind, we released Ganache v7.4.4-alpha.0 back in September with support for the Merge. This PR brings that set of features to our stable release.

This introduces a few important changes and features that are worth explaining.

Dropping Node v12 Support

Upgrading ethereumjs required dropping support for Node.js v12. In Ganache v7.0.0 we gave a deprecation notice for Node.js v12, and this release finalizes the removal of support for this version. To use Ganache, you'll need to install Node.js v14 or greater.

New Block Tags

One new feature that could potentially impact our users is the introduction of the finalized and safe block tags. These can be used with eth_getBlockByNumber, or any other RPC method that receives a block tag:

const finalizeBlock = await provider.request({ method: "eth_getBlockByNumber", params: ["finalized", true] } );
const safeBlock = await provider.request({ method: "eth_getBlockByNumber", params: ["safe", true] } );

Note: These new block tags are aliases for the existing latest block tag.

New Default Hardfork

The new default hardfork when starting Ganache is merge. To start Ganache with a different hardfork, use the --chain.hardfork option.

back to top


Miscellaneous

ci: remove node 12 from CI tests (#4029)

You know when you spend a really long time on a big PR and finally think you've got every little detail settled, then the whole team reviews the PR and finds a few other little things that you fix, then they all approve the PR, so you all think you've got every little detail settled, then you finally merge the PR and you immediately realize that you forgot to remove a now unsupported version of node from your CI tests that only run once the PR has been merged into develop, so now you have to make another PR to remove the now unsupported node version from your CI tests? Yeah I hate when that happens.

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 join our team) to influence what we gets implemented and prioritized.


💖 The Truffle Team

v7.6.0

13 Dec 21:15
d267903
Compare
Choose a tag to compare

 Highlights   New Features   Miscellaneous   Changelog   Known Issues   Future Plans 


It's been about a month and a half since our last release, and we've been busy! This release has a couple of minor improvements and a big feature, but we've got even more exciting things coming down the pipe, like stable support for the merge hardfork, genesis.json support, "flavor" plugins, "interactive" docs, and a Ganache UI update! We're ending the year strong and we'll be starting it even stronger <insert motivational poster here>.

Thank you to our PR contributors @tenthirtyone, @jeffsmale90, @emilyJLin95, and @MicaiahReid. We'd also like to thank users that contributed to issues closed by the release @fvictorio, @kiview, @leofisG, @mabo-lh, @zhcppy, @ilyar, @lourenc, @mfornet, @kylezs, @TheArhaam, @anthanh, @GradeyCullins, @hacken-audits, @amandesai01, @rudewalt, and @parthlaw.

We use your feedback to plan our roadmap, so if you have some time, we encourage you to browse our issues to find anything you'd like implemented/fixed sooner. Give them a 👍 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 17 files across 5 merged pull requests, tallying 1237 additions and 153 deletions, since our last release.


Highlights

The release delivers a long-awaited and highly-requested feature: detach mode (starring Sandra Bullock, directed by Jeff Smale)!

Detach mode affords users the ability to start Ganache in the background with a simple flag: --detach. Check out the details and example usage below.

back to top


New Features

feat: add detach mode to the CLI (#3568)

A common, and rather annoying pattern projects have needed to implement is:

ganache & sleep 5
# interact with localhost:8545 somehow

This set of commands starts Ganache in the background (using &) and then waits a while (how much changes a lot from machine to machine) until it's ready.

Another inefficient workflow that Ganache has necessitated is maintaining a dedicated terminal just for running Ganache. This becomes extra annoying when you want to have different instances and flavors of Ganache running at the same time.

Ganache can do better...

Enter: Detach mode.

You can now start Ganache with the --detach flag, which will cause it return to the console as soon as it is ready to receive requests, outputting a nickname for the instance that can later be used to stop the instance.

The command ganache instances list will show you all of the instances of Ganache running in Detach mode, and you can stop them with ganache instances stop <name>.

$ ganache instances list
┌───────┬─────────────────────────┬──────────┬─────────┬────────────────┬────────┐
│   PID │ Name                    │ Flavor   │ Version │ Host           │ Uptime │
├───────┼─────────────────────────┼──────────┼─────────┼────────────────┼────────┤
│ 12182 │ salted_caramel_ganache  │ ethereum │ 7.6.0   │ 127.0.0.1:8545 │     4s │
├───────┼─────────────────────────┼──────────┼─────────┼────────────────┼────────┤
│ 53184 │ candied_caramel_truffle │ ethereum │ 7.6.0   │ 127.0.0.1:8546 │ 2m 56s │
└───────┴─────────────────────────┴──────────┴─────────┴────────────────┴────────┘

With the following command, you can start Ganache, run your tests, and stop Ganache when you are finished:

GANACHE=$(ganache --detach) && npm run test; ganache instances stop $GANACHE

Note that we use a ; in the above example. This will ensure ganache instances stop $GANACHE runs even if the tests fail.

Or, if you use PowerShell, you can do:

$GANACHE=ganache --detach; npm run test; ganache instances stop $GANACHE

We see Detach mode as the foundation for a new way of interacting with Ganache, and we plan on expanding the scope and features in upcoming releases. We'd love to hear your feedback on the feature, and your ideas on how to improve it. We'll be using the detach-mode label to track ideas and issues; have a look through the existing ones and add your voice by commenting or 👍, or open a new issue.

Fixes: #1001

back to top


Miscellaneous


ci: update actions/workflows to use Node 16 (#3833)

Just getting with the times by updating some GitHub Actions.

back to miscellaneous

docs: document eth_feeHistory in RCP-METHODS.md (#3840)

It does what it says on the label.

back to miscellaneous

docs: update README.md to clarify usage (#3723)

Clarifying how to run Ganache for usage on the CLI, as well as in programmatic usage.

back to miscellaneous

docs: add server to list of startup option namespaces in README.md (#3890)

smol change

back to miscellaneous

back to top


Changelog

back to top


Known Issues

Top Priority:

v7.5.0

25 Oct 20:02
d8cfb81
Compare
Choose a tag to compare

 Highlights   New Features   Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


Back from Devcon and our ConsenSys retreat for another release!

Thank you to our contributors @omahs, @MicaiahReid, @tenthirtyone, and @jeffsmale90 for your contributions to this release. We'd also like to thank issue contributors @gnidan, @mxork, @leroldary, @Inphi, @domalaq, @ChristianCoenen, @drortirosh, @seaona, @krzkaczor, and @aashborn.

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, open a PR to fix an existing issue, or apply to join our team (we're hiring!) if you really want to get involved.

We've changed 32 files across 9 merged pull requests, tallying 1641 additions and 432 deletions, since our last release.


Highlights

This release brings you the long-awaited eth_feeHistory RPC endpoint. Check out the Infura docs on this method if you aren't already up to speed. Give it a try and let us know if you aren't fully gruntled with the feature or if you find any issues with its performance or implementation.

It also brings a few bug fixes, docs updates, and some internal improvements.

back to top


New Features

feat: add eth_feeHistory JSON-RPC endpoint (#3351)

Adds eth_feeHistory to the JSON-RPC API. This endpoint returns gas used, baseFeePerGas, and effective reward by array of percentages accounting for gas used for a range of blocks.

Check out the Infura docs on this method if you aren't already up to speed.

Fixes: #1470

back to top


Fixes


fix: add an upper limit to # of accounts that can be generated by ganache (#3361)

This change logs a warning to the user that performance may be impacted if more than 100,000 accounts are created.

Fixes #736

back to fixes

fix: add " " after the HTTP/1.1 Response Status-Code (#3404)

This change brings Ganache into strict compliance with the HTTP/1.1 Status-Line specification. Nearly all established HTTP/1.1 response parsers handle HTTP/1.1 Status-Lines that omit the Status-Code trailing space character, but it doesn't hurt to follow the specification strictly.

This change fixes #3400

back to fixes

back to top


Miscellaneous


docs: fix typo in fork.username cli description (#3634)

Just fixing a typo in the CLI's --help description for the --fork.username option.

back to miscellaneous

ci: add @MicaiahReid to CODEOWNERS (#3775)

As described in the title, this change adds @MicaiahReid to the CODEOWNERS file for some files within Ganache.

back to miscellaneous

test: improve coverage of RPC-JSON Data byteLength argument (#3784)

This change adds basic tests ensuring the byteLength argument passed to the RPC-JSON Data constructor and factory method are respected internally, and that they are overridden by the argument passed to toString() and toBuffer().

back to miscellaneous

chore: remove extra quotes in require-engines test helper (#3713)

Just fixing a typo in a test helper.

back to miscellaneous

docs: fix typos (#3801)

Just fixes some typos.

back to miscellaneous

docs: fix eth_call interactive docs example (#3774)

Our not-yet-published-but-available-for-use interactive JSON-RPC documentation had a bug in the example for eth_call, which is resolved with this fix.

back to miscellaneous

back to top


Changelog

back to top


                
...