More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
8350202 | 5 hrs ago | 0.00431049 APE | ||||
8319128 | 19 hrs ago | 0.09862186 APE | ||||
8318968 | 19 hrs ago | 0.07405707 APE | ||||
8315514 | 21 hrs ago | 0.0028362 APE | ||||
8282359 | 38 hrs ago | 0.00863081 APE | ||||
8276947 | 41 hrs ago | 0.19733754 APE | ||||
8259996 | 47 hrs ago | 0.08911239 APE | ||||
8256346 | 2 days ago | 0.09870821 APE | ||||
8216321 | 2 days ago | 0.00248577 APE | ||||
8216239 | 2 days ago | 0.00236699 APE | ||||
8159547 | 3 days ago | 0.00051322 APE | ||||
8147420 | 4 days ago | 0.0747008 APE | ||||
8103891 | 4 days ago | 0.08880754 APE | ||||
8103313 | 4 days ago | 0.14796716 APE | ||||
8103225 | 4 days ago | 0.09870272 APE | ||||
8073277 | 5 days ago | 0.01342912 APE | ||||
8066028 | 5 days ago | 0.00236015 APE | ||||
8065238 | 5 days ago | 0.00246718 APE | ||||
8064952 | 5 days ago | 0.00740041 APE | ||||
8064775 | 5 days ago | 0.00246727 APE | ||||
8063057 | 5 days ago | 0.00236056 APE | ||||
8062682 | 5 days ago | 0.00493351 APE | ||||
8062053 | 5 days ago | 0.01237583 APE | ||||
8047242 | 5 days ago | 0.10152114 APE | ||||
8040094 | 5 days ago | 0.0005383 APE |
Loading...
Loading
Contract Name:
TokenChomper
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at apescan.io on 2024-12-12 */ // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity >=0.8.0 ^0.8.0; // lib/openzeppelin-contracts/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // src/interfaces/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // src/interfaces/IRouteProcessor.sol interface IRouteProcessor { struct RouteProcessorData { address tokenIn; uint256 amountIn; address tokenOut; uint256 amountOutMin; address to; bytes route; } function processRoute( address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOutMin, address to, bytes memory route ) external payable returns (uint256 amountOut); } // lib/openzeppelin-contracts/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol // OpenZeppelin Contracts (last updated v4.8.0) (access/Ownable2Step.sol) /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() external { address sender = _msgSender(); require(pendingOwner() == sender, "Ownable2Step: caller is not the new owner"); _transferOwnership(sender); } } // src/Auth.sol abstract contract Auth is Ownable2Step { event SetTrusted(address indexed user, bool isTrusted); mapping(address => bool) public trusted; error OnlyTrusted(); modifier onlyTrusted() { if (!trusted[msg.sender]) revert OnlyTrusted(); _; } constructor(address trustedUser) { trusted[trustedUser] = true; emit SetTrusted(trustedUser, true); } function setTrusted(address user, bool isTrusted) external onlyOwner { trusted[user] = isTrusted; emit SetTrusted(user, isTrusted); } } // src/TokenChomper.sol /// @title TokenChomper for selling accumulated tokens for weth or other base assets /// @notice This contract will be used for fee collection and breakdown /// @dev Uses Auth contract for 2-step owner process and trust operators to guard functions contract TokenChomper is Auth { address public immutable weth; IRouteProcessor public routeProcessor; bytes4 private constant TRANSFER_SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)'))); error TransferFailed(); constructor( address _operator, address _routeProcessor, address _weth ) Auth(_operator) { // initial owner is msg.sender routeProcessor = IRouteProcessor(_routeProcessor); weth = _weth; } /// @notice Updates the route processor to be used for swapping tokens /// @dev make sure new route processor is backwards compatiable (should be) /// @param _routeProcessor The address of the new route processor function updateRouteProcessor(address _routeProcessor) external onlyOwner { routeProcessor = IRouteProcessor(_routeProcessor); } /// @notice Processes a route selling any of the tokens in TokenChomper for an output token /// @dev can be called by operators /// @param tokenIn The address of the token to be sold /// @param amountIn The amount of the token to be sold /// @param tokenOut The address of the token to be bought /// @param amoutOutMin The minimum amount of the token to be bought (slippage protection) /// @param route The route to be used for swapping function processRoute( address tokenIn, uint256 amountIn, address tokenOut, uint256 amoutOutMin, bytes memory route ) external onlyTrusted { // process route to any output token, slippage will be handled by the route processor IERC20(tokenIn).transfer(address(routeProcessor), amountIn); routeProcessor.processRoute( tokenIn, amountIn, tokenOut, amoutOutMin, address(this), route ); } /// @notice Withdraw any token or eth from the contract /// @dev can only be called by owner /// @param token The address of the token to be withdrawn, 0x0 for eth /// @param to The address to send the token to /// @param _value The amount of the token to be withdrawn function withdraw(address token, address to, uint256 _value) onlyOwner external { if (token != address(0)) { _safeTransfer(token, to, _value); } else { (bool success, ) = to.call{value: _value}(""); require(success); } } function _safeTransfer(address token, address to, uint value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(TRANSFER_SELECTOR, to, value)); if (!success || (data.length != 0 && !abi.decode(data, (bool)))) revert TransferFailed(); } /// @notice In case we receive any unwrapped eth (native token) we can call this /// @dev operators can call this function wrapEth() onlyTrusted external { weth.call{value: address(this).balance}(""); } /// @notice Available function in case we need to do any calls that aren't supported by the contract (unwinding lp positions, etc.) /// @dev can only be called by owner /// @param to The address to send the call to /// @param _value The amount of eth to send with the call /// @param data The data to be sent with the call function doAction(address to, uint256 _value, bytes memory data) onlyOwner external { (bool success, ) = to.call{value: _value}(data); require(success); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_routeProcessor","type":"address"},{"internalType":"address","name":"_weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OnlyTrusted","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"isTrusted","type":"bool"}],"name":"SetTrusted","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"doAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amoutOutMin","type":"uint256"},{"internalType":"bytes","name":"route","type":"bytes"}],"name":"processRoute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routeProcessor","outputs":[{"internalType":"contract IRouteProcessor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isTrusted","type":"bool"}],"name":"setTrusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"trusted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_routeProcessor","type":"address"}],"name":"updateRouteProcessor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrapEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b50604051620010af380380620010af833981016040819052620000349162000159565b826200004033620000c2565b6001600160a01b038116600081815260026020908152604091829020805460ff1916600190811790915591519182527f878d105ed19c01e992a54459c2f04ba19432ac45600b42ce340d034272207436910160405180910390a250600380546001600160a01b0319166001600160a01b039384161790551660805250620001a3565b600180546001600160a01b0319169055620000e981620000ec602090811b6200089b17901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200015457600080fd5b919050565b6000806000606084860312156200016f57600080fd5b6200017a846200013c565b92506200018a602085016200013c565b91506200019a604085016200013c565b90509250925092565b608051610eea620001c56000396000818160ff01526106a70152610eea6000f3fe6080604052600436106100e15760003560e01c80638da5cb5b1161007f578063dae9ab7211610059578063dae9ab7214610277578063e30c3978146102a4578063f2fde38b146102cf578063f32a12ac146102ef57600080fd5b80638da5cb5b14610217578063b081b4eb14610242578063d9caed121461025757600080fd5b80636e9821c2116100bb5780636e9821c21461018d578063715018a6146101cd57806377a93894146101e257806379ba50971461020257600080fd5b80633fc8cef3146100ed57806352f5df801461014b57806354a0af171461016d57600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b506101217f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561015757600080fd5b5061016b610166366004610c3a565b61030f565b005b34801561017957600080fd5b5061016b610188366004610cac565b6104a1565b34801561019957600080fd5b506101bd6101a8366004610d03565b60026020526000908152604090205460ff1681565b6040519015158152602001610142565b3480156101d957600080fd5b5061016b610527565b3480156101ee57600080fd5b5061016b6101fd366004610d03565b61053b565b34801561020e57600080fd5b5061016b61058a565b34801561022357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610121565b34801561024e57600080fd5b5061016b610644565b34801561026357600080fd5b5061016b610272366004610d25565b610708565b34801561028357600080fd5b506003546101219073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b057600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff16610121565b3480156102db57600080fd5b5061016b6102ea366004610d03565b610759565b3480156102fb57600080fd5b5061016b61030a366004610d6f565b610809565b3360009081526002602052604090205460ff16610358576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af11580156103d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f59190610da6565b506003546040517f2646478b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632646478b9061045690889088908890889030908990600401610def565b6020604051808303816000875af1158015610475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104999190610e7f565b505050505050565b6104a9610910565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104d19190610e98565b60006040518083038185875af1925050503d806000811461050e576040519150601f19603f3d011682016040523d82523d6000602084013e610513565b606091505b505090508061052157600080fd5b50505050565b61052f610910565b6105396000610991565b565b610543610910565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61064181610991565b50565b3360009081526002602052604090205460ff1661068d576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016904790600081818185875af1925050503d8060008114610703576040519150601f19603f3d011682016040523d82523d6000602084013e505050565b505050565b610710610910565b73ffffffffffffffffffffffffffffffffffffffff831615610737576107038383836109c2565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104d1565b610761610910565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556107c460005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610811610910565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f878d105ed19c01e992a54459c2f04ba19432ac45600b42ce340d034272207436910160405180910390a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556106418161089b565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691610a899190610e98565b6000604051808303816000865af19150503d8060008114610ac6576040519150601f19603f3d011682016040523d82523d6000602084013e610acb565b606091505b5091509150811580610af95750805115801590610af9575080806020019051810190610af79190610da6565b155b15610b30576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5b57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610ba057600080fd5b813567ffffffffffffffff80821115610bbb57610bbb610b60565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610c0157610c01610b60565b81604052838152866020858801011115610c1a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215610c5257600080fd5b610c5b86610b37565b945060208601359350610c7060408701610b37565b925060608601359150608086013567ffffffffffffffff811115610c9357600080fd5b610c9f88828901610b8f565b9150509295509295909350565b600080600060608486031215610cc157600080fd5b610cca84610b37565b925060208401359150604084013567ffffffffffffffff811115610ced57600080fd5b610cf986828701610b8f565b9150509250925092565b600060208284031215610d1557600080fd5b610d1e82610b37565b9392505050565b600080600060608486031215610d3a57600080fd5b610d4384610b37565b9250610d5160208501610b37565b9150604084013590509250925092565b801515811461064157600080fd5b60008060408385031215610d8257600080fd5b610d8b83610b37565b91506020830135610d9b81610d61565b809150509250929050565b600060208284031215610db857600080fd5b8151610d1e81610d61565b60005b83811015610dde578181015183820152602001610dc6565b838111156105215750506000910152565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152808716604084015285606084015280851660808401525060c060a083015282518060c0840152610e488160e0850160208701610dc3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160e001979650505050505050565b600060208284031215610e9157600080fd5b5051919050565b60008251610eaa818460208701610dc3565b919091019291505056fea26469706673582212205b368241ff9508a018425f57bd25b6bb013947ac417d8c72b01426dec3f5bcb264736f6c634300080a00330000000000000000000000007812bcd0c0de8d15ff4c47391d2d9ae1b4de13f0000000000000000000000000f2614a233c7c3e7f08b1f887ba133a13f1eb2c5500000000000000000000000048b62137edfa95a428d35c09e44256a739f6b557
Deployed Bytecode
0x6080604052600436106100e15760003560e01c80638da5cb5b1161007f578063dae9ab7211610059578063dae9ab7214610277578063e30c3978146102a4578063f2fde38b146102cf578063f32a12ac146102ef57600080fd5b80638da5cb5b14610217578063b081b4eb14610242578063d9caed121461025757600080fd5b80636e9821c2116100bb5780636e9821c21461018d578063715018a6146101cd57806377a93894146101e257806379ba50971461020257600080fd5b80633fc8cef3146100ed57806352f5df801461014b57806354a0af171461016d57600080fd5b366100e857005b600080fd5b3480156100f957600080fd5b506101217f00000000000000000000000048b62137edfa95a428d35c09e44256a739f6b55781565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561015757600080fd5b5061016b610166366004610c3a565b61030f565b005b34801561017957600080fd5b5061016b610188366004610cac565b6104a1565b34801561019957600080fd5b506101bd6101a8366004610d03565b60026020526000908152604090205460ff1681565b6040519015158152602001610142565b3480156101d957600080fd5b5061016b610527565b3480156101ee57600080fd5b5061016b6101fd366004610d03565b61053b565b34801561020e57600080fd5b5061016b61058a565b34801561022357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610121565b34801561024e57600080fd5b5061016b610644565b34801561026357600080fd5b5061016b610272366004610d25565b610708565b34801561028357600080fd5b506003546101219073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102b057600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff16610121565b3480156102db57600080fd5b5061016b6102ea366004610d03565b610759565b3480156102fb57600080fd5b5061016b61030a366004610d6f565b610809565b3360009081526002602052604090205460ff16610358576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018690529086169063a9059cbb906044016020604051808303816000875af11580156103d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f59190610da6565b506003546040517f2646478b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632646478b9061045690889088908890889030908990600401610def565b6020604051808303816000875af1158015610475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104999190610e7f565b505050505050565b6104a9610910565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516104d19190610e98565b60006040518083038185875af1925050503d806000811461050e576040519150601f19603f3d011682016040523d82523d6000602084013e610513565b606091505b505090508061052157600080fd5b50505050565b61052f610910565b6105396000610991565b565b610543610910565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600154339073ffffffffffffffffffffffffffffffffffffffff168114610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61064181610991565b50565b3360009081526002602052604090205460ff1661068d576040517fcf1119ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000048b62137edfa95a428d35c09e44256a739f6b55716904790600081818185875af1925050503d8060008114610703576040519150601f19603f3d011682016040523d82523d6000602084013e505050565b505050565b610710610910565b73ffffffffffffffffffffffffffffffffffffffff831615610737576107038383836109c2565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104d1565b610761610910565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000090911681179091556107c460005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610811610910565b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915591519182527f878d105ed19c01e992a54459c2f04ba19432ac45600b42ce340d034272207436910160405180910390a25050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161062f565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556106418161089b565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291516000928392871691610a899190610e98565b6000604051808303816000865af19150503d8060008114610ac6576040519150601f19603f3d011682016040523d82523d6000602084013e610acb565b606091505b5091509150811580610af95750805115801590610af9575080806020019051810190610af79190610da6565b155b15610b30576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610b5b57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610ba057600080fd5b813567ffffffffffffffff80821115610bbb57610bbb610b60565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610c0157610c01610b60565b81604052838152866020858801011115610c1a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a08688031215610c5257600080fd5b610c5b86610b37565b945060208601359350610c7060408701610b37565b925060608601359150608086013567ffffffffffffffff811115610c9357600080fd5b610c9f88828901610b8f565b9150509295509295909350565b600080600060608486031215610cc157600080fd5b610cca84610b37565b925060208401359150604084013567ffffffffffffffff811115610ced57600080fd5b610cf986828701610b8f565b9150509250925092565b600060208284031215610d1557600080fd5b610d1e82610b37565b9392505050565b600080600060608486031215610d3a57600080fd5b610d4384610b37565b9250610d5160208501610b37565b9150604084013590509250925092565b801515811461064157600080fd5b60008060408385031215610d8257600080fd5b610d8b83610b37565b91506020830135610d9b81610d61565b809150509250929050565b600060208284031215610db857600080fd5b8151610d1e81610d61565b60005b83811015610dde578181015183820152602001610dc6565b838111156105215750506000910152565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152808716604084015285606084015280851660808401525060c060a083015282518060c0840152610e488160e0850160208701610dc3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160e001979650505050505050565b600060208284031215610e9157600080fd5b5051919050565b60008251610eaa818460208701610dc3565b919091019291505056fea26469706673582212205b368241ff9508a018425f57bd25b6bb013947ac417d8c72b01426dec3f5bcb264736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007812bcd0c0de8d15ff4c47391d2d9ae1b4de13f0000000000000000000000000f2614a233c7c3e7f08b1f887ba133a13f1eb2c5500000000000000000000000048b62137edfa95a428d35c09e44256a739f6b557
-----Decoded View---------------
Arg [0] : _operator (address): 0x7812BCD0c0De8D15Ff4C47391d2d9AE1B4DE13f0
Arg [1] : _routeProcessor (address): 0xf2614A233c7C3e7f08b1F887Ba133a13f1eb2c55
Arg [2] : _weth (address): 0x48b62137EdfA95a428D35C09E44256a739F6B557
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007812bcd0c0de8d15ff4c47391d2d9ae1b4de13f0
Arg [1] : 000000000000000000000000f2614a233c7c3e7f08b1f887ba133a13f1eb2c55
Arg [2] : 00000000000000000000000048b62137edfa95a428d35c09e44256a739f6b557
Deployed Bytecode Sourcemap
9775:3357:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9810:29;;;;;;;;;;;;;;;;;;190:42:1;178:55;;;160:74;;148:2;133:18;9810:29:0;;;;;;;;11075:443;;;;;;;;;;-1:-1:-1;11075:443:0;;;;;:::i;:::-;;:::i;:::-;;12927:167;;;;;;;;;;-1:-1:-1;12927:167:0;;;;;:::i;:::-;;:::i;9015:39::-;;;;;;;;;;-1:-1:-1;9015:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2851:14:1;;2844:22;2826:41;;2814:2;2799:18;9015:39:0;2686:187:1;6086:103:0;;;;;;;;;;;;;:::i;10473:136::-;;;;;;;;;;-1:-1:-1;10473:136:0;;;;;:::i;:::-;;:::i;8668:210::-;;;;;;;;;;;;;:::i;5438:87::-;;;;;;;;;;-1:-1:-1;5484:7:0;5511:6;;;5438:87;;12487:96;;;;;;;;;;;;;:::i;11808:265::-;;;;;;;;;;-1:-1:-1;11808:265:0;;;;;:::i;:::-;;:::i;9844:37::-;;;;;;;;;;-1:-1:-1;9844:37:0;;;;;;;;7756:101;;;;;;;;;;-1:-1:-1;7836:13:0;;;;7756:101;;8056:181;;;;;;;;;;-1:-1:-1;8056:181:0;;;;;:::i;:::-;;:::i;9331:156::-;;;;;;;;;;-1:-1:-1;9331:156:0;;;;;:::i;:::-;;:::i;11075:443::-;9138:10;9130:19;;;;:7;:19;;;;;;;;9125:46;;9158:13;;;;;;;;;;;;;;9125:46;11373:14:::1;::::0;11340:59:::1;::::0;;;;:24:::1;11373:14:::0;;::::1;11340:59;::::0;::::1;4082:74:1::0;4172:18;;;4165:34;;;11340:24:0;;::::1;::::0;::::1;::::0;4055:18:1;;11340:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11406:14:0::1;::::0;:105:::1;::::0;;;;:14:::1;::::0;;::::1;::::0;:27:::1;::::0;:105:::1;::::0;11442:7;;11451:8;;11461;;11471:11;;11492:4:::1;::::0;11499:5;;11406:105:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11075:443:::0;;;;;:::o;12927:167::-;5324:13;:11;:13::i;:::-;13019:12:::1;13037:2;:7;;13052:6;13060:4;13037:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13018:47;;;13080:7;13072:16;;;::::0;::::1;;13011:83;12927:167:::0;;;:::o;6086:103::-;5324:13;:11;:13::i;:::-;6151:30:::1;6178:1;6151:18;:30::i;:::-;6086:103::o:0;10473:136::-;5324:13;:11;:13::i;:::-;10554:14:::1;:49:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10473:136::o;8668:210::-;7836:13;;818:10;;8763:24;7836:13;8763:24;;8755:78;;;;;;;6287:2:1;8755:78:0;;;6269:21:1;6326:2;6306:18;;;6299:30;6365:34;6345:18;;;6338:62;6436:11;6416:18;;;6409:39;6465:19;;8755:78:0;;;;;;;;;8844:26;8863:6;8844:18;:26::i;:::-;8704:174;8668:210::o;12487:96::-;9138:10;9130:19;;;;:7;:19;;;;;;;;9125:46;;9158:13;;;;;;;;;;;;;;9125:46;12534:43:::1;::::0;:9:::1;:4;:9;::::0;12551:21:::1;::::0;12534:43:::1;::::0;;;12551:21;12534:9;:43:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12487:96::o:0;12534:43::-:1;-1:-1:-1::0;;;12487:96:0:o;11808:265::-;5324:13;:11;:13::i;:::-;11899:19:::1;::::0;::::1;::::0;11895:173:::1;;11929:32;11943:5;11950:2;11954:6;11929:13;:32::i;11895:173::-;11991:12;12009:2;:7;;12024:6;12009:26;;;6495:205:1::0;8056:181:0;5324:13;:11;:13::i;:::-;8146::::1;:24:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;8211:7:::1;5484::::0;5511:6;;;;5438:87;8211:7:::1;8186:43;;;;;;;;;;;;8056:181:::0;:::o;9331:156::-;5324:13;:11;:13::i;:::-;9411::::1;::::0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;;;:25;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;9452:27;;2826:41:1;;;9452:27:0::1;::::0;2799:18:1;9452:27:0::1;;;;;;;9331:156:::0;;:::o;6705:191::-;6779:16;6798:6;;;6815:17;;;;;;;;;;6848:40;;6798:6;;;;;;;6848:40;;6779:16;6848:40;6768:128;6705:191;:::o;5603:132::-;5484:7;5511:6;5667:23;5511:6;818:10;5667:23;5659:68;;;;;;;6907:2:1;5659:68:0;;;6889:21:1;;;6926:18;;;6919:30;6985:34;6965:18;;;6958:62;7037:18;;5659:68:0;6705:356:1;8427:156:0;8517:13;8510:20;;;;;;8541:34;8566:8;8541:24;:34::i;12081:279::-;9949:34;;;;;;;;;;;;;;;;;12206:52;;12195:10;4100:55:1;;;12206:52:0;;;4082:74:1;4172:18;;;;4165:34;;;12206:52:0;;;;;;;;;;4055:18:1;;;;12206:52:0;;;;;;;;;;;;;12195:64;;-1:-1:-1;;;;12195:10:0;;;:64;;12206:52;12195:64;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12159:100;;;;12271:7;12270:8;:59;;;-1:-1:-1;12283:11:0;;:16;;;;:45;;;12315:4;12304:24;;;;;;;;;;;;:::i;:::-;12303:25;12283:45;12266:88;;;12338:16;;;;;;;;;;;;;;12266:88;12152:208;;12081:279;;;:::o;245:196:1:-;313:20;;373:42;362:54;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:184::-;498:77;495:1;488:88;595:4;592:1;585:15;619:4;616:1;609:15;635:777;677:5;730:3;723:4;715:6;711:17;707:27;697:55;;748:1;745;738:12;697:55;784:6;771:20;810:18;847:2;843;840:10;837:36;;;853:18;;:::i;:::-;987:2;981:9;1049:4;1041:13;;892:66;1037:22;;;1061:2;1033:31;1029:40;1017:53;;;1085:18;;;1105:22;;;1082:46;1079:72;;;1131:18;;:::i;:::-;1171:10;1167:2;1160:22;1206:2;1198:6;1191:18;1252:3;1245:4;1240:2;1232:6;1228:15;1224:26;1221:35;1218:55;;;1269:1;1266;1259:12;1218:55;1333:2;1326:4;1318:6;1314:17;1307:4;1299:6;1295:17;1282:54;1380:1;1373:4;1368:2;1360:6;1356:15;1352:26;1345:37;1400:6;1391:15;;;;;;635:777;;;;:::o;1417:606::-;1521:6;1529;1537;1545;1553;1606:3;1594:9;1585:7;1581:23;1577:33;1574:53;;;1623:1;1620;1613:12;1574:53;1646:29;1665:9;1646:29;:::i;:::-;1636:39;;1722:2;1711:9;1707:18;1694:32;1684:42;;1745:38;1779:2;1768:9;1764:18;1745:38;:::i;:::-;1735:48;;1830:2;1819:9;1815:18;1802:32;1792:42;;1885:3;1874:9;1870:19;1857:33;1913:18;1905:6;1902:30;1899:50;;;1945:1;1942;1935:12;1899:50;1968:49;2009:7;2000:6;1989:9;1985:22;1968:49;:::i;:::-;1958:59;;;1417:606;;;;;;;;:::o;2028:462::-;2114:6;2122;2130;2183:2;2171:9;2162:7;2158:23;2154:32;2151:52;;;2199:1;2196;2189:12;2151:52;2222:29;2241:9;2222:29;:::i;:::-;2212:39;;2298:2;2287:9;2283:18;2270:32;2260:42;;2353:2;2342:9;2338:18;2325:32;2380:18;2372:6;2369:30;2366:50;;;2412:1;2409;2402:12;2366:50;2435:49;2476:7;2467:6;2456:9;2452:22;2435:49;:::i;:::-;2425:59;;;2028:462;;;;;:::o;2495:186::-;2554:6;2607:2;2595:9;2586:7;2582:23;2578:32;2575:52;;;2623:1;2620;2613:12;2575:52;2646:29;2665:9;2646:29;:::i;:::-;2636:39;2495:186;-1:-1:-1;;;2495:186:1:o;2878:328::-;2955:6;2963;2971;3024:2;3012:9;3003:7;2999:23;2995:32;2992:52;;;3040:1;3037;3030:12;2992:52;3063:29;3082:9;3063:29;:::i;:::-;3053:39;;3111:38;3145:2;3134:9;3130:18;3111:38;:::i;:::-;3101:48;;3196:2;3185:9;3181:18;3168:32;3158:42;;2878:328;;;;;:::o;3465:118::-;3551:5;3544:13;3537:21;3530:5;3527:32;3517:60;;3573:1;3570;3563:12;3588:315;3653:6;3661;3714:2;3702:9;3693:7;3689:23;3685:32;3682:52;;;3730:1;3727;3720:12;3682:52;3753:29;3772:9;3753:29;:::i;:::-;3743:39;;3832:2;3821:9;3817:18;3804:32;3845:28;3867:5;3845:28;:::i;:::-;3892:5;3882:15;;;3588:315;;;;;:::o;4210:245::-;4277:6;4330:2;4318:9;4309:7;4305:23;4301:32;4298:52;;;4346:1;4343;4336:12;4298:52;4378:9;4372:16;4397:28;4419:5;4397:28;:::i;4460:258::-;4532:1;4542:113;4556:6;4553:1;4550:13;4542:113;;;4632:11;;;4626:18;4613:11;;;4606:39;4578:2;4571:10;4542:113;;;4673:6;4670:1;4667:13;4664:48;;;-1:-1:-1;;4708:1:1;4690:16;;4683:27;4460:258::o;4723:889::-;4973:4;5002:42;5083:2;5075:6;5071:15;5060:9;5053:34;5123:6;5118:2;5107:9;5103:18;5096:34;5178:2;5170:6;5166:15;5161:2;5150:9;5146:18;5139:43;5218:6;5213:2;5202:9;5198:18;5191:34;5274:2;5266:6;5262:15;5256:3;5245:9;5241:19;5234:44;;5315:3;5309;5298:9;5294:19;5287:32;5348:6;5342:13;5392:6;5386:3;5375:9;5371:19;5364:35;5408:67;5468:6;5462:3;5451:9;5447:19;5442:2;5434:6;5430:15;5408:67;:::i;:::-;5527:2;5515:15;5532:66;5511:88;5496:104;;;;5602:3;5492:114;;4723:889;-1:-1:-1;;;;;;;4723:889:1:o;5617:184::-;5687:6;5740:2;5728:9;5719:7;5715:23;5711:32;5708:52;;;5756:1;5753;5746:12;5708:52;-1:-1:-1;5779:16:1;;5617:184;-1:-1:-1;5617:184:1:o;5806:274::-;5935:3;5973:6;5967:13;5989:53;6035:6;6030:3;6023:4;6015:6;6011:17;5989:53;:::i;:::-;6058:16;;;;;5806:274;-1:-1:-1;;5806:274:1:o
Swarm Source
ipfs://5b368241ff9508a018425f57bd25b6bb013947ac417d8c72b01426dec3f5bcb2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.