Sym ERC20 Vault
Last updated
Last updated
ERC20-based SymByzVaults let you restake approved ERC20 tokens and use all Symbiotic features like delegation, slashing, and configuration routing.
Ensure it is whitelisted or accepted in the context where you’re deploying.
Follow the guide to set all vault settings (roles, token, fees, limit).
SymParams
is composed of four substructures:
BurnerParams
owner
: The address with permission to modify the Burner's configuration, including changing the delay and receivers. If set to address(0)
, the BurnerRouter becomes immutable.
delay
: The waiting period (in seconds) required before any new configuration becomes active. This delay gives stakers a chance to withdraw in case they disagree with the upcoming changes.
globalReceiver
: Default destination address for all burned assets if no specific receiver rule is triggered.
networkReceivers
: List of fallback receivers mapped to specific networks. Used if operatorNetworkReceivers
is not configured for a given slashing event.
operatorNetworkReceivers
: The most specific routing layer. If a slash involves a particular operator on a specific network, this route takes precedence.
VaultParams
version
: The version ID of the vault implementation to deploy.
epochDuration
: Time duration (in seconds) of each vault epoch.
DelegatorParams
delegatorType
: Enum specifying the strategy for delegating stake. Types include: NETWORK_RESTAKE, FULL_RESTAKE, OPERATOR_SPECIFIC, OPERATOR_NETWORK_SPECIFIC.
hook
: Optional contract that implements the onSlash()
interface. If configured, it will be called whenever a slash is processed. Can be used to implement automated delegation adjustments or additional accounting logic.
hookSetRoleHolder
: Address with the right to update the hook
. Must be carefully controlled.
networkLimitSetRoleHolders
: List of addresses that can modify the delegation strategy at the network level. Applicable only to certain delegator types (e.g. NETWORK_RESTAKE).
operatorNetworkLimitOrSharesSetRoleHolders
: Role holders that configure operator-level delegation. Relevant for delegator types that allow fine-grained allocation per operator-network pair.
operator
: Required only for fixed-operator delegator types. This operator will receive all delegations.
network
: Required only for fixed-network delegator types. This network will receive all delegated stake.
SlasherParams
slasherType
: Determines the logic for executing slash requests. Values include:
INSTANT
: Slash is executed immediately when conditions are met.
VETO
: Allows the configured resolver to veto slashing events during a specific veto window.
vetoDuration
: Duration (in seconds) of the veto period. This is the window during which a resolver may block a slash request. Only applicable for VETO
slashers.
resolverSetEpochsDelay
: Delay in vault epochs before a network’s updated resolver configuration becomes active. Used for safety and coordination. Only relevant for VETO
slasher types.
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
ByzantineFactory
Coming Soon
Node.js (v14 or higher)
npm or yarn
TypeScript (optional but recommended)
Install the SDK
Create Environment File
Create a .env
file in your project root:
Basic Setup
Holesky Testnet (Chain ID: 17000)
Ethereum Mainnet (Chain ID: 1) - Coming Soon
Hoodi Testnet (Chain ID: 560048) - Coming Soon
Create a vault that integrates with the Symbiotic ecosystem:
This deploys and initializes the vault and wires it to the selected Symbiotic modules.
✅ You receive the new vault address. You can now whitelist stakers, set delegation limits, or start deposits.
Refer to the section for details on how to populate these fields.
Refer to the section for details on how to populate these fields.
Refer to the section for details on how to populate these fields.