NodeRotation
This contract handles all node rotation functionality.
Modifiers
Functions
Events
onlyDebugger onlyDebugger()
modifier
exitFromSchain exitFromSchain(uint256 nodeIndex) → bool, bool
external
Allows SkaleManager to remove, find new node, and rotate node from schain.
Requirements:
-
A free node must exist.
freezeSchains freezeSchains(uint256 nodeIndex)
external
Allows SkaleManager contract to freeze all schains on a given node.
removeRotation removeRotation(bytes32 schainIndex)
external
Allows Schains contract to remove a rotation from an schain.
skipRotationDelay skipRotationDelay(bytes32 schainIndex)
external
Allows Owner to immediately rotate an schain.
getRotation getRotation(bytes32 schainIndex) → struct NodeRotation.Rotation
external
Returns rotation details for a given schain.
getLeavingHistory getLeavingHistory(uint256 nodeIndex) → struct NodeRotation.LeavingHistory[]
external
Returns leaving history for a given node.
isRotationInProgress isRotationInProgress(bytes32 schainIndex) → bool
external
initialize initialize(address newContractsAddress)
public
rotateNode rotateNode(uint256 nodeIndex, bytes32 schainHash, bool shouldDelay, bool isBadNode) → uint256 newNode
public
Allows SkaleDKG and SkaleManager contracts to rotate a node from an schain.
selectNodeToGroup selectNodeToGroup(bytes32 schainHash) → uint256 nodeIndex
public
Allows SkaleManager, Schains, and SkaleDKG contracts to pseudo-randomly select a new Node for an Schain.
Requirements:
-
Schain is active.
-
A free node already exists.
-
Free space can be allocated from the node.