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 Sub-network

    • πŸ§‘β€πŸ”§πŸ§‘β€πŸ”§πŸ§‘β€πŸ”§ NetworkRestakeDelegator:OPERATOR_NETWORK_SHARES_SET_ROLE - allowed to configure any Sub-network’s stake delegations across Operators

    • πŸ§‘β€πŸ”§πŸ§‘β€πŸ”§πŸ§‘β€πŸ”§ FullRestakeDelegator:OPERATOR_NETWORK_LIMIT_SET_ROLE - allowed to set a stake delegation limit for any Operator inside any Sub-network

    • πŸ§‘β€πŸ”§πŸ§‘β€πŸ”§πŸ§‘β€πŸ”§ 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 Sub-networks’ stake delegation limit (via NetworkRestakeDelegator.setMaxNetworkLimit()/FullRestakeDelegator.setMaxNetworkLimit())
    • is able to set Resolvers for its Sub-networks (via VetoSlasher.setResolver())
  • Sub-network - 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 Sub-network:

    • 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 into any Vault (via VaultOptInService.optIn())
    • is able to opt into any Network (via NetworkOptInService.optIn())
  • Resolver - an entity responsible for vetoing malicious/invalid slashing requests