Skip to content

Conversation

@ypatil12
Copy link
Collaborator

@ypatil12 ypatil12 commented Oct 1, 2025

Motivation:

Newly created operators in core have to wait 17.5 days to begin allocating. This is a UX painpoint for new AVSs to onboard their operators.

Modifications:

Update the AllocationManager so that the allocation delay for a newly created operator is active immediately. This allows operators to make an allocation immediately

Result:

Easier onboarding

@ypatil12 ypatil12 changed the base branch from release/slashing-ux-improvements to release-dev/slashing-ux-improvements October 2, 2025 14:55
@ypatil12 ypatil12 force-pushed the feat/operator-0-delay branch from 54b756c to 68e1331 Compare October 2, 2025 18:15
eigenmikem
eigenmikem previously approved these changes Oct 2, 2025
@ypatil12 ypatil12 dismissed eigenmikem’s stale review October 6, 2025 16:56

New implementation

Copy link
Collaborator

@nadir-akhtar nadir-akhtar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small comments regarding comments. Change otherwise LGTM!

Copy link
Contributor

@eigenmikem eigenmikem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM other than what Nadir said, ty for this

@ypatil12 ypatil12 merged commit bce9cbb into release-dev/slashing-ux-improvements Oct 6, 2025
9 checks passed
@ypatil12 ypatil12 deleted the feat/operator-0-delay branch October 6, 2025 18:59
ypatil12 added a commit that referenced this pull request Oct 15, 2025
**Motivation:**

Newly created operators in core have to wait 17.5 days to begin
allocating. This is a UX painpoint for new AVSs to onboard their
operators.

**Modifications:**

Update the `AllocationManager` so that the allocation delay for a newly
created operator is active immediately block. This allows operators to
make an allocation at the very next block.

**Result:**

Easier onboarding
ypatil12 added a commit that referenced this pull request Nov 6, 2025
**Motivation:**

Newly created operators in core have to wait 17.5 days to begin
allocating. This is a UX painpoint for new AVSs to onboard their
operators.

**Modifications:**

Update the `AllocationManager` so that the allocation delay for a newly
created operator is active immediately block. This allows operators to
make an allocation at the very next block.

**Result:**

Easier onboarding
ypatil12 added a commit that referenced this pull request Dec 2, 2025
# 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](../docs/core/AllocationManager.md#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](#1502) for
more information.


# Changelog

- feat: re-enable forge fmt + foundry v1.5.0 [PR
#1669](#1669)
- feat: substitute calcSlashedAmount for scaleForBurning [PR
#1502](#1502)
- fix: `v1.9.0` upgrade script [PR
#1666](#1666)
- feat: `v1.9.0` upgrade scripts + reusable upgrade helpers [PR
#1665](#1665)
- chore: update interface natspec for DM [PR
#1664](#1664)
- feat: slashing commitments [PR
#1645](#1645)
- feat: remove semver + minor optimizations [PR
#1654](#1654)
- feat: split `AllocationManager` [PR
#1643](#1643)
- feat: add protocol registry [PR
#1655](#1655)
- feat: instant alloc delay from dm [PR
#1646](#1646)
- chore: remove holesky [PR
#1662](#1662)
- chore: hardcode foundry ci to v1.3.5 [PR
#1658](#1658)
- chore: hardcode foundry to v1.3.5 in ci [PR
#1657](#1657)
- feat(audit): publish Hourglass + Multichain + RMS audit reports [PR
#1644](#1644)
- docs: add transport frequency for multichain [PR
#1642](#1642)
- chore: update readMe for multichain/hourglass [PR
#1637](#1637)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants