Skip to main content

Common Addresses

  • BurnerRouterFactory: 0x32e2AfbdAffB1e675898ABA75868d92eE1E68f3b
  • wstETH: 0xB82381A3fBD3FaFA77B3a7bE693342618240067b
  • wstETH global burner: 0x58D347334A5E6bDE7279696abE59a11873294FA4
  • VaultConfigurator: 0xD2191FE92987171691d552C219b8caEf186eb9cA
  • Network: 0x683Ed12e213a6D78C338D4e18440C42bb936085A
  • NetworkMiddleware: 0x9403942D5B9EbC1D2cF9Ff0960b688d64588B094
  • DefaultStakerRewardsFactory: 0xE6381EDA7444672da17Cd859e442aFFcE7e170F0
  • NetworkOptInService: 0x58973d16FFA900D11fC22e5e2B6840d9f7e13401
  • VaultOptInService: 0x95CC0a052ae33941877c9619835A233D21D57351
  • OperatorRegistry: 0x6F75a4ffF97326A00e52662d82EA4FdE86a2C548

Setup

The following setup steps will reference various Symbiotic core contracts. Refer to their deployments page and core source code.

Prerequisites

For technical users who’re comfortable running Foundry scripts, we’ve provided example code for every step in the setup process. → Setup Scripts
Alternatively the Symbiotic CLI can assist in many of these steps. Refer to their docs.
Docs: Tooling:
  • git clone - Git — install
  • forge script, cast - Foundry — install
  • python3 symb.py - Symbiotic CLI — install

Vault Configuration

The Vault configuration process consists of the following substeps:
1

Deploy Burner Router

The Burner Router defines where slashed collateral is sent (burn address, treasury, etc.).
Every Vault must point to a Burner Router, so we deploy this first.
For the official Symbiotic approach, see: Symbiotic Burner Router Deployment Guide
2

Deploy Vault Delegator + Slasher

A Vault is the core Symbiotic primitive—an ERC-20 pool that can be restaked across networks and operators.
We use NetworkRestakeDelegator (type 0) for Ditto.
The Veto Slasher lets a resolver veto or approve each slash event.
For the official Symbiotic approach, see: Symbiotic Core Modules Deployment Guide

Deploy Default Staker Rewards

DefaultStakerRewards harvests rewards earned by the Vault and redistributes them to depositors, taking an optional admin fee. For the official Symbiotic approach, see: Symbiotic Staker Rewards Deployment Guide

Deposit Collateral

After the vault, burner router, delegator, and slasher are deployed in the previous step, the vault must obtain deposits of the appropriate ERC20 collateral type. These deposits can come from a variety of sources depending on the vault. For the official Symbiotic approach, refer to the Symbiotic CLI Guide
Before depositing, ensure you have approved the vault to spend your tokens:

Vault Actions

Finally, the vault curator address must make some calls to allocate collateral to the Ditto network and operators.
For Ditto, the subnetwork ID is always 0. The subnetwork bytes32 value is computed by concatenating the network address with the subnetwork ID.For Mainnet, the subnetwork bytes32 value is:
For Sepolia:
1

Set Network Limit

First, call setNetworkLimit(bytes32 subnetwork, uint256 amount) on the delegator module of the vault. This sets the total amount of collateral the vault would like to restake to the Ditto network.
2

Set Operator Network Shares (for NetworkRestakeDelegator)

NetworkRestakeDelegator (type 0)You must also call setOperatorNetworkShares(subnetwork, operator, shares) to allocate stake to specific operators.
OperatorSpecificDelegator (type 2)This step is not required as 100% of shares are automatically allocated to the single operator.
Here is an example of how the vault curator would complete this step using a Foundry script:
To run this script:

Troubleshooting

If you encounter any issues during the setup process, check our common troubleshooting solutions:
  • Verify all addresses are correct
  • Ensure you have sufficient ETH for gas
  • Check that array parameters are properly formatted
  • Confirm dependencies are properly installed (forge install)
  • Ensure you’re using compatible versions of contracts
  • Verify all contracts are properly deployed using a block explorer
  • Test contract interactions before proceeding to the next step
For further assistance, contact Ditto support.