Commit ccdec3f
feat(draft):
**Motivation:**
Add support for redistributing slashed funds to specified recipients
instead of burning them, while optimizing code size and improving test
coverage.
**Modifications:**
Added a new redistribution system that allows AVSs to specify recipients
for slashed funds. Code optimizations were made to reduce codesize,
including consolidating repeated logic and a small
`PermissionControllerMixin` refactor.
**Result:**
Slashed funds can now be redirected to specified recipients instead of
being burned, with improved code efficiency and test coverage.
feat: simplify removeDepositShares in StrategyManager (#1373)
**Motivation:**
the _removeDepositShares() returns a bool which is not of any meaning.
simplify removeDepositShares in StrategyManager by removing that
returned value
**Modifications:**
simplify _removeDepositShares() by removing returned extra bool
**Result:**
_removeDepositShares() is simplified and binary size is reduced
feat: add `SlashingWithdrawalRouter` (#1358)
**Motivation:**
We want to hold slashed funds in escrow temporarily to maintain protocol
security (prevent malicious actors from draining the contracts).
**Modifications:**
- Add `SlashingWithdrawalRouter`.
**Result:**
The `SlashingWithdrawalRouter` contract is added for managing slashed
funds in the EigenLayer protocol. It provides a mechanism to handle the
burning or redistribution of slashed shares after a delay period,
ensuring proper handling of slashed funds while maintaining protocol
security.
---------
Co-authored-by: Yash Patil <[email protected]>
test(redistribution): add unit tests (#1383)
**Motivation:**
We want to ensure `SlashingWithdrawalRouter` has appropriate unit test
coverage.
**Modifications:**
- Add more unit tests.
**Result:**
90% coverage.
refactor: remove `v` prefix from `SemVerMixin` (#1385)
**Motivation:**
Slashing was deployed with using a `v` prefix, thus we're simply going
to drop the prefix moving forward.
**Modifications:**
Prefix removed, and tests updated.
**Result:**
SemVerMixin no longer requires a `v` prefix.
feat: escrow funds in unique clone contracts (#1387)
**Motivation:**
Current implementation is broken by rebase tokens.
**Modifications:**
- Rename SWR -> `SlashEscrowFactory`.
- Add factory logic that deploys clones unique to their slash ID.
**Result:**
Funds will now be stored in clone contracts unique to their slash ID.
fix: review issues (#1391)
**Motivation:**
We want to resolve any review issues that arise.
**Modifications:**
- Use larger of strategy or global delay: @non-fungible-nelson
- Fix storage overrides noted from `Deprecated_OwnableUpgradeable`
@wadealexc
- Use `EnumerableSet` instead of `EnumerableSetUpgradaeable` since it
doesn't contain storage
- Add missing event in `initialize()`.
- Prevent `address(0)` during `createRedistributableOperatorSets` for
event sanitation.
- Improve check legibility @wadealexc
**Result:**
Current review concerns have been addressed.
fix: storage checker (#1394)
**Motivation:**
Storage checker didn't have ALM added. Also we needed to fix the
deprecated ownable mixing.
**Modifications:**
Fix mixing to inherit from `ContextUpgradeable`. Add ALM to
storage-diff.json.
**Result:**
Correct storage checks.
---------
Co-authored-by: Yash Patil <[email protected]>
chore: use internal getters; update `isOperatorRedistributable` (#1401)
**Motivation:**
We want to use internal getters wherever possible for style.
**Modifications:**
- Use `getRedistributionRecipient` in `isOperatorRedistributable`
- Update `isOperatorRedistributable` to get all allocated/registered
sets and then check if slashable and redistributable set for each
- More comprehensive unit tests
**Result:**
Cleaner code + tests passing
chore: rename burnable -> burnOrRedistributable; fix storage gap; remove poc code (#1397)
**Motivation:**
Burn shares naming is confusing, since shares are burnOrRedistributable
**Modifications:**
- For the new withdrawal path, call it `burnOrRedistributable`, so
`burnOrRedistributableSharesIncreased` or
`burnOrRedistributableSharesDecreased`
- Bring back `burnableSharesDecreased` event for the legacy burn path
- Rename `_operatorSetBurnableShares` to `_burnOrRedistributableShares`
- Fix the storage gap, since `_burnOrRedistributableShares` is a mapping
pointing to an enumerable map, not an enumerable map
- Remove POC withdrawal queue code from the DM
**Result:**
Cleaner Redistribution code
chore: remove dm/alm code size optimizations (#1398)
**Motivation:**
We have several code size optimizations in the DM/ALM. These are not
needed anymore with the ownable deprecation. We can add in future
upgrade if we want.
**Modifications:**
Remove all internal `_check` and modifiers.
Make `slashOperatorShares` in the DM return to the original
non-arrayified method.
**Result:**
Smaller code diff for redistribution.
test: full coverage `SlashEscrowFactory` + `SlashEscrow` (#1403)
**Motivation:**
We want to ensure we have full coverage unit tests for
`SlashEscrowFactory` and `SlashEscrow` in preparation for audits.
**Modifications:**
- Adds checks for all view methods.
**Result:**
Brings coverage up to 100% for all branches/fns/etc.
chore: decrease dm diff further (#1404)
**Motivation:**
We want to minimize the diff between slashing.
**Modifications:**
Revert calldata/memory types in DM.
**Result:**
Smaller diff
fix: enumerable map overwrite (#1399)
**Motivation:**
Currently, there's a bug in the `SM` where if you loop through the
burnable shares queue, you may not clear all due to swap and pop of an
Enumerable Map. Furthermore, we also are constrained by a token transfer
taking too much gas and blocking transfer out of funds.
**Modifications:**
- Iterate backwards on `decreaseBurnOrRedistributableShares `
- Overloaded `decreaseBurnableShares` with a version to pass in an
index. This function will escrow a single share (called by above too).
Now, we do not need a max strategy per opSet requirement
- Unit tests for both `increaseBurnOrRedistributableShares` and
`decreaseBurnOrRedistributableShares`
- Added the following introspection:
-- `getBurnOrRedistributableShares(operatorSet, slashId) returns
(Strategy[] Strats, uint256[] shares)
-- `getBurnOrRedistributableShares(operatorSet, slashId, strategy)
returns (shares)
-- `getBurnOrRedistributableCount(operaotrSet, slashed) returns (count)`
**Result:**
Correct code with unit tests
feat: simplify escrow delay; add convenience functions (#1406)
**Motivation:**
The escrow delay currently always you to complete escrows for a portion
of strategies if there exists a strategy with a larger delay. This makes
our codebase more complex. We also want to have a view function for
offchain cronjob that needs to be called only once.
**Modifications:**
- Update `releaseEscrow` to obey the maximum delay across all strategies
for a slash
- Add a `getBurnOrRedistributionDelay` view function
- Add a convenience view function `getPendingEscrows` for offchain burn
job. This returns all pending operatorSets, and their associated
redistribution status, slashIds, and completeBlocks
- Standardize `uint32` for delay everywhere
- Make `deploySlashEscrow` a public function
**Result:**
Simpler & correct code.
chore: update naming (#1408)
**Motivation:**
We use `burnOrRedistributable` everywhere. Let's just use escrow
instead. Much simpler.
**Modifications:**
`burnOrRedistributable -> escrow`.
**Result:**
Better readability.
---------
Co-authored-by: clandestine.eth <[email protected]>
fix: enumerable map ovewrite
chore: format
chore: address rebase issues
test: increase burnable shares
chore: add tests
feat: simplify escrow delay
chore: format
chore: clarify natspec
chore: fix typos
feat: add convenience view functions (#1407)
chore: remove commented code
chore: format
chore: format
chore: naming
docs: alm
docs: dm
docs: epm
docs: strateby ase
docs: sm
chore: interface
docs: sef
chore: fix test
chore: format
fix: fmt and build
chore: fix test
chore: format
chore: build
chore: update for clear
chore: format
chore: draft
chore: changelog
chore: ref elip-006
chore: org
chore: typo
chore: add links to changelog
chore: push
fix: compileAllocationManager redistribution support (#1346)1 parent c020f15 commit ccdec3f
File tree
13 files changed
+457
-98
lines changed- CHANGELOG
- docs/core
- lib
- src/contracts
- core
- interfaces
13 files changed
+457
-98
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | 3 | | |
6 | 4 | | |
7 | | - | |
8 | | - | |
| 5 | + | |
9 | 6 | | |
10 | 7 | | |
11 | 8 | | |
12 | | - | |
13 | | - | |
14 | | - | |
| 9 | + | |
15 | 10 | | |
16 | | - | |
17 | | - | |
18 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
19 | 16 | | |
20 | | - | |
21 | | - | |
22 | | - | |
| 17 | + | |
| 18 | + | |
23 | 19 | | |
24 | | - | |
25 | | - | |
26 | | - | |
| 20 | + | |
| 21 | + | |
27 | 22 | | |
28 | | - | |
29 | | - | |
30 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
31 | 26 | | |
32 | | - | |
33 | | - | |
34 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
35 | 32 | | |
| 33 | + | |
| 34 | + | |
36 | 35 | | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | 36 | | |
| 37 | + | |
41 | 38 | | |
42 | | - | |
43 | | - | |
44 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
170 | 171 | | |
171 | 172 | | |
172 | 173 | | |
173 | | - | |
| 174 | + | |
174 | 175 | | |
175 | 176 | | |
176 | 177 | | |
177 | 178 | | |
178 | 179 | | |
179 | 180 | | |
| 181 | + | |
180 | 182 | | |
181 | 183 | | |
182 | 184 | | |
| |||
237 | 239 | | |
238 | 240 | | |
239 | 241 | | |
240 | | - | |
| 242 | + | |
241 | 243 | | |
242 | 244 | | |
243 | 245 | | |
| |||
254 | 256 | | |
255 | 257 | | |
256 | 258 | | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
257 | 291 | | |
258 | 292 | | |
259 | 293 | | |
| |||
287 | 321 | | |
288 | 322 | | |
289 | 323 | | |
| 324 | + | |
290 | 325 | | |
291 | 326 | | |
292 | 327 | | |
| |||
717 | 752 | | |
718 | 753 | | |
719 | 754 | | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
720 | 758 | | |
721 | 759 | | |
722 | 760 | | |
| |||
734 | 772 | | |
735 | 773 | | |
736 | 774 | | |
| 775 | + | |
737 | 776 | | |
738 | 777 | | |
739 | 778 | | |
| |||
748 | 787 | | |
749 | 788 | | |
750 | 789 | | |
751 | | - | |
| 790 | + | |
752 | 791 | | |
753 | 792 | | |
754 | 793 | | |
| |||
765 | 804 | | |
766 | 805 | | |
767 | 806 | | |
| 807 | + | |
| 808 | + | |
768 | 809 | | |
769 | 810 | | |
770 | 811 | | |
| |||
0 commit comments