Skip to content

Conversation

@eigenmikem
Copy link
Contributor

No description provided.

0xClandestine and others added 30 commits January 3, 2025 15:17
* 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
bowenli86 and others added 2 commits February 4, 2025 15:09
…rator (#1051)

* feat: add OperatorSharesSlashed event to track shares slashed per operator

* feat: add unit tests

* fix: add more tests
* feat: add `getSharesFromQueuedWithdrawal`

* test: passing

* refactor(review): improve natspec

* refactor(review): maintain original interface

* test(review): add unit tests

* refactor(review): test empty

* refactor(review): test empty

* refactor(review): remove returned `Withdrawal`

* fix: use operator from `Withdrawal`

* test: use operator from `Withdrawal`

* chore: forge fmt
@ypatil12 ypatil12 added the 🧪 Test Test-related changes (unit, integration, etc.). label Feb 13, 2025
0xClandestine and others added 20 commits February 13, 2025 10:37
* docs: slashing factors rounding

* chore: forge fmt
* docs: small slash amounts

* docs: update contract docs

---------

Co-authored-by: wadealexc <[email protected]>
**Motivation:**

Fixes an issue where stakers delegating Beacon Chain ETH from slashed
Eigen Pods were able to delegate more shares than they should.
Specifically, operators now are delegated a staker's
`withdrawableShares` rather than their `depositShares`.

**Modifications:**

- Changed accounting logic on delegation in `DelegationManger.sol`
- `DepositScalingFactor` now resets when a staker withdraws all their
shares, whether through undelegation, redelegation, or a simple
withdrawal
- Changes in `StrategyManager.sol`, `IShareManager.sol`,
`SlashingLib.sol`, and `EigenPodManager.sol` to accommodate new
accounting
- New test files and changes to others to reflect new accounting and
invariants
- Updated `docs/SharesAccounting.md`

**Result:**

System is now robust to stakers with arbitrary EigenPod states

---------

Co-authored-by: Michael <[email protected]>
Co-authored-by: Michael Sun <[email protected]>
Co-authored-by: wadealexc <[email protected]>
Co-authored-by: Yash Patil <[email protected]>
Co-authored-by: clandestine.eth <[email protected]>
**Motivation:**  

Audit report flagged that function selector-based permissions may break
on upgrades. This PR documents the limitation and its implications while
improving NatSpec for clarity. (EGSL-15)

**Modifications:**  

- Documented function selector upgrade invalidations.  
- Improved NatSpec comments in `IPermissionController`.  

**Result:**  

Clearer documentation on function selector limitations and enhanced
NatSpec for better code clarity.
### Changes:

- *Dynamic Domain Separator:* `SignatureUtils.domainSeparator()` is now
recomputed for each signature verification. This eliminates the need for
storing initial values in storage or as immutables, which is important
for beacon proxy support.

- ~*Version Bump Command:* Introduced `make bump-version VERSION=2`,
which automatically updates the version function's return values.~

- *Version Fn + Constructor Param:* Adds an immutable oz `ShortString`
that's set in the constructor.
**Motivation:**

Concerns about reentrancy in the DelegationManager and interactions of
completed withdrawals which can call untrusted ERC20 transfers

**Modifications:**

Added reentrant guards across external functions

**Result:**

Preventing cross-function reentrancy in the DelegationManager

---------

Co-authored-by: wadealexc <[email protected]>
**Motivation:**

Fixes an issue arbitrary external contracts could be called via
`StrategyManager.burnShares`. (Certora L-04)

**Modifications:**

`StrategyManager.burnShares` does not do an external call if the
burnable share amount is zero

**Result:**

Should no longer be possible to call untrusted code directly through
`burnShares`
**Motivation:**

Document edge cases around BC/AVS Slashing. 

**Modifications:**

Update docs with justification. 

**Result:**

Clear edge case callouts.
require avs register metadata in allocation manager before they can
create operatorset

---------

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

Current fn only returns scaled shares, which leads integrators to making
two calls. This is expensive in terms of gas.

**Modifications:**

- `getSharesFromQueuedWithdrawal` has been renamed to
`getQueuedWithdrawalFromRoot` and now also returns `Withdrawal` struct.

**Result:**

Integrators can fetch both in a single call.
**Motivation:**

Improve slashing invariants in integration tests

**Modifications:**

Adds `check_Base_Slashing_State`, and implements several checks used
within

**Result:**

Slashing invariants check all manner of state changes in the ALM and
delegation.

---------

Co-authored-by: Michael <[email protected]>
…tion-tests"

This reverts commit 55db48b, reversing
changes made to b2b3f7f.
@ypatil12 ypatil12 force-pushed the slashing-magnitudes-fixes branch 4 times, most recently from fb84edf to 44487a0 Compare February 20, 2025 23:50
@0xClandestine 0xClandestine added the 🗡️ Slashing Release Changes for the slashing release. label Feb 25, 2025
@ypatil12 ypatil12 closed this Mar 10, 2025
@github-actions github-actions bot deleted the slashing-integration-tests branch May 29, 2025 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🗡️ Slashing Release Changes for the slashing release. 🧪 Test Test-related changes (unit, integration, etc.).

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants