Skip to content

Conversation

@ypatil12
Copy link
Collaborator

@ypatil12 ypatil12 commented Feb 24, 2025

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 the v1.4.0 deployment are cherry-picked onto v1.1.1 for testnet due to audit fixes not being deployed yet. See: #1156 for the diff`

@ypatil12 ypatil12 force-pushed the feat/prooftra branch 2 times, most recently from ea044a9 to 3f2fd03 Compare February 24, 2025 22:21
@0xClandestine 0xClandestine added ✨ Enhancement New feature or request. and removed 🚀 Feature labels Feb 25, 2025
ypatil12 added 3 commits March 7, 2025 08:50
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
@github-actions github-actions bot added 📜 Script Script-related changes (automation, tooling). 🧪 Test Test-related changes (unit, integration, etc.). labels Mar 7, 2025
@github-actions
Copy link

github-actions bot commented Mar 7, 2025

Certora Run Started (Eigenlayer Contracts)

  • Group ID: a130d7c1-730f-47b5-b4f3-e0e213df859e
Config Status Link Log File
core/AllocationManager.conf Compiled - certora/confs/core/AllocationManager.conf-5c67b943c964.log
core/AllocationManagerSanity.conf Compiled - certora/confs/core/AllocationManagerSanity.conf-de25467847da.log
core/DelegationManager.conf Compiled - certora/confs/core/DelegationManager.conf-8153ebbe7f03.log
core/DelegationManagerValidState.conf Compiled - certora/confs/core/DelegationManagerValidState.conf-65bd866dc954.log
core/StrategyManager.conf Compiled - certora/confs/core/StrategyManager.conf-efbbcfb52038.log
permissions/Pausable.conf Compiled - certora/confs/permissions/Pausable.conf-9755b8008a96.log
pods/EigenPodManagerRules.conf Compiled - certora/confs/pods/EigenPodManagerRules.conf-d4ff1e2c6617.log
strategies/StrategyBase.conf Compiled - certora/confs/strategies/StrategyBase.conf-8cb372ae3445.log

Certora Run Summary

  • Started 0 jobs
  • 0 jobs failed

Download Logs

Copy link

@certora-run certora-run bot left a 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

@github-actions
Copy link

github-actions bot commented Mar 7, 2025

Certora Run Started (Eigenlayer Contracts)

  • Group ID: 7ddd41b0-cdb5-47ae-ade8-3b8a10b40a39
Config Status Link Log File
core/AllocationManager.conf Submited link certora/confs/core/AllocationManager.conf-e56b1cb1d2bb.log
core/AllocationManagerSanity.conf Submited link certora/confs/core/AllocationManagerSanity.conf-ffe2395e8971.log
core/DelegationManager.conf Submited link certora/confs/core/DelegationManager.conf-430d485e1235.log
core/DelegationManagerValidState.conf Submited link certora/confs/core/DelegationManagerValidState.conf-86d19ba96bc3.log
core/StrategyManager.conf Submited link certora/confs/core/StrategyManager.conf-962bcb707fca.log
permissions/Pausable.conf Submited link certora/confs/permissions/Pausable.conf-4250eb43111d.log
pods/EigenPodManagerRules.conf Submited link certora/confs/pods/EigenPodManagerRules.conf-98e7f0642c89.log
strategies/StrategyBase.conf Submited link certora/confs/strategies/StrategyBase.conf-670bde029f3d.log

Certora Run Summary

  • Started 8 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link

github-actions bot commented Mar 7, 2025

Certora Run Started (Eigenlayer Contracts)

  • Group ID: ccb02704-f9f5-4f37-9d53-5865285d0c9c
Config Status Link Log File
core/AllocationManager.conf Compiled - certora/confs/core/AllocationManager.conf-6074cff74b25.log
core/AllocationManagerSanity.conf Compiled - certora/confs/core/AllocationManagerSanity.conf-db3c5e02590e.log
core/DelegationManager.conf Compiled - certora/confs/core/DelegationManager.conf-24c062ff794d.log
core/DelegationManagerValidState.conf Compiled - certora/confs/core/DelegationManagerValidState.conf-632486a142be.log
core/StrategyManager.conf Compiled - certora/confs/core/StrategyManager.conf-77518283defd.log
permissions/Pausable.conf Compiled - certora/confs/permissions/Pausable.conf-fc1cb5fa55f1.log
pods/EigenPodManagerRules.conf Compiled - certora/confs/pods/EigenPodManagerRules.conf-bed189e59ebe.log
strategies/StrategyBase.conf Compiled - certora/confs/strategies/StrategyBase.conf-2c1d50da08c8.log

Certora Run Summary

  • Started 0 jobs
  • 0 jobs failed

Download Logs

Copy link

@certora-run certora-run bot left a 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

@github-actions
Copy link

github-actions bot commented Mar 7, 2025

Certora Run Started (Eigenlayer Contracts)

  • Group ID: 8006a508-9f9a-4c14-857a-0c62f497166b
Config Status Link Log File
core/AllocationManager.conf Submited link certora/confs/core/AllocationManager.conf-6df3299732af.log
core/AllocationManagerSanity.conf Submited link certora/confs/core/AllocationManagerSanity.conf-385fc8f82bc7.log
core/DelegationManager.conf Submited link certora/confs/core/DelegationManager.conf-f9603adce264.log
core/DelegationManagerValidState.conf Submited link certora/confs/core/DelegationManagerValidState.conf-f4a108a5dcb8.log
core/StrategyManager.conf Submited link certora/confs/core/StrategyManager.conf-207649914517.log
permissions/Pausable.conf Submited link certora/confs/permissions/Pausable.conf-fd3de5cf332d.log
pods/EigenPodManagerRules.conf Submited link certora/confs/pods/EigenPodManagerRules.conf-9a9017636833.log
strategies/StrategyBase.conf Submited link certora/confs/strategies/StrategyBase.conf-ed3a25d39e0b.log

Certora Run Summary

  • Started 8 jobs
  • 0 jobs failed

Download Logs

@ypatil12 ypatil12 marked this pull request as ready for review March 9, 2025 03:12
@ypatil12 ypatil12 merged commit aa84b7a into dev Mar 13, 2025
17 checks passed
@github-actions
Copy link

Certora Run Started (Eigenlayer Contracts)

  • Group ID: ba5af7f4-8429-4c55-9598-0b6c734f542b
Config Status Link Log File
core/AllocationManager.conf Compiled - certora/confs/core/AllocationManager.conf-197e272b4c75.log
core/AllocationManagerSanity.conf Compiled - certora/confs/core/AllocationManagerSanity.conf-cdaf4014bbc2.log
core/DelegationManager.conf Compiled - certora/confs/core/DelegationManager.conf-cbd595b4b308.log
core/DelegationManagerValidState.conf Compiled - certora/confs/core/DelegationManagerValidState.conf-9364f4e55e10.log
core/StrategyManager.conf Compiled - certora/confs/core/StrategyManager.conf-8d62d5ee00c9.log
permissions/Pausable.conf Compiled - certora/confs/permissions/Pausable.conf-662e2c8fc537.log
pods/EigenPodManagerRules.conf Compiled - certora/confs/pods/EigenPodManagerRules.conf-02f32183a629.log
strategies/StrategyBase.conf Compiled - certora/confs/strategies/StrategyBase.conf-750dc3d17324.log

Certora Run Summary

  • Started 0 jobs
  • 0 jobs failed

Download Logs

@github-actions
Copy link

Certora Run Started (Eigenlayer Contracts)

  • Group ID: 8cb3ab91-5443-4cb6-bb7b-c5be87595258
Config Status Link Log File
core/AllocationManager.conf Submited link certora/confs/core/AllocationManager.conf-bdb7c4543b74.log
core/AllocationManagerSanity.conf Submited link certora/confs/core/AllocationManagerSanity.conf-5abb58cbc0bd.log
core/DelegationManager.conf Submited link certora/confs/core/DelegationManager.conf-6470ec90f2a5.log
core/DelegationManagerValidState.conf Submited link certora/confs/core/DelegationManagerValidState.conf-b13602591b33.log
core/StrategyManager.conf Submited link certora/confs/core/StrategyManager.conf-7b42e22ae9f9.log
permissions/Pausable.conf Submited link certora/confs/permissions/Pausable.conf-6601544a2e37.log
pods/EigenPodManagerRules.conf Submited link certora/confs/pods/EigenPodManagerRules.conf-7746ff4fe972.log
strategies/StrategyBase.conf Submited link certora/confs/strategies/StrategyBase.conf-dc8680e9d7b2.log

Certora Run Summary

  • Started 8 jobs
  • 0 jobs failed

Download Logs

Copy link

@certora-run certora-run bot left a 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

@github-actions github-actions bot deleted the feat/prooftra branch June 19, 2025 00:17
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.).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants