SSVNetwork
Last updated
Last updated
The SSVNetwork contract is the main contract for operations and management.
registerOperator(publicKey, operatorFee, setPrivate)
Description: Registers a new operator (key) with a set fee, fails if fee is less than the minimal fee.
Events:
OperatorAdded(uint64 indexed operatorId, address indexed owner, bytes publicKey, uint256 fee)
OperatorPrivacyStatusUpdated(uint64[] operatorIds, bool toPrivate)
removeOperator(operatorId)
Description: Permanently removes the operator from the network (irreversible).
Events:
OperatorRemoved(uint64 indexed operatorId)
withdrawOperatorEarnings(operatorId)
Description: Withdraws a specified amount of SSV tokens from provided operator balance to msg.sender, will fail if msg.sender is not the operator owner.
Events:
OperatorWithdrawn(address indexed owner, uint64 indexed operatorId, uint256 value)
withdrawAllOperatorEarnings
(operatorId)
Description: Withdraws all SSV tokens earnings from provided operator balance to msg.sender, will fail if msg.sender is not the operator owner.
Events:
OperatorWithdrawn(address indexed owner, uint64 indexed operatorId, uint256 value)
setOperatorWhitelists (operatorIds, whitelisted)
Description: For a list of operators provided, set a list of whitelisted addresses which can register validators to these operators.
Events:
OperatorMultipleWhitelistUpdated(uint64[] operatorIds, address[] whitelistAddresses)
removeOperatorWhitelists (operatorIds, whitelisted)
Description: For a list of operators provided, remove a list of whitelisted addresses.
Events:
OperatorMultipleWhitelistRemoved(uint64[] operatorIds, address[] whitelistAddresses)
setOperatorsPrivateUnchecked(operatorIds)
Description: For a list of operators provided, set their status to private.
Events:
OperatorPrivacyStatusUpdated(uint64[] operatorIds, bool toPrivate)
setOperatorsPublicUnchecked(operatorIds)
Description: For a list of operators provided, set their status to public.
Events:
OperatorPrivacyStatusUpdated(uint64[] operatorIds, bool toPrivate)
setOperatorWhitelistingContract(operatorIds, whitelistingContract)
Description: For a list of operators provided, set an external whitelisting contract to manage the whitelist for these operators. Must be a valid whitelisting contract.
Events:
OperatorWhitelistingContractUpdated(uint64[] operatorIds, address whitelistingContract)
removeOperatorsWhitelistingContract(operatorIds)
Description: For a list of operators provided, remove the whitelisting contract stored.
Events:
OperatorWhitelistingContractUpdated(uint64[] operatorIds, address whitelistingContract)
declareOperatorFee(operatorId, operatorFee)
Description: Initiates the first step of the operator fee update cycle - declaration of a new fee. After specified time window operator will be able to change to the new fee with executeOperatorFee().
Events:
OperatorFeeDeclared(address indexed owner, uint64 indexed operatorId, uint256 blockNumber, uint256 fee)
executeOperatorFee()
Description: Activates operator’s fee change specified in previously called declareOperatorFee(). This function needs to be called within a certain time window following declareOperatorFee().
Events:
OperatorFeeExecuted(address indexed owner, uint64 indexed operatorId, uint256 blockNumber, uint256 fee)
cancelDeclaredOperatorFee(operatorId)
Description: Cancels operator’s fee change requested in previously called declareOperatorFee().
Events:
OperatorFeeDeclarationCancelled(address indexed owner, uint64 indexed operatorId)
reduceOperatorFee(operatorId, fee)
Description: Reduce the operator fee, does not abide by the restrictions of fee increase
Events:
OperatorFeeExecuted(address indexed owner, uint64 indexed operatorId, uint256 blockNumber, uint256 fee)
setFeeRecipientAddress(feeRecipientAddress)
Description: sets a fee recipient address to receive tips from user transactions (part block proposal rewards). This address will be set for all the account’s validators (all clusters).
Events:
FeeRecipientAddressUpdated(address indexed owner, address recipientAddress)
registerValidator(publicKey, operatorIds, shares, amount, cluster)
Description: Registers new validator to a cluster of provided operators (ids + shares), fails if number of operatorIds is greater than 13..
Events:
ValidatorAdded(address indexed owner, uint64[] operatorIds, bytes publicKey, bytes shares, Cluster cluster)
bulkRegisterValidator(publicKey, operatorIds, shares, amount, cluster)
Description: Registers all the new validators provided as argument to a cluster of provided operators (ids + shares), fails if number of operatorIds is greater than 13..
Events:
ValidatorAdded(address indexed owner, uint64[] operatorIds, bytes publicKey, bytes shares, Cluster cluster)
The function emits as many ValidatorAdded
events, as is the length of the provided publicKeys
array.
Please note: the number of validators that can be registered with thebulkRegisterValidator
function is limited by the total transaction size. This depends both on the number of total public keys, as well as the number of operators in the chosen cluster, as follows:
80 validator keyshares for a cluster of 4 operators
40 validator keyshares for a cluster of 7 operators
30 validator keyshares for a cluster of 10 operators
20 validator keyshares for a cluster of 13 operators
removeValidator(publicKey, operatorIds, cluster)
Description: Removes validator from the SSV network.
Events:
ValidatorRemoved(address indexed owner, uint64[] operatorIds, bytes publicKey, Cluster cluster)
bulkRemoveValidator(publicKey, operatorIds, cluster)
Description: Removes all the validators provided as argument from the SSV network.
Events:
ValidatorRemoved(address indexed owner, uint64[] operatorIds, bytes publicKey, Cluster cluster)
The function emits as many ValidatorRemoved
events, as is the length of the provided publicKeys
array.
Please note: the number of validators that can be de-registered with thebulkRemoveValidator
function is limited by the total transaction size to a maximum of 500 validator keys at a time.
exitValidator(publicKey, operatorIds)
Description: Prompts SSV nodes to sign a voluntary exit of the validator.
Events:
ValidatorExited(address indexed owner, uint64[] operatorIds, bytes publicKey)
bulkExitValidator(publicKey, operatorIds)
Description: Prompts SSV nodes to sign a voluntary exit for all the validators provided as argument.
Events:
ValidatorExited(address indexed owner, uint64[] operatorIds, bytes publicKey)
The function emits as many ValidatorExited
events, as is the length of the provided publicKeys
array.
Please note: the number of validators that can be requested to exit from the beacon chain with thebulkExitValidator
function is limited by the total transaction size to a maximum of 500 validator keys at a time.
deposit(owner, operatorIds, amount, cluster)
Description: Deposits SSV token into a cluster, will fail if not enough tokens are approved.
Events:
ClusterDeposited(address indexed owner, uint64[] operatorIds, uint256 value, Cluster cluster)
withdraw(operatorIds, amount, cluster)
Description: Withdraws a specified amount of SSV tokens from cluster of msg.sender, will fail if msg.sender tries to withdraw more than the cluster’s liquidation collateral. To withdraw the entire cluster balance and stop its operation use liquidate().
Events:
ClusterWithdrawn(address indexed owner, uint64[] operatorIds, uint256 value, Cluster cluster)
reactivate(operatorIds, amount, cluster)
Description: Reactivates a liquidated cluster, will fail if insufficient SSV tokens to cover the cluster’s liquidation collateral have been deposited.
Events:
ClusterReactivated(address indexed owner, uint64[] operatorIds, Cluster cluster)
Write methods for liquidators
liquidate(owner, operatorIds, cluster)
Description: Liquidates a cluster sends their balances to the msg.sender (the Liquidator), will fail if the cluster is not liquidatable (see isLiquidatable()).
Events:
ClusterLiquidated(address indexed owner, uint64[] operatorIds, Cluster cluster)
updateNetworkFee(networkFee)
Description: Updates network fee.
Events:
NetworkFeeUpdated(uint256 oldFee, uint256 newFee)
withdrawNetworkEarnings(amount)
Description: Withdraws accumulated network fees in SSV token to DAO treasury.
Events:
NetworkEarningsWithdrawn(uint256 value, address recipient)
updateLiquidationThresholdPeriod(blocks)
Description: Sets the minimum period (in blocks) after which a cluster can be liquidated.
Events:
LiquidationThresholdPeriodUpdated(uint64 value)
updateMaxiumumOperatorFee
(maxFee)
Description: Updates the maximum fee an operator that uses SSV token can set
Events:
OperatorMaximumFeeUpdated(uint64 maxFee)
updateMinimumLiquidationCollateral(amount)
Description: Sets the minimum collateral (in $SSV) each cluster must keep in his balance.
Events:
MinimumLiquidationCollateralUpdated(uint256 value)
updateOperatorFeeIncreaseLimit(newOperatorMaxFeeIncrease)
Description: Sets the max amount by which operators can increase fees in each fee update cycle. This does not limit max operator fee, only the rate (%) by which it can be increased within each fee update cycle.
Events:
OperatorFeeIncreaseLimitUpdated(uint64 value)
updateDeclareOperatorFeePeriod(seconds)
Description: Sets the time window (in seconds) between the declaration and activation of a new operator fee.
Events:
DeclareOperatorFeePeriodUpdated(uint64 value)
updateExecuteOperatorFeePeriod(seconds)
Description: Sets the time window (in seconds) in which an operator can activate a new fee.
Events:
ExecuteOperatorFeePeriodUpdated(uint64 value)
Parameter | Type | Description |
---|---|---|