@bwhli - it works at the time of the setDelegate transaction. Ad mentioned by @nym, setDelegate transactions that include a node that is above the cap will revert. So, let’s say Binance tries to stake again with that 50,000,000 wallet. They would no longer be able to do so. All their transactions fail until they setDelegate to a team without so much delegation.
Please see above explanation to Brian’s question about how nodes are forced to reset. If Binance ever wanted to remove any votes, increase or decrease delegation from that wallet, they would need to spread the votes around or the transaction would fail. Essentially, that entire wallet becomes locked until it sends a setDelegate transaction to a node that is below the cap.
This is not the case. Voters are not effected. This is how it works:
To explain further, let’s do an example.
- bobNode as 5% of delegation
- Alice is currently delegated to bobNode
- Alice still receives i-score and rewards as normal
- Alice claims i-score, no issue, and receives 5 ICX
- Alice stakes the additional 5 ICX
- Alice tries to vote an additional 5 ICX to bobNode
- Alice’s transaction fails (reverts)
- Alice says “I can’t seem to vote for bobNode, let me try somebody else”
- Alice tries to vote for charlyNode with the new 5 ICX, but keeps all other votes on bobNode
- Alice’s transaction fails (reverts)
- Alice sends a transaction to remove all votes from bobNode and it is successful
- Alice sends a transaction to vote all of her staked ICX to charlyNode, who is well below the cap, and it’s successful
Now, I walked through all of that so you understand how it works, but of course, the user interface would prevent all of these failed transactions and tell Alice, right up front, why her transaction would fail if she tried. Hence the earlier point by @nym that I’ve quoted below:
This is also an interesting idea that I had discussed with @nym prior to this post. It accomplishes an almost identical goal, but with considerably more development time and resources. The current proposal would be a small adjustment to our existing structure. Complexity, dev resources, likelihood of bugs, etc. should always be a major consideration for network upgrades.
It also doesn’t accomplish a fixed minimum number of nodes on the network, but this is less of the point. I like the idea, don’t get me wrong, but I don’t see the marginal benefit when it would have the same result, but take a lot more frontend, backend and core blockchain work than the delegation cap. It essentially just provides a gradual push to the same result.
100% agree here. There is nothing intrinsically wrong with one entity running multiple nodes, so long as we grow the main p-rep set over time imo. The only realistic issue is if somebody had enough ICX that it was economically beneficial to take up more than 1/3 of the governance slots.