v7.4.1
Fixes
Miscellaneous
Changelog
Known Issues
Future Plans
For the month of August, the Ganache team is laser-focused on crushing tech debt.
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.
- fix: correct signature of
eth_getWork
(#3349) - fix: EIP-1559 access list transaction gas cost (#3227)
- fix: switch to user-provided logger rather than
console.log
(#3466)
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!
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:
- the up-front gas cost did not factor in the cost of the access list itself
- 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!
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.log
s 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.
- test: make bundle-size-check test run on external contributor PRs (#3408)
- build: ensure webpack's
INFURA_KEY
is exactly 32 lowercase hex characters (#3409) - refactor: fix typo in promise-queue/index.ts (#3434)
- test: make bundle-size-check test work again (#3444)
- test: correct webpack infura key validation error message grammar (#3443)
- test: replace
assert.equal
withassert.strictEqual
in tests (#3508) - chore: remove unnecessary TODOs from api, update TODOs with issue numbers (#3472)
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.
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.
refactor: fix typo in promise-queue/index.ts (#3434)
This is just a quick typo fix: entrys -> entries
. Thanks @eltociear
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.
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..."
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!.
chore: remove unnecessary TODOs from api, update TODOs with issue numbers (#3472)
Housekeeping to update code TODOs with links to matching Issues.
- #3408 test: make bundle-size-check test run on external contributor PRs (@davidmurdoch)
- #3349 fix: correct signature of
eth_getWork
(@emilbayes) - #3227 fix: EIP-1559 access list transaction gas cost (@robmcl4)
- #3409 build: ensure webpack's
INFURA_KEY
is exactly 32 lowercase hex characters (@davidmurdoch) - #3434 refactor: fix typo in promise-queue/index.ts (@eltociear)
- #3444 test: make bundle-size-check test work again (@davidmurdoch)
- #3443 test: correct webpack infura key validation error message grammar (@tenthirtyone)
- #3466 fix: switch to user-provided logger rather than
console.log
(@MicaiahReid) - #3508 test: replace
assert.equal
withassert.strictEqual
in tests (@l2ig) - #3472 chore: remove unnecessary TODOs from api, update TODOs with issue numbers (@tenthirtyone)
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
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)
Top Priority:
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)
Open new issues (or join our team) to influence what we gets implemented and prioritized.
💖 The Truffle Team