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.