Common Addresses

  • wstETH: 0xB82381A3fBD3FaFA77B3a7bE693342618240067b
  • Network: 0x683Ed12e213a6D78C338D4e18440C42bb936085A
  • NetworkMiddleware: 0x9403942D5B9EbC1D2cF9Ff0960b688d64588B094
  • NetworkOptInService: 0x58973d16FFA900D11fC22e5e2B6840d9f7e13401
  • VaultOptInService: 0x95CC0a052ae33941877c9619835A233D21D57351
  • OperatorRegistry: 0x6F75a4ffF97326A00e52662d82EA4FdE86a2C548

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 - Gitinstall
  • forge script, cast - Foundryinstall
  • python3 symb.py - Symbiotic CLIinstall

Vault

Before Opt-In, you have to find suitable or deploy your own Vault

Symbiotic Vault Deployment

Deploy your own Vault in symbiotic

Register Operator & Opt-In

Your EOA (or node runner contract) must be registered as an Operator inside Symbiotic. Opt-in links that operator to a specific Network and Vault.

For the official Symbiotic approach, see: Symbiotic Operator Registration Guide

Register in Symbiotic and opt-in to vault and network

We suggest using one of two approaches. First is from official Symbiotic docs:

1

Install symbiotic CLI

git clone https://github.com/symbioticfi/cli.git
cd cli
pip3 install -r requirements.txt
2

Register operator in Symbiotic

python symb.py --chain sepolia register-operator --private-key YOUR_OPERATOR_PRIVATE_KEY
3

Opt in to Ditto network

python symb.py --chain sepolia opt-in-network 0x683Ed12e213a6D78C338D4e18440C42bb936085A --private-key YOUR_OPERATOR_PRIVATE_KEY
4

Opt in to the vault

python symb.py --chain sepolia opt-in-vault VAULT_ADDRESS --private-key YOUR_OPERATOR_PRIVATE_KEY

Or you can use our Foundry scripts to opt in to Ditto network:

# Clone ditto-contracts repository
git clone https://github.com/dittonetwork/ditto-contracts
cd ditto-contracts
# Define parameters
NETWORK_OPT_IN_SERVICE=0x58973d16FFA900D11fC22e5e2B6840d9f7e13401
NETWORK=0x683Ed12e213a6D78C338D4e18440C42bb936085A
VAULT_OPT_IN_SERVICE=0x95CC0a052ae33941877c9619835A233D21D57351
VAULT=<vault address from previous steps>
OPERATOR_REGISTRY=0x6F75a4ffF97326A00e52662d82EA4FdE86a2C548

# Execute the script
forge script script/operator/04_OperatorOptInSetup.s.sol:SetupOperatorOptIn \
  --sig "run(address,address,address,address,address)" \
  $NETWORK_OPT_IN_SERVICE $NETWORK $VAULT_OPT_IN_SERVICE $VAULT $OPERATOR_REGISTRY \
  --rpc-url https://ethereum-sepolia-rpc.publicnode.com \
  --chain sepolia \
  --private-key <your-private-key> \
  --etherscan-api-key <etherscan api key> \
  --broadcast

Register in Ditto network middleware

To Register in Ditto network, you have to contact us and send this info:

Vault Address: <vault> 
Operator Address: <operator>
Operator Public Key: <key>

If you have access to register by yourself, you can run this scripts:

# --- env vars ---
MIDDLEWARE=0x9403942D5B9EbC1D2cF9Ff0960b688d64588B094      # Contact Ditto for this address
OPERATOR=<operator address>          # Your operator address
KEY=<key>                            # Your operator's public key
VAULT=<vault address>                # Optional: ONLY FOR OperatorSpecificDelegator and OperatorNetworkSpecificDelegator - Your vault address from previous steps
# ----------------

forge script script/middleware/OperatorMiddlewareScript.s.sol:OperatorMiddlewareScript \
  --sig "registerOperator(address,address,address,bytes)" \
  $MIDDLEWARE $OPERATOR $KEY $VAULT \
  --rpc-url https://ethereum-sepolia-rpc.publicnode.com \
  --chain sepolia \
  --private-key <your-private-key> \
  --etherscan-api-key <etherscan api key> \
  --broadcast

Troubleshooting

If you encounter any issues during the setup process, check our common troubleshooting solutions:

For further assistance, contact Ditto support.