Skip to content
This repository has been archived by the owner on Feb 26, 2024. It is now read-only.

v7.4.1

Compare
Choose a tag to compare
@MicaiahReid MicaiahReid released this 16 Aug 03:29
· 118 commits to develop since this release
3a74e07

 Fixes   Miscellaneous   Changelog   Known Issues   Future Plans 


For the month of August, the Ganache team is laser-focused on crushing tech debt.

Gif of man quickly and efficiently stomping on a long line of soda cans

Pictured: the Ganache team, laser-focused and crushing tech debt.

As such, we're a bit light on "substantial" changes for this release. We're hoping this investment will pay dividends in the coming releases, though, so keep an eye out for more exciting features in upcoming releases! Many of our changes for this release were made by members of our awesome community of contributors, so we'd like to give a special thank you to @emilbayes, @robmcl4, @eltociear, and @l2ig. Thank you all so much!

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 24 files across 10 merged pull requests, tallying 82 additions and 50 deletions, since our last release.


Fixes


fix: correct signature of eth_getWork (#3349)

This PR was opened by @emilbayes and fixes the signature of our eth_getWork RPC method. Thanks, @emilbayes!

back to fixes

fix: EIP-1559 access list transaction gas cost (#3227)

This change fixes how our EIP-1559 transactions handle Access Lists, which were introduced in EIP-2930. Although our EIP-2930 transactions were correctly calculating gas costs, these calculations weren't being performed correctly for the EIP-1559 transactions. There were two issues here:

  1. the up-front gas cost did not factor in the cost of the access list itself
  2. the access list addresses were not being properly marked as warmed by the VM, because address buffers were improperly extended to 32 bytes when the EVM expected 20 byte addresses

Thanks for this fix, @robmcl4!

back to fixes

fix: switch to user-provided logger rather than console.log (#3466)

The Ganache options allow you to set a custom logger to handle any logging that Ganache does*. When using Ganache programatically, this can be done as follows:

const logger = {
  log: (message?: any, ...optionalParams: any[]) => {
    // whatever custom log stuff you want
  }
};

const provider = Ganache.provider({
  logging: { logger }
});

However, there were still a few hold-out console.logs in our code, which logged directly to the console rather than the user-provided log function. This change fixes this issue.

*Pro Tip: You can actually update that logger function while Ganache is running to temporarily change how you handle logs, if you're into that sort of thing.

back to fixes

back to top


Miscellaneous


test: make bundle-size-check test run on external contributor PRs (#3408)

A recent addition to our CI tests that ensures we do not exceed our bundle size limit causes external contributor PRs to fail this check. The reason for the failure is because this check requires an environment secret that is not available to the GitHub Action Environment that runs external contributor pull requests. This change replaces the secret with a fake value that allows the test to run as if the real secret was supplied.

back to miscellaneous

build: ensure webpack's INFURA_KEY is exactly 32 lowercase hex characters (#3409)

Our build process checks if the INFURA_KEY environment variable looks valid, but it was doing it wrong. It now actually checks for lowercase hex strings.

back to miscellaneous

refactor: fix typo in promise-queue/index.ts (#3434)

This is just a quick typo fix: entrys -> entries. Thanks @eltociear

back to miscellaneous

test: make bundle-size-check test work again (#3444)

This change combined with this one caused the bundle-size-check to fail for all PRs. The INFURA_KEY env var was updated to work for all PRs, including external contributors, but it used an invalid character. The INFURA_KEY validation was incorrect, and the invalid key passed validation. Once the INFURA_KEY validation was fixed the invalid key was now failing validation, causing all PRs to fail the CI check. This change updated the INFURA_KEY so that it passes validation.

back to miscellaneous

test: correct webpack infura key validation error message grammar (#3443)

This change also just fixes some grammar:
From: "INFURA_KEY must 32 characters..."
To: "INFURA_KEY must **be** 32 characters..."

back to miscellaneous

test: replace assert.equal with assert.strictEqual in tests (#3508)

As part of our tech-debt month, we made an issue to update our tests to use assert.strictEqual rather than assert.equal. Within a day of making the issue, @l2ig picked it up and made this PR. Thanks, @l2ig!.

back to miscellaneous

chore: remove unnecessary TODOs from api, update TODOs with issue numbers (#3472)

Housekeeping to update code TODOs with links to matching Issues.

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)
  • Architecture not supported (#2256)
  • Add eth_feeHistory RPC endpoint (#1470)
  • 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:

  • Add flag for starting ganache in detached mode (#1001)
  • Accept a genesis.json file (#1042)

Coming Soon™:

  • Switch to esbuild to make build times faster/reasonable (#1555)
  • Add eip-155 support (#880)
  • Allow to sync forked chain to the latest blcok (#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