v1.9.0-rc.0: Slashing UX Improvements
Pre-release
Pre-release
v1.9.0 Slashing UX Improvements
Release Manager
@ypatil12 @eigenmikem @0xClandestine
Overview
The Slashing UX improvement release is a tech debt-focused release that improves key parts of the Eigenlayer Core UX. This release will upgrade every core contract.
The below release notes cover Core Contracts.
Highlights
🚀 New Features
- The
AllocationManagerhas been split into two contracts to address size limitations of the contract. The main contract handles state-mutating operations, whileAllocationManagerViewhandles all read-only view functions. This is not a breaking change for introspection as previous introspection calls fallback todelegateCallinto theAllocationManagerViewcontract.. For more information, see the contract architecture. - The
ProtocolRegistryis a new contract that stores all proxy contract addresses, global semver, and has the ability to pause the entire protocol. This contract will be deployed on all chains. - Two new
createOperatorSetsfunctions (for redistributing and non redistributing operatorSets) have been added that take in a slasher address. This address is the only address that can slash an operatorSet. Changing the address is behind aALLOCATION_CONFIGURATION_DELAY(17.5 days on mainnet).
⛔ Breaking Changes
- The slasher permissions are set and stored in the
AllocationManagerinstead of thePermissionController. Only one address can slash an operatorSet; the address is initially set upon creation of the operatorSet. OperatorSets created prior to this release will have their slasher migrated based on the following rules:- If there is no slasher set or the slasher in the
PermissionControlleris the 0 address, the AVS address will be set as the slasher - If there are multiple slashers set in the
PermissionController, the first address will be set as the slasher
- If there is no slasher set or the slasher in the
- Semver (
SemverMixin.sol) has been removed from all contracts, except from those that inherit theSignatureUtilsMixin. The version of the core protocol can be introspected via theProtocolRegistry.
📌 Deprecations
The old createOperatorSets functions in the leftmost column will be deprecated in Q2 2026 in favor of the newly specified functions. The old functions do not pass in a slasher. The new functions do pass in a slasher. If the old function is used, the slasher of the operatorSet is set to the avs address.
| Function | MigrateTo | Notes |
|---|---|---|
createOperatorSets(avs, CreateSetParams[]) |
createOperatorSets(address avs, CreateSetParamsV2[]) |
New function takes in a slasher address |
createRedistributingOperatorSets(avs, CreateSetParams[], redistributionRecipients[]) |
createRedistributingOperatorSets(avs, CreateSetParamsV2[], redistributionRecipients[]) |
New function takes in a slasher address |
🔧 Improvements
- Added a non-revert
_canCallin thePermissionControllerMixinfor space savings. This function is used in theAllocationManagerandDelegationManager. - The allocation delay for a newly created operator is active immediately. This allows operators to make allocations instantly after registering in the core.
- The internal
SlashingLib.scaleForBurningfunction has been deprecated in favor ofSlashingLib.calcSlashedAmount, standardizing the calculation of slashed shares across the withdrawal queue and storage. See PR #1502 for more information.
What's Changed
- chore: update readMe for multichain/hourglass by @ypatil12 in #1637
- docs: add transport frequency for multichain by @ypatil12 in #1642
- feat(audit): publish Hourglass + Multichain + RMS audit reports by @nadir-akhtar in #1644
- chore: hardcode foundry to v1.3.5 in ci by @0xClandestine in #1657
- chore: hardcode foundry ci to v1.3.5 by @0xClandestine in #1658
- chore: remove holesky by @ypatil12 in #1662
- feat: release notes; fix compile; add
ProtocolRegistrydocs by @ypatil12 in #1672 - fix: correct storage gap for ProtocolRegistryStorage by @nadir-akhtar in #1673
- feat: slashing ux improvements by @ypatil12 in #1670
Full Changelog: v1.8.1...v1.9.0-rc.0