|
1 | 1 | # v1.5.0 Redistribution
|
2 | 2 |
|
3 |
| -**Use this template to draft changelog and submit PR to review by the team** |
4 |
| - |
5 | 3 | ## Release Manager
|
6 | 4 |
|
7 |
| -@0xClandestine |
8 |
| - |
| 5 | +@0xClandestine @ypatil12 |
9 | 6 |
|
10 | 7 | ## Highlights
|
11 | 8 |
|
12 |
| -🚀 New Features – Highlight major new functionality |
13 |
| -- ... |
14 |
| -- ... |
| 9 | +🚀 New features |
15 | 10 |
|
16 |
| -⛔ Breaking Changes – Call out backward-incompatible changes. |
17 |
| -- ... |
18 |
| -- ... |
| 11 | +- Redistribution is a feature that gives Service Builders a means to not just burn, but repurpose slashed funds. |
| 12 | +- We introduce a new operatorSet creation mechanism: [`AllocationManager.createRedistributingOperatorSets`](../docs/core/AllocationManager.md#createredistributingoperatorsets), which allows slashed funds to be redistributed to a `RedistributionRecipient`. *Note: The redistribution recipient can be set only once and is immutable*. |
| 13 | +- *All slashed funds will now be routed to individual `SlashEscrow` contracts.* The release of funds from escrow is gated by the `SlashEscrowFactory`. The `SlashEscrowFactory` deploys individual `SlashEscrow` contracts per slash, enforces a global delay for all escrowed funds, and handles pausing/unpausing of escrowed funds. |
| 14 | +- The original `createOperatorSets` function still exists. This function creates operatorSets whose slashed funds will eventually be burned. There is no mechanism to convert an operatorSet to be redistributing. |
| 15 | +- See [ELIP-006](https://github.com/eigenfoundation/ELIPs/blob/main/ELIPs/ELIP-006.md) for a full description. |
19 | 16 |
|
20 |
| -📌 Deprecations – Mention features that are being phased out. |
21 |
| -- ... |
22 |
| -- ... |
| 17 | +⛔ Breaking changes |
| 18 | +- Funds marked for burning now go through a 4-day escrow period via `SlashEscrow` contracts. These funds are burned by calling [`SlashEscrowFactory.releaseSlashEscrow`](../docs/core/SlashEscrowFactory.md#releaseslashescrow). |
23 | 19 |
|
24 |
| -🛠️ Security Fixes – Specify patched vulnerabilities. |
25 |
| -- ... |
26 |
| -- ... |
| 20 | +📌 Future Deprecations |
| 21 | +- The pre-redistribution burn pathway [`StrategyManager.decreaseBurnableShares`](../docs/core/StrategyManager.md#burnshares) will be deprecated in an upgrade *after* the redistribution release. This function can still be used to burn shares that have been slashed at any point prior to the redistribution upgrade. |
27 | 22 |
|
28 |
| -🔧 Improvements – Enhancements to existing features. |
29 |
| -- ... |
30 |
| -- ... |
| 23 | +🛠️ Security Updates |
| 24 | +- The slashing of burned funds is no longer instantaneous. All slashed funds (burned or redistributed) now go through a 4-day escrow delay. The eventual burning or redistribution of slashed funds can be paused by the `PauserMultisig`. |
| 25 | +- The upgradability of the `SlashEscrowFactory` is controlled by the `CommunityMultisig`. The contract will have a separate `ProxyAdmin` from the rest of the EigenLayer core protocol. Each individual `SlashEscrow` contract is an immutable clone. |
31 | 26 |
|
32 |
| -🐛 Bug Fixes – List resolved issues. |
33 |
| -- ... |
34 |
| -- ... |
| 27 | +🔧 Improvements |
| 28 | +- The [`AllocationManager.slashOperator`](../docs/core/AllocationManager.md#slashoperator) function now returns a `slashId` and array of `shares` to be burned/redistributed. **The function selector remains the same.** |
| 29 | +- OperatorSets now have a `slashCount` field, which returns the number of slashes completed by the operatorSet. This value only reflects the number of slashes after the redistribution upgrade. |
| 30 | +- `StrategyBase` returns an `amountOut` upon withdrawal to comply with standard ERC-4626 vaults. |
| 31 | +- The `AllocationManager` and `DelegationManager` no longer use ownable. Thus, they now inherit the `Deprecated_OwnableUpgradeable` mixin in its place to reduce codesize. |
35 | 32 |
|
| 33 | +🐛 Bug Fixes |
| 34 | +- `SemVerMixin` is updated to only return the first character of `majorVersion`. We currently return `1.` and will return `1` after this upgrade. |
36 | 35 |
|
37 |
| -## Changelog |
38 |
| - |
39 |
| -Copy the one that's auto generated from github by default to here, and submit PR for review |
40 | 36 |
|
| 37 | +## Changelog |
41 | 38 |
|
42 |
| -- merged PRs in diff from last release |
43 |
| -- contributors |
44 |
| -- etc |
| 39 | +- chore: style updates [PR #1416](https://github.com/layr-labs/eigenlayer-contracts/pull/1416) |
| 40 | +- perf: avoid binary search [PR #1417](https://github.com/layr-labs/eigenlayer-contracts/pull/1417) |
| 41 | +- feat: release escrow by strategy [PR #1412](https://github.com/layr-labs/eigenlayer-contracts/pull/1412) |
| 42 | +- refactor: review changes [PR #1411](https://github.com/layr-labs/eigenlayer-contracts/pull/1411) |
| 43 | +- refactor: `decreaseBurnOrRedistributableShares` [PR #1414](https://github.com/layr-labs/eigenlayer-contracts/pull/1414) |
| 44 | +- feat: deploy escrow in `initiateSlashEscrow` [PR #1413](https://github.com/layr-labs/eigenlayer-contracts/pull/1413) |
| 45 | +- chore: update naming [PR #1408](https://github.com/layr-labs/eigenlayer-contracts/pull/1408) |
| 46 | +- feat: simplify escrow delay; add convenience functions [PR #1406](https://github.com/layr-labs/eigenlayer-contracts/pull/1406) |
| 47 | +- fix: enumerable map overwrite [PR #1399](https://github.com/layr-labs/eigenlayer-contracts/pull/1399) |
| 48 | +- chore: decrease dm diff further [PR #1404](https://github.com/layr-labs/eigenlayer-contracts/pull/1404) |
| 49 | +- test: full coverage `SlashEscrowFactory` + `SlashEscrow` [PR #1403](https://github.com/layr-labs/eigenlayer-contracts/pull/1403) |
| 50 | +- chore: remove dm/alm code size optimizations [PR #1398](https://github.com/layr-labs/eigenlayer-contracts/pull/1398) |
| 51 | +- chore: rename burnable -> burnOrRedistributable; fix storage gap; remove poc code [PR #1397](https://github.com/layr-labs/eigenlayer-contracts/pull/1397) |
| 52 | +- chore: use internal getters; update `isOperatorRedistributable` [PR #1401](https://github.com/layr-labs/eigenlayer-contracts/pull/1401) |
| 53 | +- fix: storage checker [PR #1394](https://github.com/layr-labs/eigenlayer-contracts/pull/1394) |
| 54 | +- fix: review issues [PR #1391](https://github.com/layr-labs/eigenlayer-contracts/pull/1391) |
| 55 | +- feat: escrow funds in unique clone contracts [PR #1387](https://github.com/layr-labs/eigenlayer-contracts/pull/1387) |
| 56 | +- refactor: remove `v` prefix from `SemVerMixin` [PR #1385](https://github.com/layr-labs/eigenlayer-contracts/pull/1385) |
| 57 | +- test(redistribution): add unit tests [PR #1383](https://github.com/layr-labs/eigenlayer-contracts/pull/1383) |
| 58 | +- feat: add `SlashingWithdrawalRouter` [PR #1358](https://github.com/layr-labs/eigenlayer-contracts/pull/1358) |
| 59 | +- feat: simplify removeDepositShares in StrategyManager [PR #1373](https://github.com/layr-labs/eigenlayer-contracts/pull/1373) |
| 60 | +- feat(draft): `AllocationManager` redistribution support [PR #1346](https://github.com/layr-labs/eigenlayer-contracts/pull/1346) |
| 61 | +- ci: add explicit permissions to workflows to mitigate security concerns [PR #1392](https://github.com/layr-labs/eigenlayer-contracts/pull/1392) |
| 62 | +- ci: remove branch constraint for foundry coverage job |
| 63 | +- docs: add release managers to changelogs |
| 64 | +- docs: add templates for changelog and release notes [PR #1382](https://github.com/layr-labs/eigenlayer-contracts/pull/1382) |
| 65 | +- docs: add doc for steps to write deploy scripts [PR #1380](https://github.com/layr-labs/eigenlayer-contracts/pull/1380) |
| 66 | +- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts [PR #1378](https://github.com/layr-labs/eigenlayer-contracts/pull/1378) |
| 67 | +- docs: update MAINTENANCE to include practices of merging multiple release-dev branches |
| 68 | +- docs: updating readme for dead links, readability, new language, and more [PR #1377](https://github.com/layr-labs/eigenlayer-contracts/pull/1377) |
| 69 | +- docs: bump deployment matrix to top of README [PR #1376](https://github.com/layr-labs/eigenlayer-contracts/pull/1376) |
| 70 | +- ci: add CI to auto validate deployment scripts [PR #1360](https://github.com/layr-labs/eigenlayer-contracts/pull/1360) |
| 71 | +- chore: update readme for v1.4.1 [PR #1361](https://github.com/layr-labs/eigenlayer-contracts/pull/1361) |
| 72 | +- ci: add cron to auto remove stale branches [PR #1348](https://github.com/layr-labs/eigenlayer-contracts/pull/1348) |
| 73 | +- chore: Update README for Holesky v1.4.2 release [PR #1351](https://github.com/layr-labs/eigenlayer-contracts/pull/1351) |
| 74 | +- docs: remove fork-pr instructions from CONTRIBUTING.md and MAINTENANCE.md |
| 75 | +- ci: disable delete unauthorized branches |
| 76 | +- docs: update addresses for mainnet [PR #1341](https://github.com/layr-labs/eigenlayer-contracts/pull/1341) |
| 77 | +- docs: enrich MAINTENANCE.md re: release branches [PR #1340](https://github.com/layr-labs/eigenlayer-contracts/pull/1340) |
| 78 | +- ci: enable auto delete branch upon eigengit launch [PR #1339](https://github.com/layr-labs/eigenlayer-contracts/pull/1339) |
0 commit comments