Skip to content

Conversation

@eigenmikem
Copy link
Contributor

Motivation:

Explain here the context, and why you're making that change. What is the problem you're trying to solve.

Modifications:

Describe the modifications you've done.

Result:

After your change, what will change.

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

string calldata newMetadataURI
) external override onlyVaultAdmin {
metadataURI = newMetadataURI;
emit MetadataURIUpdated(newMetadataURI);
Copy link
Collaborator

Choose a reason for hiding this comment

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

How does the metadataURI here differ from the operator metadataURI. Do we need two different ones? Also, do we have a plan for how the UI will look with these vault Strats?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

metadataURI would just describe the vault properties. It would be the same as operator metadataURI, but I liked the idea of it being tied to the strategy contract directly rather than indirectly through it registering as an operator

@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
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