Code has been added to clipboard!
Delegating Solidity Votes
Example
function delegate(address to) public {
Voter storage sender = voters[msg.sender];
require(!sender.voted, "You have already voted.");
require(to != msg.sender, "You can’t delegate to yourself.");
while (voters[to].delegate != address(0)) {
to = voters[to].delegate;
require(to != msg.sender, "Found loop in delegation!");
}