Permissionless restaking framework. Networks (AVS-equivalents) plug into modular Vaults that delegate any ERC-20 collateral (wstETH, sUSDe, cbBTC, ENA, native ETH wrappers) to Operators in exchange for restaking rewards and slashing exposure.
- 01permissionless restaking for any ERC-20
- 02running a Symbiotic Network (AVS)
- 03Operator delegation strategies
- 04LRT/LRTfi backed by Symbiotic vaults
- pnpm add viem
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_SYMBIOTIC_VAULT_FACTORY | Client | Symbiotic VaultFactory on Ethereum mainnet (see https://docs.symbiotic.fi/deployments). Deploys new Vaults with custom collateral, delegator, and slasher modules. |
| NEXT_PUBLIC_SYMBIOTIC_OPERATOR_REGISTRY | Client | OperatorRegistry on Ethereum mainnet: 0xAd817a6Bc954F678451A71363f04150FDD81Af9F. |
| NEXT_PUBLIC_SYMBIOTIC_NETWORK_OPT_IN | Client | NetworkOptInService on Ethereum mainnet: 0x7133415b33B438843D581013f98A08704316633c. |
Integrate Symbiotic restaking. Stakers deposit collateral into a Vault: `IERC20(collateral).approve(vault, amount); IVault(vault).deposit(address onBehalfOf, uint256 amount)` returns shares. Vaults are ERC-4626-like but split active vs withdrawing balances — read `Vault.activeBalanceOf(account)` and `Vault.withdrawalsOf(epoch, account)`. Withdraw with `Vault.withdraw(address claimer, uint256 amount)` which queues into the next epoch; claim after the epoch boundary via `Vault.claim(address recipient, uint256 epoch)`. Operators register via `OperatorRegistry.registerOperator()` then opt into Networks via `OperatorNetworkOptInService.optIn(network)` and into specific Vaults via `OperatorVaultOptInService.optIn(vault)`. Networks call `BaseDelegator.stakeAt(network, operator, timestamp, hints)` to read effective stake at a moment, and `Slasher.slash(...)` to penalize on misbehavior. Use the Symbiotic SDK or `viem` `readContract` against the deployed module addresses listed in docs.symbiotic.fi.
- ⚑Symbiotic is permissionless — anyone can deploy a Vault, Network, or Slasher; UIs MUST allowlist trusted modules. Treat unverified Vaults as malicious by default (custom delegator / slasher logic can rug).
- ⚑Slashing is LIVE and per-Network: a single Operator slash can cascade across every Vault that delegated to that Operator. Display 'slashable by N networks' before users deposit.
- ⚑Withdrawals are epoch-based, not time-based — `epochDuration` is set per-Vault (often 7 days). Funds remain slashable for the full current + next epoch after withdrawal request.
- ⚑Symbiotic vs EigenLayer: an Operator can opt into BOTH; ETH backing the same operator is double-restaked, doubling slashing surface. LRTs (ether.fi, Mellow) often stack both — read the LRT's opt-in policy.
- ⚑Vault `activeShares` are not transferable on most default delegators; secondary liquidity comes from LRTs (Mellow, Re7, P2P) wrapping the position, not the Vault itself.
- ⚑Networks set their own `maxNetworkLimit` and Operators set `operatorNetworkLimit` — effective stake is the MIN of both plus delegator-level caps. Don't quote raw vault TVL as 'restaked' to a network.
- ⚑Mellow / Re7 LRT vaults built on Symbiotic add a strategy contract on top — that contract can rebalance allocations across multiple Symbiotic Vaults, adding extra trust assumptions.