Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v6 Breaking Release Planning #1717

Closed
33 of 51 tasks
holgerd77 opened this issue Feb 16, 2022 · 2 comments
Closed
33 of 51 tasks

v6 Breaking Release Planning #1717

holgerd77 opened this issue Feb 16, 2022 · 2 comments

Comments

@holgerd77
Copy link
Member

holgerd77 commented Feb 16, 2022

Follow-up on #907
Work branch: develop
Replaces #1024

Update of develop branch: no merges / only rebase (~weekly by @holgerd77)
Update of feature branches: no merges / only rebase

Planned Release Date (Timeframe): Latest somewhat before Merge HF (~Summer 2022), eventually earlier

Breaking Changes / Deprecation Tasks

Monorepo / All Releases

Error Management

BigInt Support

  • Switch from BN.js to native JS BigInts for external API usage and/or inner-functional computations and data handling, so on the entire stack (also switch along API on BN.js using functions (e.g. Common.nextHardforkBlock())).
    • Note: This is highly connected to a decision on Upgrade ethereum-cryptography to 1.0 #1668 - so an upgrade to ethereum-cryptography v1.0, since the underlying noble libraries use BigInt anyhow which would be an implicit decision to integrate native BigInts throughout the stack.
TODOs

Consensus Encapsulation / Separation

  • Separate consensus functionality in Blockchain/Block (and eventually other libraries) and give this a unified API. This will allow for an easier consensus switch or replacement. Block: Encapsulate Consensus Mechanism #1044

ESM Support

[ In Discussion / Needs Decision ]

VM

Standalone StateManager

  • Create a standalone StateManager package together with a state manager functionality rework (leave all VM related stuff in the VM) and an API overhaul (all interface functions necessary? Genesis functionality?) Issue: Create standalone StateManager package #1599
Related TODOs / Decisions

Note: all the TODOs should be re-evaluated in the context of the StateManager rework (still desired to add a certain method? Stuff like that.)

Standalone EVM

  • Extract everything in the evm folder as a standalone package and define a stable API. This allows for a cleaner interface towards the EVM and to easier extend the core EVM or to switch out the EVM entirely which will be useful for L2 and other integrations, PR EVM/VM refactor #1862
  • Eventually restructure/sort VM exports (directly expose Bloom, other?, unified type location, type/interface exposure, index.ts -> vm.ts+ index.ts only for exports), this needs another look once the EVM extraction is done, also: generally have one alignment look along all the packages (included in the releases)?

Other

Below tasks resolved with #1815

Blockchain

TODOs

[ In Discussion / Needs Decision ]

None.

Block

Centralized Default Value Setting

  • Switch to centralized default value setting in the main constructor instead of setting in the static constructors, switch to a parameter dict for passing in values to the main constructor (instead of a long list of separate values), make BlockHeader.fromHeaderData (would need some check for Block.fromBlockData, likely as well) simply an alias for the main constructor instantiation using the same (typed) API, see changes/updates in the tx library for reference Block: Rework fromHeaderData() and main BlockHeader constructor #1738

Other TODOs

[ In Discussion / Needs Decision ]

None.

Transaction

[ In Discussion / Needs Decision ]

None.

Common

[ In Discussion / Needs Decision ]

  • @ryanio in this comment: we should keep default exports (helpful pattern), moving to esm exports will help fix these problems for poeple who are having trouble with "type": "module" without esModuleInterop being true in their tsconfig.

Util

Library Renaming

  • Library is still in the old ethereumjs-util naming scheme. This should be brought into the new naming scheme and library renamed to @ethereumjs/util

BigInt Util Functionality/Support

  • Library should get an overall analysis on how/where to support the new BigInt integration (BigInt constants, conversion functionality, eventually others).

Signing / Hashing Functionality Removal

Other TODOs

[ In Discussion / Needs Decision ]

Following TODOs only if no signature module removal (see above):

Trie

@holgerd77
Copy link
Member Author

Some update and reference here: this list won't be updated any more. Finalization of tasks/inclusions has been done within the realm of the Beta 1 releases #1957 being released on June 30, 2022.

This issue should nevertheless stay open as some point of reference until the final releases are done (and likely also some 2-3 weeks after that).

@holgerd77
Copy link
Member Author

Closed by #2270

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant