Eigen Native Vault

TODO

This flow is for launching vaults that accept native ETH as collateral, including DV, Partner Validated, or Solo Staker Vaults.

1. Determine the type of Native Vault you want

Choose the type of Native Vault you want, based on how you want the staking validation to be handled. there are 3 types of vaults :

  • Solo Staker Vault

  • Partner Validated Vault

  • Distributed Validator Vault

Refer to Types of Native Vaults section for more details on the types of vaults.

2. Construct the NativeByzVaultParams struct

You must populate:

  • byzVaultParams: Same structure as for the Eigen ERC20 Vault creation.

  • operatorId: The value corresponds to the hashed identifier of the type of vault you have chosen in section 1:

    • hash("distributed.validator.vault") for DV Vaults

    • hash("company.name") for Partner Validated Vaults

    • bytes32(0) for Solo Staker Vaults

  • validatorManagers: Required only for Solo Staker Vaults. Addresses of validator managers. Cannot be changed after creation.

Refer to the fullNativeByzVaultParams specification for detailed usage guidelines.

3. Configure EigenParams struct

Same fields and logic as described in the 3. Configure EigenParams struct section

4. Prepare EigenPodParams struct

Set the following:

  • eigenPodOwner: Controls pod checkpoints and withdrawal credentials

  • proofSubmitter: (optional) Can submit withdrawal proofs

Refer to the EigenLayer Parameters section for details on how to populate these fields.

5. Call the Factory

Call the following function from the Byzantine Factory with your parameters:

function createEigenByzVault(
    NativeByzVaultParams calldata _nativeByzVaultParams,
    EigenParams calldata _eigenParams,
    EigenPodParams calldata _eigenPodParams
) external returns (address eigenByzVault);

Once called, the factory:

  • Deploys a proxy contract for the native ETH-compatible vault

  • Initializes the vault with the provided configuration

  • Configures delegation and pod interaction with EigenLayer

✅ The function returns the new vault address. You can now deposit native ETH.

Last updated