v1.5.0-rc.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 will now be routed to individual
SlashEscrow
contracts. The release of funds from escrow is gated by theSlashEscrowFactory
. TheSlashEscrowFactory
deploys individualSlashEscrow
contracts per slash, enforces a global delay for all escrowed funds, and handles pausing/unpausing of escrowed funds. - 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.
β Breaking changes
- Funds marked for burning now go through a 4-day escrow period via
SlashEscrow
contracts. These funds are burned by callingSlashEscrowFactory.releaseSlashEscrow
.
π 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 4-day escrow delay. The eventual burning or redistribution of slashed funds can be paused by the
PauserMultisig
. - The upgradability of the
SlashEscrowFactory
is controlled by theCommunityMultisig
. The contract will have a separateProxyAdmin
from the rest of the EigenLayer core protocol. Each individualSlashEscrow
contract is an immutable clone.
π§ 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.
What's Changed
- docs: add StrategyBase accounting doc by @nadir-akhtar in #1233
- feat: v1.4.0 upgrade script by @ypatil12 in #1244
- chore: add release label by @bowenli86 in #1253
- feat: support all characters after colon by @0xClandestine in #1255
- docs: Clarify AVS Meaning for AllocationManager and Effect of invoking updateAVSMetadataURI by @wesfloyd in #1259
- chore: add missing fn to interface by @0xClandestine in #1271
- chore: address ep/epm informational by @ypatil12 in #1272
- docs: post-cantina doc updates by @ypatil12 in #1266
- fix(cantina): deposit share cast bug by @8sunyuan in #1265
- chore: add event to dsf reset on full withdrawal by @eigenmikem in #1270
- feat: cantina preprod/testnet upgrade scripts by @ypatil12 in #1286
- fix: v1.4.1 execute script name by @ypatil12 in #1297
- docs: add sepolia by @ypatil12 in #1309
- docs: complete MAINTENANCE.md and clarify maintainers responsibility by @bowenli86 in #1314
- docs: simplify readme and consolidate with CONTRIBUTING.md by @bowenli86 in #1317
- docs: improve readability and searchbility with tabs for deployment contracts by @bowenli86 in #1318
- ci: change certora prover to run on main by @bowenli86 in #1319
- ci: add path filter for intense test by @bowenli86 in #1320
- docs: callout consequences of not follow contribution guidelines by @bowenli86 in #1326
- fix: update sepolia wETH strategy contract link with correct address by @pschork in #1336
- ci: enable auto delete branch upon eigengit launch by @bowenli86 in #1339
- docs: enrich MAINTENANCE.md re: release branches by @bowenli86 in #1340
- docs: update addresses for mainnet by @ypatil12 in #1341
- chore: Update README for Holesky v1.4.2 release by @solimander in #1351
- ci: add cron to auto remove stale branches by @bowenli86 in #1348
- chore: update readme for v1.4.1 by @ypatil12 in #1361
- ci: add CI to auto validate deployment scripts by @bowenli86 in #1360
- docs: bump deployment matrix to top of README by @bowenli86 in #1376
- docs: updating readme for dead links, readability, new language, and more by @non-fungible-nelson in #1377
- ci: add testnet envs sepolia and hoodi to validate-deployment-scripts by @bowenli86 in #1378
- docs: add doc for steps to write deploy scripts by @bowenli86 in #1380
- ci: add explicit permissions to workflows to mitigate security concerns by @bowenli86 in #1392
- chore: update .gitattributes with Certora .spec/.conf formatting by @nadir-akhtar in #1379
- chore: add instruction of generating changelog from last release by @bowenli86 in #1405
- docs: add hoodi by @ypatil12 in #1419
- feat(release): redistribution by @0xClandestine in #1355
New Contributors
- @pschork made their first contribution in #1336
- @non-fungible-nelson made their first contribution in #1377
Full Changelog: v1.4.0-testnet-holesky...v1.5.0-rc.0