Skip to content

All Core Devs - Consensus (ACDC) #154 #1399

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

Closed
ralexstokes opened this issue Mar 20, 2025 · 15 comments
Closed

All Core Devs - Consensus (ACDC) #154 #1399

ralexstokes opened this issue Mar 20, 2025 · 15 comments
Labels
ACD Type: All Core Dev calls - execution & consensus Consensus Layer: Issues that affect the consensus layer

Comments

@ralexstokes
Copy link
Member

ralexstokes commented Mar 20, 2025

All Core Devs - Consensus (ACDC) #154, April 3, 2025

  • Apr 3, 2025, 14:00 UTC
  • 90 minutes
  • Recurring meeting : true
  • ACDC
  • bi-weekly
  • Already on Ethereum Calendar : false
  • Need YouTube stream links : true
  • Other optional resources
  • stream

Agenda

  1. Electra
  2. PeerDAS / blob scaling
  3. Fusaka
  4. Research, spec, etc.

Facilitator email: [email protected]

@github-actions github-actions bot added ACD Type: All Core Dev calls - execution & consensus Consensus Layer: Issues that affect the consensus layer labels Mar 20, 2025
@vbuterin
Copy link

One thing that we should start agreeing on asap is the exact way "blob parameter only forks" can be done.

Here's the approach that I currently favor:

  1. We make the blob target/limit staker voted, just like the gas limit (perhaps, we hard-code target = limit * 2/3, and make the blob limit staker voted)
  2. We have a social consensus rule that it's okay for clients to proactively increase the default value that stakers vote for

This has a few benefits:

  1. With this approach, increasing the blob parameter count becomes at worst as hard as than doing an actual (minimal) hard fork. This is because doing any kind of hard fork requires stakers to update their nodes, and this approach also gives us blob parameter increases as soon as stakers update their nodes, because new versions of node software will have new default voting blob parameters.
  2. In fact, it becomes faster than a hard fork. This is because (i) we don't need the overhead of testing, devops, getting consensus, and (ii) we only have to wait for 51% of stakers updating nodes, rather than 100%.
  3. If the hard fork machinery stalls for whatever reason (this has happened in the past), we can still keep increasing blob parameters.

@KolbyML
Copy link
Member

KolbyML commented Mar 26, 2025

LightClientHeader includes invalid ExecutionHeader due to incorrect transactions_root and withdrawals_root calculation #4214

Currently the Light Client Protocol provides invalid Execution Headers, this causes a problem for users trying to track the EL chain using a Consensus Light Client.

Possible solutions

    1. updated the EL to use SSZ hash_tree_root for calculating transactions_root and withdrawals_root
      or
    1. update the CL to properly build ExecutionPayloadHeader in the light client protocol

I assume option 2. would be simpler, but option 1. would be more aligned with the long term goal to sszify the EL

This is a fairly big problem for any projects which are trying to utilize the Light Client Protocol e.g. Portal being able to validate the last 8192 EL blocks, since historical_summaries are only updated every 8192 slots or so.

Ideally we could resolve this in either Electra or Fulu, it would be great if there could be clarity by others on what would be the most realistic path to resolve this problem and get the fix included in a fork.

@ethDreamer
Copy link

ethDreamer commented Mar 26, 2025

@vbuterin

One thing that we should start agreeing on asap is the exact way "blob parameter only forks" can be done.

We make the blob target/limit staker voted, just like the gas limit (perhaps, we hard-code target = limit * 2/3, and make the blob limit staker voted)

I also like this. Only problem is things are pretty tight in fusaka right now and people wanna ship peerDAS ASAP. So I proposed a less invasive version which just uses a config change just so we can easily fit BPO forks into fusaka. I'm happy with an on-chain voting version like that but if people think that's too much, I'd rather get the minimal version in than nothing:

https://eips.ethereum.org/EIPS/eip-7892

The EIP is a little outdated on the reasoning, the main reasons to do this (IMO) are here:

  • More Flexibility - can increase blob count outside hard forks
  • Easier Testing - single testnet that continuously increases blob limits at regular intervals to find bottlenecks
  • Easy to Implement - i prototyped it in lighthouse and reth and got it working in ~100 lines each. Hearing it might be more in Nimbus though.

More flexibility is especially important given that:

  1. It's difficult to say how well testnet performance will translate to mainnet given the number of unknown parameters (bandwidth distribution, supernode distribution, timing games)
  2. There are a number of proposals to improve gossip to scale blobs further:

Work on gossipsub will continue in parallel to peerDAS work but will likely lag behind. Blob capacity when peerDAS is ready will likely not match blob capacity after these networking improvements. We shouldn't need to delay shipping a moderate capacity increase in peerDAS because a larger capacity increase will be available later. Much better to do a BPO fork once the networking improvements are done.

Either way, would love to discuss on the call

@KolbyML
Copy link
Member

KolbyML commented Mar 26, 2025

LightClientHeader includes invalid ExecutionHeader due to incorrect transactions_root and withdrawals_root calculation #4214

Currently the Light Client Protocol provides invalid Execution Headers, this causes a problem for users trying to track the EL chain using a Consensus Light Client.

Possible solutions

    1. updated the EL to use SSZ hash_tree_root for calculating transactions_root and withdrawals_root
      or
    1. update the CL to properly build ExecutionPayloadHeader in the light client protocol

I assume option 2. would be simpler, but option 1. would be more aligned with the long term goal to sszify the EL

This is a fairly big problem for any projects which are trying to utilize the Light Client Protocol e.g. Portal being able to validate the last 8192 EL blocks, since historical_summaries are only updated every 8192 slots or so.

Ideally we could resolve this in either Electra or Fulu, it would be great if there could be clarity by others on what would be the most realistic path to resolve this problem and get the fix included in a fork.

After talking with @ralexstokes and @etan-status in this issue ethereum/consensus-specs#4214 (comment) it looks like option 2 was already attempted 3 years ago and didn't gain any steam.

So I don't think this problem should be discussed on ACDC as the only clear way to resolve this problem to my understanding is to push for EL to use SSZ hash_tree_root for calculating transactions_root and withdrawals_root under the serialization harmonization section of the Ethereum Roadmap. By updating the EL Header, EL light clients could follow the chain solely using a Consensus LightClient, as the EL header would be then included in the LightClientUpdates

@etan-status
Copy link

etan-status commented Mar 27, 2025

This is a fairly big problem for any projects which are trying to utilize the Light Client Protocol e.g. Portal being able to validate the last 8192 EL blocks, since historical_summaries are only updated every 8192 slots or so.

That's somewhat possible to validate today (via REST against an untrusted node)!

For the current sync committee period (since the last 8192 slot boundary), you can use the BeaconState.state_roots / BeaconState.block_roots property to root your proof. See the approach I am using for (WIP) beacon state snap sync work: https://github.com/etan-status/consensus-specs/blob/lc-snapsync/specs/altair/light-client/beacon-snapshot.md#beacon-snapshot-validation

For the last 8192 EL blocks, you can also use eth_call on the eip-4788 contract (with an in-process trusted EVM backed by eth_getProof based "beam sync")

Image

@timbeiko
Copy link
Contributor

On ACDE#208, we tentatively set the Pectra mainnet date to April 30. We should validate this on ACDC and ensure all teams have filled out the incident response plan.

@ralexstokes
Copy link
Member Author

leaving this here to start the discussion around fusaka blob counts:

https://hackmd.io/@ralexstokes/blob-acc-2025

Vitalik also suggested a more gradual formula that I think is good to consider

`max = 2 * (8 + (weeks % 8)) * (2 ** (weeks // 8))` and then `target = max * 2 / 3`

@nerolation
Copy link

nerolation commented Mar 31, 2025

max = 2 * (8 + (weeks % 8)) * (2 ** (weeks // 8)) and then target = max * 2 / 3

We will also need to automate the blob basefee update fraction.
To preserve asymmetric responsiveness introduced in EIP-7691 (e.g., +8.2% when blob gas is full, –14.5% when empty) under a dynamic blob gas maximum M, I suggest we use the following formula for the update fraction:

$U = \frac{M}{3 \cdot \ln(1.082)} \approx \frac{M}{0.2364}$

E.g., the BLOB_BASE_FEE_UPDATE_FRACTION would be 39,920,406 for 48/72 blobs.

@linoscope
Copy link

I would like to discuss and gather feedback on EIP-7917: Deterministic proposer lookahead (consensus spec PR)

@michaelneuder
Copy link

@mmp610 @mkalinin and i would like to give a brief overview of the queue changes we proposed in EIP-7922:

https://github.com/ethereum/EIPs/pull/9552/files
https://ethresear.ch/t/adding-flexibility-to-ethereums-exit-queue/22061

Copy link

github-actions bot commented Apr 1, 2025

Note: Meeting already exists for this call series. Skipping event creation.
Discourse Topic ID: 23340

Calendar Event

Telegram Notification

  • Sent message to Ethereum Protocol Updates channel

@abcoathup
Copy link

abcoathup commented Apr 1, 2025

On ACDE#208, we tentatively set the Pectra mainnet date to April 30.

Potential Pectra mainnet upgrade dates (unofficial) to help with planning

Reminder:

  • April 30 tentatively set, no date has been confirmed yet and is subject to change

Assumes:

  • 30+ days after announcement (currently when date tentatively set)
  • staking services can safely complete their testing (and migration to Hoodi testnet)
  • no major/blocking issues found during testing or bounty
  • pre-merge history expiry occurs after Pectra upgrade (rather than May 1)
  • upgrades scheduled for mid-week
Days after Hoodi Pectra upgrade Epoch Start Slot UTC (+00:00) Moscow (+03:00) Los Angeles (-07:00) New York (-04:00) Brisbane (+10:00) Local Time
+34 362496 11599872 2025-04-30 14:14:47 2025-04-30 17:14:47 2025-04-30 07:14:47 2025-04-30 10:14:47 2025-05-01 00:14:47 2025-05-01 00:14:47
+41 364032 11649024 2025-05-07 10:05:11 2025-05-07 13:05:11 2025-05-07 03:05:11 2025-05-07 06:05:11 2025-05-07 20:05:11 2025-05-07 20:05:11
+48 365568 11698176 2025-05-14 05:55:35 2025-05-14 08:55:35 2025-05-13 22:55:35 2025-05-14 01:55:35 2025-05-14 15:55:35 2025-05-14 15:55:35
+62 368640 11796480 2025-05-27 21:36:23 2025-05-28 00:36:23 2025-05-27 14:36:23 2025-05-27 17:36:23 2025-05-28 07:36:23 2025-05-28 07:36:23
+75 371712 11894784 2025-06-10 13:17:11 2025-06-10 16:17:11 2025-06-10 06:17:11 2025-06-10 09:17:11 2025-06-10 23:17:11 2025-06-10 23:17:11
+90 375040 12001280 2025-06-25 08:16:23 2025-06-25 11:16:23 2025-06-25 01:16:23 2025-06-25 04:16:23 2025-06-25 18:16:23 2025-06-25 18:16:23

From: Timings from upgrade scheduler slots.symphonious.net

@anderselowsson
Copy link

I would like to highlight EIP-7918. It is relevant to blob scaling since it stabilizes throughput, preventing extended periods of successive blocks above the blob target.

@akashkshirsagar31
Copy link

ACDC 154 Audio Podcast: https://open.spotify.com/episode/2ICctbO8JVimng97SNgB5y?si=qxEOZmWuRJKrx1hsGtPVEQ

@ralexstokes
Copy link
Member Author

closing in lieu of #1434

nixorokish added a commit to nixorokish/EIPs that referenced this issue Apr 7, 2025
update status to CFI for EIP-7892: BPO forks
- decision on ethereum/pm#1399 
- summary here: https://ethereum-magicians.org/t/all-core-devs-consensus-acdc-154/23340/2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ACD Type: All Core Dev calls - execution & consensus Consensus Layer: Issues that affect the consensus layer
Projects
None yet
Development

No branches or pull requests