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
    • Deployment guide
      • Vault Parameters
        • Byzantine Vault Parameters
        • Native Vault Parameters
        • EigenLayer Parameters
        • EigenPod Parameters
        • Symbiotic Parameters
    • 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
    • Restaking 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 Operators Guide
      • EigenLayer Operators Guide
      • Documentation to run the nodes
  • Claiming DV operator fees
Powered by GitBook
On this page
  • ByzVaultParams
  • Breaking down the parameters
  • How to generate metadata URI
  1. Vault Creation
  2. Deployment guide
  3. Vault Parameters

Byzantine Vault Parameters

This page documents the full list of initialization parameters specific to a Byzantine Vault entity. All the Byzantine Vaults must establish these structure of settings beforehand creation.

ByzVaultParams

Parameter
Type

address

address

address

address

address

address

address

number

boolean

boolean

boolean

boolean

string

string

string

Breaking down the parameters

token

The ERC20 token to be deposited into the vault - the collateral token.

  • For native ETH, use the canonical address 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE.


roleManager

This address holds the highest level of authority and is the most powerful within the system. It must be highly trustworthy, and it is strongly recommended to use a high-threshold multi-sig to ensure robust security.

  • This address holds the DEFAULT_ADMIN_ROLE and has the authority to grant and revoke any of the vault's roles - with no adminRole explicitly set - to any addresses.

  • This role holder can also renounce the role, blocking the addition of new curator addresses.

  • Can be set to address(0) to prevent the addition of new curator addresses after deployment. In this case, the vault creator must ensure that all necessary roles are assigned at creation to guarantee proper vault functionality.


versionManager

This address manages the implementation version of the Byzantine Vault and its underlying vaults.

  • This address can:

    • upgrade the Byzantine Vault to a newer implementation that has been whitelisted by Byzantine

    • update the metadata URI of the vault`

    • migrate the underlying Symbiotic vault to a newer version (only if an underlying Symbiotic Vault exists)


depositWhitelistManager

This address manages the whitelist of depositors / stakers and can change the vault's accessibility.

  • This address can:

    • add / remove addresses from the deposit - staker - whitelist

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

  • If the vault is public, whitelisting depositors - stakers - will revert.


depositLimitManager

This address manages the maximum number of tokens that can be deposited in the vault.

  • This address can:


curatorFeeClaimer

curatorFeeClaimerRoleAdmin
  • This address can:

    • grant the CURATOR_FEE_CLAIMER_ROLE to new addresses

    • revoke the CURATOR_FEE_CLAIMER_ROLE from an address

    • renounce the role, and therefore blocking the addition of new curator fee claimers.


curatorFee

The curator fee taken from the accrued restaking rewards (in percentage).

  • Expressed in basis points:

    • 500 represents 5%,

    • 10_000 represents 100%.


depositLimit

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


isDepositLimit

Determines whether the vault has a cap or not.

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


isPrivateVault

Defines the vault's accessibility.

  • If true, only the addresses that are whitelisted - set to true in the canDeposit mapping - are allowed to deposit into the vault


isTokenized

Whether the Byzantine vault shares are transferable or not.

  • If true, the vault shares can be transfered to other addresses or contracts. It makes the vault composable in the DeFi space.

Accumulated restaking rewards cannot be transferred with the shares. Rewards can only be claimed by the shares holder at the time of the distribution.


name

The name of your Byz Vault Shares.


symbol

The symbol of your Byz Vault Shares.


metadataURI

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

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

How to generate metadata URI

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.

  1. Install Byzantine SDK

npm install @byzantine/vault-sdk@latest
// 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";
import * as dotenv from "dotenv";
dotenv.config();

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. Run the command

npx tsx index.ts # If using typescript
# or
node index.js # If using Javascript
  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 13 days ago

For Eigen vaults, make sure the token address is or has a (if not the transaction will revert).

This role can be managed by the (if any)

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

This role can be managed by the (if any)

set / change the vault's

enable / disable the status

If is false, the will not be taken into account.

Can be set to address(0) if is false, in case the creator does not plan to cap the vault.

This role can be managed by the (if any)

This address can from the restaking rewards accrued by the vault.

Only the can manage this role (if set)

This address manages the CURATOR_FEE_CLAIMER_ROLE holders and can change the post deployment.

change / adjust the

Only enforced when is true.

If is enabled - true - and depositLimit is not set, the value defaults to 0 and new deposits will be rejected. In other words, the curator must set a depositLimit if the vault requires one, otherwise it won't be possible to deposit.

Can only be modified by the .

If true, the vault will not accept new deposits who exceed .

Can only be modified by the .

Can only be modified by the .

Can only be updated by the .

Refers to the to learn how to generate vault's metadata URI

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

Note that, although initially set at creation, the metadata can be updated at any time by the by calling

There is two ways of generating Metadata URI, with the or the . Choose the method that best suits your setup:

Generate a (if you don't already have one) and setup your .env file

Go to

So bafkreiaprhnvhh54ppa2whrb7blfvqtdgzuuojssogibr3ssibgayhlz6y becomes

🎛️
whitelisted
corresponding EigenLayer Strategy
roleManager
isPrivateVault
roleManager
depositLimit
isDepositLimit
isDepositLimit
depositLimit
isDepositLimit
roleManager
claim the curator fee
curatorFeeClaimerRoleAdmin
curatorFee
curatorFee
isDepositLimit
isDepositLimit
depositLimitManager
depositLimit
depositLimitManager
depositWhitelistManager
versionManager
below section
app
versionManager
updateMetadataURI(metadataURI)
vault's SDK
Pinata interface
Pinata API key
https://app.pinata.cloud/ipfs/files
https://gateway.pinata.cloud/ipfs/bafkreiaprhnvhh54ppa2whrb7blfvqtdgzuuojssogibr3ssibgayhlz6y
token
roleManager
versionManager
depositWhitelistManager
depositLimitManager
curatorFeeClaimer
curatorFeeClaimerRoleAdmin
curatorFee
depositLimit
isDepositLimit
isPrivateVault
isTokenized
name
symbol
metadataURI