HackMD
    • Sharing Link copied
    • /edit
    • View mode
      • Edit mode
      • View mode
      • Book mode
      • Slide mode
      Edit mode View mode Book mode Slide mode
    • Note Permission
    • Read
      • Only me
      • Signed-in users
      • Everyone
      Only me Signed-in users Everyone
    • Write
      • Only me
      • Signed-in users
      • Everyone
      Only me Signed-in users Everyone
    • More (Comment, Invitee)
    • Publishing
    • Commenting Enable
      Disabled Forbidden Owners Signed-in users Everyone
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Invitee
    • No invitee
    • Options
    • Versions and GitHub Sync
    • Transfer ownership
    • Delete this note
    • Template
    • Save as template
    • Insert from template
    • Export
    • Google Drive Export to Google Drive
    • Gist
    • Import
    • Google Drive Import from Google Drive
    • Gist
    • Clipboard
    • Download
    • Markdown
    • HTML
    • Raw HTML
Menu Sharing Help
Menu
Options
Versions and GitHub Sync Transfer ownership Delete this note
Export
Google Drive Export to Google Drive Gist
Import
Google Drive Import from Google Drive Gist Clipboard
Download
Markdown HTML Raw HTML
Back
Sharing
Sharing Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
More (Comment, Invitee)
Publishing
More (Comment, Invitee)
Commenting Enable
Disabled Forbidden Owners Signed-in users Everyone
Permission
Owners
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Invitee
No invitee
   owned this note    owned this note      
Published Linked with GitHub
Like1 BookmarkBookmarked
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
# EthereumJS Thoughts on Pectra and Beyond June 6, 2024 This document is about giving a somewhat structured take by the EF JavaScript team on a potential imminent Ethereum mainnet (L1) fork setup and structure, following takes from [Reth](https://docs.google.com/document/d/1IfOnozIhp93qkqZ7Jt-jVUvcdRDAv7HOdP4lnsOpu74/edit#heading=h.6ekswrac8es6), [EF DevOps](https://notes.ethereum.org/@ethpandaops/pectra-fork-thoughts), [Lodestar](https://blog.chainsafe.io/lodestar-pectra-roadmap-vision/) and [Besu](https://consensys.io/blog/besu-maintainers-on-the-pectra-fork) (not fully sure if this list is complete). We have extensively discussed this during our team call on Wednesday, June 5 and aligned (or not) positions from the different team members. ## Our Situation Just to give an overview on where we are regarding our insights into the different included discussed EIPs: we had a small presence at the Kenya core devs interop and successfully participated in the [pectra-devnet-0](https://notes.ethereum.org/@ethpandaops/pectra-devnet-0#Client-implementation-tracker) testnet. We have a working EIP-3074 implementation but haven't started on EIP-7702 (somewhat evolved version of 3074). Gajinder ([g11tech](https://github.com/g11tech)), being both on our and the Lodestar team, has done a PeerDAS implementation on the Lodestar side. We are actively engaged in Verkle testing and have participated in the latest testnets, Gabriel ([gabrocheleau](https://github.com/gabrocheleau)), also Gajinder, are the main experts (and contact persons) on this. Jochem ([jochem-brouwer](https://github.com/jochem-brouwer)) is following EOF development for quite some time, has done an early (and now outdated) full implementation and has now started on a [new one](https://github.com/ethereumjs/ethereumjs-monorepo/pull/3440) aligning with the latests Mega specs. This has substantially advanced but is not finished yet (~ at 50-60%). Holger ([holgerd77](https://github.com/holgerd77)) leads the EthereumJS team and can serve as a general contact person. ## Fork "Design" Considerations We do not want to give a full picture and stances here on "everything", since a lot has already been written and discussed and we can generally align with a lot of reasoning being done. So this document just emphasizes some things we think are important to consider. ### To Mega-Fork Or Not Currently discussed is the option to expand the current Pectra fork scope by including EOF and therefore do some kind of "Mega Fork". There is the notion of "Ethereum is historically better at big than at small forks" floating along. We regard this notion as describing the situation as "too binary" and while it has turned out that (too) small forks have high economic fixed costs there is nevertheless rather some "complexity equilibrium" where a fork size "finds its balance". While it is very true that client teams have improved a lot on their ability to manage forks and the overall process (management) has "professionalized", there is still some natural tenedency that the single parts in a fork get less and less attention the bigger a fork grows. While EOF might appear reasonable in size when having a first look at the (very condensed) [Mega EOF spec](https://github.com/ipsilon/eof/blob/main/spec/eof.md) a second deeper dive into the various (12) [separate EIPs](https://github.com/ipsilon/eof/blob/main/spec/eof.md#appendix-original-eips) though reveals that most of these EIPs have at least a mid level of complexity on its own and EOF on its own bears a complexity we formerly had for single hardforks alone. We therefore have a somewhat strong tendency to consider it - with all improvements on the tooling/process front - as too (and eventually: unnecessarily) risky to bundle EOF with the current already substantially sized fork scope. There are literally hundreds of edge (and general functionality) cases on EOF (behaviour of new opcodes, container/stack validation, substantial contract creation & control flow changes). All this deserves the full attention both by getting a very sufficient test coverage by the cross client tests as well as being tested thoroughly on the official testnets once deployed. It is also to be considered that EOF will cause a high level of disruption and the need to adopt "upstream", both on the higher levels of the wider protocol stack (Solidity, Vyper, Other) and the subsequent infrastructure and tooling (wallets with an eventual interplay on AA integration), integration tools like Ethers/Viem & literally everyone using the EVM. We do think it has benefits (and might be enough) if these parties have "only" this one big thing to concentrate upon and adopt along one fork go. Lastly to say: the current Pectra fork scope already has some solid amount of complexity to handle, and there is also the risk the other way around of *these* changes "falling under the bus". The BLS precompiles provide a very large surface for consensus failures and need to be thoroughly tested. And native AA introduction with EIP-7702 is a big step for the Ethereum network and should be thoroughly accompanied. For the above reasons we would somewhat strongly prefer to not bundle all this into one fork. If decided we could also live with the "one fork to rule them all" option though. ### EOF Importance and EOF/Verkle "Research Curves" While we do see heavy inherent complexity coming with the EOF changes we do regard EOF as a very important core upgrade to the network bringing a variety of extremely substantial "ground improvements" to the network engine. We won't recite here but can fully align with the summaries being written down on this by Dragan from the Reth team [here](https://hackmd.io/aZurva_kR2GQdOgJfS7B6A?view) or included in the Besu team blog post from above. Comparing the two "research and spec evolution curves" we perceive EOF as more settled, with the refinement parts of the research now literally happening over years while there are still heavier and more substantially spec changes in the Verkle spec, latest the folding of account data fields like nonce or balance into one [basic data field](https://github.com/ethereum/EIPs/pull/8576), as just one example. At the same time we do recognize the high importance for Verkle for the network together with the need to not delay this upgrade in a significant way, reasons sufficiently outlined in other posts and comments. We do think though that doing EOF still before Verkle might not have a delay effect, since both the work itself as well as the testing efforts are extremely distinct and it has already proven that test network deployment can very much happen in parallel. Since touching so different parts of the tech stack it also often turns out that implementation within the teams is mostly done by different persons with the respective expertise, so this might (?) also be not a substantial delay factor. Lastly to consider here: there is some interplay between Verkle and EOF, mostly going in the Verkle direction, meaning EOF and its structure update influencing how code chunking is done in Verkle. This might add to the argument to do EOF before Verkle to not have the need to do "Verkle twice" respectively need to adopt this part of the Verkle structure directly again. Generally we have to say that we do not have the full picture here yet regarding the interplay, also on potential eases or downsides (we have some tendency to think that EOF might rather ease things) and we only somewhat briefly discussed during the latest call. ## Preferred Fork Suggestion The considerations from above lead us to have the following somewhat preferred fork structure: ### 1. October 2024 Pectra Fork We do think it has benefits to keep the current Pectra fork in its current form including EIP-7702. Side note: we do not have any insights into the changes and scope to have any opinion as the side inclusion of EIPs 7495+7688 as proposed [by the Lodestar team](https://blog.chainsafe.io/lodestar-pectra-roadmap-vision/). While we do agree that there is some slight risk to intervene with Devcon - which would be a bit unlucky - we perceive the progress on the testnets as very solid and so the chance to have an in-time and uneventful fork as high. So we think this is a risk worth to live with - especially give the otherwise happening delay-cascade by Devcon and then holidays - and would propose a targeted fork date for early or mid October 2024. ### 2. Q1 2025 EOF (PeerDAS) Fork We would then intentionally propose a somewhat aggressive EOF fork timeline, with the fork being proposed directly for Q1 2025 (likely end of Q1 though) and not e.g. Q2 to not substantially shift the Verkle fork timeline, even if placed before the Verkle fork. This would mean that first EOF testnet forks should basically "directly" happen after Pectra with first forks still being scheduled for this year. Thesis here: if we have made so much progress on tooling/process we can also very much channel these capabilities in orchestrating two forks in a more parallel fashion. 🙂 This would give us a couple of extra months where the full attention/communication/testing can lay on EOF. While we are only "side-educated" on PeerDAS by Gajinder and do not have the full picture here this fork might also be suited to go along with PeerDAS being a distinct complementary feature introduction on the CL side. Also to note: yes, there is this risk of additional EIP demands and "natural fork growth". The agressive timeline together with the already big (and also very much clear and consistent) EOF scope might help to prevent the tempation to "go in" here on ACD-E calls on additional EIP requests. Or more actively framed: this will only work if we **lockdown the scope and entertain no further EIPs in a EOF/peerDAS fork**. Such a fork schedule would also imply for all client teams to **urgently work on EOF** if not already happening in a sufficient manner. ### 3. Q4 2025 Verkle Fork Whew, whew: two forks in one year? Short answer: yes. We do think that we are in a different situation here with these two "mega changes" being EOF and Verkle where research and implementation efforts happened over the years and timing interplay might play out different here than what we had with (most) previous forks. So we think that even with an additional EOF fork in Q1 we have some good chance to keep the schedule "as is". ## Conclusion The above presents another thought line how one can reason about scheduling of the on-the-horizon next 2-3 forks for Ethereum mainnet and we think it is worth to consider. However other teams have laid out their reasoning as well and we can very well also imagine to align with other proposals and go with the respective reasonings presented. This document is not claiming to take all important aspects into consideration and there might be strong arguments not presented here to take an alternative path.

Import from clipboard

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lost their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.


Upgrade

All
  • All
  • Team
No template.

Create a template


Upgrade

Delete template

Do you really want to delete this template?

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Sign in via SAML

or

Sign in via GitHub

Help

  • English
  • 中文
  • 日本語

Documents

Tutorials

Book Mode Tutorial

Slide Example

YAML Metadata

Resources

Releases

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions

Versions and GitHub Sync

Sign in to link this note to GitHub Learn more
This note is not linked with GitHub Learn more
 
Add badge Pull Push GitHub Link Settings
Upgrade now

Version named by    

More Less
  • Edit
  • Delete

Note content is identical to the latest version.
Compare with
    Choose a version
    No search result
    Version not found

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub

      Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

       Sign in to GitHub

      HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Available push count

      Upgrade

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Upgrade

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully