Eigen ERC20 Vault
This flow is for users who want to launch an EigenByzVault that accepts an ERC20 token as collateral. Make sure the ERC20 token is supported by EigenLayer and whitelisted in the strategy registry.
1. Choose a whitelisted ERC20 token
Select the ERC20 token to be used as the vault’s collateral. Ensure that it is whitelisted in the strategy factory and accepted by EigenLayer.
2. Construct the ByzVaultParams struct
You will need to populate the following fields:
token
: The address of the ERC20 token. Must be accepted by EigenLayer. Use0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
for canonical ETH.roleManager
: The main admin who can grant/revoke all roles in the vault (except curatorFeeClaimer).versionManager
: The address that can upgrade the vault implementation and update the vault metadata URI.depositWhitelistManager
: Manages who is allowed to deposit ifisPrivateVault = true
. Can be set toaddress(0)
if you want permissionless deposits.depositLimitManager
: Sets and toggles thedepositLimit
. Required ifisDepositLimit = true
.curatorFeeClaimer
: Can claim rewards earned by the vault curator. This role is managed only by thecuratorFeeClaimerRoleAdmin
.curatorFeeClaimerRoleAdmin
: Can assign or revoke thecuratorFeeClaimer
role.curatorFee
: Value between 0 and 10,000, representing 0% to 100%. For example, 1,000 = 10% curator fee.depositLimit
: Maximum assets that can be deposited. Required ifisDepositLimit = true
. Set to 0 to block new deposits.isDepositLimit
: Boolean to enable/disable the deposit limit mechanism.isPrivateVault
: Iftrue
, only whitelisted users can deposit. Iffalse
, anyone can deposit.isTokenized
: Settrue
if vault shares should be tradable (ERC20); otherwise, they remain non-transferable.name and symbol
: Required ifisTokenized = true
. Name and symbol of the ERC20 shares.metadataURI
: Optional metadata string (off-chain URI). Only emitted in an event. Settable only by theversionManager
.
Once complete, this struct can be passed as the first argument to the createEigenByzVault
function.
3. Configure EigenParams struct
Choose a
delegationSetRoleHolder
address who will manage delegation rights.Provide an initial
operator
if known, or set toaddress(0)
to defer.If required, include a
SignatureWithExpiry
and a uniqueapproverSalt
.
4. Call the Factory
Prerequisites
An Ethereum account (EOA) or smart contract that will act as the vault creator
The token you want to use for the vault (must be supported by EigenLayer for EigenLayer vaults)
Access to the Byzantine Factory contract address
Contract Addresses
ByzantineFactory
Coming Soon
Installation
System Requirements
Node.js (v14 or higher)
npm or yarn
TypeScript (optional but recommended)
Installation Steps
Install the SDK
Create Environment File Create a
.env
file in your project root:
Basic Setup
Supported Networks
Holesky Testnet (Chain ID: 17000)
Ethereum Mainnet (Chain ID: 1) - Coming Soon
Hoodi Testnet (Chain ID: 560048) - Coming Soon
EigenERC20ByzVault Creation
Create a vault for an ERC20 token that integrates with EigenLayer:
✅ Once deployed, the function returns the vault’s address. You can begin interacting with the vault (e.g. deposits, restaking delegation, or admin actions) right away.
Last updated