Skip to content

Conversation

@eigenmikem
Copy link
Contributor

@eigenmikem eigenmikem commented Dec 1, 2025

Motivation:

Financial AVS's need stake constraints (duration, quantity) in order to use EigenLayer.

Modifications:

A new type of strategy, DurationVaultStrategy, that enforces delegate stake caps and duration constraints, and registers as an operator. Also includes modifications to the StrategyManager and default strategies, including hooks before shares are added/removed, to accommodate alternative stake models.

Result:

Financial AVS's will have the tools to build on Eigenlayer more easily.

Copy link
Collaborator

@ypatil12 ypatil12 left a comment

Choose a reason for hiding this comment

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

Looks good! General state machine + readability improvements. Big question is still around guarantees we need around staker delegation at the time of deposit.

require(!isBlacklisted[underlyingToken], BlacklistedToken());
require(address(durationVaultBeacon) != address(0), DurationVaultBeaconNotSet());

newVault = IDurationVaultStrategy(
Copy link
Collaborator

Choose a reason for hiding this comment

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

Do we want these to be deterministic deploys?

address newVaultAdmin
) external;

function vaultAdmin() external view returns (address);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Instead of vaultAdmin, is it worth just inheriting Ownable? Reduces the surface area of code IMO.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Do we want it to be transferable?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Don't think we need it to be transferrable? Fine to just leave as an immutable at deploy

ypatil12
ypatil12 previously approved these changes Dec 3, 2025
address newVaultAdmin
) external;

function vaultAdmin() external view returns (address);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Don't think we need it to be transferrable? Fine to just leave as an immutable at deploy

* @notice Locks the vault, preventing new deposits and withdrawals until maturity.
*/
function lock() external override onlyVaultAdmin {
require(_state == VaultState.Deposits, VaultAlreadyLocked());
Copy link
Collaborator

Choose a reason for hiding this comment

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

Do we want a startTime for the vault? Unsure what the user story is for when the vault can begin allocation

Copy link
Collaborator

Choose a reason for hiding this comment

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

Having a unique start time per vault enables each vault to have a deterministic deployment... again unsure if that's a relevant user story

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We used to have defined deposit windows but removed to make things easier for AVSs. Insurance AVS can lock at an arbitrary time but it's expected they will say publicly

@ypatil12 ypatil12 dismissed their stale review December 3, 2025 14:36

Did not mean to approve

@eigenmikem eigenmikem changed the base branch from main to release-dev/duration-vaults December 4, 2025 15:02
@eigenmikem eigenmikem force-pushed the mike/duration-strategy branch from fb1301d to 8829ce2 Compare December 16, 2025 18:10
Copy link

@elhajin elhajin left a comment

Choose a reason for hiding this comment

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

overall , looks good

Copy link

@elhajin elhajin left a comment

Choose a reason for hiding this comment

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

lgtm

@eigenmikem eigenmikem merged commit bcb0707 into release-dev/duration-vaults Jan 5, 2026
15 checks passed
@eigenmikem eigenmikem deleted the mike/duration-strategy branch January 5, 2026 22:42
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.

5 participants