Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
19968871 | 213 days ago | 10.22451243 ETH | ||||
19968871 | 213 days ago | 10.22451243 ETH | ||||
19968859 | 213 days ago | 0.00451745 ETH | ||||
19968859 | 213 days ago | 0.00451745 ETH | ||||
19968793 | 213 days ago | 4.92921558 ETH | ||||
19968793 | 213 days ago | 4.92921558 ETH | ||||
19968601 | 213 days ago | 0.09032301 ETH | ||||
19968601 | 213 days ago | 0.09032301 ETH | ||||
19968590 | 213 days ago | 0.1 ETH | ||||
19968590 | 213 days ago | 0.1 ETH | ||||
19968439 | 213 days ago | 0.776 ETH | ||||
19968439 | 213 days ago | 0.776 ETH | ||||
19968405 | 213 days ago | 0.05046507 ETH | ||||
19968405 | 213 days ago | 0.05046507 ETH | ||||
19968346 | 213 days ago | 0.14189994 ETH | ||||
19968346 | 213 days ago | 0.14189994 ETH | ||||
19968339 | 213 days ago | 0.13991708 ETH | ||||
19968339 | 213 days ago | 0.13991708 ETH | ||||
19968333 | 213 days ago | 0.14617906 ETH | ||||
19968333 | 213 days ago | 0.14617906 ETH | ||||
19968324 | 213 days ago | 0.3 ETH | ||||
19968324 | 213 days ago | 0.3 ETH | ||||
19968226 | 213 days ago | 0.03849962 ETH | ||||
19968226 | 213 days ago | 0.03849962 ETH | ||||
19968222 | 213 days ago | 0.16 ETH |
Loading...
Loading
Contract Name:
NewUniswapV2ExchangeRouter
Compiler Version
v0.7.5+commit.eb77ed08
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount) external returns (bool); /** * @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); } // File: original_contracts/lib/weth/IWETH.sol pragma solidity 0.7.5; abstract contract IWETH is IERC20 { function deposit() external virtual payable; function withdraw(uint256 amount) external virtual; } // File: original_contracts/lib/uniswapv2/IUniswapV2Pair.sol pragma solidity 0.7.5; interface IUniswapV2Pair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function swap( uint amount0Out, uint amount1Out, address to, bytes calldata data ) external; } // File: openzeppelin-solidity/contracts/math/SafeMath.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: original_contracts/lib/uniswapv2/NewUniswapV2Lib.sol pragma solidity 0.7.5; library NewUniswapV2Lib { using SafeMath for uint256; function getReservesByPair( address pair, bool direction ) internal view returns (uint256 reserveIn, uint256 reserveOut) { (uint256 reserve0, uint256 reserve1,) = IUniswapV2Pair(pair).getReserves(); (reserveIn, reserveOut) = direction ? (reserve0, reserve1) : (reserve1, reserve0); } function getAmountOut( uint256 amountIn, address pair, bool direction, uint256 fee ) internal view returns (uint256 amountOut) { require(amountIn > 0, "UniswapV2Lib: INSUFFICIENT_INPUT_AMOUNT"); (uint256 reserveIn, uint256 reserveOut) = getReservesByPair(pair, direction); uint256 amountInWithFee = amountIn.mul(fee); uint256 numerator = amountInWithFee.mul(reserveOut); uint256 denominator = reserveIn.mul(10000).add(amountInWithFee); amountOut = uint256(numerator / denominator); } function getAmountIn( uint256 amountOut, address pair, bool direction, uint256 fee ) internal view returns (uint256 amountIn) { require(amountOut > 0, "UniswapV2Lib: INSUFFICIENT_OUTPUT_AMOUNT"); (uint256 reserveIn, uint256 reserveOut) = getReservesByPair(pair, direction); require(reserveOut > amountOut, "UniswapV2Lib: reserveOut should be greater than amountOut"); uint256 numerator = reserveIn.mul(amountOut).mul(10000); uint256 denominator = reserveOut.sub(amountOut).mul(fee); amountIn = (numerator / denominator).add(1); } } // File: @uniswap/lib/contracts/libraries/TransferHelper.sol pragma solidity >=0.6.0; // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } } // File: original_contracts/lib/uniswapv2/NewUniswapV2ExchangeRouter.sol pragma solidity 0.7.5; contract NewUniswapV2ExchangeRouter { using SafeMath for uint256; address constant ETH_IDENTIFIER = address( 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE ); // Pool bits are 255-161: fee, 160: direction flag, 159-0: address uint256 constant FEE_OFFSET = 161; uint256 constant DIRECTION_FLAG = 0x0000000000000000000000010000000000000000000000000000000000000000; receive() external payable { } function swap( address tokenIn, uint256 amountIn, uint256 amountOutMin, address weth, uint256[] calldata pools ) external payable returns (uint256 tokensBought) { return _swap( tokenIn, amountIn, amountOutMin, weth, pools ); } function buy( address tokenIn, uint256 amountInMax, uint256 amountOut, address weth, uint256[] memory pools ) external payable returns (uint256 tokensSold) { return _buy( tokenIn, amountInMax, amountOut, weth, pools ); } function _swap( address tokenIn, uint256 amountIn, uint256 amountOutMin, address weth, uint256[] memory pools ) private returns (uint256 tokensBought) { uint256 pairs = pools.length; require(pairs != 0, "At least one pool required"); bool tokensBoughtEth; if (tokenIn == ETH_IDENTIFIER) { require(amountIn == msg.value, "Incorrect amount of ETH sent"); IWETH(weth).deposit{value: msg.value}(); require(IWETH(weth).transfer(address(pools[0]), msg.value)); } else { TransferHelper.safeTransferFrom( tokenIn, msg.sender, address(pools[0]), amountIn ); tokensBoughtEth = weth != address(0); } tokensBought = amountIn; for (uint256 i = 0; i < pairs; ++i) { uint256 p = pools[i]; address pool = address(p); bool direction = p & DIRECTION_FLAG == 0; tokensBought = NewUniswapV2Lib.getAmountOut( tokensBought, pool, direction, p >> FEE_OFFSET ); (uint256 amount0Out, uint256 amount1Out) = direction ? (uint256(0), tokensBought) : (tokensBought, uint256(0)); IUniswapV2Pair(pool).swap( amount0Out, amount1Out, i + 1 == pairs ? (tokensBoughtEth ? address(this) : msg.sender) : address(pools[i + 1]), "" ); } if (tokensBoughtEth) { IWETH(weth).withdraw(tokensBought); TransferHelper.safeTransferETH(msg.sender, tokensBought); } require(tokensBought >= amountOutMin, "UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT"); } function _buy( address tokenIn, uint256 amountInMax, uint256 amountOut, address weth, uint256[] memory pools ) private returns (uint256 tokensSold) { uint256 pairs = pools.length; require(pairs != 0, "At least one pool required"); uint256[] memory amounts = new uint256[](pairs + 1); amounts[pairs] = amountOut; for (uint256 i = pairs; i != 0; --i) { uint256 p = pools[i - 1]; amounts[i - 1] = NewUniswapV2Lib.getAmountIn( amounts[i], address(p), p & DIRECTION_FLAG == 0, p >> FEE_OFFSET ); } tokensSold = amounts[0]; require(tokensSold <= amountInMax, "UniswapV2Router: INSUFFICIENT_INPUT_AMOUNT"); bool tokensBoughtEth; if (tokenIn == ETH_IDENTIFIER) { TransferHelper.safeTransferETH( msg.sender, msg.value.sub(tokensSold) ); IWETH(weth).deposit{value: tokensSold}(); require(IWETH(weth).transfer(address(pools[0]), tokensSold)); } else { TransferHelper.safeTransferFrom( tokenIn, msg.sender, address(pools[0]), tokensSold ); tokensBoughtEth = weth != address(0); } for (uint256 i = 0; i < pairs; ++i) { uint256 p = pools[i]; (uint256 amount0Out, uint256 amount1Out) = p & DIRECTION_FLAG == 0 ? (uint256(0), amounts[i + 1]) : (amounts[i + 1], uint256(0)); IUniswapV2Pair(address(p)).swap( amount0Out, amount1Out, i + 1 == pairs ? (tokensBoughtEth ? address(this) : msg.sender) : address(pools[i + 1]), "" ); } if (tokensBoughtEth) { IWETH(weth).withdraw(amountOut); TransferHelper.safeTransferETH(msg.sender, amountOut); } } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"uint256[]","name":"pools","type":"uint256[]"}],"name":"buy","outputs":[{"internalType":"uint256","name":"tokensSold","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"weth","type":"address"},{"internalType":"uint256[]","name":"pools","type":"uint256[]"}],"name":"swap","outputs":[{"internalType":"uint256","name":"tokensBought","type":"uint256"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50611553806100206000396000f3fe60806040526004361061002d5760003560e01c80633f1c8c531461003957806391a32b691461011f57610034565b3661003457005b600080fd5b61010d600480360360a081101561004f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013592604082013592606083013516919081019060a08101608082013564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460208302840111640100000000831117156100cf57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506101c0945050505050565b60408051918252519081900360200190f35b61010d600480360360a081101561013557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013592604082013592606083013516919081019060a08101608082013564010000000081111561018157600080fd5b82018360208201111561019357600080fd5b803590602001918460208302840111640100000000831117156101b557600080fd5b5090925090506101d9565b60006101cf8686868686610226565b9695505050505050565b600061021b878787878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506107b292505050565b979650505050505050565b80516000908061029757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4174206c65617374206f6e6520706f6f6c207265717569726564000000000000604482015290519081900360640190fd5b60608160010167ffffffffffffffff811180156102b357600080fd5b506040519080825280602002602001820160405280156102dd578160200160208202803683370190505b509050858183815181106102ed57fe5b6020908102919091010152815b801561039a57600085600183038151811061031157fe5b6020026020010151905061035883838151811061032a57fe5b60200260200101518274010000000000000000000000000000000000000000841660001460a185901c610c6b565b83600184038151811061036757fe5b6020908102919091010152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016102fa565b50806000815181106103a857fe5b602002602001015192508683111561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611439602a913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610572576104523361044d3487610d7c565b610dc7565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561049a57600080fd5b505af11580156104ae573d6000803e3d6000fd5b50505050508573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb866000815181106104dc57fe5b6020026020010151866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b505050506040513d602081101561056257600080fd5b505161056d57600080fd5b6105ad565b61059289338760008151811061058457fe5b602002602001015187610f04565b5073ffffffffffffffffffffffffffffffffffffffff851615155b60005b8381101561072a5760008682815181106105c657fe5b602002602001015190506000807401000000000000000000000000000000000000000083166000146106105785846001018151811061060157fe5b6020026020010151600061062a565b600086856001018151811061062157fe5b60200260200101515b915091508273ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838a8860010114610672578c886001018151811061066557fe5b602002602001015161067f565b8861067d573361067f565b305b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526004810194909452602484019290925273ffffffffffffffffffffffffffffffffffffffff16604483015260806064830152600060848301819052905160c48084019382900301818387803b15801561070457600080fd5b505af1158015610718573d6000803e3d6000fd5b505050505050508060010190506105b0565b5080156107a6578573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d886040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506107a63388610dc7565b50505095945050505050565b80516000908061082357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4174206c65617374206f6e6520706f6f6c207265717569726564000000000000604482015290519081900360640190fd5b600073ffffffffffffffffffffffffffffffffffffffff881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156109e5573487146108c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e636f727265637420616d6f756e74206f66204554482073656e7400000000604482015290519081900360640190fd5b8473ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50505050508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560008151811061094f57fe5b6020026020010151346040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156109ab57600080fd5b505af11580156109bf573d6000803e3d6000fd5b505050506040513d60208110156109d557600080fd5b50516109e057600080fd5b610a20565b610a058833866000815181106109f757fe5b60200260200101518a610f04565b5073ffffffffffffffffffffffffffffffffffffffff841615155b86925060005b82811015610b8b576000858281518110610a3c57fe5b602090810291909101015190508074010000000000000000000000000000000000000000811615610a7387838360a182901c6110d4565b965060008082610a8557886000610a89565b6000895b915091508373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838b8a60010114610ad1578d8a60010181518110610ac457fe5b6020026020010151610ade565b8a610adc5733610ade565b305b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526004810194909452602484019290925273ffffffffffffffffffffffffffffffffffffffff16604483015260806064830152600060848301819052905160c48084019382900301818387803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050505050505050806001019050610a26565b508015610c07578473ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b50505050610c073384610dc7565b85831015610c60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806114a7602b913960400191505060405180910390fd5b505095945050505050565b6000808511610cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806114d26028913960400191505060405180910390fd5b600080610cd2868661118e565b91509150868111610d2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806114006039913960400191505060405180910390fd5b6000610d46612710610d40858b611240565b90611240565b90506000610d5886610d40858c610d7c565b9050610d6f6001828481610d6857fe5b04906112b3565b9998505050505050505050565b6000610dbe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611327565b90505b92915050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310610e3e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610e01565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610ea0576040519150601f19603f3d011682016040523d82523d6000602084013e610ea5565b606091505b5050905080610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806114846023913960400191505060405180910390fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b60208310610fe257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fa5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611044576040519150601f19603f3d011682016040523d82523d6000602084013e611049565b606091505b5091509150818015611077575080511580611077575080806020019051602081101561107457600080fd5b50515b6110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806114fa6024913960400191505060405180910390fd5b505050505050565b600080851161112e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806113d96027913960400191505060405180910390fd5b60008061113b868661118e565b9092509050600061114c8886611240565b9050600061115a8284611240565b905060006111748361116e87612710611240565b906112b3565b905080828161117f57fe5b049a9950505050505050505050565b6000806000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d606081101561120457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905084611230578082611233565b81815b9097909650945050505050565b60008261124f57506000610dc1565b8282028284828161125c57fe5b0414610dbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806114636021913960400191505060405180910390fd5b600082820183811015610dbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561139557818101518382015260200161137d565b50505050905090810190601f1680156113c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe556e697377617056324c69623a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c69623a20726573657276654f75742073686f756c642062652067726561746572207468616e20616d6f756e744f7574556e69737761705632526f757465723a20494e53554646494349454e545f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c69623a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220c9bcd6ca801a2cdd086c53e490d669467ae19017d3fd1133ab09dfbdb316a2ff64736f6c63430007050033
Deployed Bytecode
0x60806040526004361061002d5760003560e01c80633f1c8c531461003957806391a32b691461011f57610034565b3661003457005b600080fd5b61010d600480360360a081101561004f57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013592604082013592606083013516919081019060a08101608082013564010000000081111561009b57600080fd5b8201836020820111156100ad57600080fd5b803590602001918460208302840111640100000000831117156100cf57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506101c0945050505050565b60408051918252519081900360200190f35b61010d600480360360a081101561013557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235811692602081013592604082013592606083013516919081019060a08101608082013564010000000081111561018157600080fd5b82018360208201111561019357600080fd5b803590602001918460208302840111640100000000831117156101b557600080fd5b5090925090506101d9565b60006101cf8686868686610226565b9695505050505050565b600061021b878787878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506107b292505050565b979650505050505050565b80516000908061029757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4174206c65617374206f6e6520706f6f6c207265717569726564000000000000604482015290519081900360640190fd5b60608160010167ffffffffffffffff811180156102b357600080fd5b506040519080825280602002602001820160405280156102dd578160200160208202803683370190505b509050858183815181106102ed57fe5b6020908102919091010152815b801561039a57600085600183038151811061031157fe5b6020026020010151905061035883838151811061032a57fe5b60200260200101518274010000000000000000000000000000000000000000841660001460a185901c610c6b565b83600184038151811061036757fe5b6020908102919091010152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016102fa565b50806000815181106103a857fe5b602002602001015192508683111561040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611439602a913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610572576104523361044d3487610d7c565b610dc7565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561049a57600080fd5b505af11580156104ae573d6000803e3d6000fd5b50505050508573ffffffffffffffffffffffffffffffffffffffff1663a9059cbb866000815181106104dc57fe5b6020026020010151866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b505050506040513d602081101561056257600080fd5b505161056d57600080fd5b6105ad565b61059289338760008151811061058457fe5b602002602001015187610f04565b5073ffffffffffffffffffffffffffffffffffffffff851615155b60005b8381101561072a5760008682815181106105c657fe5b602002602001015190506000807401000000000000000000000000000000000000000083166000146106105785846001018151811061060157fe5b6020026020010151600061062a565b600086856001018151811061062157fe5b60200260200101515b915091508273ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838a8860010114610672578c886001018151811061066557fe5b602002602001015161067f565b8861067d573361067f565b305b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526004810194909452602484019290925273ffffffffffffffffffffffffffffffffffffffff16604483015260806064830152600060848301819052905160c48084019382900301818387803b15801561070457600080fd5b505af1158015610718573d6000803e3d6000fd5b505050505050508060010190506105b0565b5080156107a6578573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d886040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561078457600080fd5b505af1158015610798573d6000803e3d6000fd5b505050506107a63388610dc7565b50505095945050505050565b80516000908061082357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4174206c65617374206f6e6520706f6f6c207265717569726564000000000000604482015290519081900360640190fd5b600073ffffffffffffffffffffffffffffffffffffffff881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156109e5573487146108c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496e636f727265637420616d6f756e74206f66204554482073656e7400000000604482015290519081900360640190fd5b8473ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561090d57600080fd5b505af1158015610921573d6000803e3d6000fd5b50505050508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560008151811061094f57fe5b6020026020010151346040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156109ab57600080fd5b505af11580156109bf573d6000803e3d6000fd5b505050506040513d60208110156109d557600080fd5b50516109e057600080fd5b610a20565b610a058833866000815181106109f757fe5b60200260200101518a610f04565b5073ffffffffffffffffffffffffffffffffffffffff841615155b86925060005b82811015610b8b576000858281518110610a3c57fe5b602090810291909101015190508074010000000000000000000000000000000000000000811615610a7387838360a182901c6110d4565b965060008082610a8557886000610a89565b6000895b915091508373ffffffffffffffffffffffffffffffffffffffff1663022c0d9f83838b8a60010114610ad1578d8a60010181518110610ac457fe5b6020026020010151610ade565b8a610adc5733610ade565b305b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681526004810194909452602484019290925273ffffffffffffffffffffffffffffffffffffffff16604483015260806064830152600060848301819052905160c48084019382900301818387803b158015610b6357600080fd5b505af1158015610b77573d6000803e3d6000fd5b505050505050505050806001019050610a26565b508015610c07578473ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b50505050610c073384610dc7565b85831015610c60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806114a7602b913960400191505060405180910390fd5b505095945050505050565b6000808511610cc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806114d26028913960400191505060405180910390fd5b600080610cd2868661118e565b91509150868111610d2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806114006039913960400191505060405180910390fd5b6000610d46612710610d40858b611240565b90611240565b90506000610d5886610d40858c610d7c565b9050610d6f6001828481610d6857fe5b04906112b3565b9998505050505050505050565b6000610dbe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611327565b90505b92915050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310610e3e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610e01565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114610ea0576040519150601f19603f3d011682016040523d82523d6000602084013e610ea5565b606091505b5050905080610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806114846023913960400191505060405180910390fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b60208310610fe257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fa5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611044576040519150601f19603f3d011682016040523d82523d6000602084013e611049565b606091505b5091509150818015611077575080511580611077575080806020019051602081101561107457600080fd5b50515b6110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806114fa6024913960400191505060405180910390fd5b505050505050565b600080851161112e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806113d96027913960400191505060405180910390fd5b60008061113b868661118e565b9092509050600061114c8886611240565b9050600061115a8284611240565b905060006111748361116e87612710611240565b906112b3565b905080828161117f57fe5b049a9950505050505050505050565b6000806000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156111da57600080fd5b505afa1580156111ee573d6000803e3d6000fd5b505050506040513d606081101561120457600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905084611230578082611233565b81815b9097909650945050505050565b60008261124f57506000610dc1565b8282028284828161125c57fe5b0414610dbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806114636021913960400191505060405180910390fd5b600082820183811015610dbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561139557818101518382015260200161137d565b50505050905090810190601f1680156113c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe556e697377617056324c69623a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056324c69623a20726573657276654f75742073686f756c642062652067726561746572207468616e20616d6f756e744f7574556e69737761705632526f757465723a20494e53554646494349454e545f494e5055545f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c69623a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220c9bcd6ca801a2cdd086c53e490d669467ae19017d3fd1133ab09dfbdb316a2ff64736f6c63430007050033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.