More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 374 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap In | 22124253 | 1 hr ago | IN | 0 ETH | 0.00043637 | ||||
Swap In | 22065341 | 8 days ago | IN | 0 ETH | 0.00045262 | ||||
Swap In | 22056283 | 9 days ago | IN | 0 ETH | 0.00010514 | ||||
Swap In | 22056182 | 9 days ago | IN | 0 ETH | 0.00010708 | ||||
Swap In | 21989773 | 18 days ago | IN | 0 ETH | 0.00021013 | ||||
Swap In | 21988708 | 18 days ago | IN | 0 ETH | 0.00043699 | ||||
Swap In | 21866636 | 36 days ago | IN | 0 ETH | 0.02440381 | ||||
Swap In | 21757372 | 51 days ago | IN | 0 ETH | 0.00047351 | ||||
Swap In | 21755733 | 51 days ago | IN | 0 ETH | 0.00030693 | ||||
Swap In | 21731734 | 54 days ago | IN | 0 ETH | 0.00092593 | ||||
Swap In | 21731677 | 54 days ago | IN | 0 ETH | 0.0007602 | ||||
Swap In | 21730061 | 55 days ago | IN | 0 ETH | 0.00044723 | ||||
Swap In | 21717543 | 56 days ago | IN | 0 ETH | 0.00366893 | ||||
Swap In | 21705018 | 58 days ago | IN | 0 ETH | 0.00125661 | ||||
Swap In | 21698284 | 59 days ago | IN | 0 ETH | 0.00113818 | ||||
Swap In | 21698227 | 59 days ago | IN | 0 ETH | 0.00118261 | ||||
Swap In | 21697405 | 59 days ago | IN | 0 ETH | 0.00191164 | ||||
Swap In | 21672168 | 63 days ago | IN | 0 ETH | 0.0033129 | ||||
Swap In | 21627097 | 69 days ago | IN | 0 ETH | 0.00085794 | ||||
Swap In | 21625823 | 69 days ago | IN | 0 ETH | 0.00113362 | ||||
Swap In | 21603207 | 72 days ago | IN | 0 ETH | 0.00098967 | ||||
Swap In | 21583003 | 75 days ago | IN | 0 ETH | 0.00109042 | ||||
Swap In | 21526031 | 83 days ago | IN | 0 ETH | 0.00084277 | ||||
Swap In | 21506918 | 86 days ago | IN | 0 ETH | 0.000606 | ||||
Swap In | 21506891 | 86 days ago | IN | 0 ETH | 0.00070363 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Deposit With Exp... | 22124253 | 1 hr ago | 1.53286801 ETH | ||||
Transfer | 22124253 | 1 hr ago | 0.00230275 ETH | ||||
Transfer | 22124253 | 1 hr ago | 1.53517076 ETH | ||||
Deposit With Exp... | 22065341 | 8 days ago | 0.01574336 ETH | ||||
Transfer | 22065341 | 8 days ago | 0.00002365 ETH | ||||
Transfer | 22065341 | 8 days ago | 0.01576701 ETH | ||||
Deposit With Exp... | 22056283 | 9 days ago | 0.72454801 ETH | ||||
Transfer | 22056283 | 9 days ago | 0.00108845 ETH | ||||
Transfer | 22056283 | 9 days ago | 0.72563646 ETH | ||||
Deposit With Exp... | 22056182 | 9 days ago | 0.01830061 ETH | ||||
Transfer | 22056182 | 9 days ago | 0.00002749 ETH | ||||
Transfer | 22056182 | 9 days ago | 0.0183281 ETH | ||||
Deposit With Exp... | 21989773 | 18 days ago | 0.03086297 ETH | ||||
Transfer | 21989773 | 18 days ago | 0.00004636 ETH | ||||
Transfer | 21989773 | 18 days ago | 0.03090933 ETH | ||||
Deposit With Exp... | 21988708 | 18 days ago | 0.11918819 ETH | ||||
Transfer | 21988708 | 18 days ago | 0.00017905 ETH | ||||
Transfer | 21988708 | 18 days ago | 0.11936725 ETH | ||||
Deposit With Exp... | 21866636 | 36 days ago | 2.66192197 ETH | ||||
Transfer | 21866636 | 36 days ago | 0.00399888 ETH | ||||
Transfer | 21866636 | 36 days ago | 2.66592085 ETH | ||||
Deposit With Exp... | 21757372 | 51 days ago | 0.56270016 ETH | ||||
Transfer | 21757372 | 51 days ago | 0.00084531 ETH | ||||
Transfer | 21757372 | 51 days ago | 0.56354548 ETH | ||||
Deposit With Exp... | 21755733 | 51 days ago | 0.19721858 ETH |
Loading...
Loading
Contract Name:
TSAggregatorUniswapV2
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { TSAggregator } from "./TSAggregator.sol"; import { IThorchainRouter } from "./interfaces/IThorchainRouter.sol"; import { IUniswapRouterV2 } from "./interfaces/IUniswapRouterV2.sol"; contract TSAggregatorUniswapV2 is TSAggregator { using SafeTransferLib for address; address public weth; IUniswapRouterV2 public swapRouter; constructor( address _ttp, address _weth, address _swapRouter ) TSAggregator(_ttp) { weth = _weth; swapRouter = IUniswapRouterV2(_swapRouter); } function swapIn( address tcRouter, address tcVault, string calldata tcMemo, address token, uint amount, uint amountOutMin, uint deadline ) public nonReentrant { tokenTransferProxy.transferTokens(token, msg.sender, address(this), amount); token.safeApprove(address(swapRouter), 0); // USDT quirk token.safeApprove(address(swapRouter), amount); address[] memory path = new address[](2); path[0] = token; path[1] = weth; swapRouter.swapExactTokensForETH( amount, amountOutMin, path, address(this), deadline ); uint amountOut = skimFee(address(this).balance); IThorchainRouter(tcRouter).depositWithExpiry{value: amountOut}( payable(tcVault), address(0), // ETH amountOut, tcMemo, deadline ); } function swapOut(address token, address to, uint256 amountOutMin) public payable nonReentrant { uint256 amount = skimFee(msg.value); address[] memory path = new address[](2); path[0] = weth; path[1] = token; swapRouter.swapExactETHForTokens{value: amount}( _parseAmountOutMin(amountOutMin), path, to, type(uint).max // deadline ); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol) /// @author Modified from Gnosis (https://github.com/gnosis/gp-v2-contracts/blob/main/src/contracts/libraries/GPv2SafeERC20.sol) /// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer. library SafeTransferLib { /*/////////////////////////////////////////////////////////////// ETH OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferETH(address to, uint256 amount) internal { bool callStatus; assembly { // Transfer the ETH and store if it succeeded or not. callStatus := call(gas(), to, amount, 0, 0, 0, 0) } require(callStatus, "ETH_TRANSFER_FAILED"); } /*/////////////////////////////////////////////////////////////// ERC20 OPERATIONS //////////////////////////////////////////////////////////////*/ function safeTransferFrom( address token, address from, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "from" argument. mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 68), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 100 because the calldata length is 4 + 32 * 3. callStatus := call(gas(), token, 0, freeMemoryPointer, 100, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FROM_FAILED"); } function safeTransfer( address token, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 68 because the calldata length is 4 + 32 * 2. callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FAILED"); } function safeApprove( address token, address to, uint256 amount ) internal { bool callStatus; assembly { // Get a pointer to some free memory. let freeMemoryPointer := mload(0x40) // Write the abi-encoded calldata to memory piece by piece: mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) // Begin with the function selector. mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument. mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value. // Call the token and store if it succeeded or not. // We use 68 because the calldata length is 4 + 32 * 2. callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0) } require(didLastOptionalReturnCallSucceed(callStatus), "APPROVE_FAILED"); } /*/////////////////////////////////////////////////////////////// INTERNAL HELPER LOGIC //////////////////////////////////////////////////////////////*/ function didLastOptionalReturnCallSucceed(bool callStatus) private pure returns (bool success) { assembly { // Get how many bytes the call returned. let returnDataSize := returndatasize() // If the call reverted: if iszero(callStatus) { // Copy the revert message into memory. returndatacopy(0, 0, returnDataSize) // Revert with the same message. revert(0, returnDataSize) } switch returnDataSize case 32 { // Copy the return data into memory. returndatacopy(0, 0, returnDataSize) // Set success to whether it returned true. success := iszero(iszero(mload(0))) } case 0 { // There was no return data. success := 1 } default { // It returned some malformed input. success := 0 } } } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { ReentrancyGuard } from "../lib/ReentrancyGuard.sol"; import { Owners } from "./Owners.sol"; import { TSAggregatorTokenTransferProxy } from './TSAggregatorTokenTransferProxy.sol'; abstract contract TSAggregator is Owners, ReentrancyGuard { using SafeTransferLib for address; event FeeSet(uint256 fee, address feeRecipient); uint256 public fee; address public feeRecipient; TSAggregatorTokenTransferProxy public tokenTransferProxy; constructor(address _tokenTransferProxy) { _setOwner(msg.sender, true); tokenTransferProxy = TSAggregatorTokenTransferProxy(_tokenTransferProxy); } // Needed for the swap router to be able to send back ETH receive() external payable {} function setFee(uint256 _fee, address _feeRecipient) external isOwner { require(_fee <= 1000, "fee can not be more than 10%"); fee = _fee; feeRecipient = _feeRecipient; emit FeeSet(_fee, _feeRecipient); } function skimFee(uint256 amount) internal returns (uint256) { if (fee != 0 && feeRecipient != address(0)) { uint256 feeAmount = (amount * fee) / 10000; feeRecipient.safeTransferETH(feeAmount); amount -= feeAmount; } return amount; } // Parse amountOutMin treating the last 2 digits as an exponent // So 15e4 = 150000. This allows for compressed memos on chains // with limited space like Bitcoin function _parseAmountOutMin(uint256 amount) internal pure returns (uint256) { return amount / 100 * (10 ** (amount % 100)); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; interface IThorchainRouter { function depositWithExpiry( address payable vault, address asset, uint amount, string memory memo, uint expiration ) external payable; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; interface IUniswapRouterV2 { function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Gas optimized reentrancy protection for smart contracts. /// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/ReentrancyGuard.sol) /// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/security/ReentrancyGuard.sol) abstract contract ReentrancyGuard { uint256 private locked = 1; modifier nonReentrant() { require(locked == 1, "REENTRANCY"); locked = 2; _; locked = 1; } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; abstract contract Owners { event OwnerSet(address indexed owner, bool active); mapping(address => bool) public owners; modifier isOwner() { require(owners[msg.sender], "Unauthorized"); _; } function _setOwner(address owner, bool active) internal virtual { owners[owner] = active; emit OwnerSet(owner, active); } function setOwner(address owner, bool active) external virtual isOwner { _setOwner(owner, active); } }
// SPDX-License-Identifier: MIT pragma solidity 0.8.10; import { SafeTransferLib } from "../lib/SafeTransferLib.sol"; import { Owners } from "./Owners.sol"; contract TSAggregatorTokenTransferProxy is Owners { using SafeTransferLib for address; constructor() { _setOwner(msg.sender, true); } function transferTokens(address token, address from, address to, uint256 amount) external isOwner { require(from == tx.origin || _isContract(from), "Invalid from address"); token.safeTransferFrom(from, to, amount); } function _isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } }
{ "remappings": [ "hardhat/=node_modules/hardhat/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "london", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ttp","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_swapRouter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":false,"internalType":"address","name":"feeRecipient","type":"address"}],"name":"FeeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"OwnerSet","type":"event"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"owners","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"address","name":"_feeRecipient","type":"address"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bool","name":"active","type":"bool"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tcRouter","type":"address"},{"internalType":"address","name":"tcVault","type":"address"},{"internalType":"string","name":"tcMemo","type":"string"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"}],"name":"swapOut","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTransferProxy","outputs":[{"internalType":"contract TSAggregatorTokenTransferProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001805534801561001457600080fd5b50604051610ef6380380610ef6833981016040819052610033916100f9565b8261003f336001610080565b600480546001600160a01b03199081166001600160a01b0393841617909155600580548216948316949094179093556006805490931691161790555061013c565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b80516001600160a01b03811681146100f457600080fd5b919050565b60008060006060848603121561010e57600080fd5b610117846100dd565b9250610125602085016100dd565b9150610133604085016100dd565b90509250925092565b610dab8061014b6000396000f3fe6080604052600436106100955760003560e01c8063516c731c11610059578063516c731c14610173578063b4f2e8b814610193578063c31c9c07146101b3578063ddca3f43146101d3578063e4d0c7f0146101f757600080fd5b8063022914a7146100a15780630eefdbad146100e65780633fc8cef31461011e578063469048401461013e57806348c314f41461015e57600080fd5b3661009c57005b600080fd5b3480156100ad57600080fd5b506100d16100bc366004610950565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100f257600080fd5b50600454610106906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b34801561012a57600080fd5b50600554610106906001600160a01b031681565b34801561014a57600080fd5b50600354610106906001600160a01b031681565b61017161016c366004610972565b610217565b005b34801561017f57600080fd5b5061017161018e3660046109ae565b61036f565b34801561019f57600080fd5b506101716101ae3660046109ea565b6103cb565b3480156101bf57600080fd5b50600654610106906001600160a01b031681565b3480156101df57600080fd5b506101e960025481565b6040519081526020016100dd565b34801561020357600080fd5b50610171610212366004610a16565b6104cc565b60015460011461025b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b60448201526064015b60405180910390fd5b6002600155600061026b3461071d565b6040805160028082526060820183529293506000929091602083019080368337505060055482519293506001600160a01b0316918391506000906102b1576102b1610ad5565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106102e5576102e5610ad5565b6001600160a01b03928316602091820292909201015260065416637ff36ab58361030e86610789565b84886000196040518663ffffffff1660e01b81526004016103329493929190610b2f565b6000604051808303818588803b15801561034b57600080fd5b505af115801561035f573d6000803e3d6000fd5b5050600180555050505050505050565b3360009081526020819052604090205460ff166103bd5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610252565b6103c782826107bc565b5050565b3360009081526020819052604090205460ff166104195760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610252565b6103e882111561046b5760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f74206265206d6f7265207468616e20313025000000006044820152606401610252565b6002829055600380546001600160a01b0319166001600160a01b0383169081179091556040805184815260208101929092527fc8242dc5446855370b781abbfc5d882af1d1a3cc29143216aba3558feb0ce925910160405180910390a15050565b60015460011461050b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610252565b6002600155600480546040516368155ec160e01b81526001600160a01b0387811693820193909352336024820152306044820152606481018690529116906368155ec190608401600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505060065461059f92506001600160a01b038781169250166000610819565b6006546105b9906001600160a01b03868116911685610819565b60408051600280825260608201835260009260208301908036833701905050905084816000815181106105ee576105ee610ad5565b6001600160a01b03928316602091820292909201015260055482519116908290600190811061061f5761061f610ad5565b6001600160a01b0392831660209182029290920101526006546040516318cbafe560e01b81529116906318cbafe5906106649087908790869030908990600401610b64565b600060405180830381600087803b15801561067e57600080fd5b505af1158015610692573d6000803e3d6000fd5b5050505060006106a14761071d565b9050896001600160a01b03166344bc937b828b6000858d8d8a6040518863ffffffff1660e01b81526004016106db96959493929190610ba0565b6000604051808303818588803b1580156106f457600080fd5b505af1158015610708573d6000803e3d6000fd5b50506001805550505050505050505050505050565b600060025460001415801561073c57506003546001600160a01b031615155b15610785576000612710600254846107549190610c11565b61075e9190610c46565b600354909150610777906001600160a01b031682610897565b6107818184610c5a565b9250505b5090565b6000610796606483610c71565b6107a190600a610d69565b6107ac606484610c46565b6107b69190610c11565b92915050565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b600060405163095ea7b360e01b81526001600160a01b03841660048201528260248201526000806044836000895af1915050610854816108ed565b6108915760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610252565b50505050565b600080600080600085875af19050806108e85760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610252565b505050565b60003d826108ff57806000803e806000fd5b8060208114610917578015610928576000925061092d565b816000803e6000511515925061092d565b600192505b5050919050565b80356001600160a01b038116811461094b57600080fd5b919050565b60006020828403121561096257600080fd5b61096b82610934565b9392505050565b60008060006060848603121561098757600080fd5b61099084610934565b925061099e60208501610934565b9150604084013590509250925092565b600080604083850312156109c157600080fd5b6109ca83610934565b9150602083013580151581146109df57600080fd5b809150509250929050565b600080604083850312156109fd57600080fd5b82359150610a0d60208401610934565b90509250929050565b60008060008060008060008060e0898b031215610a3257600080fd5b610a3b89610934565b9750610a4960208a01610934565b9650604089013567ffffffffffffffff80821115610a6657600080fd5b818b0191508b601f830112610a7a57600080fd5b813581811115610a8957600080fd5b8c6020828501011115610a9b57600080fd5b602083019850809750505050610ab360608a01610934565b979a96995094979396956080850135955060a08501359460c001359350915050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015610b245781516001600160a01b031687529582019590820190600101610aff565b509495945050505050565b848152608060208201526000610b486080830186610aeb565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000610b8360a0830186610aeb565b6001600160a01b0394909416606083015250608001529392505050565b6001600160a01b038781168252861660208201526040810185905260a06060820181905281018390526000838560c0840137600060c0858401015260c0601f19601f8601168301019050826080830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610c2b57610c2b610bfb565b500290565b634e487b7160e01b600052601260045260246000fd5b600082610c5557610c55610c30565b500490565b600082821015610c6c57610c6c610bfb565b500390565b600082610c8057610c80610c30565b500690565b600181815b80851115610cc0578160001904821115610ca657610ca6610bfb565b80851615610cb357918102915b93841c9390800290610c8a565b509250929050565b600082610cd7575060016107b6565b81610ce4575060006107b6565b8160018114610cfa5760028114610d0457610d20565b60019150506107b6565b60ff841115610d1557610d15610bfb565b50506001821b6107b6565b5060208310610133831016604e8410600b8410161715610d43575081810a6107b6565b610d4d8383610c85565b8060001904821115610d6157610d61610bfb565b029392505050565b600061096b8383610cc856fea2646970667358221220d2975fdb5b4c71988e19fed9f01d9c2be1118bfdb85b0cb94be273e9328c2d2964736f6c634300080a0033000000000000000000000000f892fef9da200d9e84c9b0647ecff0f34633abe8000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106100955760003560e01c8063516c731c11610059578063516c731c14610173578063b4f2e8b814610193578063c31c9c07146101b3578063ddca3f43146101d3578063e4d0c7f0146101f757600080fd5b8063022914a7146100a15780630eefdbad146100e65780633fc8cef31461011e578063469048401461013e57806348c314f41461015e57600080fd5b3661009c57005b600080fd5b3480156100ad57600080fd5b506100d16100bc366004610950565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156100f257600080fd5b50600454610106906001600160a01b031681565b6040516001600160a01b0390911681526020016100dd565b34801561012a57600080fd5b50600554610106906001600160a01b031681565b34801561014a57600080fd5b50600354610106906001600160a01b031681565b61017161016c366004610972565b610217565b005b34801561017f57600080fd5b5061017161018e3660046109ae565b61036f565b34801561019f57600080fd5b506101716101ae3660046109ea565b6103cb565b3480156101bf57600080fd5b50600654610106906001600160a01b031681565b3480156101df57600080fd5b506101e960025481565b6040519081526020016100dd565b34801561020357600080fd5b50610171610212366004610a16565b6104cc565b60015460011461025b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b60448201526064015b60405180910390fd5b6002600155600061026b3461071d565b6040805160028082526060820183529293506000929091602083019080368337505060055482519293506001600160a01b0316918391506000906102b1576102b1610ad5565b60200260200101906001600160a01b031690816001600160a01b03168152505084816001815181106102e5576102e5610ad5565b6001600160a01b03928316602091820292909201015260065416637ff36ab58361030e86610789565b84886000196040518663ffffffff1660e01b81526004016103329493929190610b2f565b6000604051808303818588803b15801561034b57600080fd5b505af115801561035f573d6000803e3d6000fd5b5050600180555050505050505050565b3360009081526020819052604090205460ff166103bd5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610252565b6103c782826107bc565b5050565b3360009081526020819052604090205460ff166104195760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606401610252565b6103e882111561046b5760405162461bcd60e51b815260206004820152601c60248201527f6665652063616e206e6f74206265206d6f7265207468616e20313025000000006044820152606401610252565b6002829055600380546001600160a01b0319166001600160a01b0383169081179091556040805184815260208101929092527fc8242dc5446855370b781abbfc5d882af1d1a3cc29143216aba3558feb0ce925910160405180910390a15050565b60015460011461050b5760405162461bcd60e51b815260206004820152600a6024820152695245454e5452414e435960b01b6044820152606401610252565b6002600155600480546040516368155ec160e01b81526001600160a01b0387811693820193909352336024820152306044820152606481018690529116906368155ec190608401600060405180830381600087803b15801561056c57600080fd5b505af1158015610580573d6000803e3d6000fd5b505060065461059f92506001600160a01b038781169250166000610819565b6006546105b9906001600160a01b03868116911685610819565b60408051600280825260608201835260009260208301908036833701905050905084816000815181106105ee576105ee610ad5565b6001600160a01b03928316602091820292909201015260055482519116908290600190811061061f5761061f610ad5565b6001600160a01b0392831660209182029290920101526006546040516318cbafe560e01b81529116906318cbafe5906106649087908790869030908990600401610b64565b600060405180830381600087803b15801561067e57600080fd5b505af1158015610692573d6000803e3d6000fd5b5050505060006106a14761071d565b9050896001600160a01b03166344bc937b828b6000858d8d8a6040518863ffffffff1660e01b81526004016106db96959493929190610ba0565b6000604051808303818588803b1580156106f457600080fd5b505af1158015610708573d6000803e3d6000fd5b50506001805550505050505050505050505050565b600060025460001415801561073c57506003546001600160a01b031615155b15610785576000612710600254846107549190610c11565b61075e9190610c46565b600354909150610777906001600160a01b031682610897565b6107818184610c5a565b9250505b5090565b6000610796606483610c71565b6107a190600a610d69565b6107ac606484610c46565b6107b69190610c11565b92915050565b6001600160a01b03821660008181526020818152604091829020805460ff191685151590811790915591519182527ff74826f11048fa8ecf33e91132bf280f6582ed97548a84e426b56e98526b9316910160405180910390a25050565b600060405163095ea7b360e01b81526001600160a01b03841660048201528260248201526000806044836000895af1915050610854816108ed565b6108915760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610252565b50505050565b600080600080600085875af19050806108e85760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b6044820152606401610252565b505050565b60003d826108ff57806000803e806000fd5b8060208114610917578015610928576000925061092d565b816000803e6000511515925061092d565b600192505b5050919050565b80356001600160a01b038116811461094b57600080fd5b919050565b60006020828403121561096257600080fd5b61096b82610934565b9392505050565b60008060006060848603121561098757600080fd5b61099084610934565b925061099e60208501610934565b9150604084013590509250925092565b600080604083850312156109c157600080fd5b6109ca83610934565b9150602083013580151581146109df57600080fd5b809150509250929050565b600080604083850312156109fd57600080fd5b82359150610a0d60208401610934565b90509250929050565b60008060008060008060008060e0898b031215610a3257600080fd5b610a3b89610934565b9750610a4960208a01610934565b9650604089013567ffffffffffffffff80821115610a6657600080fd5b818b0191508b601f830112610a7a57600080fd5b813581811115610a8957600080fd5b8c6020828501011115610a9b57600080fd5b602083019850809750505050610ab360608a01610934565b979a96995094979396956080850135955060a08501359460c001359350915050565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015610b245781516001600160a01b031687529582019590820190600101610aff565b509495945050505050565b848152608060208201526000610b486080830186610aeb565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000610b8360a0830186610aeb565b6001600160a01b0394909416606083015250608001529392505050565b6001600160a01b038781168252861660208201526040810185905260a06060820181905281018390526000838560c0840137600060c0858401015260c0601f19601f8601168301019050826080830152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615610c2b57610c2b610bfb565b500290565b634e487b7160e01b600052601260045260246000fd5b600082610c5557610c55610c30565b500490565b600082821015610c6c57610c6c610bfb565b500390565b600082610c8057610c80610c30565b500690565b600181815b80851115610cc0578160001904821115610ca657610ca6610bfb565b80851615610cb357918102915b93841c9390800290610c8a565b509250929050565b600082610cd7575060016107b6565b81610ce4575060006107b6565b8160018114610cfa5760028114610d0457610d20565b60019150506107b6565b60ff841115610d1557610d15610bfb565b50506001821b6107b6565b5060208310610133831016604e8410600b8410161715610d43575081810a6107b6565b610d4d8383610c85565b8060001904821115610d6157610d61610bfb565b029392505050565b600061096b8383610cc856fea2646970667358221220d2975fdb5b4c71988e19fed9f01d9c2be1118bfdb85b0cb94be273e9328c2d2964736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f892fef9da200d9e84c9b0647ecff0f34633abe8000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : _ttp (address): 0xF892Fef9dA200d9E84c9b0647ecFF0F34633aBe8
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _swapRouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f892fef9da200d9e84c9b0647ecff0f34633abe8
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.