Skip to content

Latest commit

 

History

History

roadmap

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

EF JavaScript Team Roadmap

On this page you can find our team roadmap as well as recaps for the previous years. Roadmap updates are done throughout the year and try to reflect our current state of planning and thinking ahead.

Roadmaps by year:

2024 Recap

In 2024 priorities shifted substantially over the year and some focus areas haven been downgraded substantially while others have been newly taken in. The following sections give a quick overview on the dynamics.

Classic EthereumJS Client Development (Downgraded)

The EthereumJS client is an indispensable research tool for EIP prototyping due to its highly modular structure. At the same time limits on classic usage became even more clear throughout the year, partly by the rise of (even) more performant L1 client alternatives like the Reth Rust-based client. We have therefore substantially downgraded implementation efforts on things like SNAP sync, a flat database layout for (stateful) state storage, a wider devp2p refactor or client multithreading support, which initially had some stronger presence in our 2024 roadmap. Some of these might still be useful and followed upon on the sideline, though with less ressources applied.

Browser Support (Substantially Upgraded)

JavaScript is THE programming language for the browser. Throughout the year it became clear that we had largely underappreciated one central browser-related topic and challenge around our libraries: the size of the bundles created from our libraries to be possible to be loaded in a web context. Especially for our EVM the bundles libraries (so: also including the 3rd-party dependencies) were several 100KBs too large to get efficiently loaded within a website context. We have therefore significantly ramped up efforts here, restructured a lot of code to allow for removal of unnecessary code paths ("tree shaking") and removed unnecessary dependencies, culminating in our October/November 2024 breaking releases with bundle size reductions e.g. for our EVM of 60% and greater.

Together with some other browser-related improvements these releases mark the first moment in time where the Ethereum L1 protocol stack is now fully ready to be used within web browsers without substantial limitations.

Security (Substantially Upgraded)

This topic aligns very well with the above browser support one: since the libraries are now fully browser ready (and things like EIP-7702 account abstraction is on the horizon) they - and particularly the EthereumJS EVM - will likely be used for more "serious" and security-sensitive production use cases in the future. To take this into account we gave security a lot stronger emphasis than initially planned. The dependency reduction from above is also a big step towards a more secure JavaScript EVM. Through a collaboration with Paul Millr from noble Crypto we were able to replace remaining WASM implementations for EVM precompiles (BLS, BN254 (aka alt_BN128)) as well as the 4844-related KZG crypto with pure JavaScript implementations (the WASM code is not auditable and therfore less secure and even excluded to be used by policy by security-sensitive products like MetaMask).

This makes up for a fully auditable JavaScript EVM for the first time and we plan to have an EVM audit done throughout 2025.

EIP Implementation & Testing (Expanded)

The EthereumJS stack is historically being build up in a very modular way and is therefore well suited for EIP prototyping and early on integration. 2024 was a year with a lot of protocol work to be done and our team increased its engagement here.

Some examples are:

  • Pectra HF devnet-3, prototyping (EIP-2935), lot of spec refinement work
  • devnet-4, previous EIP-7702 test filling
  • Verkle devnets participation, stateless block execution, spec work
  • EIP-6493 Stable Container Prototyping

Since autumn 2024 we are able to fill execution-spec-tests, which is the new test format for the Ethereum L1 protocol. We plan to build upon this new capability, which aligns well with our early-on EIP prototyping work and embed within the team in a way that we can regularly contribute new test cases throughout 2025 and therefore do a substantial contribution to secure the protocol.

Ultralight / Portal Network

For Ultralight respectively the Portal Network, 2024 was the year where all the pieces slowly came together. Existing specs like for the Portal history network were finalized and battle tested so that these parts can be leveraged for concrete integration projects like making EIP-4444 (prune historical block data) a reality.

Since we have both an L1 as well as a Portal stack our team is well positioned to contribute with early prototyping, spec work and integration.

In 2024 we e.g. have started a prototype EIP-4844 integration, have done a lot of bootnode work to support the evolving Portal Network testnets and have substantially contributed to both spec definition and refinement of the state network by doing a first full implementation of the spec - see e.g. PRs #539 and #649. The state network is one of the core networks of the Portal Network data network suite with the goal to provide distributed and lightweight access to the Ethereum state, one of the harder problems to solve due to the (growing) size of the Ethereum network state.

Ethers.js

Ethers.js is not part of the EF JavaScript team anymore but is now an independent entity within the EF.

Q4 2023 Recap

DevEx & VM

  •  Breaking Monorepo Releases Community Support

Hardforks & EIPs

  •  Post-Shanghai EIP implementation Work

Research, Client & Testnets

  •  EthereumJS Client Lightclient Strategy and Production Roadmap (somewhat, lightclient paths more clear now, but still evolving)

Portal Network

  • Launch portalnetwork v1.0.0 with history/light client update/state network functionality
  • Improve Ultralight documentation and quickstart guide.
  • Maintain Ultralight public bootnodes and bridge nodes.
  • Update and improve Ultralight browser tools, demos, and documentation.
  • History Network Reference Production Integration Partnership (based on Q3 analysis)

Ethers.js

  • This will be (likely) almost entirely focused on v7 features, refactoring and
  • Migrating v6 ancillary packages to be v7-ready with collaborator assistance
  • Updating documentation for v7

Q3 2023 Recap

DevEx & VM

  •  Final Breaking Monorepo Releases

Hardforks & EIPs

  •  EIP-4844 Robustness Work & Live Testing
  •  EOF EIPs Robustness Work & Live Testing (EOF stuff postponed, roadmap changes)

Research, Client & Testnets

  •  Post-Shanghai Functional EIP/HF Testnet (no, turned out EIP-4844 taking a lot more space than expected)
  •  EthereumJS Client Portal Network Integration Feasibility Analysis (somewhat: Lodestar/Ultralight integration)
  •  EthereumJS Client LES sync via engine API (Beacon Light Client) (somewhat: Lodestar/Ultralight integration -> CLient integration with Lodestar/Ultralight)

Portal Network

  • Deep testing and debugging of client interop in Portal-Hive
  • Implement initial spec for Beacon Light Client Network
  • Experimental integration of Portal and LightClient
  • Convert Ultralight testing suite to vitest
  • History Network Reference Production Integration (e.g. EthOS, other) Analysis

Ethers.js

  • Ancillary libraries for Contract Wallets; a small (but vocal) group has been advocating for this, so it may be moved earlier; the goal is to get a working demo and then allow them to further contribute
  • More serious planning for v7, as I want to switch to a more regular annual release cycle to reduce the impact on version bumps by making more, smaller major releases
  • Expand the cookbook section with more real-world examples, with JS and Solidity; EIP-712, signing, tokens, etc.

Q2 2023 Recap

DevEx & VM

  • VM/EVM Optimism L2 Support Integration (depends on Q1 analysis) postponed, but some base work done in PR #2713
  •  Monorepo-wide Node.js Buffer -> Uint8Array Switch (huge, but: Browser + React Compatibility!) 🎉
  • Transaction Library Refactor (Modularize -> Typed Tx Diversification!) (later: Q3 2023)
  • Monorepo-wide ESM Build Support (along Summer 2023 breaking releases)
  • Breaking Monorepo Releases v7 (Beta)

Hardforks & EIPs

  •  EIP-4844 Shard Blob Transactions Spec Finalization (later, spec not finalized at that point)
  •  EOF Implementation: EIP-4200 Static Relative Jumps (EOF stuff postponed, roadmap changes)
  •  EOF Implementation: EIP-4750 EOF Functions (EOF stuff postponed, roadmap changes)
  •  Shanghai HF Preparations (Testnets, Developer Tools, Community Support)

Research, Client & Testnets

  • EIP-4844 Shard Blob Transactions Multi-Client Testnet
  • Multi-client EOF-focused testnet (EOF stuff postponed, roadmap changes)
  •  Verkle Tree Specification Updates
  •  EthereumJS Client SNAP Sync Production Release (no, takes longer than expected)
  •  Client In-browser sync feasibility analysis (Lodestar Light Client + Sepolia LES)

Portal Network

  • Explore integration of Lodestar or Kevlar CL light client with Ultralight for feeding light client update data to Beacon Light Client Update Network
  • Build WebRTC transport layer for discv5 to allow direct p2p connections for browser clients
  • R&D of solutions to challenges in Merkle basic State Network design and client implementation
  • Begin implementation of Rendezvous protocol in Discv5

Ethers.js

  • Release tools.ethers.org, a tool to simplify many common debugging tasks as well as quickly testing open issues marked “investigate” (currently playground.ethers.org handles much of this, but tools is for more specific issues)
  • Begin opening up additional repositories, adding other external contributors to help with Network-specific v6 plugins and ancillary libraries like LedgerSigner
  • Migrate many “common” issues/discussions to the documentation cookbook section and Ethereum basics section and add links to the issues/discussions to these sections of the documentation

Q1 2023 Recap

DevEx & VM

  • VM/EVM Performance Improvements (Memory Management, Others)
  • VM/EVM (Other) Post-Breaking Release API Optimizations
  • VM/EVM Optimism L2 Support Feasibility Analysis (partly, see PR #2713 and related)
  • EVM Standalong Capabilities (after VM/EVM extraction) (done a bit later along Summer 2023 breaking releases)

Hardforks & EIPs

  • EIP-4844 Shard Blob Transactions Draft & Local Geth Testnet Integration
  • EIP-4844 Shard Blob Transactions KZG Library Analysis & Integration
  • EIP-4895 Beacon Chain Withdrawals (Shanghai) Spec Finalization

Research, Client & Testnets

  • Integration of the EthereumJS Client with Verkle Testnets (Condrieu, Beverly Hills, and Future Ones)
  • Verkle Trie "Stateless" State Management and Proof Verification
  • Verkle Tree Specification Work & Performance Analysis
  • EthereumJS Client SNAP Sync Draft Implementation (yes, but later)
  •  Reactivate Client Browser Build -> Stalled until active use case (statelessness)

Portal Network

  • Wrap up any loose ends from History Network implementation - (alpha version of portalnetwork module for chain history)
  • Implement prototype of Beacon light client update network
  • Begin exploration of WebRTC to allow for p2p discovery of browser clients using libp2p/waku gossip

Ethers.js

  • Documentation-specific pull request templates, GitHub actions and webforms to streamline (while retaining safety) user-contributed documentation changes to code
  • Much richer stats and tools to drill down into build.ethers.org for tracking changes, code coverage and testing (especially for auditing purposes)
  • More documentation, especially regarding Ethereum basics, based on common issues; this will be open to additional contributors too
  • Aggressive resolving and closing of GitHub issues and PRs; hopefully v6 will have resolved many of these, others can be migrated to discussions
  • Migrating to (or at least making a stronger presence) Mastodon for ethers for its advisories

Q4 2022 Recap

DevEx & VM

  • Dedicated RPC-backed EthersStateManager for easier Mainnet Transaction Debugging

Hardforks & EIPs

  • EIP-4895 Beacon Chain Withdrawals Support (Shanghai HF)
  • EIP-3540 / EIP-3670 EVM Object Format (EOF) Test/Specification Work

Research, Client & Testnets

  • Early Pre-Shanghai EthereumJS/Lodestar-based Shandong Testnet (https://shandong.ethdevops.io/) 🎉
  • Client UX-focused RPC Improvements (eth_gasPrice, eth_feeHistory,...)
  • Lodestar/EthereumJS CL/EL Client Combination Live Testing and Optimization
  • Structural Dynamic Testnet Setup Automation / Post-Merge Testnet Improvements
  • Verkle Trie "Stateless" State Management and Verkle Blocks Processing

Portal Network

  • History Network Protocol Spec Update (Accumulator/ChainID/Content-Key changes)
  • Continued Browser Client UX Improvments
  • Database Pruning for Subprotocols
  • UTP Protocol Congestion Control Refactor

Ethers.js

  • Ethers v6 Release Candidate
  • Ethers v6 Release Documentation Updates

Q3 2022 Recap

DevEx & VM

  • VM/Monorepo Breaking Release Finalization Work (Community Feedback)
  • Default Merge HF for all Monorepo Libraries
  • Trie Library Generalization/Modularization (DB / Hash Function)
  • UX focused Trie Library Refactor (Renamings / Customizability)
  • Monorepo Package NPM Dependency Reduction Part I (security)
  • Monorepo Adopt Stricter Code Formatting Rules (Linting) (security)
  • GitPOAP Cooporation EthereumJS Monorepo
  • Monorepo Geth Genesis Format Compatibility (VM/Tx/Block/Client)
  • Monorepo Final Breaking Releases 🎉

Hardforks & EIPs

  • Merge HF Spec Finalization
  • Sepolia Merge HF Integration
  • Merge HF Community Integration Support (Hardhat, Ganache, Other)

Research & Client

  • SNAP Protocol Base Layer Implementation (Networking/devp2p)
  • Client SNAP Protocol Synchronizer Draft

Portal Network

  • Deeper Header Accumulator Integration (History -> getBlockByNumber, Header Proof Validation)
  • Refactored RPC Method Exposure Base Layer
  • First Draft of portalnetwork ethers compatible JsonRpcProvider integration 🎉
  • Improved Portal Network Experimentation Console (Browser Client)
  • History Network Receipt Integration

Ethers.js

  • Integrated new ENS normalization specification
  • EIP-712 Type Exports
  • Continued Improved L2 Integration (Arbitrum/Optimism)

Q2 2022 Recap

DevEx & VM

  • VM Improved L2 Modularization (custom Precompiles, separated VM/EVM)
  • Expanded Chain Customizability (L2/Others) (extracted StateManager, encapsulated Blockchain consensus)
  • Selected VM Performance Optimizations (not as far reaching as planned)
  • Wide-reaching Code Clean-Up Work and Deprecations on various Libraries (Breaking Release Preparation)
  • VM Native JavaScript BigInt Integration (performance / security)
  • Crypto Primitives (Hash, Signature) Library Switch to modern audited Library (Noble) (security)
  • Trie Library Database Abstraction
  • Monorepo Package Unification (consistent @ethereumjs namespace)
  • Monorepo Breaking Releases (Beta 1)

Hardforks & EIPs

  • Merge HF Spec Update Implementation (Engine API / Beacon Sync)
  • EIP-5133 GrayGlacier HF Support (Difficulty Bomb, Merge Preparation)
  • EIP-3074 Authcall Implementation

Research & Client

  • Client "Grown-Up" Transaction Pool Integration
  • Both lightweight sync + verkle tree implementation postponed (breaking release focus)

Portal Network

  • Initial Android App (Portal Network PoC for Mobile Context)
  • Header Gossip Subnetwork Integration
  • Stable communication with other clients (Fluffy/Trin) for sub networks from Q1
  • Rendevous Protocol Integration (ENR request along NAT/Firewall issues)
  • External ChainSafe DiscV5 library integration
  • Browser-Support Analysis and PoC (Web-Storage)
  • Specification Implementation Refactoring (dedicated Protocol class)
  • Header Accumulator Spec Implementation (History Network)
  • First Canonical Indices Protocol version
  • Ultralight Electron App
  • portalnetwork library API PoC (getBlockByNumber RPC Call)

Ethers.js

  • Focus on tooling, especially on the playground and the toolkit
  • Improved L2 Integration (Optimism/Matic)

Q1 2022 Recap

DevEx & VM

  • VM Support Feasibility Analysis for EVM equivalent L2 Solutions (e.g. Optimism)
  • VM Modularization (Custom Opcodes, Precompiles, State) (L2 Support)
  • 1 additional VM/client hire (Gajinder Singh)
  • Breaking Release Preparation (Summer 2022): BigInt Refactor
  • Breaking Release Preparation (Summer 2022): Noble Crypto Library Integration
  • Breaking Release Preparation (Summer 2022): StateManager extraction

Hardforks & EIPs

  • Production-ready Merge releases of VM and other libraries (Kiln v2.1 specs)
  • First Shanghai HF EIP implementations (scope still open)
  • EIP-3855: PUSH0 instruction (Shanghai CFI)
  • EIP-3860: Limit and meter initcode (Shanghai CFI)
  • EIP-1153: Transient Storage Opcodes
  • EIP-3540: EVM Object Format (EOF) v1 (Shanghai CFI)
  • EIP-3670: Code Validation (Shanghai CFI)

Research & Client

  • Client Mainnet Sync Improvements (more robust Fetcher logic)
  • Merge Kiln testnet support
  • First EthereumJS (+ Lodestar) block proposal on public testnet (Kiln)
  • Light Client Work (PoC) with Lodestar (VM/Trie Proof functionality), e.g. here
  • Hive (https://github.com/ethereum/hive) Test Framework Integration
  • Verkle Demo Network PoC (Stateless block execution EthereumJS Client) (Project with Geth, Guillaume Ballet, others)

Portal Network

  • Structural Setup (Monorepo, Software Tests, CI, Code Cleanup)
  • Robustness of the networking layer (portalnetwork module)
  • Draft implementation for 1-2 sub networks (e.g. state / history)
  • Stable browser networking topology
  • Integration in semi-public test network with other clients (Fluffy, Trin)
  • Portalnetwork block explorer PoC
  • Demo integrations with Android and iOS
  • 1-2 additional hires for the project

Ethers.js

  • Ethers v6 release preparation (release planned April/May 2022)
  • EIP-2098 compact signatures
  • EIP-2544 ENS Wildcard support
  • Better IPFS support

Q4 2021 Recap

General Library Work:

  • EthereumJS: continued hardening (bug resilience, performance) of VM by client, mainnet progress, Shanghai Attack Work
  • EthereumJS: continued performance work (VM, other), e.g. VM, Tx
  • EthereumJS: Client Reliability and Sync Improvements, e.g. here

Hardforks / Releases:

  • EthereumJS -> Non-Breaking Releases: VM dynamic gas cost refactor (better Hardhat gas cost reporting), StateManager refactor, non-HF EIPs (EIP-3607, EIP-2681)
  • EthereumJS ArrowGlacier HF Releases
  • EthereumJS Better Optimism L2 Support

Dedicated Projects:

  • EthereumJS: "The Merge" Pithos, Kintsugi Testnet Releases (Client, Blockchain, Block, Common)
  • EthereumJS: Verkle Tree WASM compile from Rust (Geth cooperation)
  • EthereumJS: EthereumJS Client Verkle Proof Consumption + Stateless execution, first prototype (Geth cooperation)
  • EthereumJS: Portal Network Structural Project Setup (Repositories, team planning)

Ethers:

  • Ethers: ethers/v6, with an emphasis on using more moderns JavaScript features (ES5), more comprehensive TypeScript and ancillary packages (enabling easier external contributors)

Q3 2021 Recap

General Library Work:

  • EthereumJS: continued performance work (VM, other), monorepo performance-related issues
  • EthereumJS: Stateless work with some focus on VM stateless execution and improved witness support/integration (eventually divide between Q3/Q4)
  • EthereumJS: Initial L2 Support (Arbitrum, Polygon, xDai), PR #1317
  • EthereumJS Client: Sync improvements / basic tx pool
  • EthereumJS Client: Miner / Local dev testnets

Hardforks / Releases:

  • EthereumJS Client: First stable v0.1 release
  • EthereumJS: Improved Custom Chain Support

Dedicated Projects:

  • EthereumJS Client: The Merge structural integration (Client, other)
  • EthereumJS Client: The Merge testnet participation (Interop event), see e.g. Twitter
  • EthereumJS: Portal Network, early experiments and PoC implementations (handshake for a selected protocol)

Ethers:

  • Ethers: ethers issue and PR burn-down, closing issues and moving discussion issues to the discussions feature
  • Ethers: new website, adding the new tools, starting with the Playground and Toolbox (stretch goal of the Wallet w/ transaction composer)

Q2 2021 Recap

  • EthereumJS VM: Block Builder API (Hardhat / Client), PR #1158

  • EthereumJS: Post-Berlin ecosystem update work, e.g. PR 1206

  • EthereumJS: Tx Library ecosystem usability & documentation work, e.g. PR #1214 or PR #1283

  • EthereumJS devp2p: Reliability improvements, first production-ready release, PR #1218

  • EthereumJS: London preparation / active London research work, e.g. PR #1218

  • EthereumJS: EIP-1559, PR #1239

  • EthereumJS: London EIPs (EIP-3529, EIP-3541), e.g. PR #1239

  • EthereumJS Client: First "The Merge" draft implementations, PR #1265

  • Ethers: v5.4 EIP-1559

  • Ethers: v5.3 Elliptic-related fixes

  • Ethers: v5.2 BigInt, custom Contract Errors

  • Team: 1 new full-time and 2 new part-time hires

Q1 2021 Recap

  • EthereumJS: Clique PoA Protocol Integration, PR #1032

  • EthereumJS: Custom Chain / L2 Improvements I, PR #1034

  • EthereumJS: Berlin HF Support & EIP Implementations (e.g. EIP-2718, EIP-2930), PR #1048 and PR #1151

  • EthereumJS VM: Ecosystem Education & Debugging Experience, PR #1080

  • EthereumJS Client: VM Execution, PR #1028

  • EthereumJS Client: Developer Testnet Readiness (Yolo v3 and beyond), PR #1129

  • EthereumJS Client Beam Sync (Head State) Draft Implementation

  • EthereumJS Devp2p/Client: ETH/65 Implementation, PR #1159

  • Ethers: EIP-2718 & EIP-2930 Support, Release v5.1.0

  • Ethers: Ecosystem coordination for EIP-2930 (Etherscan, Alchemy and Pocket)

  • Ethers: v6 Planning