Skip to content

v6 Breaking Release Planning #1717

Closed
Closed
@holgerd77

Description

@holgerd77

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions