proposal-34/contracts/Proposal.sol

77 lines
3.2 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;
import { IRelayerRegistryProxy } from "./interfaces/RelayerRegistryProxy.sol";
import { IRelayerRegistry } from "./interfaces/RelayerRegistry.sol";
contract Proposal {
address public immutable newRelayerRegistry;
address public constant relayerRegistryProxyAddr = 0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2;
constructor(address _newRelayerRegistry) public {
newRelayerRegistry = _newRelayerRegistry;
}
function getNullifiedTotal(address payable[15] memory relayers) public view returns (uint256) {
uint256 nullifiedTotal;
for (uint8 i = 0; i < relayers.length; i++) {
nullifiedTotal += IRelayerRegistry(relayerRegistryProxyAddr).getRelayerBalance(relayers[i]);
}
return nullifiedTotal;
}
function executeProposal() public {
IRelayerRegistryProxy relayerRegistryProxy = IRelayerRegistryProxy(relayerRegistryProxyAddr);
relayerRegistryProxy.upgradeTo(newRelayerRegistry);
address payable[15] memory cheatingRelayers = [
0x853281B7676DFB66B87e2f26c9cB9D10Ce883F37, // available-reliable-relayer.eth,
0x0000208a6cC0299dA631C08fE8c2EDe435Ea83B8, // 0xtornadocash.eth,
0xaaaaD0b504B4CD22348C4Db1071736646Aa314C6, // tornrelayers.eth
0x36DD7b862746fdD3eDd3577c8411f1B76FDC2Af5, // tornado-crypto-bot-exchange.eth
0x5007565e69E5c23C278c2e976beff38eF4D27B3d, // official-tornado.eth
0xa42303EE9B2eC1DB7E2a86Ed6C24AF7E49E9e8B9, // relayer-tornado.eth
0x18F516dD6D5F46b2875Fd822B994081274be2a8b, // torn69.eth
0x2ffAc4D796261ba8964d859867592B952b9FC158, // safe-tornado.eth
0x12D92FeD171F16B3a05ACB1542B40648E7CEd384, // torn-relayers.eth
0x996ad81FD83eD7A87FD3D03694115dff19db0B3b, // secure-tornado.eth
0x7853E027F37830790685622cdd8685fF0c8255A2, // tornado-secure.eth
0xf0D9b969925116074eF43e7887Bcf035Ff1e7B19, // lowfee-relayer.eth
0xEFa22d23de9f293B11e0c4aC865d7b440647587a, // tornado-relayer.eth
0x14812AE927e2BA5aA0c0f3C0eA016b3039574242, // pls-im-poor.eth
0x87BeDf6AD81A2907633Ab68D02c44f0415bc68C1 // tornrelayer.eth
];
IRelayerRegistry relayerRegistry = IRelayerRegistry(relayerRegistryProxyAddr);
uint256 nullifiedTotal = getNullifiedTotal(cheatingRelayers);
uint256 compensation = nullifiedTotal / 3;
for (uint i = 0; i < cheatingRelayers.length; i++) {
relayerRegistry.unregisterRelayer(cheatingRelayers[i]);
}
relayerRegistry.registerRelayerAdmin(
0x4750BCfcC340AA4B31be7e71fa072716d28c29C5,
"reltor.eth",
19612626855788464787775 + compensation
);
relayerRegistry.registerRelayerAdmin(
0xa0109274F53609f6Be97ec5f3052C659AB80f012,
"relayer007.eth",
15242825423346070140850 + compensation
);
relayerRegistry.registerRelayerAdmin(
0xC49415493eB3Ec64a0F13D8AA5056f1CfC4ce35c,
"k-relayer.eth",
11850064862377598277981 + compensation
);
relayerRegistry.setOperator(address(0));
}
}