Skip to content

v1.5.0

Compare
Choose a tag to compare
@ypatil12 ypatil12 released this 07 Jul 20:11
· 1 commit to release/redistribution since this release

v1.5.0 Redistribution

Release Manager

@0xClandestine @ypatil12

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 a RedistributionRecipient. 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 a slashId and array of shares 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 an amountOut upon withdrawal to comply with standard ERC-4626 vaults.
  • The AllocationManager and DelegationManager no longer use ownable. Thus, they now inherit the Deprecated_OwnableUpgradeable mixin in its place to reduce codesize.

πŸ› Bug Fixes

  • SemVerMixin is updated to only return the first character of majorVersion. We currently return 1. and will return 1 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 from SemVerMixin 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