/** * Source Code first verified at https://etherscan.io on Wednesday, May 8, 2019 (UTC) */ // hevm: flattened sources of src/fix.sol pragma solidity >=0.4.23 >=0.5.0; ////// lib/ds-exec/src/exec.sol // exec.sol - base contract used by anything that wants to do "untyped" calls // Copyright (C) 2019 Maker // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . /* pragma solidity >=0.4.23; */ contract DSExec { function tryExec( address target, bytes memory data, uint value) internal returns (bool ok) { assembly { ok := call(gas, target, value, add(data, 0x20), mload(data), 0, 0) } } function exec( address target, bytes memory data, uint value) internal { if(!tryExec(target, data, value)) { revert("ds-exec-call-failed"); } } // Convenience aliases function exec( address t, bytes memory c ) internal { exec(t, c, 0); } function exec( address t, uint256 v ) internal { bytes memory c; exec(t, c, v); } function tryExec( address t, bytes memory c ) internal returns (bool) { return tryExec(t, c, 0); } function tryExec( address t, uint256 v ) internal returns (bool) { bytes memory c; return tryExec(t, c, v); } } ////// src/fix.sol // fix.sol - change authorities // Copyright (C) 2019 Mariano Conti, MakerDAO // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see . /* pragma solidity >=0.5.0; */ /* import "ds-exec/exec.sol"; */ contract Fix is DSExec { address constant public MOM = 0xF2C5369cFFb8Ea6284452b0326e326DbFdCb867C; // SaiMom address constant public TOP = 0x9b0ccf7C8994E19F39b2B4CF708e0A7DF65fA8a3; // SaiTop address constant public PIP = 0x729D19f657BD0614b4985Cf1D82531c67569197B; // Pip address constant public PEP = 0x5C1fc813d9c1B5ebb93889B3d63bA24984CA44B7; // Pep address constant public MKRUSD = 0x99041F808D598B782D5a3e498681C2452A31da08; // MKR/USD address constant public CHIEF = 0x9eF05f7F6deB616fd37aC3c959a2dDD25A54E4F5; // New Chief bool public done; function cast() public { require(!done); bytes memory data = abi.encodeWithSignature("setAuthority(address)", CHIEF); exec(MOM, data, 0); exec(TOP, data, 0); exec(PIP, data, 0); exec(PEP, data, 0); exec(MKRUSD, data, 0); done = true; } }