Skip to main content

Definitions

  • Delegator - any contract from NetworkRestakeDelegator/FullRestakeDelegator

  • Slasher - any contract from Slasher/VetoSlasher

  • Vault - a set of contracts: Vault, NetworkRestakeDelegator/FullRestakeDelegator, Slasher/VetoSlasher providing the whole logic for shared security (all the contracts must be initialized to operate properly)

  • Vault Epoch - a technical detail introduced to be able to process slashings properly (a current one can be got via Vault.currentEpoch())

    • Stakers' withdrawals become claimable and unslashable at the end of the subsequent relatively to the withdrawal request epoch.
    • It doesn't affect deposits, so they become an active stake instantly.
  • Vault Epoch Duration - a duration of Vault Epoch (can be got via Vault.epochDuration())

  • Veto Duration (only for VetoSlasher) - a duration when a slashing requests can be vetoed after its creation (can be got via VetoSlasher.vetoDuration())

  • Vault Curator - an entity (or a set of entities) managing the following roles in the Vault:
    (🧑‍🔧 - only one address may have such a role, 🧑‍🔧🧑‍🔧🧑‍🔧 - any number of addresses may have such a role)

    • 🧑‍🔧 Vault:Owner - allowed to migrate Vault to new implementations proposed by VaultFactory:Owner (a.k.a., Symbiotic Team)

    • 🧑‍🔧🧑‍🔧🧑‍🔧 Vault:DEPOSIT_WHITELIST_SET_ROLE - allowed to enable/disable a whitelist for deposits (such that only whitelisted addresses are able to deposit)

    • 🧑‍🔧🧑‍🔧🧑‍🔧 Vault:DEPOSITOR_WHITELIST_ROLE - allowed to add/remove depositors to/from the deposits whitelist

    • 🧑‍🔧🧑‍🔧🧑‍🔧 Vault:IS_DEPOSIT_LIMIT_SET_ROLE - allowed to enable/disable a deposits limit (such that the slashable amount of Collateral cannot exceed the set limit)

    • 🧑‍🔧🧑‍🔧🧑‍🔧 Vault:DEPOSIT_LIMIT_SET_ROLE - allowed to set the deposit limit

    • 🧑‍🔧🧑‍🔧🧑‍🔧 Vault:DEFAULT_ADMIN_ROLE - allowed to grant/remove such roles to/from any addresses:

      • Vault:DEPOSIT_WHITELIST_SET_ROLE
      • Vault:DEPOSITOR_WHITELIST_ROLE
      • Vault:IS_DEPOSIT_LIMIT_SET_ROLE
      • Vault:DEPOSIT_LIMIT_SET_ROLE
    • 🧑‍🔧🧑‍🔧🧑‍🔧 NetworkRestakeDelegator:HOOK_SET_ROLE/FullRestakeDelegator:HOOK_SET_ROLE - allowed to set an on-slash hook (e.g., it can be used to adjust the delegations automatically)

    • 🧑‍🔧🧑‍🔧🧑‍🔧 NetworkRestakeDelegator:NETWORK_LIMIT_SET_ROLE/FullRestakeDelegator:NETWORK_LIMIT_SET_ROLE - allowed to set a stake delegation limit for an each Subnetwork

    • 🧑‍🔧🧑‍🔧🧑‍🔧 NetworkRestakeDelegator:OPERATOR_NETWORK_SHARES_SET_ROLE - allowed to configure any Subnetwork's stake delegations across Operators

    • 🧑‍🔧🧑‍🔧🧑‍🔧 FullRestakeDelegator:OPERATOR_NETWORK_LIMIT_SET_ROLE - allowed to set a stake delegation limit for any Operator inside any Subnetwork

    • 🧑‍🔧🧑‍🔧🧑‍🔧 NetworkRestakeDelegator:DEFAULT_ADMIN_ROLE/FullRestakeDelegator:DEFAULT_ADMIN_ROLE - allowed to grant/remove such roles to/from any addresses:

      • NetworkRestakeDelegator:HOOK_SET_ROLE/FullRestakeDelegator:HOOK_SET_ROLE
      • NetworkRestakeDelegator:NETWORK_LIMIT_SET_ROLE/FullRestakeDelegator:NETWORK_LIMIT_SET_ROLE
      • NetworkRestakeDelegator:OPERATOR_NETWORK_SHARES_SET_ROLE/FullRestakeDelegator:OPERATOR_NETWORK_LIMIT_SET_ROLE
    • 🧑‍🔧🧑‍🔧🧑‍🔧 DefaultStakerRewards:ADMIN_FEE_CLAIM_ROLE - allowed to claim the fees from Staker Rewards

    • 🧑‍🔧🧑‍🔧🧑‍🔧 DefaultStakerRewards:ADMIN_FEE_SET_ROLE - allowed to set the fee percent for Staker Rewards

    • 🧑‍🔧🧑‍🔧🧑‍🔧 DefaultStakerRewards:DEFAULT_ADMIN_ROLE - allowed to grant/remove such roles to/from any addresses:

      • DefaultStakerRewards:ADMIN_FEE_CLAIM_ROLE
      • DefaultStakerRewards:ADMIN_FEE_SET_ROLE
  • Collateral - an ERC20 contract representing any asset which is able to provide economic security to networks (can be got via Vault.collateral())

  • Rewards - ERC20 contracts representing any assets that are paid by Networks to other parties

    • Staker Rewards - Rewards which are paid to Stakers for providing capital for the economic security of Networks (via DefaultStakerRewards)
    • Operator Rewards - Rewards which are paid to Operators for maintaining networks' nodes (via DefaultOperatorRewards)
  • Burner - an address (e.g., a permissionless contract, DAO, multi-sig, etc.) responsible for the processing of the slashed Collateral (can be got via Vault.burner()):

    • a contract unwrapping an LST ETH Collateral and burning its underlying ETH
    • a DAO redistributing the slashed Collateral from dishonest Operators to honest ones
    • a contract providing liquidity to some DEX protocols and burning LP tokens
    • etc.
  • Staker - an entity depositing Collateral into Vault (a.k.a., provider of capital for Networks' economic security)

  • Network - an entity managing its configuration across the Vaults to provide security to its underlying real network (have to be registered via NetworkRegistry.registerNetwork()):

    • is able to set its Middleware (via NetworkMiddlewareService.setMiddleware())
    • is able to set its Subnetworks' stake delegation limit (via NetworkRestakeDelegator.setMaxNetworkLimit()/FullRestakeDelegator.setMaxNetworkLimit())
    • is able to set Resolvers for its Subnetworks (via VetoSlasher.setResolver())
  • Subnetwork - a technical detail allowing for a Network to have different Resolvers for different pieces of a stake while having only a single opt-in event for Operators

  • Network Middleware - an address (e.g., a permissionless contract, DAO, multi-sig, etc.) responsible for such functionality on behalf of any Network's Subnetwork:

    • slash a provided stake (via Slasher.slash() or VetoSlasher.requestSlash()/VetoSlasher.executeSlash())
    • distribute rewards (via DefaultStakerRewards.distributeReward())
  • Network Epoch - a period of time while the same Network's validator set is used

  • Network Slashing Window - a period of time allocated after each Network Epoch to slash malicious Operators, and should be equal to maxSlashRequestDelaymaxSlashRequestDelay [for VetoSlasher: + Veto Duration + maxSlashExecutionDelaymaxSlashExecutionDelay]

  • Operator - an entity managing its agreement to work across the Symbiotic ecosystem (have to be registered via OperatorRegistry.registerOperator())

    • is able to opt-in to any Vault (via VaultOptInService.optIn())
    • is able to opt-in to any Network (via NetworkOptInService.optIn())
  • Resolver - an entity responsible for vetoing malicious/invalid slashing requests