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

Slashing magnitudes fixes merge #1108

Closed

Conversation

ypatil12
Copy link
Collaborator

Motivation:

Explain here the context, and why you're making that change. What is the problem you're trying to solve.

Modifications:

Describe the modifications you've done.

Result:

After your change, what will change.

ypatil12 and others added 30 commits January 7, 2025 07:44
* chore: update addresses for slashing

* feat: update for v.1.03

* chore: rename

* chore: rename
* fix: patch default split frontrun upgrade

* fix: zeus pauser registry
* feat: add share helpers

* fix: add deposit scaling factor

* fix: rebase
* 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

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
* feat: initial deploy

* feat: slashing patch
* 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: add slashing docs
* chore: bindings
* docs: fixed commenting and updated queue withdrawal docs
* docs: minor cleanup

---------

Co-authored-by: Nadir Akhtar <[email protected]>
* fix: correct expected share calc

* chore: bindings

* fix: rounding on failing unit test
* 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
* fix: initialization params

* fix: roll blocks usage
* 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

* chore: forge fmt
* 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 delay bound

* test: remove unnecessary roll
* 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: burning

* chore: fmt

* chore: update storage report

* chore: update readme

* refactor: add burnableShares for epm storage

* chore: update storage report
8sunyuan and others added 26 commits February 18, 2025 21:38
* 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]>

* chore: remove rewardsV2 upgrade script

* chore: use stable foundry version

---------

Co-authored-by: clandestine.eth <[email protected]>
Co-authored-by: Jay <[email protected]>
Co-authored-by: Gautham Anant <[email protected]>
Co-authored-by: Yash Patil <[email protected]>
Co-authored-by: Yash Patil <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: Nadir Akhtar <[email protected]>
Co-authored-by: davidironblocks <[email protected]>
Co-authored-by: wadealexc <[email protected]>
Co-authored-by: Nadir Akhtar <[email protected]>
* feat: rewards v2.1

feat: operator centric rewards

feat: add new interfaces

feat(wip): implement `createOperatorSetPerformanceRewardsSubmission`

chore: forge fmt

fix: compile

feat(wip): implement `setOperatorSetOperatorSplit`

fix: review changes

fix: add missing `onlyWhenPaused` + `checkCanCall`

feat(wip): add missing `getOperatorSetPerformanceSplit` + rename internals

test(wip): `setOperatorSetPerformanceSplit`

test(wip): `createOperatorSetPerformanceRewardsSubmission`

- some failing

chore: forge fmt

refactor: renaming

chore: storage report

refactor: review changes

refactor: review changes

fix: gap

refactor: review changes

* fix: storage layout

* chore: make storage-report

* docs: natspec

* refactor: review changes

* refactor: review changes

* refactor: review changes

* feat: rewards v2.1 bindings

* fix: not index operatorSet in events

* refactor: forge fmt

* docs: updated storage reports

* chore: updated bindings

---------

Co-authored-by: 0xrajath <[email protected]>
* feat: storage-diff.sh

* refactor: storage-diff.sh

* refactor: storage-diff.sh

* refactor: storage-diff.sh

* refactor: storage-diff.sh

* refactor: storage-diff.sh
* refactor: ci

refactor: remove gas report

fix: gas report

fix: gas report

refactor: continuous fuzzing

refactor: cleanup

feat: gas reporting

feat: intense continuous fuzzing

refactor: rename workflow files

refactor: renaming

refactor: ci

refactor: renaming

refactor: ci

feat: add `FOUNDRY_PROFILE=lite` to ci

refactor: small `foundry.toml` cleanup

refactor: renaming

fix: continuous fuzzing

* refactor: naming

* refactor: intense runs -> 15000

* refactor: move CONTRIBUTING.md -> .github/

* refactor: reduce dotfiles

* refactor: remove `testHelpers`

* feat: add `PULL_REQUEST_TEMPLATE.md`

* refactor: foundry ci

* fix: foundry ci

* refactor: rename

* feat: mainnet storage diff ci

* refactor: certora ci (remove parallelism)

* refactor: intense runs -> 5000

* refactor: coverage

* test: ci

* refactor: continuous fuzzing

* refactor: note minimum avg coverage

* refactor: coverage

* refactor: coverage

* refactor: coverage

* refactor: coverage

* refactor: coverage

* refactor: coverage

* refactor: move storage-diff.yml

* refactor: foundry.yml

* refactor: foundry.yml

* fix: certora scripts

* fix: certora

* refactor: local deploy workflow -> test

* refactor: rename certora workflow

* refactor: checks

* refactor: name

* refactor: comment out certora.yml until they finish slashing specs

* refactor: review changes

* refactor: ci runs 1 -> 256

* fix: coverage branch filtering

* refactor: add -vvv flag

* refactor: lowercase pr template name

* refactor: move CONTRIBUTING.md

* feat: more storage diff coverage

* docs: improve contributor guide

* refactor: intense workflow

- add message telling the dev it's purpose

* refactor: intense warning

* refactor: add `.github/configs/`

* fix: ci

* refactor: remove useless commitlint config

* refactor: cleanup

* refactor: add color

* refactor: remove useless color flag

* refactor: remove prettier (unused)
* feat: deny compile warnings

* fix: compile warnings

* fix: ci
* test: `BytesLib`

* test: `Snapshots`

* fix: ci

* fix: ci

* fix: ci

* fix: ci
* feat: only throw for errors

- except __gap overwrite

* ci: storage check should fail

* ci: storage check should fail

* perf: optimize storage ci

* fix: remove bad variable

* chore: forge fmt
* feat: add size diff workflow

Needs improvement and to be moved -> Foundry.yml

* fix: ci

* fix: ci

* test: ci

* refactor: improve logging

* chore: remove test variables
* chore: remove husky

* chore: vscode settings json

* chore: cleanup
**Motivation:**

Since Foundry unit, integration, and fork tests currently run
sequentially, the total runtime is the sum of all tests — roughly
**25–26 minutes**.

See yourself
[here](https://github.com/Layr-Labs/eigenlayer-contracts/actions/runs/13208807194/job/36878141793?pr=1025).

**Modifications:**

- Parallelized unit, integration, and fork tests to significantly speed
up CI.
- Fixed flaky tests.

**Result:**

By running all three test suites in parallel, we reduced the total
runtime to **6 minutes**, achieving a **4× speedup**!

---------

Co-authored-by: clandestine.eth <[email protected]>
**Motivation:**

given continuous fuzzing tests takes too
long (currently ~2.5h ish), we wanna make it only run when a commit is
merged to dev branch, instead of every PR change

it should make the CI passes as a whole a lot faster, and save us huge
money spent on github actions

**Modifications:**

make continuous fuzzing only run when a commit is merged to dev branch,
instead of every PR change
**Motivation:**

Currently there is no way for an AVS implementing these callback
functions of the IAVSRegistrar.sol to verify that the operatorSetIds
belong to their operatorSets. The register/deregister callback functions
are updated to include the address field.
This PR is combining
#1092 and
#1085

Additionally, the try/catch design for deregistering from operatorSets
was impacting state between AVS and core contracts due to not having
proper gas estimates when submitting transactions. Solutions exploring
passing some suitable gas paramter were explored but eventually removing
it entirely was deemed the best solution.

**Modifications:**

- Added `avs()` view function that is checked upon `setAVSRegistrar`
- added `address avsIdentifier` field in the callbacks, this should
match the `avs()` view function on the AVSRegistrar
- Removed try catch on `deregisterForOperatorSets`

**Result:**

AVSRegistrars cannot be used for multiple operatorSets and AVSRegistrars
can doublecheck to verify that a register/deregister callback is
correctly called for their contracts.
Registration state between AVS and Eigenlayer core contracts for
OperatorSets are now done in atomic transactions (if entrypoint is
always through the AllocationManager)
**Motivation:**

Registrar interface needs to be upgraded to unblock integration quickly
as possible

**Modifications:**

Upgrade script for the AllocationManager

**Result:**

Upgrade to testnet Holesky environment will take place
@ypatil12 ypatil12 force-pushed the slashing-magnitudes-fixes-merge branch from 609c9d0 to ddc53ab Compare February 19, 2025 02:43
@ypatil12
Copy link
Collaborator Author

Closing

@ypatil12 ypatil12 closed this Feb 19, 2025
@ypatil12 ypatil12 deleted the slashing-magnitudes-fixes-merge branch February 19, 2025 02:43
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.