More Info
Private Name Tags
ContractCreator
Latest 18 from a total of 18 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x54619498 | 74595214 | 655 days ago | IN | 0 ETH | 0.000177923059 | ||||
0x5d4ab4bc | 74592199 | 655 days ago | IN | 0.02 ETH | 0.000176777246 | ||||
0x54699098 | 74592026 | 655 days ago | IN | 0 ETH | 0.000178752927 | ||||
0x5d4a1cbc | 74591599 | 655 days ago | IN | 0.02 ETH | 0.000202596796 | ||||
0x17766498 | 74587640 | 655 days ago | IN | 0 ETH | 0.000139776413 | ||||
0x5721f494 | 74585593 | 655 days ago | IN | 0 ETH | 0.000140375132 | ||||
0x57221898 | 74584482 | 655 days ago | IN | 0 ETH | 0.000181501668 | ||||
0x547548a4 | 74584430 | 655 days ago | IN | 0 ETH | 0.000180749982 | ||||
0x5d5c70b8 | 74584296 | 655 days ago | IN | 0.01 ETH | 0.000184013833 | ||||
0x5eb37cc8 | 74584276 | 655 days ago | IN | 0.2 ETH | 0.000184800259 | ||||
0x5448fc90 | 74584145 | 655 days ago | IN | 0 ETH | 0.000180741024 | ||||
0x57245498 | 74583760 | 655 days ago | IN | 0 ETH | 0.000162338378 | ||||
0x549e5c9c | 74583363 | 655 days ago | IN | 0 ETH | 0.000163642423 | ||||
0x54a0809c | 74582086 | 655 days ago | IN | 0 ETH | 0.000171726585 | ||||
0x54a0809c | 74581962 | 655 days ago | IN | 0 ETH | 0.000171726585 | ||||
0x5d5870c0 | 74581050 | 655 days ago | IN | 0.04 ETH | 0.000138431717 | ||||
0x177dc09c | 74580936 | 655 days ago | IN | 0 ETH | 0.000135788264 | ||||
0x1e638cc4 | 74580482 | 655 days ago | IN | 0.1 ETH | 0.000162568134 |
Latest 24 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
74595214 | 655 days ago | 0.019730909870413 ETH | ||||
74595214 | 655 days ago | 0.019730909870413 ETH | ||||
74592199 | 655 days ago | 0.02 ETH | ||||
74592026 | 655 days ago | 0.019871299791381 ETH | ||||
74592026 | 655 days ago | 0.019871299791381 ETH | ||||
74591599 | 655 days ago | 0.02 ETH | ||||
74587640 | 655 days ago | 0.033607947292508 ETH | ||||
74587640 | 655 days ago | 0.033607947292508 ETH | ||||
74585593 | 655 days ago | 0.016061250990421 ETH | ||||
74585593 | 655 days ago | 0.016061250990421 ETH | ||||
74584482 | 655 days ago | 0.032122810841049 ETH | ||||
74584482 | 655 days ago | 0.032122810841049 ETH | ||||
74584430 | 655 days ago | 0.160620259297436 ETH | ||||
74584430 | 655 days ago | 0.160620259297436 ETH | ||||
74584296 | 655 days ago | 0.01 ETH | ||||
74584276 | 655 days ago | 0.2 ETH | ||||
74584145 | 655 days ago | 0.004824574506657 ETH | ||||
74584145 | 655 days ago | 0.004824574506657 ETH | ||||
74583760 | 655 days ago | 0.032164067112407 ETH | ||||
74583760 | 655 days ago | 0.032164067112407 ETH | ||||
74581050 | 655 days ago | 0.04 ETH | ||||
74580936 | 655 days ago | 0.067474750350844 ETH | ||||
74580936 | 655 days ago | 0.067474750350844 ETH | ||||
74580482 | 655 days ago | 0.1 ETH |
Loading...
Loading
Contract Name:
LlamaZip
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: None pragma solidity =0.7.6; pragma abicoder v2; import "./PairList.sol"; import "./router/SwapRouter.sol"; import "./router/libs/IERC20.sol"; contract LlamaZip is SwapRouter { address internal immutable pairList; // Set to internal to avoid collisions uint internal constant MAX_BPS = 10000; constructor(address _factory, address _WETH9, address _pairList) SwapRouter(_factory, _WETH9) { pairList = _pairList; } // Because of function uniswapV3SwapCallback() 2.3e-8% of calls will fail because they'll hit that selector fallback() external payable { if(msg.sender == pairList){ // Sweep tokens or ETH that got stuck here (address token, uint amount, address receiver) = abi.decode(msg.data, (address, uint, address)); if(token == address(0)){ payable(receiver).transfer(address(this).balance); } else { IERC20(token).transfer(receiver, amount); // We don't care if it fails } return; } uint data; assembly { data := calldataload(0) } uint pair = data & (0xf << (256-4)); uint token0IsTokenIn = data & (0x1 << (256-4-1)); PairList.Pool memory pool = PairList(pairList).getPool(pair); address tokenIn = token0IsTokenIn == 0?pool.token1:pool.token0; uint totalIn; if(tokenIn == WETH9 && msg.value > 0){ totalIn = msg.value; } else { uint inputDataExists = data & (type(uint256).max >> 5+17+8+2); if(inputDataExists == 0){ totalIn = IERC20(tokenIn).balanceOf(msg.sender); } else { uint inZeros = (data & (0x1f << (256-5-17-8-2-5))) >> (256-5-17-8-2-5); uint calldataLength; assembly { calldataLength := calldatasize() } // (type(uint256).max >> 5+17+8+2+5) = 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffff, this is done to get around stack too deep uint significantInputBits = (data & 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffff) >> (256-(calldataLength*8)); totalIn = significantInputBits * (10**inZeros); } } uint expectedSignificantBits = (data & (0x1ffff << (256-5-17))) >> (256-5-17); uint outZeros = (data & (0xff << (256-5-17-8))) >> (256-5-17-8); uint expectedTotalOut = expectedSignificantBits << outZeros; uint slippageBps; { uint slippageId = data & (0x3 << (256-5-17-8-2)); if(slippageId == 0){ slippageBps = MAX_BPS - 50; //0.5 } else if(slippageId == (0x1 << (256-5-17-8-2))){ slippageBps = MAX_BPS - 10; //0.1 } else if(slippageId == (0x2 << (256-5-17-8-2))){ slippageBps = MAX_BPS - 100; //1 } else if(slippageId == (0x3 << (256-5-17-8-2))){ slippageBps = MAX_BPS - 500; //5 } } uint minTotalOut = (expectedTotalOut * slippageBps)/MAX_BPS; address tokenOut = token0IsTokenIn == 0?pool.token0:pool.token1; swap(tokenIn, tokenOut, pool.fee, totalIn, expectedTotalOut, minTotalOut); } }
//SPDX-License-Identifier: None pragma solidity =0.7.6; pragma abicoder v2; import "./utils/Ownable.sol"; import "./router/libs/IERC20.sol"; interface UniswapV3Pool { function token0() external returns (address); function token1() external returns (address); function fee() external returns (uint24); } contract PairList is Ownable { struct Pool { address token0; address token1; uint24 fee; } mapping(uint => Pool) public pools; function setPool(uint id, address pool) onlyOwner external { require(pools[id].token0 == address(0) && pools[id].token1 == address(0), "already set"); pools[id] = Pool({ fee: UniswapV3Pool(pool).fee(), token0: UniswapV3Pool(pool).token0(), token1: UniswapV3Pool(pool).token1() }); } function getPool(uint poolId) view external returns (Pool memory pool){ if(poolId == 0){ return Pool(0x4200000000000000000000000000000000000006, 0x7F5c764cBc14f9669B88837ca1490cCa17c31607, 500); // WETH / USDC 0.05% } else if(poolId == (1 << 252)){ return Pool(0x4200000000000000000000000000000000000006, 0x4200000000000000000000000000000000000042, 3000); // WETH / OP 0.3% } else if(poolId == (2 << 252)){ return Pool(0x4200000000000000000000000000000000000042, 0x7F5c764cBc14f9669B88837ca1490cCa17c31607, 3000); // OP / USDC 0.3% } else if(poolId == (3 << 252)){ return Pool(0x4200000000000000000000000000000000000006, 0x4200000000000000000000000000000000000042, 500); // WETH / OP 0.05% } else if(poolId == (4 << 252)){ return Pool(0x7F5c764cBc14f9669B88837ca1490cCa17c31607, 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1, 100); // USDC / DAI 0.01% } else if(poolId == (5 << 252)){ return Pool(0x4200000000000000000000000000000000000006, 0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4, 3000); // WETH / SNX 0.3% } else if(poolId == (6 << 252)){ return Pool(0x4200000000000000000000000000000000000006, 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1, 3000); // WETH / DAI 0.3% } return pools[poolId]; } function sweepTokenFromRouter(address router, address token, uint amount, address receiver) onlyOwner external { (bool success, ) = router.call(abi.encode(token, amount, receiver)); require(success); } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity =0.7.6; pragma abicoder v2; import "./libs/CallbackValidation.sol"; import "./libs/PeripheryPayments.sol"; import "./libs/PeripheryImmutableState.sol"; import "./libs/SafeCast.sol"; interface IUniswapV3Pool { function swap( address recipient, bool zeroForOne, int256 amountSpecified, uint160 sqrtPriceLimitX96, bytes calldata data ) external returns (int256 amount0, int256 amount1); } contract SwapRouter is PeripheryImmutableState, PeripheryPayments { using SafeCast for uint256; /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK) uint160 internal constant MIN_SQRT_RATIO = 4295128739; /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK) uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342; constructor(address _factory, address _WETH9) PeripheryImmutableState(_factory, _WETH9) {} function getPool( address tokenA, address tokenB, uint24 fee ) private view returns (IUniswapV3Pool) { return IUniswapV3Pool(PoolAddress.computeAddress(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee))); } struct SwapCallbackData { address tokenIn; address tokenOut; uint24 fee; address payer; } function swap(address tokenIn, address tokenOut, uint24 fee, uint amountIn, uint expectedAmountOut, uint minAmountOut) internal { bool zeroForOne = tokenIn < tokenOut; bytes memory data = abi.encode(SwapCallbackData({ tokenIn: tokenIn, tokenOut: tokenOut, fee: fee, payer: msg.sender })); (int256 amount0, int256 amount1) = getPool(tokenIn, tokenOut, fee).swap( address(this), zeroForOne, amountIn.toInt256(), (zeroForOne ? MIN_SQRT_RATIO + 1 : MAX_SQRT_RATIO - 1), data ); uint amountOut = uint256(-(zeroForOne ? amount1 : amount0)); if(amountOut > expectedAmountOut){ amountOut = expectedAmountOut; } require(amountOut >= minAmountOut, 'Too little received'); if(tokenOut == WETH9){ // Doesn't support WETH output since we can't differentiate IWETH9(WETH9).withdraw(amountOut); TransferHelper.safeTransferETH(msg.sender, amountOut); } else { TransferHelper.safeTransfer(tokenOut, msg.sender, amountOut); } } function uniswapV3SwapCallback( int256 amount0Delta, int256 amount1Delta, bytes calldata _data ) external { require(amount0Delta > 0 || amount1Delta > 0); // swaps entirely within 0-liquidity regions are not supported SwapCallbackData memory data = abi.decode(_data, (SwapCallbackData)); CallbackValidation.verifyCallback(factory, data.tokenIn, data.tokenOut, data.fee); pay(data.tokenIn, data.payer, msg.sender, amount0Delta > 0? uint256(amount0Delta) : uint256(amount1Delta)); } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity =0.7.6; import './PoolAddress.sol'; /// @notice Provides validation for callbacks from Uniswap V3 Pools library CallbackValidation { /// @notice Returns the address of a valid Uniswap V3 Pool /// @param factory The contract address of the Uniswap V3 factory /// @param tokenA The contract address of either token0 or token1 /// @param tokenB The contract address of the other token /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @return pool The V3 pool contract address function verifyCallback( address factory, address tokenA, address tokenB, uint24 fee ) internal view returns (address pool) { return verifyCallback(factory, PoolAddress.getPoolKey(tokenA, tokenB, fee)); } /// @notice Returns the address of a valid Uniswap V3 Pool /// @param factory The contract address of the Uniswap V3 factory /// @param poolKey The identifying key of the V3 pool /// @return pool The V3 pool contract address function verifyCallback(address factory, PoolAddress.PoolKey memory poolKey) internal view returns (address pool) { pool = PoolAddress.computeAddress(factory, poolKey); require(msg.sender == address(pool)); } }
// SPDX-License-Identifier: MIT pragma solidity =0.7.6; interface IERC20{ function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity =0.7.6; /// @title Immutable state /// @notice Immutable state used by periphery contracts abstract contract PeripheryImmutableState { address internal immutable factory; address internal immutable WETH9; constructor(address _factory, address _WETH9) { factory = _factory; WETH9 = _WETH9; } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.7.5; import './IERC20.sol'; import './TransferHelper.sol'; import './PeripheryImmutableState.sol'; interface IWETH9 is IERC20 { /// @notice Deposit ether to get wrapped ether function deposit() external payable; /// @notice Withdraw wrapped ether to get ether function withdraw(uint256) external; } abstract contract PeripheryPayments is PeripheryImmutableState { receive() external payable { require(msg.sender == WETH9, 'Not WETH9'); } /* Removed external functions to avoid collisions /// @inheritdoc IPeripheryPayments function unwrapWETH9(uint256 amountMinimum, address recipient) public payable override { uint256 balanceWETH9 = IWETH9(WETH9).balanceOf(address(this)); require(balanceWETH9 >= amountMinimum, 'Insufficient WETH9'); if (balanceWETH9 > 0) { IWETH9(WETH9).withdraw(balanceWETH9); TransferHelper.safeTransferETH(recipient, balanceWETH9); } } /// @inheritdoc IPeripheryPayments function sweepToken( address token, uint256 amountMinimum, address recipient ) public payable override { uint256 balanceToken = IERC20(token).balanceOf(address(this)); require(balanceToken >= amountMinimum, 'Insufficient token'); if (balanceToken > 0) { TransferHelper.safeTransfer(token, recipient, balanceToken); } } /// @inheritdoc IPeripheryPayments function refundETH() external payable override { if (address(this).balance > 0) TransferHelper.safeTransferETH(msg.sender, address(this).balance); } */ /// @param token The token to pay /// @param payer The entity that must pay /// @param recipient The entity that will receive payment /// @param value The amount to pay function pay( address token, address payer, address recipient, uint256 value ) internal { if (token == WETH9 && address(this).balance >= value) { // pay with WETH9 IWETH9(WETH9).deposit{value: value}(); // wrap only what is needed to pay IWETH9(WETH9).transfer(recipient, value); } else if (payer == address(this)) { // pay with tokens already in the contract (for the exact input multihop case) TransferHelper.safeTransfer(token, recipient, value); } else { // pull payment TransferHelper.safeTransferFrom(token, payer, recipient, value); } } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title Provides functions for deriving a pool address from the factory, tokens, and the fee library PoolAddress { bytes32 internal constant POOL_INIT_CODE_HASH = 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54; /// @notice The identifying key of the pool struct PoolKey { address token0; address token1; uint24 fee; } /// @notice Returns PoolKey: the ordered tokens with the matched fee levels /// @param tokenA The first token of a pool, unsorted /// @param tokenB The second token of a pool, unsorted /// @param fee The fee level of the pool /// @return Poolkey The pool details with ordered token0 and token1 assignments function getPoolKey( address tokenA, address tokenB, uint24 fee ) internal pure returns (PoolKey memory) { if (tokenA > tokenB) (tokenA, tokenB) = (tokenB, tokenA); return PoolKey({token0: tokenA, token1: tokenB, fee: fee}); } /// @notice Deterministically computes the pool address given the factory and PoolKey /// @param factory The Uniswap V3 factory contract address /// @param key The PoolKey /// @return pool The contract address of the V3 pool function computeAddress(address factory, PoolKey memory key) internal pure returns (address pool) { require(key.token0 < key.token1); pool = address( uint256( keccak256( abi.encodePacked( hex'ff', factory, keccak256(abi.encode(key.token0, key.token1, key.fee)), POOL_INIT_CODE_HASH ) ) ) ); } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title Safe casting methods /// @notice Contains methods for safely casting between types library SafeCast { /// @notice Cast a uint256 to a uint160, revert on overflow /// @param y The uint256 to be downcasted /// @return z The downcasted integer, now type uint160 function toUint160(uint256 y) internal pure returns (uint160 z) { require((z = uint160(y)) == y); } /// @notice Cast a int256 to a int128, revert on overflow or underflow /// @param y The int256 to be downcasted /// @return z The downcasted integer, now type int128 function toInt128(int256 y) internal pure returns (int128 z) { require((z = int128(y)) == y); } /// @notice Cast a uint256 to a int256, revert on overflow /// @param y The uint256 to be casted /// @return z The casted integer, now type int256 function toInt256(uint256 y) internal pure returns (int256 z) { require(y < 2**255); z = int256(y); } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.6.0; import './IERC20.sol'; library TransferHelper { /// @notice Transfers tokens from the targeted address to the given destination /// @notice Errors with 'STF' if transfer fails /// @param token The contract address of the token to be transferred /// @param from The originating address from which the tokens will be transferred /// @param to The destination address of the transfer /// @param value The amount to be transferred function safeTransferFrom( address token, address from, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'STF'); } /// @notice Transfers tokens from msg.sender to a recipient /// @dev Errors with ST if transfer fails /// @param token The contract address of the token which will be transferred /// @param to The recipient of the transfer /// @param value The value of the transfer function safeTransfer( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'ST'); } /// @notice Approves the stipulated contract to spend the given allowance in the given token /// @dev Errors with 'SA' if transfer fails /// @param token The contract address of the token to be approved /// @param to The target of the approval /// @param value The amount of the given token the target will be allowed to spend function safeApprove( address token, address to, uint256 value ) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.approve.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'SA'); } /// @notice Transfers ETH to the recipient address /// @dev Fails with `STE` /// @param to The destination of the transfer /// @param value The value to be transferred function safeTransferETH(address to, uint256 value) internal { (bool success, ) = to.call{value: value}(new bytes(0)); require(success, 'STE'); } }
//SPDX-License-Identifier: None pragma solidity =0.7.6; contract Ownable { address public owner; constructor(){ owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner, "!owner"); _; } function setOwner(address newOwner) onlyOwner external { owner = newOwner; } }
{ "evmVersion": "istanbul", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 999999 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"},{"internalType":"address","name":"_pairList","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040523480156200001157600080fd5b50604051620017d0380380620017d0833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c6116b26200011e6000398060e552806102bd525080603f528061035f528061079152806108205280610cf25280610d525280610dd35250806108db528061094052506116b26000f3fe6080604052600436106100225760003560e01c8063fa461e33146105d8576100cd565b366100cd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146100cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610233576000808061011936826112c2565b9194509250905073ffffffffffffffffffffffffffffffffffffffff83166101835760405173ffffffffffffffffffffffffffffffffffffffff8216904780156108fc02916000818181858888f1935050505015801561017d573d6000803e3d6000fd5b5061022b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906101d79084908690600401611595565b602060405180830381600087803b1580156101f157600080fd5b505af1158015610205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102299190611303565b505b5050506100cb565b6040517f068bcd8d00000000000000000000000000000000000000000000000000000000815260008035917ff0000000000000000000000000000000000000000000000000000000000000008316917f080000000000000000000000000000000000000000000000000000000000000084169173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063068bcd8d906102f290869060040161163d565b60606040518083038186803b15801561030a57600080fd5b505afa15801561031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034291906113c8565b905060008215610353578151610359565b81602001515b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156103b85750600034115b156103c45750346104ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff861680610491576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a082319061043a9033906004016114c9565b60206040518083038186803b15801561045257600080fd5b505afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a91906114b1565b91506104c8565b601f60db88901c16600a0a7b07ffffffffffffffffffffffffffffffffffffffffffffffffffffff881660083602610100031c0291505b505b6201ffff60ea87901c1660ff60e288901c1681811b60007c03000000000000000000000000000000000000000000000000000000008a1680610510576126de9150610599565b807c0100000000000000000000000000000000000000000000000000000000141561053f576127069150610599565b807c0200000000000000000000000000000000000000000000000000000000141561056e576126ac9150610599565b807c030000000000000000000000000000000000000000000000000000000014156105995761251c91505b5061271081830204600089156105b35788602001516105b6565b88515b90506105ca88828b604001518a88876105f8565b505050505050505050505050005b3480156105e457600080fd5b506100cb6105f336600461134d565b6108ae565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff888116808352908816602080840182905262ffffff891684860152336060850152935191109260009261064c929091016115f2565b604051602081830303815290604052905060008061066b8a8a8a610939565b73ffffffffffffffffffffffffffffffffffffffff1663128acb0830866106918b610977565b886106b05773fffd8963efd1fc6a506488495d951d5263988d256106b7565b6401000276a45b886040518663ffffffff1660e01b81526004016106d89594939291906114ea565b6040805180830381600087803b1580156106f157600080fd5b505af1158015610705573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610729919061132a565b9150915060008461073a578261073c565b815b60000390508681111561074c5750855b8581101561078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906115bb565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610896576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061085590849060040161163d565b600060405180830381600087803b15801561086f57600080fd5b505af1158015610883573d6000803e3d6000fd5b5050505061089133826109a9565b6108a1565b6108a18a3383610afc565b5050505050505050505050565b60008413806108bd5750600083135b6108c657600080fd5b60006108d482840184611433565b905061090e7f0000000000000000000000000000000000000000000000000000000000000000826000015183602001518460400151610cd1565b5061093281600001518260600151336000891361092b578761092d565b885b610cf0565b5050505050565b600061096f7f000000000000000000000000000000000000000000000000000000000000000061096a868686610ed4565b610f51565b949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106109a557600080fd5b5090565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310610a2057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a82576040519150601f19603f3d011682016040523d82523d6000602084013e610a87565b606091505b5050905080610af757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310610bd157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b94565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c33576040519150601f19603f3d011682016040523d82523d6000602084013e610c38565b606091505b5091509150818015610c66575080511580610c665750808060200190516020811015610c6357600080fd5b50515b61093257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610ce785610ce2868686610ed4565b611087565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610d4b5750804710155b15610e94577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610db857600080fd5b505af1158015610dcc573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e6257600080fd5b505af1158015610e76573d6000803e3d6000fd5b505050506040513d6020811015610e8c57600080fd5b50610ece9050565b73ffffffffffffffffffffffffffffffffffffffff8316301415610ec257610ebd848383610afc565b610ece565b610ece848484846110bd565b50505050565b610edc6112a2565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610f14579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610f9357600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b60006110938383610f51565b90503373ffffffffffffffffffffffffffffffffffffffff8216146110b757600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b6020831061119a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161115d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fc576040519150601f19603f3d011682016040523d82523d6000602084013e611201565b606091505b509150915081801561122f57508051158061122f575080806020019051602081101561122c57600080fd5b50515b61129a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b604080516060810182526000808252602082018190529181019190915290565b6000806000606084860312156112d6578283fd5b83356112e181611646565b92506020840135915060408401356112f881611646565b809150509250925092565b600060208284031215611314578081fd5b81518015158114611323578182fd5b9392505050565b6000806040838503121561133c578182fd5b505080516020909101519092909150565b60008060008060608587031215611362578081fd5b8435935060208501359250604085013567ffffffffffffffff80821115611387578283fd5b818701915087601f83011261139a578283fd5b8135818111156113a8578384fd5b8860208285010111156113b9578384fd5b95989497505060200194505050565b6000606082840312156113d9578081fd5b6040516060810181811067ffffffffffffffff821117156113f657fe5b604052825161140481611646565b8152602083015161141481611646565b602082015260408301516114278161166b565b60408201529392505050565b600060808284031215611444578081fd5b6040516080810181811067ffffffffffffffff8211171561146157fe5b604052823561146f81611646565b8152602083013561147f81611646565b602082015260408301356114928161166b565b604082015260608301356114a581611646565b60608201529392505050565b6000602082840312156114c2578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352602087151581850152866040850152818616606085015260a06080850152845191508160a0850152825b8281101561154c5785810182015185820160c001528101611530565b8281111561155d578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b815173ffffffffffffffffffffffffffffffffffffffff908116825260208084015182169083015260408084015162ffffff1690830152606092830151169181019190915260800190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461166857600080fd5b50565b62ffffff8116811461166857600080fdfea2646970667358221220d1ddb06cd70f7b928e51eb6daba7ddbd161572dbbd6375c458f6221e54db2cb064736f6c634300070600330000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9840000000000000000000000004200000000000000000000000000000000000006000000000000000000000000dc18115b29118c1a8890cf6fc4af3eb2ed32f91b
Deployed Bytecode
0x6080604052600436106100225760003560e01c8063fa461e33146105d8576100cd565b366100cd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000420000000000000000000000000000000000000616146100cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc18115b29118c1a8890cf6fc4af3eb2ed32f91b161415610233576000808061011936826112c2565b9194509250905073ffffffffffffffffffffffffffffffffffffffff83166101835760405173ffffffffffffffffffffffffffffffffffffffff8216904780156108fc02916000818181858888f1935050505015801561017d573d6000803e3d6000fd5b5061022b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906101d79084908690600401611595565b602060405180830381600087803b1580156101f157600080fd5b505af1158015610205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102299190611303565b505b5050506100cb565b6040517f068bcd8d00000000000000000000000000000000000000000000000000000000815260008035917ff0000000000000000000000000000000000000000000000000000000000000008316917f080000000000000000000000000000000000000000000000000000000000000084169173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000dc18115b29118c1a8890cf6fc4af3eb2ed32f91b169063068bcd8d906102f290869060040161163d565b60606040518083038186803b15801561030a57600080fd5b505afa15801561031e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034291906113c8565b905060008215610353578151610359565b81602001515b905060007f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156103b85750600034115b156103c45750346104ca565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff861680610491576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a082319061043a9033906004016114c9565b60206040518083038186803b15801561045257600080fd5b505afa158015610466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048a91906114b1565b91506104c8565b601f60db88901c16600a0a7b07ffffffffffffffffffffffffffffffffffffffffffffffffffffff881660083602610100031c0291505b505b6201ffff60ea87901c1660ff60e288901c1681811b60007c03000000000000000000000000000000000000000000000000000000008a1680610510576126de9150610599565b807c0100000000000000000000000000000000000000000000000000000000141561053f576127069150610599565b807c0200000000000000000000000000000000000000000000000000000000141561056e576126ac9150610599565b807c030000000000000000000000000000000000000000000000000000000014156105995761251c91505b5061271081830204600089156105b35788602001516105b6565b88515b90506105ca88828b604001518a88876105f8565b505050505050505050505050005b3480156105e457600080fd5b506100cb6105f336600461134d565b6108ae565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff888116808352908816602080840182905262ffffff891684860152336060850152935191109260009261064c929091016115f2565b604051602081830303815290604052905060008061066b8a8a8a610939565b73ffffffffffffffffffffffffffffffffffffffff1663128acb0830866106918b610977565b886106b05773fffd8963efd1fc6a506488495d951d5263988d256106b7565b6401000276a45b886040518663ffffffff1660e01b81526004016106d89594939291906114ea565b6040805180830381600087803b1580156106f157600080fd5b505af1158015610705573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610729919061132a565b9150915060008461073a578261073c565b815b60000390508681111561074c5750855b8581101561078f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906115bb565b60405180910390fd5b7f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610896576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000042000000000000000000000000000000000000061690632e1a7d4d9061085590849060040161163d565b600060405180830381600087803b15801561086f57600080fd5b505af1158015610883573d6000803e3d6000fd5b5050505061089133826109a9565b6108a1565b6108a18a3383610afc565b5050505050505050505050565b60008413806108bd5750600083135b6108c657600080fd5b60006108d482840184611433565b905061090e7f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984826000015183602001518460400151610cd1565b5061093281600001518260600151336000891361092b578761092d565b885b610cf0565b5050505050565b600061096f7f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98461096a868686610ed4565b610f51565b949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106109a557600080fd5b5090565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310610a2057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109e3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610a82576040519150601f19603f3d011682016040523d82523d6000602084013e610a87565b606091505b5050905080610af757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310610bd157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b94565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c33576040519150601f19603f3d011682016040523d82523d6000602084013e610c38565b606091505b5091509150818015610c66575080511580610c665750808060200190516020811015610c6357600080fd5b50515b61093257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610ce785610ce2868686610ed4565b611087565b95945050505050565b7f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015610d4b5750804710155b15610e94577f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610db857600080fd5b505af1158015610dcc573d6000803e3d6000fd5b50505050507f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e6257600080fd5b505af1158015610e76573d6000803e3d6000fd5b505050506040513d6020811015610e8c57600080fd5b50610ece9050565b73ffffffffffffffffffffffffffffffffffffffff8316301415610ec257610ebd848383610afc565b610ece565b610ece848484846110bd565b50505050565b610edc6112a2565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610f14579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610f9357600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b60006110938383610f51565b90503373ffffffffffffffffffffffffffffffffffffffff8216146110b757600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b6020831061119a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161115d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fc576040519150601f19603f3d011682016040523d82523d6000602084013e611201565b606091505b509150915081801561122f57508051158061122f575080806020019051602081101561122c57600080fd5b50515b61129a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b604080516060810182526000808252602082018190529181019190915290565b6000806000606084860312156112d6578283fd5b83356112e181611646565b92506020840135915060408401356112f881611646565b809150509250925092565b600060208284031215611314578081fd5b81518015158114611323578182fd5b9392505050565b6000806040838503121561133c578182fd5b505080516020909101519092909150565b60008060008060608587031215611362578081fd5b8435935060208501359250604085013567ffffffffffffffff80821115611387578283fd5b818701915087601f83011261139a578283fd5b8135818111156113a8578384fd5b8860208285010111156113b9578384fd5b95989497505060200194505050565b6000606082840312156113d9578081fd5b6040516060810181811067ffffffffffffffff821117156113f657fe5b604052825161140481611646565b8152602083015161141481611646565b602082015260408301516114278161166b565b60408201529392505050565b600060808284031215611444578081fd5b6040516080810181811067ffffffffffffffff8211171561146157fe5b604052823561146f81611646565b8152602083013561147f81611646565b602082015260408301356114928161166b565b604082015260608301356114a581611646565b60608201529392505050565b6000602082840312156114c2578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352602087151581850152866040850152818616606085015260a06080850152845191508160a0850152825b8281101561154c5785810182015185820160c001528101611530565b8281111561155d578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b815173ffffffffffffffffffffffffffffffffffffffff908116825260208084015182169083015260408084015162ffffff1690830152606092830151169181019190915260800190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461166857600080fd5b50565b62ffffff8116811461166857600080fdfea2646970667358221220d1ddb06cd70f7b928e51eb6daba7ddbd161572dbbd6375c458f6221e54db2cb064736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9840000000000000000000000004200000000000000000000000000000000000006000000000000000000000000dc18115b29118c1a8890cf6fc4af3eb2ed32f91b
-----Decoded View---------------
Arg [0] : _factory (address): 0x1F98431c8aD98523631AE4a59f267346ea31F984
Arg [1] : _WETH9 (address): 0x4200000000000000000000000000000000000006
Arg [2] : _pairList (address): 0xDc18115b29118c1A8890cf6fC4AF3EB2ed32f91B
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984
Arg [1] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [2] : 000000000000000000000000dc18115b29118c1a8890cf6fc4af3eb2ed32f91b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
OP | 100.00% | $2.64 | 0.1666 | $0.4397 |
[ 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.