// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; // import { IGovernance } from "@interfaces/IGovernance.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract Proposal { IERC20 public constant TORN = IERC20(0x77777FeDdddFfC19Ff86DB637967013e6C6A116C); address public constant me = 0x9b78e16456c8C0A1FE386894c6f1E7F7C0104ADC; struct RelayerLoss { address relayer; uint256 lostAmountInTorn; } function executeProposal() public { // Data from 'data/relayerLosses.txt', generated by 'scripts/calculateLosses.ts' RelayerLoss[6] memory relayerLosses = [ RelayerLoss(0x076D4E32C6A5D888fC4658281539c94E778C796d, 2_380_374_405_606_021_763_001), RelayerLoss(0x28907F21F43B419F34226d6f10aCbCf1832b1D4d, 4_468_422_129_821_830_327_039), RelayerLoss(0x2Ee39Ff05643bC7cc9ed31B71e142429044A425C, 3_040_216_359_787_595_395_455), RelayerLoss(0xb0Cdc0AB2D454F2360d4629d519819E13DBE816A, 103_765_685_766_980_694_091), RelayerLoss(0xb578603D3fB9216158c29488c1A902Dd0300c115, 816_848_044_379_099_935_494), RelayerLoss(0xD8f1Eb586Ecb93745392EE254a028f1F67E1437E, 6_688_475_991_532_709_870_006) ]; for (uint256 i = 0; i < relayerLosses.length; i++) { TORN.transfer(relayerLosses[i].relayer, relayerLosses[i].lostAmountInTorn); } // Deployment and execution cost TORN.transfer(me, 50 ether); } }