OperatorsRegistryV1
Kiln
Operators Registry (v1)
This contract handles the list of operators and their keys
Methods
acceptAdmin
Accept the transfer of ownership
Only callable by the pending admin. Resets the pending admin if succesful.
addOperator
Adds an operator to the registry
Only callable by the administrator
Parameters
Name | Type | Description |
---|---|---|
_name | string | The name identifying the operator |
_operator | address | The address representing the operator, receiving the rewards |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | The index of the new operator |
addValidators
Adds new keys for an operator
Only callable by the administrator or the operator address
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The operator index |
_keyCount | uint256 | The amount of keys provided |
_publicKeysAndSignatures | bytes | Public keys of the validator, concatenated |
getAdmin
Retrieves the current admin address
Returns
Name | Type | Description |
---|---|---|
_0 | address | The admin address |
getOperator
Get operator details
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The index of the operator |
Returns
Name | Type | Description |
---|---|---|
_0 | Operators.Operator | The details of the operator |
getOperatorCount
Get operator count
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | The operator count |
getPendingAdmin
Retrieve the current pending admin address
Returns
Name | Type | Description |
---|---|---|
_0 | address | The pending admin address |
getRiver
Retrieve the River address
Returns
Name | Type | Description |
---|---|---|
_0 | address | The address of River |
getValidator
Get the details of a validator
Parameters
Name | Type | Description |
---|---|---|
_operatorIndex | uint256 | The index of the operator |
_validatorIndex | uint256 | The index of the validator |
Returns
Name | Type | Description |
---|---|---|
publicKey | bytes | The public key of the validator |
signature | bytes | The signature used during deposit |
funded | bool | True if validator has been funded |
initOperatorsRegistryV1
Initializes the operators registry
Parameters
Name | Type | Description |
---|---|---|
_admin | address | Admin in charge of managing operators |
_river | address | Address of River system |
listActiveOperators
Retrieve the active operator set
Returns
Name | Type | Description |
---|---|---|
_0 | Operators.Operator[] | The list of active operators and their details |
pickNextValidators
Retrieve validator keys based on operator statuses
Parameters
Name | Type | Description |
---|---|---|
_count | uint256 | Max amount of keys requested |
Returns
Name | Type | Description |
---|---|---|
publicKeys | bytes[] | An array of public keys |
signatures | bytes[] | An array of signatures linked to the public keys |
proposeAdmin
Proposes a new address as admin
This security prevents setting an invalid address as an admin. The pendingadmin has to claim its ownership of the contract, and prove that the newaddress is able to perform regular transactions.
Parameters
Name | Type | Description |
---|---|---|
_newAdmin | address | New admin address |
removeValidators
Remove validator keys
Only callable by the administrator or the operator addressThe indexes must be provided sorted in decreasing order and duplicate-free, otherwise the method will revertThe operator limit will be set to the lowest deleted key index if the operator's limit wasn't equal to its total key countThe operator or the admin cannot remove funded keysWhen removing validators, the indexes of specific unfunded keys can be changed in order to properlyremove the keys from the storage array. Beware of this specific behavior when chaining calls as thetargeted public key indexes can point to a different key after a first call was made and performedsome swaps
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The operator index |
_indexes | uint256[] | The indexes of the keys to remove |
setOperatorAddress
Changes the operator address of an operator
Only callable by the administrator or the previous operator address
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The operator index |
_newOperatorAddress | address | The new address of the operator |
setOperatorLimits
Changes the operator staking limit
Only callable by the administratorThe operator indexes must be in increasing order and contain no duplicateThe limit cannot exceed the total key count of the operatorThe _indexes and _newLimits must have the same length.Each limit value is applied to the operator index at the same index in the _indexes array.
Parameters
Name | Type | Description |
---|---|---|
_operatorIndexes | uint256[] | The operator indexes, in increasing order and duplicate free |
_newLimits | uint256[] | The new staking limit of the operators |
_snapshotBlock | uint256 | The block number at which the snapshot was computed |
setOperatorName
Changes the operator name
Only callable by the administrator or the operator
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The operator index |
_newName | string | The new operator name |
setOperatorStatus
Changes the operator status
Only callable by the administrator
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The operator index |
_newStatus | bool | The new status of the operator |
setOperatorStoppedValidatorCount
Changes the operator stopped validator count
Only callable by the administrator
Parameters
Name | Type | Description |
---|---|---|
_index | uint256 | The operator index |
_newStoppedValidatorCount | uint256 | The new stopped validator count of the operator |
Events
AddedOperator
A new operator has been added to the registry
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
name | string | undefined |
operatorAddress | address | undefined |
AddedValidatorKeys
The operator or the admin added new validator keys and signatures
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
publicKeysAndSignatures | bytes | undefined |
Initialize
Emitted when the contract is properly initialized
Parameters
Name | Type | Description |
---|---|---|
version | uint256 | undefined |
cdata | bytes | undefined |
OperatorEditsAfterSnapshot
The operator edited its keys after the snapshot block
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
currentLimit | uint256 | undefined |
newLimit | uint256 | undefined |
latestKeysEditBlockNumber | uint256 | undefined |
snapshotBlock | uint256 | undefined |
OperatorLimitUnchanged
The call didn't alter the limit of the operator
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
limit | uint256 | undefined |
RemovedValidatorKey
The operator or the admin removed a public key and its signature from the registry
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
publicKey | bytes | undefined |
SetAdmin
The admin address changed
Parameters
Name | Type | Description |
---|---|---|
admin | address | undefined |
SetOperatorAddress
The operator address has been changed
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
newOperatorAddress | address | undefined |
SetOperatorLimit
The operator limit has been changed
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
newLimit | uint256 | undefined |
SetOperatorName
The operator display name has been changed
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
newName | string | undefined |
SetOperatorStatus
The operator status has been changed
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
active | bool | undefined |
SetOperatorStoppedValidatorCount
The operator stopped validator count has been changed
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | undefined |
newStoppedValidatorCount | uint256 | undefined |
SetPendingAdmin
The pending admin address changed
Parameters
Name | Type | Description |
---|---|---|
pendingAdmin | address | undefined |
SetRiver
The stored River address has been changed
Parameters
Name | Type | Description |
---|---|---|
river | address | undefined |
Errors
InactiveOperator
The calling operator is inactive
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | The operator index |
InvalidArgument
The argument was invalid
InvalidArrayLengths
The provided operator and limits array have different lengths
InvalidEmptyArray
The provided operator and limits array are empty
InvalidEmptyStoppedValidatorCountsArray
Thrown when an invalid empty stopped validator array is provided
InvalidEmptyString
The string is empty
InvalidFundedKeyDeletionAttempt
A funded key deletion has been attempted
InvalidIndexOutOfBounds
The index that is removed is out of bounds
InvalidInitialization
An error occured during the initialization
Parameters
Name | Type | Description |
---|---|---|
version | uint256 | The version that was attempting to be initialized |
expectedVersion | uint256 | The version that was expected |
InvalidKeyCount
The provided key count is 0
InvalidKeysLength
The provided concatenated keys do not have the expected length
InvalidStoppedValidatorCountsSum
Thrown when the sum of stopped validators is invalid
InvalidUnsortedIndexes
The index provided are not sorted properly (descending order)
InvalidZeroAddress
The address is zero
NoExitRequestsToPerform
Thrown when no exit requests can be performed
OperatorLimitTooHigh
The value for the operator limit is too high
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | The operator index |
limit | uint256 | The new limit provided |
keyCount | uint256 | The operator key count |
OperatorLimitTooLow
The value for the limit is too low
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | The operator index |
limit | uint256 | The new limit provided |
fundedKeyCount | uint256 | The operator funded key count |
OperatorNotFound
The operator was not found
Parameters
Name | Type | Description |
---|---|---|
index | uint256 | The provided index |
SliceOutOfBounds
The slice is outside of the initial bytes bounds
SliceOverflow
The length overflows an uint
StoppedValidatorCountArrayShrinking
The provided stopped validator count array is shrinking
StoppedValidatorCountAboveFundedCount
The provided stopped validator count of an operator is above its funded validator count
StoppedValidatorCountsDecreased
Throw when an element in the stopped validator array is decreasing
StoppedValidatorCountsTooHigh
Thrown when the number of elements in the array is too high compared to operator count
Unauthorized
The operator is unauthorized for the caller
Parameters
Name | Type | Description |
---|---|---|
caller | address | Address performing the call |
UnorderedOperatorList
The provided list of operators is not in increasing order
Last updated