Removing a node require multiple transactions and may be very expensive  Pending
When removing a node from the network, the owner should redistribute all the schains that are currently on that node to the other nodes. To do so, the validator should call the `nodeExit` function of the `SkaleManager` contract. In this function, only one schain is going to be removed from the node. So the node would have to call the `nodeExit` function as many times as there are schains in the node. Every call iterates over every potential node that can be used as a replacement (like in https://github.com/ConsenSys/skale-network-audit-2020-10/issues/3).\\nIn addition to that, the first call will iterate over all schains in the node, make 4 SSTORE operations and external calls for each schain:\\n```\\nfunction \\_startRotation(bytes32 schainIndex, uint nodeIndex) private {\\n    ConstantsHolder constants = ConstantsHolder(contractManager.getContract("ConstantsHolder"));\\n    rotations[schainIndex].nodeIndex = nodeIndex;\\n    rotations[schainIndex].newNodeIndex = nodeIndex;\\n    rotations[schainIndex].freezeUntil = now.add(constants.rotationDelay());\\n    waitForNewNode[schainIndex] = true;\\n}\\n```\\n\\nThis may hit the block gas limit even easier than issue 5.4.\\nIf the first transaction does not hit the block's gas limit, the maximum price of deleting a node would be BLOCK_GAS_COST * 128. At the moment, it's around $50,000.
Optimize the process of deleting a node, so it can't hit the gas limit in one transaction, and the overall price should be cheaper.
```\\nfunction \\_startRotation(bytes32 schainIndex, uint nodeIndex) private {\\n    ConstantsHolder constants = ConstantsHolder(contractManager.getContract("ConstantsHolder"));\\n    rotations[schainIndex].nodeIndex = nodeIndex;\\n    rotations[schainIndex].newNodeIndex = nodeIndex;\\n    rotations[schainIndex].freezeUntil = now.add(constants.rotationDelay());\\n    waitForNewNode[schainIndex] = true;\\n}\\n```\\n