ERC20VotesHarness.sol 1012 B

12345678910111213141516171819202122232425262728
  1. import "../munged/token/ERC20/extensions/ERC20Votes.sol";
  2. contract ERC20VotesHarness is ERC20Votes {
  3. constructor(string memory name, string memory symbol) ERC20Permit(name) ERC20(name, symbol) {}
  4. mapping(address => mapping(uint256 => uint256)) public _getPastVotes;
  5. function _afterTokenTransfer(
  6. address from,
  7. address to,
  8. uint256 amount
  9. ) internal virtual override {
  10. super._afterTokenTransfer(from, to, amount);
  11. _getPastVotes[from][block.number] -= amount;
  12. _getPastVotes[to][block.number] += amount;
  13. }
  14. /**
  15. * @dev Change delegation for `delegator` to `delegatee`.
  16. *
  17. * Emits events {DelegateChanged} and {DelegateVotesChanged}.
  18. */
  19. function _delegate(address delegator, address delegatee) internal virtual override{
  20. super._delegate(delegator, delegatee);
  21. _getPastVotes[delegator][block.number] -= balanceOf(delegator);
  22. _getPastVotes[delegatee][block.number] += balanceOf(delegator);
  23. }
  24. }