Skip to content

v1.9.0-rc.0: Slashing UX Improvements

Pre-release
Pre-release

Choose a tag to compare

@ypatil12 ypatil12 released this 10 Dec 18:38
· 1 commit to main since this release
1564be7

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 AllocationManager has been split into two contracts to address size limitations of the contract. The main contract handles state-mutating operations, while AllocationManagerView handles all read-only view functions. This is not a breaking change for introspection as previous introspection calls fallback to delegateCall into the AllocationManagerView contract.. For more information, see the contract architecture.
  • The ProtocolRegistry is 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 createOperatorSets functions (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 a ALLOCATION_CONFIGURATION_DELAY (17.5 days on mainnet).

⛔ Breaking Changes

  • The slasher permissions are set and stored in the AllocationManager instead of the PermissionController. 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 PermissionController is 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
  • Semver (SemverMixin.sol) has been removed from all contracts, except from those that inherit the SignatureUtilsMixin. The version of the core protocol can be introspected via the ProtocolRegistry.

📌 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 _canCall in the PermissionControllerMixin for space savings. This function is used in the AllocationManager and DelegationManager.
  • 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.scaleForBurning function has been deprecated in favor of SlashingLib.calcSlashedAmount, standardizing the calculation of slashed shares across the withdrawal queue and storage. See PR #1502 for more information.

What's Changed

Full Changelog: v1.8.1...v1.9.0-rc.0