v1.5.0
v1.5.0 Redistribution
Release Manager
Highlights
π New features
- Redistribution is a feature that gives Service Builders a means to not just burn, but repurpose slashed funds.
- We introduce a new operatorSet creation mechanism:
AllocationManager.createRedistributingOperatorSets
, which allows slashed funds to be redistributed to aRedistributionRecipient
. Note: The redistribution recipient can be set only once and is immutable. - All slashed funds now follow a two-step process. During a slash, we increase burn or redistributable shares. A cronjob then handles the actual redistribution or burning of these shares.
- 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. - See ELIP-006 for a full description.
π Future Deprecations
- The pre-redistribution burn pathway
StrategyManager.decreaseBurnableShares
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.
π οΈ Security Updates
- The slashing of burned funds is no longer instantaneous. All slashed funds (burned or redistributed) now go through a two-step process where shares are first marked for burning/redistribution, then processed by a cronjob. The burning or redistribution of slashed funds can be paused by the
PauserMultisig
.
π§ Improvements
- The
AllocationManager.slashOperator
function now returns aslashId
and array ofshares
to be burned/redistributed. The function selector remains the same. - 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. StrategyBase
returns anamountOut
upon withdrawal to comply with standard ERC-4626 vaults.- The
AllocationManager
andDelegationManager
no longer use ownable. Thus, they now inherit theDeprecated_OwnableUpgradeable
mixin in its place to reduce codesize.
π Bug Fixes
SemVerMixin
is updated to only return the first character ofmajorVersion
. We currently return1.
and will return1
after this upgrade.
Changelog
- feat(draft):
AllocationManager
redistribution support PR #1346 - feat: redistribution upgrade script PR #1396
- chore: bindings PR #1422
- test: redistribution upgrade PR #1410
- test: redistribution integration PR #1415
- docs: redistribution PR #1409
- chore: address redistribution nits PR #1420
- chore: style updates PR #1416
- perf: avoid binary search PR #1417
- feat: release escrow by strategy PR #1412
- refactor: review changes PR #1411
- refactor:
decreaseBurnOrRedistributableShares
PR #1414 - feat: deploy escrow in
initiateSlashEscrow
PR #1413 - chore: update naming PR #1408
- feat: simplify escrow delay; add convenience functions PR #1406
- fix: enumerable map overwrite PR #1399
- chore: decrease dm diff further PR #1404
- test: full coverage
SlashEscrowFactory
+SlashEscrow
PR #1403 - chore: remove dm/alm code size optimizations PR #1398
- chore: rename burnable -> burnOrRedistributable; fix storage gap; remove poc code PR #1397
- chore: use internal getters; update
isOperatorRedistributable
PR #1401 - fix: storage checker PR #1394
- fix: review issues PR #1391
- feat: escrow funds in unique clone contracts PR #1387
- refactor: remove
v
prefix fromSemVerMixin
PR #1385 - test(redistribution): add unit tests PR #1383
- feat: add
SlashingWithdrawalRouter
PR #1358 - feat: simplify removeDepositShares in StrategyManager PR #1373
- feat(draft):
AllocationManager
redistribution support PR #1346 - ci: add explicit permissions to workflows to mitigate security concerns PR #1392
- ci: remove branch constraint for foundry coverage job
- docs: add release managers to changelogs
- docs: add templates for changelog and release notes PR #1382
- docs: add doc for steps to write deploy scripts PR #1380
- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts PR #1378
- docs: update MAINTENANCE to include practices of merging multiple release-dev branches
- docs: updating readme for dead links, readability, new language, and more PR #1377
- docs: bump deployment matrix to top of README PR #1376
- ci: add CI to auto validate deployment scripts PR #1360
- chore: update readme for v1.4.1 PR #1361
- ci: add cron to auto remove stale branches PR #1348
- chore: Update README for Holesky v1.4.2 release PR #1351
- docs: remove fork-pr instructions from CONTRIBUTING.md and MAINTENANCE.md
- ci: disable delete unauthorized branches
- docs: update addresses for mainnet PR #1341
- docs: enrich MAINTENANCE.md re: release branches PR #1340
- ci: enable auto delete branch upon eigengit launch PR #1339
- test(redistribution-changes): passing PR #1511
- fix: strategy manager gap PR #1508
- refactor: remove redistribution delay PR #1485
- docs(audit): note upgrade rescue flow PR #1467
- fix(audit): assert redistribution recipient != burn address PR #1466
- fix(audit): more reentrancy checks PR #1450
- fix(audit): out-of-gas issue PR #1459
- fix(audit): assert redistribution recipient != burn address PR #1466
- docs(audit): note upgrade rescue flow PR #1467
- refactor: remove redistribution delay PR #1485
- fix: strategy manager gap PR #1508
- test(redistribution-changes): passing PR #1511
- docs(redistribution-changes): cleanup PR #1513
- docs: update CHANGELOG PR #1514
- feat: redistribution upgrade scripts PR #1517
Full Changelog: v1.4.1...v1.5.0