-
Notifications
You must be signed in to change notification settings - Fork 453
feat: pectra compatibility #1155
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ea044a9 to
3f2fd03
Compare
fix: rewards v2 audit fixes (#987) * fix: default operator split during first initialization * test: updated split tests feat: slashing release fix(slashing): upgrade script part 4 (#953) fix: patch (#956) feat: bindings (#960) fix: remove numtocomplete interface (#966) feat: add share helpers (#964) * feat: add share helpers * fix: add deposit scaling factor * fix: rebase fix: slashable window boundaries (#965) * fix: slashable window boundaries * test: regression for alm * test: update withdrawal delay not passed reversion * test: burning indices * refactor: switch conditionals * fix: added unit tests * test: assert slashable shares in queue * fix: typos --------- Co-authored-by: Yash Patil <[email protected]> refactor: small cleanup (#959) refactor small cleanup chore: `forge fmt` fix: `getQueuedWithdrawals` + test fix: add constructor back test: `totalQueued` > `withdrawal.strategies.length` test(wip): `completeQueuedWithdrawals` currently failing fix: effectBlock test(wip): @8sunyuan patch fix: one flaky test fix: second flaky test refactor: remove max strats list (#968) feat: slashing patch upgrade script (#967) * feat: initial deploy * feat: slashing patch fix non-present upgrade.json chore: bindings (#969) fix: try catch out of gas edge case (#971) chore: slashing consolidated script (#972) test: more slashing integration todos (#961) * test(wip): todos * fix: dealloc issue * fix: remaining * fix: forktest upgrade issue * test: add `check_Withdrawal_AsShares_State_AfterSlash` * refactor: cleanup * fix: ci * refactor: review changes docs: wip slashing docs (#925) * docs: add slashing docs * chore: bindings * docs: fixed commenting and updated queue withdrawal docs * docs: minor cleanup --------- Co-authored-by: Nadir Akhtar <[email protected]> refactor: scaled shares accounting (#975) * fix: correct expected share calc * chore: bindings * fix: rounding on failing unit test refactor: final slashing cleanup (#982) * chore: clean comments and naming in dm * refactor: simplify undelegate method * feat: removed 0 address check because 0 stakers cant be delegated * feat: condensed non-staker caller logic * refactor: remove unnecessary check * feat: use checks-effects-interactions when completing withdrawals * feat: remove implicit public method for queuedWithdrawals and impl dedicated getter * feat: deprecate withdrawer field * chore: make bindings and clean compile errors * refactor: redelegate reuses delegateTo and undelegate * fix: broken integration test * docs: update to reflect deprecated field * feat: add getter for stakers withdrawal roots chore: remove unused avsd events (#984) fix: integration test initialization params (#978) * fix: initialization params * fix: roll blocks usage fix: `SignatureUtils` construction (#990) * fix: integration test initialization params (#978) * fix: initialization params * fix: roll blocks usage * fix: `SignatureUtils` construction --------- Co-authored-by: Yash Patil <[email protected]> Co-authored-by: davidironblocks <[email protected]> fix: readd manual checks (#996) * fix: readd manual checks * chore: forge fmt feat: slashing 1.0.3 upgrade script (#995) * feat: add step 1 * feat: step 1 & 2 complete; pending step 3 sanity * test: add `_validateProxyDomainSeparators` * feat: add rc validation --------- Co-authored-by: clandestine.eth <[email protected]> fix: update alloc config delay bound (#985) * fix: update alloc delay bound * test: remove unnecessary roll chore: storage report (#1000) docs: shares accounting (#997) * docs: shares accounting * docs: fix gh markdown view * docs: try fix gh again * docs: cleanup * docs: edit share accounting * docs: wrap up share accounting doc * docs: edit edge cases --------- Co-authored-by: wadealexc <[email protected]> refactor: async burning (#1001) * refactor: burning * chore: fmt * chore: update storage report * chore: update readme * refactor: add burnableShares for epm storage * chore: update storage report test: `Snapshots` lib (#1002) docs: finish delegation manager docs (#1004) * docs: finish delegation manager docs * docs: update docs readme * docs: permission controller * fix: small typos * docs: address feedback * docs: nit --------- Co-authored-by: Michael Sun <[email protected]> docs: Strategy Manager slashing updates (#999) * docs: update StrategyManager docs with slashing delta * docs: remove references to thirdPartyTransfersForbidden * docs: update strategy docs to latest * also various edits to docs and natspec * chore: fmt and make bindings --------- Co-authored-by: wadealexc <[email protected]> docs: EigenPod Manager slashing updates (#1005) * docs: complete EigenPodManager for slashing * docs: add in _beaconChainSlashingFactor state variable note * docs: finish epm docs * chore: make bindings --------- Co-authored-by: wadealexc <[email protected]> fix: rebase fix: binding test: remove unneeded logic from integration test setup (#1023) test: enable shared setups for integration tests (#1036) * test: improve integration invariants * also removes unneeded fork logic * adds checks to some invariants * fixes some broken tests * test(integration): enable shared setups chore: comment out tests for which fixes are not in yet fix: rewards v2 audit fixes (#987) * fix: default operator split during first initialization * test: updated split tests feat: slashing release fix(slashing): upgrade script part 4 (#953) fix: patch (#956) feat: bindings (#960) fix: remove numtocomplete interface (#966) feat: add share helpers (#964) * feat: add share helpers * fix: add deposit scaling factor * fix: rebase fix: slashable window boundaries (#965) * fix: slashable window boundaries * test: regression for alm * test: update withdrawal delay not passed reversion * test: burning indices * refactor: switch conditionals * fix: added unit tests * test: assert slashable shares in queue * fix: typos --------- Co-authored-by: Yash Patil <[email protected]> refactor: small cleanup (#959) refactor small cleanup chore: `forge fmt` fix: `getQueuedWithdrawals` + test fix: add constructor back test: `totalQueued` > `withdrawal.strategies.length` test(wip): `completeQueuedWithdrawals` currently failing fix: effectBlock test(wip): @8sunyuan patch fix: one flaky test fix: second flaky test refactor: remove max strats list (#968) feat: slashing patch upgrade script (#967) * feat: initial deploy * feat: slashing patch fix non-present upgrade.json chore: bindings (#969) fix: try catch out of gas edge case (#971) chore: slashing consolidated script (#972) test: more slashing integration todos (#961) * test(wip): todos * fix: dealloc issue * fix: remaining * fix: forktest upgrade issue * test: add `check_Withdrawal_AsShares_State_AfterSlash` * refactor: cleanup * fix: ci * refactor: review changes docs: wip slashing docs (#925) * docs: add slashing docs * chore: bindings * docs: fixed commenting and updated queue withdrawal docs * docs: minor cleanup --------- Co-authored-by: Nadir Akhtar <[email protected]> refactor: scaled shares accounting (#975) * fix: correct expected share calc * chore: bindings * fix: rounding on failing unit test refactor: final slashing cleanup (#982) * chore: clean comments and naming in dm * refactor: simplify undelegate method * feat: removed 0 address check because 0 stakers cant be delegated * feat: condensed non-staker caller logic * refactor: remove unnecessary check * feat: use checks-effects-interactions when completing withdrawals * feat: remove implicit public method for queuedWithdrawals and impl dedicated getter * feat: deprecate withdrawer field * chore: make bindings and clean compile errors * refactor: redelegate reuses delegateTo and undelegate * fix: broken integration test * docs: update to reflect deprecated field * feat: add getter for stakers withdrawal roots chore: remove unused avsd events (#984) fix: integration test initialization params (#978) * fix: initialization params * fix: roll blocks usage fix: `SignatureUtils` construction (#990) * fix: integration test initialization params (#978) * fix: initialization params * fix: roll blocks usage * fix: `SignatureUtils` construction --------- Co-authored-by: Yash Patil <[email protected]> Co-authored-by: davidironblocks <[email protected]> fix: readd manual checks (#996) * fix: readd manual checks * chore: forge fmt feat: slashing 1.0.3 upgrade script (#995) * feat: add step 1 * feat: step 1 & 2 complete; pending step 3 sanity * test: add `_validateProxyDomainSeparators` * feat: add rc validation --------- Co-authored-by: clandestine.eth <[email protected]> fix: update alloc config delay bound (#985) * fix: update alloc delay bound * test: remove unnecessary roll chore: storage report (#1000) docs: shares accounting (#997) * docs: shares accounting * docs: fix gh markdown view * docs: try fix gh again * docs: cleanup * docs: edit share accounting * docs: wrap up share accounting doc * docs: edit edge cases --------- Co-authored-by: wadealexc <[email protected]> refactor: async burning (#1001) * refactor: burning * chore: fmt * chore: update storage report * chore: update readme * refactor: add burnableShares for epm storage * chore: update storage report test: `Snapshots` lib (#1002) docs: finish delegation manager docs (#1004) * docs: finish delegation manager docs * docs: update docs readme * docs: permission controller * fix: small typos * docs: address feedback * docs: nit --------- Co-authored-by: Michael Sun <[email protected]> docs: Strategy Manager slashing updates (#999) * docs: update StrategyManager docs with slashing delta * docs: remove references to thirdPartyTransfersForbidden * docs: update strategy docs to latest * also various edits to docs and natspec * chore: fmt and make bindings --------- Co-authored-by: wadealexc <[email protected]> docs: EigenPod Manager slashing updates (#1005) * docs: complete EigenPodManager for slashing * docs: add in _beaconChainSlashingFactor state variable note * docs: finish epm docs * chore: make bindings --------- Co-authored-by: wadealexc <[email protected]> fix: rebase fix: binding test: remove unneeded logic from integration test setup (#1023) fix: compile
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. We need to solve for the following cases: - Prevent deneb proofs from being submitted to pectra blocks - Ensure that the PECTRA_FORK_TIMESTAMP is the first timestamp at or after the pectra hard fork for which there is a non missed slot To do this, here is the upgrade process: 1. Pause checkpoint starting & credential proofs 2. Upgrade after fork is hit 3. Run script to detect the first timestamp at or after the pectra hard fork for which there is a non missed slot 4. Set pectra fork timestamp to the first timestamp at which there is a pectra block header 5. Unpause - Updated balance container and validator container proofs to pass in a proof timestamp & pectra fork timestamp to check against which tree height to use for the beacon state - Modify storing variables in memory to handle stack too deep errors - 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` - Post pectra, we can upgrade the EigenPod to deprecate the fork timestamp case handling once all in progress pre-Pectra checkpoints have been completed - [x] Unit Tests - [x] Integration Tests simulating upgrade - [x] Mekong Deployment - [x] Update Integration Test User to use validators >32 ETH
**Motivation:** Upgrade script for Prooftra. Based on #1053, has to follow the following process: 1. Pause checkpoint starting & credential proofs 2. Upgrade after fork is hit 3. Run script to detect the first timestamp at or after the pectra hard fork for which there is a non missed slot 4. Set pectra fork timestamp to the first timestamp at which there is a pectra block header 5. Unpause **Modifications:** `v1.2.0` upgrade script. Key part is the offchain script **Result:** Prooftra upgrade. feat: write phase 6 script timestamp to file
Certora Run Started (Eigenlayer Contracts)
Certora Run Summary
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 7ddd41b0-cdb5-47ae-ade8-3b8a10b40a39
| Job | Status | Result | VERIFIED | Link |
|---|---|---|---|---|
| permissions/Pausable.conf | SUCCEEDED | ✅ | 2 | Link |
| strategies/StrategyBase.conf | SUCCEEDED | ✅ | 2 | Link |
| core/AllocationManager.conf | SUCCEEDED | ✅ | 15 | Link |
| core/AllocationManagerSanity.conf | SUCCEEDED | ✅ | 2 | Link |
| pods/EigenPodManagerRules.conf | SUCCEEDED | ✅ | 9 | Link |
| core/StrategyManager.conf | SUCCEEDED | ✅ | 6 | Link |
| core/DelegationManager.conf | SUCCEEDED | ✅ | 9 | Link |
| core/DelegationManagerValidState.conf | SUCCEEDED | ✅ | 11 | Link |
Certora Run Started (Eigenlayer Contracts)
Certora Run Summary
|
Certora Run Started (Eigenlayer Contracts)
Certora Run Summary
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 8006a508-9f9a-4c14-857a-0c62f497166b
| Job | Status | Result | VERIFIED | Link |
|---|---|---|---|---|
| permissions/Pausable.conf | SUCCEEDED | ✅ | 2 | Link |
| strategies/StrategyBase.conf | SUCCEEDED | ✅ | 2 | Link |
| core/AllocationManager.conf | SUCCEEDED | ✅ | 15 | Link |
| core/AllocationManagerSanity.conf | SUCCEEDED | ✅ | 2 | Link |
| pods/EigenPodManagerRules.conf | SUCCEEDED | ✅ | 9 | Link |
| core/StrategyManager.conf | SUCCEEDED | ✅ | 6 | Link |
| core/DelegationManagerValidState.conf | SUCCEEDED | ✅ | 11 | Link |
| core/DelegationManager.conf | SUCCEEDED | ✅ | 9 | Link |
Certora Run Started (Eigenlayer Contracts)
Certora Run Summary
|
chore: push chore: fix tests
8sunyuan
approved these changes
Mar 13, 2025
Certora Run Started (Eigenlayer Contracts)
Certora Run Summary
|
Certora Run Started (Eigenlayer Contracts)
Certora Run Summary
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Verification Results
- Group ID: 8cb3ab91-5443-4cb6-bb7b-c5be87595258
| Job | Status | Result | VERIFIED | Link |
|---|---|---|---|---|
| permissions/Pausable.conf | SUCCEEDED | ✅ | 2 | Link |
| strategies/StrategyBase.conf | SUCCEEDED | ✅ | 2 | Link |
| core/AllocationManager.conf | SUCCEEDED | ✅ | 15 | Link |
| core/AllocationManagerSanity.conf | SUCCEEDED | ✅ | 2 | Link |
| pods/EigenPodManagerRules.conf | SUCCEEDED | ✅ | 9 | Link |
| core/StrategyManager.conf | SUCCEEDED | ✅ | 6 | Link |
| core/DelegationManager.conf | SUCCEEDED | ✅ | 9 | Link |
| core/DelegationManagerValidState.conf | SUCCEEDED | ✅ | 11 | Link |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
✨ Enhancement
New feature or request.
📜 Script
Script-related changes (automation, tooling).
🧪 Test
Test-related changes (unit, integration, etc.).
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
Updates the EigenPod proof system to be pectra compatible. This includes updating container heights and support 0x02 withdrawal credentials. All other Pectra updates will be addressed in a post-slashing upgrade.
Modifications:
Result:
v1.4.0. _Note: The commits for the thev1.4.0deployment are cherry-picked ontov1.1.1for testnet due to audit fixes not being deployed yet. See: #1156 for the diff`