ValidatorService
This contract handles all validator operations including registration, node management, validator-specific delegation parameters, and more.
For more information see our main instructions SKALE MainNet Launch FAQ. |
Validators register an address, and use this address to accept delegations and register nodes.
onlyValidatorManager onlyValidatorManager()
modifier
checkValidatorExists checkValidatorExists(uint256 validatorId)
modifier
registerValidator registerValidator(string name, string description, uint256 feeRate, uint256 minimumDelegationAmount) → uint256 validatorId
external
Creates a new validator ID that includes a validator name, description, commission or fee rate, and a minimum delegation amount accepted by the validator.
Emits a ValidatorRegistered
event.
Requirements:
-
Sender must not already have registered a validator ID.
-
Fee rate must be between 0 - 1000‰. Note: in per mille. /
enableValidator enableValidator(uint256 validatorId)
external
Allows Admin to enable a validator by adding their ID to the trusted list.
Emits a ValidatorWasEnabled
event.
Requirements:
-
Validator must not already be enabled. /
disableValidator disableValidator(uint256 validatorId)
external
Allows Admin to disable a validator by removing their ID from the trusted list.
Emits a ValidatorWasDisabled
event.
Requirements:
-
Validator must not already be disabled. /
disableWhitelist disableWhitelist()
external
Owner can disable the trusted validator list. Once turned off, the trusted list cannot be re-enabled. /
requestForNewAddress requestForNewAddress(address newValidatorAddress)
external
Allows msg.sender
to request a new address.
Requirements:
-
msg.sender
must already be a validator. -
New address must not be null.
-
New address must not be already registered as a validator. /
confirmNewAddress confirmNewAddress(uint256 validatorId)
external
Allows msg.sender to confirm an address change.
Emits a ValidatorAddressChanged
event.
Requirements:
-
Must be owner of new address. /
linkNodeAddress linkNodeAddress(address nodeAddress, bytes sig)
external
Links a node address to validator ID. Validator must present the node signature of the validator ID.
Requirements:
-
Signature must be valid.
-
Address must not be assigned to a validator. /
unlinkNodeAddress unlinkNodeAddress(address nodeAddress)
external
Unlinks a node address from a validator.
Emits a NodeAddressWasRemoved
event.
/
setValidatorMDA setValidatorMDA(uint256 minimumDelegationAmount)
external
Allows a validator to set a minimum delegation amount. /
setValidatorName setValidatorName(string newName)
external
Allows a validator to set a new validator name. /
setValidatorDescription setValidatorDescription(string newDescription)
external
Allows a validator to set a new validator description. /
startAcceptingNewRequests startAcceptingNewRequests()
external
Allows a validator to start accepting new delegation requests.
Requirements:
-
Must not have already enabled accepting new requests. /
stopAcceptingNewRequests stopAcceptingNewRequests()
external
Allows a validator to stop accepting new delegation requests.
Requirements:
-
Must not have already stopped accepting new requests. /
removeNodeAddress removeNodeAddress(uint256 validatorId, address nodeAddress)
external
getAndUpdateBondAmount getAndUpdateBondAmount(uint256 validatorId) → uint256
external
Returns the amount of validator bond (self-delegation). /
getMyNodesAddresses getMyNodesAddresses() → address[]
external
Returns node addresses linked to the msg.sender. /
getTrustedValidators getTrustedValidators() → uint256[]
external
Returns the list of trusted validators. /
checkValidatorAddressToId checkValidatorAddressToId(address validatorAddress, uint256 validatorId) → bool
external
Checks whether the validator ID is linked to the validator address. /
getValidatorIdByNodeAddress getValidatorIdByNodeAddress(address nodeAddress) → uint256 validatorId
external
Returns the validator ID linked to a node address.
Requirements:
-
Node address must be linked to a validator. /
checkValidatorCanReceiveDelegation checkValidatorCanReceiveDelegation(uint256 validatorId, uint256 amount)
external
initialize initialize(address contractManagerAddress)
public
getNodeAddresses getNodeAddresses(uint256 validatorId) → address[]
public
Returns a validator’s node addresses. /
validatorExists validatorExists(uint256 validatorId) → bool
public
Checks whether validator ID exists. /
validatorAddressExists validatorAddressExists(address validatorAddress) → bool
public
Checks whether validator address exists. /
checkIfValidatorAddressExists checkIfValidatorAddressExists(address validatorAddress)
public
Checks whether validator address exists. /
getValidator getValidator(uint256 validatorId) → struct ValidatorService.Validator
public
Returns the Validator struct. /
getValidatorId getValidatorId(address validatorAddress) → uint256
public
Returns the validator ID for the given validator address. /
isAcceptingNewRequests isAcceptingNewRequests(uint256 validatorId) → bool
public
Checks whether the validator is currently accepting new delegation requests. /
isAuthorizedValidator isAuthorizedValidator(uint256 validatorId) → bool
public
ValidatorRegistered ValidatorRegistered(uint256 validatorId)
event
Emitted when a validator registers.
ValidatorAddressChanged ValidatorAddressChanged(uint256 validatorId, address newAddress)
event
Emitted when a validator address changes.
ValidatorWasEnabled ValidatorWasEnabled(uint256 validatorId)
event
Emitted when a validator is enabled.
ValidatorWasDisabled ValidatorWasDisabled(uint256 validatorId)
event
Emitted when a validator is disabled.
NodeAddressWasAdded NodeAddressWasAdded(uint256 validatorId, address nodeAddress)
event
Emitted when a node address is linked to a validator.
NodeAddressWasRemoved NodeAddressWasRemoved(uint256 validatorId, address nodeAddress)
event
Emitted when a node address is unlinked from a validator.