Byzantine Finance
Website - Home🖥️ For Developers
  • 👋Introduction
    • What is Byzantine Finance?
      • Permissionless strategy vaults
      • Strategy layer & infrastructure layer - Explain Like I'm 5
      • Architecture Overview
    • Explanation of terms
    • Restaking explained
  • Media kit
  • 🔑Byzantine Vaults
    • What are Byzantine vaults?
    • Features of Native Vaults
      • Byzantine Oracle
      • Best practices for Validator Managers
    • Types of Native Vaults
      • Solo Staker Vaults
      • Partner Validated Vaults
      • Distributed Validator Vaults
  • ↔️Vault Interaction
    • Deposit
      • Deposit to ERC20 Vaults
      • Deposit to Native Vaults
    • Withdraw
      • Withdraw from ERC20 Vaults
      • Withdraw from Native Vaults
    • Claim Rewards
      • Restaking Rewards
        • EigenLayer Rewards
        • Symbiotic Rewards
  • 🎛️Vault Creation
    • Overview
      • Vault Configuration Guide
      • Vault Parameters
        • Byzantine Vault Parameters
        • Native Vault Parameters
        • EigenLayer Parameters
        • Symbiotic Parameters
      • Roles
    • Single Protocol Vaults
      • EigenLayer Vault
        • Eigen ERC20 Vault
        • Eigen Native Vault
      • Symbiotic Vault
        • Sym ERC20 Vault
        • Sym Native Vault
    • Cross Protocol Vaults
      • Eigen Layer / Symbiotic ERC20 Vault
  • 🤖Curation
    • Overview
    • Curator Related Roles
    • Vault Management
    • Strategy Management
      • EigenLayer Strategy
      • Symbiotic Strategy
      • Cross Protocol Vault
    • Curation Fee Management
  • 🌐Node operators
    • Operators in the Byzantine ecosystem
    • Register as a Staking Operator
    • Staking
    • Restaking Operator
      • Symbiotic
      • EigenLayer
      • Allocation to existing Restaking Operators
      • Creation of on-demand Restaking Operators
  • Claiming DV operator fees
Powered by GitBook
On this page
  • ByzVaultParams
  • token
  • roleManager
  • versionManager
  • depositWhitelistManager
  • depositLimitManager
  • curatorFeeClaimer
  • curatorFeeClaimerRoleAdmin
  • curatorFee
  • depositLimit
  • isDepositLimit
  • isPrivateVault
  • isTokenized
  • name
  • symbol
  • metadataURI
  • How to get metadataURI
  1. Vault Creation
  2. Overview
  3. Vault Parameters

Byzantine Vault Parameters

The following section documents the full list of initialization parameters specific to a Byzantine Vault entity. These parameters are grouped under the ByzVaultParams struct, which defines core logic, access controls, fees, and configuration options.

ByzVaultParams

struct ByzVaultParams {
    IERC20 token;
    address roleManager;
    address versionManager;
    address depositWhitelistManager;
    address depositLimitManager;
    address curatorFeeClaimer;
    address curatorFeeClaimerRoleAdmin;
    uint256 curatorFee;
    uint256 depositLimit;
    bool isDepositLimit;
    bool isPrivateVault;
    bool isTokenized;
    string name;
    string symbol;
    string metadataURI;
}

token

The ERC20 token to be deposited into the vault.

  • The token must be associated with a whitelisted EigenLayer Strategy.

  • For ETH deposits on the Beacon Chain, use the canonical address 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE.


roleManager

The address responsible for managing all roles in the Byz Vault—except the curatorFeeClaimer role. It holds the DEFAULT_ADMIN_ROLE and has the authority to grant, revoke, or transfer any of the vault's roles.

  • In the AccessControl contract, this is the address that the role DEFAULT_ADMIN_ROLE is granted to.

  • This address has the authority to:

    • grant any existing role to another address

    • transfer its own roleManager privileges to a new address by renouncing the current role

    • revoke any existing role from any address


versionManager

The address of Byz Vault's version manager.

  • This address can:

    • upgrade the Byz Vault to a newer version of implementation that is whitelisted by Byzantine

    • update the metadata URI of the vault

  • This role can be managed by the roleManager


depositWhitelistManager

The address that manages the whitelist of depositors.

  • This address can:

    • add / remove addresses from the deposit whitelist

    • set / change the vault from public to private or vice versa

  • Can be set to address(0) if whitelistedDeposit is false, in case the creator plans to let anyone deposit

  • This role can be managed by the roleManager


depositLimitManager

Address that can update depositLimit and enable/disable the isDepositLimit status.

  • This role can be managed by the roleManager


curatorFeeClaimer

Address that is the holder of the CURATOR_FEE_CLAIMER_ROLE, can claim the curator fee from the restaking rewards.

  • Only the curatorFeeClaimerRoleAdmin address can manage this role

  • This role cannot be managed by the roleManager


curatorFeeClaimerRoleAdmin

Admin address in charge of managing the CURATOR_FEE_CLAIMER_ROLE.

  • This role holder can:

    • renounce its own admin role

    • revoke the CURATOR_FEE_CLAIMER_ROLE from its holder

    • grant the CURATOR_FEE_CLAIMER_ROLE to a new address


curatorFee

The fee percentage allocated to the vault curator or risk manager, taken from restaking rewards.

  • Expressed in basis points: 1_000 represents 10%, 10_000 represents 100%.


depositLimit

Maximum quantity of assets that can be deposited into the vault.

  • Only enforced when isDepositLimit is true.

  • If isDepositLimit is enabled and depositLimit is not set, the value defaults to 0 and new deposits will be rejected.

  • Can only be modified by the depositLimitManager.


isDepositLimit

  • If true, the vault has a maximum amount of assets that can be deposited.

  • If false, an infinite number of assets can be deposited (theoretically).

  • Only the depositLimitManager can update this later.


isPrivateVault

Defines who is able to deposit in the vault.

  • If true, only the addresses that are whitelisted, i.e. set to true in the canDeposit mapping, can deposit into the Byz Vault

  • Only the depositWhitelistManager can update this later.


isTokenized

Whether the Byz Vault is tokenized or not.

  • If the Byz Vault is tokenized, the byzShares holders can transfer them to other addresses


name

The name of the Byz Vault Shares.


symbol

The symbol of the Byz Vault Shares.


metadataURI

URI pointing to the off-chain metadata associated with the vault.

  • Can only be updated later by the versionManager.

  • This value is not stored on-chain; only and event is emitted.

How to get metadataURI

We expect the URI to point to a JSON object that follows a specific structure. This ensures consistent display of metadata across the app and makes it easier for others to interpret and use it as well.

To achieve this, please follow the structure below:

interface Metadata {
  name: string; // Required
  description: string; // Required
  social_twitter?: string;
  social_discord?: string;
  social_telegram?: string;
  social_website?: string;
  social_github?: string;
}

Only name and description are mandatory. The other fields are optional and allow you to share more context with your users.

Note that this metadata is considered the initial set of parameters, but it can be updated at any time by the versionManager using updateMetadataURI(metadataURI)

We support multiple ways to generate and host the metadata. Choose the method that best suits your setup:

  1. Install Byzantine SDK

npm install @byzantine/vault-sdk@latest
  1. Setup your .env file

// Fill your .env file
PINATA_API_KEY = 
PINATA_SECRET_API_KEY = 
  1. Write your code

// Import Byzantine SDK
import { convertMetadataToURI, Metadata } from "@byzantine/vault-sdk";

const metadata: Metadata = {
  name: "Eigenlayer ETH Vault",
  description: "An Eigenlayer vault for ETH restaking"
};

const uri = await convertMetadataToURI(metadata);

console.log("uri:", uri); // This will print your URI!
  1. Create a file that respect the type above. Let's call it metadata.json , but the name doesn't change anything.

  2. Click on Add / File Upload / [Select your file] / Upload

  1. Get the CID

  1. Convert it into a link https://gateway.pinata.cloud/ipfs/[CID]

That's your URI!

PreviousVault ParametersNextNative Vault Parameters

Last updated 3 days ago

Go to

So bafkreiaprhnvhh54ppa2whrb7blfvqtdgzuuojssogibr3ssibgayhlz6y becomes

🎛️
https://app.pinata.cloud/ipfs/files
https://gateway.pinata.cloud/ipfs/bafkreiaprhnvhh54ppa2whrb7blfvqtdgzuuojssogibr3ssibgayhlz6y