Skip to content
This repository has been archived by the owner on Jan 21, 2022. It is now read-only.

Releases: trufflesuite/ganache-cli-archive

v6.1.6 - Bug Fixes 🐛

10 Jul 15:17
Compare
Choose a tag to compare

Release Highlights

  • Updates to ganache-core@2.1.5, which works around a problem in ethereumjs-tx which broke eth_sendRawTransaction

v6.1.5 - Bug Fixes 🐛

06 Jul 17:56
Compare
Choose a tag to compare

Release highlights

  • Updates ganache-core to v2.1.4 - see release notes for more info.
  • Fixes support for node >= v6.5.0.
    • Note: if you're depending on ganache-core directly instead of ganache-cli, you will still need node >= 8.
  • Displays account balances on startup.
  • Makes better use of new yargs flags initialization, fixing numerous bugs including:
    • Fixes help/usage to display correct defaults.
    • Fixes the -u/--unlock flag, per issues #545 and #535.
    • Fixes faulty --hostname CLI option.
  • Fixes docker image build process to include package-lock.json so that exact package versions are used.

v6.1.4 - Bug Fixes 🐛

27 Jun 20:27
Compare
Choose a tag to compare

Release highlights

Fixes bug which caused us to listen on 0.0.0.0 instead of 127.0.0.1 by default.

Bumps ganache-core to v2.1.3, which has the following effects:

  • Completes fix from previous release for less strict checks on filter/subscription IDs and on addresses specified in log filters/subscriptions to allow for mixed case hex encoding.
  • Removes vulnerability caused by transitive dependency on hoek

v6.1.2 - Bug Fixes 🐛

12 Jun 16:46
Compare
Choose a tag to compare

Release highlights

Bumps ganache-core to v2.1.1, which has the following effects:

  • Minimum required version of node is now 8.9.0
    • Allows us to use the async/await keywords or dependencies which use these keywords
  • Makes it possible to fetch revert or require reason strings when --noVMErrorsOnRPCResponse flag is specified
  • Correctly restores time deltas on snapshot/revert
  • Preserves transaction signatures sent along with eth_sendRawTransaction
  • Makes it possible to disable storage/memory/stack output in debug_traceTransaction (useful for code coverage tooling)
  • Fixes JSON encoding of log & receipt types, respecting the data/quantity format types specified in the RPC wiki.
  • Less strict checks on filter/subscription IDs and on addresses specified in log filters/subscriptions to allow for mixed case hex encoding.
  • Renamed blocktime to blockTime to follow ganache-cli changes.
  • Fixes Server.listen so that it now passes the SateManager in its callback.
  • Returns more helpful error message when eth_getTransactionCount is called with a bad block number.

v6.1.0 - Candy Apple 🍎

08 Mar 22:21
Compare
Choose a tag to compare

Release Highlights

  • Updates to ganache-core 2.1.0 for stable release
    • Includes changes from other previous v2.1.0 beta releases, including:
      • WebSockets support
      • Numerous stability improvements
      • Introduction of --noVMErrorsOnRPCResponse option (defaults to false)
        • When this flag is left unset, and when blocktime is unspecified (instamining), contract runtime errors are reported as RPC errors when the transaction is submitted. If the flag is set, we behave as geth/Parity do and return the transaction hash, even if the transaction fails due to a contract runtime error

Known Issues

  • --help broken by updating to latest yargs. Use -? instead.

Note: This release is a beta, meaning we think it's going to be great, but we haven't put it through rigorous manual testing just yet. Please help us out and raise issues for any problems you discover!

v6.1.0-beta.4 - Candy Apple 🍎

08 Mar 22:15
Compare
Choose a tag to compare
Pre-release

Release Highlights

  • Updates to ganache-core 2.1.0-beta.7

Known Issues

  • --help broken by updating to latest yargs. Use -? instead.

Note: This release is a beta, meaning we think it's going to be great, but we haven't put it through rigorous manual testing just yet. Please help us out and raise issues for any problems you discover!

v6.1.0-beta.3 - Candy Apple 🍎

08 Mar 22:14
Compare
Choose a tag to compare
Pre-release

Release Highlights

  • Updates to ganache-core 2.1.0-beta.5.
  • Updates numerous package dependencies to latest versions.

Known Issues

  • --help broken by updating to latest yargs. Use -? instead.

Note: This release is a beta, meaning we think it's going to be great, but we haven't put it through rigorous manual testing just yet. Please help us out and raise issues for any problems you discover!

v6.1.0-beta.2 - Candy Apple 🍎

19 Feb 21:56
Compare
Choose a tag to compare
Pre-release

Release Highlights

  • Fixes bug preventing use of forking feature caused by upgrading to web3 1.0

Note: This release is a beta, meaning we think it's going to be great, but we haven't put it through rigorous manual testing just yet. Please help us out and raise issues for any problems you discover!

v6.1.0-beta.1 - Candy Apple 🍎

19 Feb 21:55
Compare
Choose a tag to compare
Pre-release

Release Highlights

  • Includes fixes from ganache-core v2.1.0-beta.1

Note: This release is a beta, meaning we think it's going to be great, but we haven't put it through rigorous manual testing just yet. Please help us out and raise issues for any problems you discover!

Candy Apple 🍎 - Beta 1

23 Jan 03:52
Compare
Choose a tag to compare
Pre-release

Note: since this release no longer comes with breaking changes, we're republishing as a patch release, and unpublishing v7.0.0-beta.0 from the npm repository to avoid undue confusion.

Changes made since previous beta release:

  • Add --noVMErrorsOnRPCResponse flag
  • Update dependency ganache-core to v6.1.0-beta.0
    • Fixed crash due to Cannot read property 'gasPrice' of undefined, trufflesuite/ganache#293
    • Checks number of arguments in request matches required number of arguments for each method, fixes trufflesuite/ganache#255
    • Makes threads argument to mining_start optional, fixes trufflesuite/ganache#383
    • Reverts default value of vmErrorsOnRPCResponse to true to avoid breaking change

Release highlights

  • Introduces support for websockets, along with pub/sub support via eth_subscribe and eth_unsubscribe
    • This finally makes it possible to use web3 1.0 with Ganache!
    • Special thanks to @perissology and @MicahZoltu for their contributions on this!
  • Fixes an incredibly annoying race condition, responsible for the vast majority of Ganache 1.0.0 and 1.0.1 crashes reported
    • This fix finally resolves #417, #359, and various other cases around things suddenly, unexpectedly being undefined
  • Contract runtime error reporting is now consistent with geth, Parity, and other clients
    • Introduces --noVMErrorsOnRPCResponse flag, which if enabled will make runtime errors in contract code no longer cause web3.eth.sendTransaction to return promises which revert or to pass an error to the callback function.
    • When this flag is enabled, you must check the status field of the transaction receipt to determine whether your transaction succeeded. A status value of 0x1 means success, and 0x0 means failure.
    • Important:
      • This is no longer enabled by default in this beta build, however we will likely enable it by default in a future, major release.
      • For discussion on why this change was made, please see "Important note about contract runtime error reporting" below.

Note: This release is a beta, meaning we think it's going to be great, but we haven't put it through rigorous manual testing just yet. Please ping us in the truffle gitter channel or on twitter with your feedback, and raise issues for any problems which you discover!

Important note about contract runtime error reporting

One of the benefits of TestRPC early on (back before we called it ganache) was that when running a transaction that triggered a runtime error in your contract code, it would pass that runtime error object from the EVM back to your client application. This was achieved via the JSON RPC error field in the response object.

Prior to the Byzantium hard fork, Ethereum RPC endpoints other than TestRPC couldn't reliably tell you whether or not your transaction succeeded or failed. The only way to tell if your transaction failed was to check whether the gasUsed field in your transaction receipt matched the gas limit you specified on your transaction. But what if you set your gas limit perfectly? What does gasUsed == gasLimit mean then? Fortunately, in the post Byzantium world the transaction receipt now includes a status field, with a value of 0x1 for success, and 0x0 for failure.

The trade-off that we made in TestRPC in our pre-Byzantium days was that we'd fail fast and fail loudly (good), but if people wanted to write portable tests that ran against TestRPC and against other test networks they'd have to include network-specific branches in their transaction failure checks (bad). Further, over time we've come to observe that people new to Ethereum Dapp development may lean too heavily on ganache and not realize that they need to implement transaction failure checks which check their transaction receipt. This would mean that their tests might not fail on other test networks when they otherwise should be (ugly).

tl;dr: Now that Byzantium is here to stay, we've introduced the --noVMErrorsOnRPCResponse flag, which makes Ganache behave more like other clients. In this mode of operation, contract runtime errors encountered during transaction processing will no longer trigger a response object with the error field set. You must now check the status field of the transaction receipt to determine whether or not your transaction succeeded, as ganache will no longer cause web3.eth.sendTransaction to populate the first argument (error) of the callback, or to reject the returned promise on contract runtime errors.

If you're used to determining why things failed by reading the message on this error object, you can find the error in the Ganache log output. For ganache-cli this will be written to the same console where ganache-cli is running, and for the Ganache UI this can be found in the Logs tab.

But keep in mind that error messages only go so far. It's nice to know that something failed, but I want to know why it failed. To answer that question, please check out truffle debug - it'll change your life for the better!

Installation instructions

Since this is a beta release, you'll still get 6.0.3 if you follow the usual install instructions. Instead you need to install the beta tag by doing the following:

npm install -g ganache-cli@beta

Other noteworthy changes

  • No longer hangs on quit when clients connected (trufflesuite/ganache#365)
  • Runs eth_call with correct block metadata (trufflesuite/ganache#205)
  • Adds the missing logsBloom field to the transaction receipt (#440)
  • Adds a --defaultBalanceEther flag so that you can specify the starting balance of auto-generated accounts.
  • Actually uses source maps when generating stack traces this time!
  • status field of transaction receipt is now hex (#451)
  • adds pesonal_importRawKey (trufflesuite/ganache#31)
  • Various corrections to hex string encoding (more will be necessary, however - keep those issues coming!)
  • Logs opcode operands on debug_traceTransaction (trufflesuite/ganache#10)
  • Doesn't crash on bad tx parameters, and accepts empty string in to field as null (trufflesuite/ganache#257)
    • Makes contract deployment from MEW work better
  • Only reports error message in JSON RPC error.message field - use error.data for the stack trace
    • Makes logged error output more readable