EigenLayer Strategy
This section explains how the curators of EigenLayer vaults can choose and adjust their underlying restaking strategy (i.e the portfolio of AVSs and Operator Sets the vault is exposed to).
Prerequisites
Before continuing, make sure you understood the concept of Operator Sets and Unique Stake on Eigen Layer.
Overview
Currently on Eigen Layer, the restaking strategy is mastered by the operators. This is the address managing the operator who can allocate an operator delegated stake to different operator sets. This is done by calling the function
modifyAllocations
on the Allocation Manager contract.The Eigen Byz vaults curators can only choose (or change) the operator their vault's stake will be delegated to.
It is thus recommended to the curators to do a due diligence on the operator you are about to delegate to or to work closely with the entity running the operators.
To learn more about node operator onboarding steps on Eigen Layer and allocation of their unique stake among operator sets, refer to this section.
The relevant curator roles mentioned in this section is
delegationSetRoleHolder
(cf. here)

Operator Delegation Management
Delegation
The DELEGATION_MANAGER_ROLE
holder can delegate byz vault's assets to an eigen layer operators by calling the function (from either an EigenERC20ByzVault or an EigenNativeByzVault):
function delegateTo(
address operator,
SignatureWithExpiry approverSignatureAndExpiry,
bytes32 approverSalt
) external;
Undelegation
The DELEGATION_MANAGER_ROLE
holder can undelegate all the delegated vault's assets from the eigen operator by calling the function (from either an EigenERC20ByzVault or an EigenNativeByzVault):
function undelegate() external returns (bytes32);
This function queues a withdrawal of all the vault's delegated stake on Eigen Layer to remove the assets from the current delegated operator. As all Eigen withdrawals, the queued assets are still subject to slashing until the withdrawal is completable (after
MIN_WITHDRAWAL_DELAY_BLOCKS
blocks which is approximatively 14 days).The id of the withdrawal request is returned by the function.
To fully undelegate, a call to the function
completeUndelegation
is required after the withdrawal delay period elapsed.
Redelegation to a new operator
The DELEGATION_MANAGER_ROLE
holder can also redelegate the vault's assets to a new operator (for example if the current operator changes the restaking strategy that does't meet anymore the curator's need). Just call the below function (from either an EigenERC20ByzVault or an EigenNativeByzVault):
function redelegate(
address newOperator,
SignatureWithExpiry newOperatorApproverSig,
bytes32 approverSalt
) external returns (bytes32);
A call to this function acts as a call to
undelegate
and thendelegateTo
.An operator's approver signature and salt might be required if new delegations to the operator are permissioned (more details here)
For the stake to be fully delegated to the new operator, a call to
completeUndelegation
will be required at the end of the withdrawal period.
Complete Undelegation
As all undelegations act as withdrawals on Eigen Layer, it must be completed after the withdrawal period (14 days). Anyone can call this function to complete an undelegation process:
function completeUndelegation() external;
Effect:
If called after a call to
undelegate
, the byzantine vault simply get back its assets and do not do nothing it (no active restaking, so stake not slashable, no rewards generation)If called after a call to
redelegate
, the assets are pulled from the previous operator and deposited / delegated to the new operator, specified at redelegation. The stake is still slashable and the vault will continue earning restaking rewards.
Useful Information For Strategy Management
It is possible to monitor or read data about the Eigen restaking strategy by interacting with the following functions:
Get the operator address the vault's stake is currently delegated to
EigenERC20ByzVault
or EigenNativeByzVault
delegatedTo()
Returns the current/pending stake allocation an operator has from a strategy (token) to an operator set
AllocationManager
getAllocation()
Given a strategy (a token), returns a list of operator sets and corresponding stake allocations an operator is exposed to. Note that this returns a list of ALL operator sets the operator has allocations in. This means some of the returned allocations may be zero.
AllocationManager
getStrategyAllocations()
Last updated