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

feat: pectra compatibility #1053

Open
wants to merge 6 commits into
base: feat/prooftra
Choose a base branch
from

Conversation

ypatil12
Copy link
Collaborator

@ypatil12 ypatil12 commented Jan 28, 2025

Updates checkpoint proof system to be Pectra compatible. The breaking change to EigenPods is the BeaconState container increasing to have 37 fields, which results in the tree height to be > 5.

Overview

  • We hard code the proof timestamp in the BeaconChainProofs library, since the mainnet proof timestamp will be telegraphed 2-3 weeks in advance of the upgrade. I'm particularly looking for feedback on this approach
image
  • To mitigate all possible risks, the other option would be to have the OpsMultisig set the proofTimestamp closer to fork time (this could not be the owner because on mainnet this is the ExecutorMultisig)

EigenPod

  • Updated balance container and validator container proofs to pass in a proof timestamp to check against which tree height to use for the beacon state
  • Note that since the 4788 oracle returns the PARENT beacon block root, our check against the pectra fork timestamp returns the previous tree length for proofs that are <= pectraForkTimestamp

Deprecation Plan

  • Post pectra, we can upgrade the EigenPod to deprecate the fork timestamp case handling once all in progress pre-Pectra checkpoints have been completed

TODOs

  • Unit Tests
  • Integration Tests simulating upgrade
  • Mekong Deployment

@ypatil12 ypatil12 mentioned this pull request Jan 28, 2025
3 tasks
@ypatil12 ypatil12 force-pushed the slashing-magnitudes branch from 7a6f8a6 to fbe5ee2 Compare January 28, 2025 18:23
@ypatil12 ypatil12 changed the base branch from slashing-magnitudes to dev January 28, 2025 21:48
@ypatil12 ypatil12 force-pushed the yash/pectra-compatibility branch 4 times, most recently from 8b3076f to 8679ebb Compare January 28, 2025 21:55
@ypatil12 ypatil12 changed the base branch from dev to feat/prooftra January 29, 2025 22:11
@ypatil12 ypatil12 changed the base branch from feat/prooftra to dev January 29, 2025 22:31
@ypatil12 ypatil12 force-pushed the yash/pectra-compatibility branch from 8679ebb to 392022e Compare January 30, 2025 01:14
@ypatil12 ypatil12 changed the base branch from dev to feat/prooftra January 30, 2025 01:15
@ypatil12 ypatil12 force-pushed the yash/pectra-compatibility branch 4 times, most recently from d71e908 to 2e9ab01 Compare January 30, 2025 02:12
@ypatil12 ypatil12 marked this pull request as ready for review January 30, 2025 20:34
Copy link

@eigenmikem eigenmikem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK the fork timestamp has never been altered once broadcast, at least not in the last few years, so I think hardcoding it is fine

@ypatil12 ypatil12 force-pushed the yash/pectra-compatibility branch from d849720 to f5dbfb8 Compare February 4, 2025 23:16
@@ -254,6 +255,7 @@ contract EigenPod is Initializable, ReentrancyGuardUpgradeable, EigenPodPausingC
for (uint256 i = 0; i < validatorIndices.length; i++) {
// forgefmt: disable-next-item
totalAmountToBeRestakedWei += _verifyWithdrawalCredentials(
beaconTimestamp,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I wonder about the usage of getParentBlockRoot above.

Can beaconTimestamp belong to the block after the fork, but the proof itself is over the parent block (aka pre-fork)?

Copy link
Collaborator

@wadealexc wadealexc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this PR targeting testnet?

We're going to need a different PR for mainnet, since that's landing before slashing, right? (This EigenPod file is compatible with testnet slashing, but not mainnet)

@ypatil12
Copy link
Collaborator Author

ypatil12 commented Feb 5, 2025

Is this PR targeting testnet?

Yup, targeting testnet. There will be a separate mainnet PR. cc @wadealexc

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

Successfully merging this pull request may close these issues.

3 participants