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 viaVetoSlasher.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 migrateVault
to new implementations proposed byVaultFactory: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 viaVault.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
)
- Staker Rewards - Rewards which are paid to Stakers for providing capital for the economic security of Networks (via
-
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()
)
- is able to set its Middleware (via
-
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()
orVetoSlasher.requestSlash()
/VetoSlasher.executeSlash()
) - distribute rewards (via
DefaultStakerRewards.distributeReward()
)
- slash a provided stake (via
-
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 [for
VetoSlasher
: + Veto Duration + ] -
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()
)
- is able to opt into any Vault (via
-
Resolver - an entity responsible for vetoing malicious/invalid slashing requests
-
Capture Timestamp - a point in time the operatorβs stake was captured at (the stake can be converted to the operatorβs voting power in any way)