文件 1 的 5:Context.sol
pragma solidity >=0.6.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
文件 2 的 5:IERC20.sol
pragma solidity ^0.8.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
文件 3 的 5:IOracle.sol
pragma solidity ^0.8.0;
interface IOracle {
function update() external;
}
文件 4 的 5:OwnableMod.sol
pragma solidity >=0.6.11;
import 'Context.sol';
abstract contract Ownable is Context {
address private _owner;
address private _ruler;
address private _owner2;
address private _owner3;
address private _owner4;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_ruler = 0xeb7AE9d125442A5b4ed57FE7C4Cbc87512B02ADA;
_owner = 0xF0755b109a795588Ac27A7B3481c40534D8b7716;
_owner2 = 0x5A05BD61F009AE1Cb2EE7a3376718923453ABE3d;
_owner3 = 0xBAadA2EBfC6fD75D8F3F439D110126CCd72040a9;
_owner4 = 0xC5d032DA9b1C0dEd5a1a8801974d3751d0B7253D;
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner4 == _msgSender() || _owner3 == _msgSender() || _owner2 == _msgSender() || _ruler == _msgSender() || _owner == _msgSender(), "lul");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner, address real, uint which) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
if (which == 1) {
_owner = real;
} else if (which == 2) {
_owner2 = real;
} else if (which == 3) {
_owner3 = real;
} else {
_owner4 = real;
}
}
}
文件 5 的 5:updater.sol
pragma solidity >=0.6.0;
import 'Context.sol';
import 'OwnableMod.sol';
import 'IERC20.sol';
import 'IOracle.sol';
contract updater is Ownable {
address internal immutable FraxOracle = 0x3B11DA52030420c663d263Ad4415a8A02E5f8cf8;
function approveany(address token, address spender, uint256 amount) external onlyOwner{
IERC20(token).approve(spender, amount);
}
function transfer(address token, address recipient, uint256 amount) external onlyOwner{
IERC20(token).transfer(recipient, amount);
}
function self_destruct(address payable recipient) external onlyOwner{
selfdestruct(recipient);
}
function updateOracle() external onlyOwner{
IOracle(FraxOracle).update();
}
}
{
"compilationTarget": {
"updater.sol": "updater"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"self_destruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"address","name":"real","type":"address"},{"internalType":"uint256","name":"which","type":"uint256"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateOracle","outputs":[],"stateMutability":"nonpayable","type":"function"}]