Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 19,638 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Swap Token | 21513444 | 2 days ago | IN | 0 ETH | 0.00026174 | ||||
Remove Liquidity | 21120725 | 57 days ago | IN | 0 ETH | 0.00080479 | ||||
Add Liquidity | 21120677 | 57 days ago | IN | 0 ETH | 0.00296706 | ||||
Add Liquidity | 21120665 | 57 days ago | IN | 0.0000001 ETH | 0.00102555 | ||||
Swap Token | 21120629 | 57 days ago | IN | 0 ETH | 0.00085783 | ||||
Remove Liquidity | 21120619 | 57 days ago | IN | 0 ETH | 0.00077991 | ||||
Add Liquidity | 21120437 | 57 days ago | IN | 0 ETH | 0.00394318 | ||||
Add Liquidity | 21120404 | 57 days ago | IN | 0.000001 ETH | 0.00154404 | ||||
Swap Token | 21120376 | 57 days ago | IN | 0.00001 ETH | 0.0010558 | ||||
Swap Token | 20904497 | 87 days ago | IN | 0.15 ETH | 0.00032859 | ||||
Swap Token | 20683903 | 118 days ago | IN | 0.15 ETH | 0.00031827 | ||||
Swap Token | 20683881 | 118 days ago | IN | 0.05 ETH | 0.00030166 | ||||
Swap Token | 20683871 | 118 days ago | IN | 0.05 ETH | 0.00030032 | ||||
Swap Token | 20683851 | 118 days ago | IN | 0.05 ETH | 0.00031062 | ||||
Limit Order | 20451879 | 150 days ago | IN | 0.00420369 ETH | 0.00012686 | ||||
Remove Liquidity | 20359525 | 163 days ago | IN | 0 ETH | 0.00123416 | ||||
Swap Token | 20145634 | 193 days ago | IN | 0.00003 ETH | 0.00032401 | ||||
Swap Token | 20037490 | 208 days ago | IN | 0.05 ETH | 0.00079845 | ||||
Swap Token | 20037432 | 208 days ago | IN | 0.05 ETH | 0.00093538 | ||||
Swap Token | 18981560 | 356 days ago | IN | 0.01 ETH | 0.00291343 | ||||
Swap Token | 18917216 | 365 days ago | IN | 0 ETH | 0.00145796 | ||||
Swap Token | 18917117 | 365 days ago | IN | 0 ETH | 0.00132889 | ||||
Swap Token | 18417414 | 435 days ago | IN | 0 ETH | 0.00392528 | ||||
Remove Liquidity | 18298360 | 452 days ago | IN | 0 ETH | 0.00072342 | ||||
Remove Liquidity | 18183794 | 468 days ago | IN | 0 ETH | 0.00186961 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21120665 | 57 days ago | 0.0000001 ETH | ||||
21120404 | 57 days ago | 0.00000099 ETH | ||||
21120404 | 57 days ago | 768 wei | ||||
21120376 | 57 days ago | 0.00001 ETH | ||||
20904497 | 87 days ago | 0.15 ETH | ||||
20683903 | 118 days ago | 0.15 ETH | ||||
20683881 | 118 days ago | 0.05 ETH | ||||
20683871 | 118 days ago | 0.05 ETH | ||||
20683851 | 118 days ago | 0.05 ETH | ||||
20451879 | 150 days ago | 0.00420369 ETH | ||||
20145634 | 193 days ago | 0.00003 ETH | ||||
20037490 | 208 days ago | 0.05 ETH | ||||
20037432 | 208 days ago | 0.05 ETH | ||||
18981560 | 356 days ago | 0.01 ETH | ||||
18183730 | 468 days ago | 0 ETH | ||||
18183377 | 468 days ago | 0 ETH | ||||
18183376 | 468 days ago | 0 ETH | ||||
18183376 | 468 days ago | 0 ETH | ||||
18183363 | 468 days ago | 0 ETH | ||||
18183359 | 468 days ago | 0 ETH | ||||
18183354 | 468 days ago | 0 ETH | ||||
17938718 | 502 days ago | 0.09745312 ETH | ||||
17910015 | 506 days ago | 0.03567337 ETH | ||||
17839877 | 516 days ago | 0.063 ETH | ||||
17638799 | 544 days ago | 0.089145 ETH |
Loading...
Loading
Contract Name:
OneSwapRouter
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-07 */ // File: contracts/interfaces/IOneSwapRouter.sol // SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IOneSwapRouter { event AddLiquidity(uint stockAmount, uint moneyAmount, uint liquidity); event PairCreated(address indexed pair, address stock, address money, bool isOnlySwap); function factory() external pure returns (address); // liquidity function addLiquidity( address stock, address money, bool isOnlySwap, uint amountStockDesired, uint amountMoneyDesired, uint amountStockMin, uint amountMoneyMin, address to, uint deadline ) external payable returns (uint amountStock, uint amountMoney, uint liquidity); function removeLiquidity( address pair, uint liquidity, uint amountStockMin, uint amountMoneyMin, address to, uint deadline ) external returns (uint amountStock, uint amountMoney); // swap token function swapToken( address token, uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); // limit order function limitOrder( bool isBuy, address pair, uint prevKey, uint price, uint32 id, uint stockAmount, uint deadline ) external payable; } // File: contracts/interfaces/IOneSwapFactory.sol pragma solidity 0.6.12; interface IOneSwapFactory { event PairCreated(address indexed pair, address stock, address money, bool isOnlySwap); function createPair(address stock, address money, bool isOnlySwap) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; function setFeeBPS(uint32 bps) external; function setPairLogic(address implLogic) external; function allPairsLength() external view returns (uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function feeBPS() external view returns (uint32); function pairLogic() external returns (address); function getTokensFromPair(address pair) external view returns (address stock, address money); function tokensToPair(address stock, address money, bool isOnlySwap) external view returns (address pair); } // File: contracts/interfaces/IOneSwapPair.sol pragma solidity 0.6.12; interface IOneSwapERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } interface IOneSwapPool { // more liquidity was minted event Mint(address indexed sender, uint stockAndMoneyAmount, address indexed to); // liquidity was burned event Burn(address indexed sender, uint stockAndMoneyAmount, address indexed to); // amounts of reserved stock and money in this pair changed event Sync(uint reserveStockAndMoney); function internalStatus() external view returns(uint[3] memory res); function getReserves() external view returns (uint112 reserveStock, uint112 reserveMoney, uint32 firstSellID); function getBooked() external view returns (uint112 bookedStock, uint112 bookedMoney, uint32 firstBuyID); function stock() external returns (address); function money() external returns (address); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint stockAmount, uint moneyAmount); function skim(address to) external; function sync() external; } interface IOneSwapPair { event NewLimitOrder(uint data); // new limit order was sent by an account event NewMarketOrder(uint data); // new market order was sent by an account event OrderChanged(uint data); // old orders in orderbook changed event DealWithPool(uint data); // new order deal with the AMM pool event RemoveOrder(uint data); // an order was removed from the orderbook // Return three prices in rational number form, i.e., numerator/denominator. // They are: the first sell order's price; the first buy order's price; the current price of the AMM pool. function getPrices() external returns ( uint firstSellPriceNumerator, uint firstSellPriceDenominator, uint firstBuyPriceNumerator, uint firstBuyPriceDenominator, uint poolPriceNumerator, uint poolPriceDenominator); // This function queries a list of orders in orderbook. It starts from 'id' and iterates the single-linked list, util it reaches the end, // or until it has found 'maxCount' orders. If 'id' is 0, it starts from the beginning of the single-linked list. // It may cost a lot of gas. So you'd not to call in on chain. It is mainly for off-chain query. // The first uint256 returned by this function is special: the lowest 24 bits is the first order's id and the the higher bits is block height. // THe other uint256s are all corresponding to an order record of the single-linked list. function getOrderList(bool isBuy, uint32 id, uint32 maxCount) external view returns (uint[] memory); // remove an order from orderbook and return its booked (i.e. frozen) money to maker // 'id' points to the order to be removed // prevKey points to 3 previous orders in the single-linked list function removeOrder(bool isBuy, uint32 id, uint72 positionID) external; function removeOrders(uint[] calldata rmList) external; // Try to deal a new limit order or insert it into orderbook // its suggested order id is 'id' and suggested positions are in 'prevKey' // prevKey points to 3 existing orders in the single-linked list // the order's sender is 'sender'. the order's amount is amount*stockUnit, which is the stock amount to be sold or bought. // the order's price is 'price32', which is decimal floating point value. function addLimitOrder(bool isBuy, address sender, uint64 amount, uint32 price32, uint32 id, uint72 prevKey) external payable; // Try to deal a new market order. 'sender' pays 'inAmount' of 'inputToken', in exchange of the other token kept by this pair function addMarketOrder(address inputToken, address sender, uint112 inAmount) external payable returns (uint); // Given the 'amount' of stock and decimal floating point price 'price32', calculate the 'stockAmount' and 'moneyAmount' to be traded function calcStockAndMoney(uint64 amount, uint32 price32) external pure returns (uint stockAmount, uint moneyAmount); } // File: contracts/interfaces/IERC20.sol pragma solidity 0.6.12; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } // File: contracts/libraries/SafeMath256.sol pragma solidity 0.6.12; library SafeMath256 { /** * @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: contracts/libraries/DecFloat32.sol pragma solidity 0.6.12; /* This library defines a decimal floating point number. It has 8 decimal significant digits. Its maximum value is 9.9999999e+15. And its minimum value is 1.0e-16. The following golang code explains its detail implementation. func buildPrice(significant int, exponent int) uint32 { if !(10000000 <= significant && significant <= 99999999) { panic("Invalid significant") } if !(-16 <= exponent && exponent <= 15) { panic("Invalid exponent") } return uint32(((exponent+16)<<27)|significant); } func priceToFloat(price uint32) float64 { exponent := int(price>>27) significant := float64(price&((1<<27)-1)) return significant * math.Pow10(exponent-23) } */ // A price presented as a rational number struct RatPrice { uint numerator; // at most 54bits uint denominator; // at most 76bits } library DecFloat32 { uint32 public constant MANTISSA_MASK = (1<<27) - 1; uint32 public constant MAX_MANTISSA = 9999_9999; uint32 public constant MIN_MANTISSA = 1000_0000; uint32 public constant MIN_PRICE = MIN_MANTISSA; uint32 public constant MAX_PRICE = (31<<27)|MAX_MANTISSA; // 10 ** (i + 1) function powSmall(uint32 i) internal pure returns (uint) { uint x = 2695994666777834996822029817977685892750687677375768584125520488993233305610; return (x >> (32*i)) & ((1<<32)-1); } // 10 ** (i * 8) function powBig(uint32 i) internal pure returns (uint) { uint y = 3402823669209384634633746076162356521930955161600000001; return (y >> (64*i)) & ((1<<64)-1); } // if price32=( 0<<27)|12345678 then numerator=12345678 denominator=100000000000000000000000 // if price32=( 1<<27)|12345678 then numerator=12345678 denominator=10000000000000000000000 // if price32=( 2<<27)|12345678 then numerator=12345678 denominator=1000000000000000000000 // if price32=( 3<<27)|12345678 then numerator=12345678 denominator=100000000000000000000 // if price32=( 4<<27)|12345678 then numerator=12345678 denominator=10000000000000000000 // if price32=( 5<<27)|12345678 then numerator=12345678 denominator=1000000000000000000 // if price32=( 6<<27)|12345678 then numerator=12345678 denominator=100000000000000000 // if price32=( 7<<27)|12345678 then numerator=12345678 denominator=10000000000000000 // if price32=( 8<<27)|12345678 then numerator=12345678 denominator=1000000000000000 // if price32=( 9<<27)|12345678 then numerator=12345678 denominator=100000000000000 // if price32=(10<<27)|12345678 then numerator=12345678 denominator=10000000000000 // if price32=(11<<27)|12345678 then numerator=12345678 denominator=1000000000000 // if price32=(12<<27)|12345678 then numerator=12345678 denominator=100000000000 // if price32=(13<<27)|12345678 then numerator=12345678 denominator=10000000000 // if price32=(14<<27)|12345678 then numerator=12345678 denominator=1000000000 // if price32=(15<<27)|12345678 then numerator=12345678 denominator=100000000 // if price32=(16<<27)|12345678 then numerator=12345678 denominator=10000000 // if price32=(17<<27)|12345678 then numerator=12345678 denominator=1000000 // if price32=(18<<27)|12345678 then numerator=12345678 denominator=100000 // if price32=(19<<27)|12345678 then numerator=12345678 denominator=10000 // if price32=(20<<27)|12345678 then numerator=12345678 denominator=1000 // if price32=(21<<27)|12345678 then numerator=12345678 denominator=100 // if price32=(22<<27)|12345678 then numerator=12345678 denominator=10 // if price32=(23<<27)|12345678 then numerator=12345678 denominator=1 // if price32=(24<<27)|12345678 then numerator=123456780 denominator=1 // if price32=(25<<27)|12345678 then numerator=1234567800 denominator=1 // if price32=(26<<27)|12345678 then numerator=12345678000 denominator=1 // if price32=(27<<27)|12345678 then numerator=123456780000 denominator=1 // if price32=(28<<27)|12345678 then numerator=1234567800000 denominator=1 // if price32=(29<<27)|12345678 then numerator=12345678000000 denominator=1 // if price32=(30<<27)|12345678 then numerator=123456780000000 denominator=1 // if price32=(31<<27)|12345678 then numerator=1234567800000000 denominator=1 function expandPrice(uint32 price32) internal pure returns (RatPrice memory) { uint s = price32&((1<<27)-1); uint32 a = price32 >> 27; RatPrice memory price; if(a >= 24) { uint32 b = a - 24; price.numerator = s * powSmall(b); price.denominator = 1; } else if(a == 23) { price.numerator = s; price.denominator = 1; } else { uint32 b = 22 - a; price.numerator = s; price.denominator = powSmall(b&0x7) * powBig(b>>3); } return price; } function getExpandPrice(uint price) internal pure returns(uint numerator, uint denominator) { uint32 m = uint32(price) & MANTISSA_MASK; require(MIN_MANTISSA <= m && m <= MAX_MANTISSA, "Invalid Price"); RatPrice memory actualPrice = expandPrice(uint32(price)); return (actualPrice.numerator, actualPrice.denominator); } } // File: contracts/OneSwapRouter.sol pragma solidity 0.6.12; contract OneSwapRouter is IOneSwapRouter { using SafeMath256 for uint; address public immutable override factory; modifier ensure(uint deadline) { // solhint-disable-next-line not-rely-on-time, require(deadline >= block.timestamp, "OneSwapRouter: EXPIRED"); _; } constructor(address _factory) public { factory = _factory; } function _addLiquidity(address pair, uint amountStockDesired, uint amountMoneyDesired, uint amountStockMin, uint amountMoneyMin) private view returns (uint amountStock, uint amountMoney) { (uint reserveStock, uint reserveMoney, ) = IOneSwapPool(pair).getReserves(); if (reserveStock == 0 && reserveMoney == 0) { (amountStock, amountMoney) = (amountStockDesired, amountMoneyDesired); } else { uint amountMoneyOptimal = _quote(amountStockDesired, reserveStock, reserveMoney); if (amountMoneyOptimal <= amountMoneyDesired) { require(amountMoneyOptimal >= amountMoneyMin, "OneSwapRouter: INSUFFICIENT_MONEY_AMOUNT"); (amountStock, amountMoney) = (amountStockDesired, amountMoneyOptimal); } else { uint amountStockOptimal = _quote(amountMoneyDesired, reserveMoney, reserveStock); assert(amountStockOptimal <= amountStockDesired); require(amountStockOptimal >= amountStockMin, "OneSwapRouter: INSUFFICIENT_STOCK_AMOUNT"); (amountStock, amountMoney) = (amountStockOptimal, amountMoneyDesired); } } } function addLiquidity(address stock, address money, bool isOnlySwap, uint amountStockDesired, uint amountMoneyDesired, uint amountStockMin, uint amountMoneyMin, address to, uint deadline) external payable override ensure(deadline) returns (uint amountStock, uint amountMoney, uint liquidity) { if (stock != address(0) && money != address(0)) { require(msg.value == 0, 'OneSwapRouter: NOT_ENTER_ETH_VALUE'); } address pair = IOneSwapFactory(factory).tokensToPair(stock, money, isOnlySwap); if (pair == address(0)) { pair = IOneSwapFactory(factory).createPair(stock, money, isOnlySwap); } (amountStock, amountMoney) = _addLiquidity(pair, amountStockDesired, amountMoneyDesired, amountStockMin, amountMoneyMin); _safeTransferFrom(stock, msg.sender, pair, amountStock); _safeTransferFrom(money, msg.sender, pair, amountMoney); liquidity = IOneSwapPool(pair).mint(to); emit AddLiquidity(amountStock, amountMoney, liquidity); } function _removeLiquidity(address pair, uint liquidity, uint amountStockMin, uint amountMoneyMin, address to) private returns (uint amountStock, uint amountMoney) { IERC20(pair).transferFrom(msg.sender, pair, liquidity); (amountStock, amountMoney) = IOneSwapPool(pair).burn(to); require(amountStock >= amountStockMin, "OneSwapRouter: INSUFFICIENT_STOCK_AMOUNT"); require(amountMoney >= amountMoneyMin, "OneSwapRouter: INSUFFICIENT_MONEY_AMOUNT"); } function removeLiquidity(address pair, uint liquidity, uint amountStockMin, uint amountMoneyMin, address to, uint deadline) external override ensure(deadline) returns (uint amountStock, uint amountMoney) { // ensure pair exist _getTokensFromPair(pair); (amountStock, amountMoney) = _removeLiquidity(pair, liquidity, amountStockMin, amountMoneyMin, to); } function _swap(address input, uint amountIn, address[] memory path, address _to) internal virtual returns (uint[] memory amounts) { amounts = new uint[](path.length + 1); amounts[0] = amountIn; for (uint i = 0; i < path.length; i++) { (address to, bool isLastSwap) = i < path.length - 1 ? (path[i+1], false) : (_to, true); amounts[i + 1] = IOneSwapPair(path[i]).addMarketOrder(input, to, uint112(amounts[i])); if (!isLastSwap) { (address stock, address money) = _getTokensFromPair(path[i]); input = (stock != input) ? stock : money; } } } function swapToken(address token, uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external payable override ensure(deadline) returns (uint[] memory amounts) { if (token != address(0)) { require(msg.value == 0, 'OneSwapRouter: NOT_ENTER_ETH_VALUE'); } require(path.length >= 1, "OneSwapRouter: INVALID_PATH"); // ensure pair exist _getTokensFromPair(path[0]); _safeTransferFrom(token, msg.sender, path[0], amountIn); amounts = _swap(token, amountIn, path, to); require(amounts[path.length] >= amountOutMin, "OneSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"); } function limitOrder(bool isBuy, address pair, uint prevKey, uint price, uint32 id, uint stockAmount, uint deadline) external payable override ensure(deadline) { (address stock, address money) = _getTokensFromPair(pair); { (uint _stockAmount, uint _moneyAmount) = IOneSwapPair(pair).calcStockAndMoney(uint64(stockAmount), uint32(price)); if (isBuy) { if (money != address(0)) { require(msg.value == 0, 'OneSwapRouter: NOT_ENTER_ETH_VALUE'); } _safeTransferFrom(money, msg.sender, pair, _moneyAmount); } else { if (stock != address(0)) { require(msg.value == 0, 'OneSwapRouter: NOT_ENTER_ETH_VALUE'); } _safeTransferFrom(stock, msg.sender, pair, _stockAmount); } } IOneSwapPair(pair).addLimitOrder(isBuy, msg.sender, uint64(stockAmount), uint32(price), id, uint72(prevKey)); } // todo. add encoded bytes interface for limitOrder. function _safeTransferFrom(address token, address from, address to, uint value) internal { if (token == address(0)) { _safeTransferETH(to, value); uint inputValue = msg.value; if (inputValue > value) { _safeTransferETH(msg.sender, inputValue - value); } return; } uint beforeAmount = IERC20(token).balanceOf(to); // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "OneSwapRouter: TRANSFER_FROM_FAILED"); uint afterAmount = IERC20(token).balanceOf(to); require(afterAmount == beforeAmount + value, "OneSwapRouter: TRANSFER_FAILED"); } function _safeTransferETH(address to, uint value) internal { // solhint-disable-next-line avoid-low-level-calls (bool success,) = to.call{value:value}(new bytes(0)); require(success, "TransferHelper: ETH_TRANSFER_FAILED"); } function _quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) { require(amountA > 0, "OneSwapRouter: INSUFFICIENT_AMOUNT"); require(reserveA > 0 && reserveB > 0, "OneSwapRouter: INSUFFICIENT_LIQUIDITY"); amountB = amountA.mul(reserveB) / reserveA; } function _getTokensFromPair(address pair) internal view returns(address stock, address money) { (stock, money) = IOneSwapFactory(factory).getTokensFromPair(pair); require(stock != address(0) || money != address(0), "OneSwapRouter: PAIR_NOT_EXIST"); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stockAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"moneyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"address","name":"stock","type":"address"},{"indexed":false,"internalType":"address","name":"money","type":"address"},{"indexed":false,"internalType":"bool","name":"isOnlySwap","type":"bool"}],"name":"PairCreated","type":"event"},{"inputs":[{"internalType":"address","name":"stock","type":"address"},{"internalType":"address","name":"money","type":"address"},{"internalType":"bool","name":"isOnlySwap","type":"bool"},{"internalType":"uint256","name":"amountStockDesired","type":"uint256"},{"internalType":"uint256","name":"amountMoneyDesired","type":"uint256"},{"internalType":"uint256","name":"amountStockMin","type":"uint256"},{"internalType":"uint256","name":"amountMoneyMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountStock","type":"uint256"},{"internalType":"uint256","name":"amountMoney","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isBuy","type":"bool"},{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"prevKey","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint32","name":"id","type":"uint32"},{"internalType":"uint256","name":"stockAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"limitOrder","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountStockMin","type":"uint256"},{"internalType":"uint256","name":"amountMoneyMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountStock","type":"uint256"},{"internalType":"uint256","name":"amountMoney","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapToken","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b506040516117783803806117788339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b0316611702610076600039806105ee52806106725280610a845280610aab52506117026000f3fe60806040526004361061004a5760003560e01c806301f3cc5a1461004f5780635a47ddc3146100a357806396c92f5e14610121578063a70002601461018d578063c45a015514610278575b600080fd5b6100a1600480360360e081101561006557600080fd5b5080351515906001600160a01b036020820135169060408101359060608101359063ffffffff6080820135169060a08101359060c001356102a9565b005b61010360048036036101208110156100ba57600080fd5b506001600160a01b0381358116916020810135821691604082013515159160608101359160808201359160a08101359160c08201359160e0810135909116906101000135610503565b60408051938452602084019290925282820152519081900360600190f35b34801561012d57600080fd5b50610174600480360360c081101561014457600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610823565b6040805192835260208301919091528051918290030190f35b610228600480360360c08110156101a357600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156101da57600080fd5b8201836020820111156101ec57600080fd5b8035906020019184602083028401116401000000008311171561020e57600080fd5b91935091506001600160a01b03813516906020013561089d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561026457818101518382015260200161024c565b505050509050019250505060405180910390f35b34801561028457600080fd5b5061028d610a82565b604080516001600160a01b039092168252519081900360200190f35b80428110156102f8576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b60008061030489610aa6565b6040805163c2dab57b60e01b815267ffffffffffffffff8916600482015263ffffffff8b166024820152815193955091935060009283926001600160a01b038e169263c2dab57b92604480840193829003018186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d604081101561039057600080fd5b50805160209091015190925090508b15610401576001600160a01b038316156103f05734156103f05760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b6103fc83338d84610bc2565b610459565b6001600160a01b0384161561044d57341561044d5760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b61045984338d85610bc2565b50506040805163c018f41360e01b81528b1515600482015233602482015267ffffffffffffffff8716604482015263ffffffff808a1660648301528816608482015268ffffffffffffffffff8a1660a482015290516001600160a01b038b169163c018f4139160c480830192600092919082900301818387803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b5050505050505050505050505050565b60008060008342811015610557576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b038d161580159061057757506001600160a01b038c1615155b156105b95734156105b95760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b60408051633643c09f60e11b81526001600160a01b038f811660048301528e811660248301528d1515604483015291516000927f00000000000000000000000000000000000000000000000000000000000000001691636c87813e916064808301926020929190829003018186803b15801561063457600080fd5b505afa158015610648573d6000803e3d6000fd5b505050506040513d602081101561065e57600080fd5b505190506001600160a01b038116610729577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166382dfdce48f8f8f6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b0316815260200182151581526020019350505050602060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b505190505b610736818c8c8c8c610ea4565b90955093506107478e338388610bc2565b6107538d338387610bc2565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b505050506040513d60208110156107cc57600080fd5b5051604080518781526020810187905280820183905290519194507ff75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b24919081900360600190a1505099509950999650505050505050565b6000808242811015610875576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b61087e89610aa6565b505061088d898989898961100e565b909a909950975050505050505050565b606081428110156108ee576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b0389161561093a57341561093a5760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b6001851015610990576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6553776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6109b5868660008181106109a057fe5b905060200201356001600160a01b0316610aa6565b50506109df8933888860008181106109c957fe5b905060200201356001600160a01b03168b610bc2565b610a1f89898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061119d915050565b915086828787905081518110610a3157fe5b60200260200101511015610a765760405162461bcd60e51b81526004018080602001828103825260298152602001806116816029913960400191505060405180910390fd5b50979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c0225aa1846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050604080518083038186803b158015610b1557600080fd5b505afa158015610b29573d6000803e3d6000fd5b505050506040513d6040811015610b3f57600080fd5b50805160209091015190925090506001600160a01b038216151580610b6c57506001600160a01b03811615155b610bbd576040805162461bcd60e51b815260206004820152601d60248201527f4f6e6553776170526f757465723a20504149525f4e4f545f4558495354000000604482015290519081900360640190fd5b915091565b6001600160a01b038416610bf557610bda8282611383565b3481811115610bef57610bef33838303611383565b50610e9e565b6000846001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c4457600080fd5b505afa158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b5051604080516001600160a01b0387811660248301528681166044830152606480830187905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251949550600094606094928b16939282918083835b60208310610cf65780518252601f199092019160209182019101610cd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d58576040519150601f19603f3d011682016040523d82523d6000602084013e610d5d565b606091505b5091509150818015610d8b575080511580610d8b5750808060200190516020811015610d8857600080fd5b50515b610dc65760405162461bcd60e51b815260040180806020018281038252602381526020018061165e6023913960400191505060405180910390fd5b6000876001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e1557600080fd5b505afa158015610e29573d6000803e3d6000fd5b505050506040513d6020811015610e3f57600080fd5b505190508385018114610e99576040805162461bcd60e51b815260206004820152601e60248201527f4f6e6553776170526f757465723a205452414e534645525f4641494c45440000604482015290519081900360640190fd5b505050505b50505050565b600080600080886001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610ee357600080fd5b505afa158015610ef7573d6000803e3d6000fd5b505050506040513d6060811015610f0d57600080fd5b5080516020909101516001600160701b03918216935016905081158015610f32575080155b15610f4257879350869250611002565b6000610f4f89848461147b565b9050878111610fa25785811015610f975760405162461bcd60e51b81526004018080602001828103825260288152602001806116366028913960400191505060405180910390fd5b889450925082611000565b6000610faf89848661147b565b905089811115610fbb57fe5b87811015610ffa5760405162461bcd60e51b81526004018080602001828103825260288152602001806115ed6028913960400191505060405180910390fd5b94508793505b505b50509550959350505050565b604080516323b872dd60e01b81523360048201526001600160a01b03871660248201819052604482018790529151600092839290916323b872dd9160648082019260209290919082900301818787803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b505050506040513d602081101561109457600080fd5b50506040805163226bf2d160e21b81526001600160a01b0385811660048301528251908a16926389afcb4492602480820193918290030181600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505050506040513d604081101561110757600080fd5b5080516020909101519092509050848210156111545760405162461bcd60e51b81526004018080602001828103825260288152602001806115ed6028913960400191505060405180910390fd5b838110156111935760405162461bcd60e51b81526004018080602001828103825260288152602001806116366028913960400191505060405180910390fd5b9550959350505050565b6060825160010167ffffffffffffffff811180156111ba57600080fd5b506040519080825280602002602001820160405280156111e4578160200160208202803683370190505b50905083816000815181106111f557fe5b60200260200101818152505060005b835181101561137a57600080600186510383106112235784600161123d565b85836001018151811061123257fe5b602002602001015160005b9150915085838151811061124d57fe5b60200260200101516001600160a01b031663a6e81533898487878151811061127157fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b03168152602001826001600160701b031681526020019350505050602060405180830381600087803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b505050506040513d602081101561130257600080fd5b5051845185906001860190811061131557fe5b602002602001018181525050806113705760008061134588868151811061133857fe5b6020026020010151610aa6565b91509150896001600160a01b0316826001600160a01b03161415611369578061136b565b815b995050505b5050600101611204565b50949350505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106113cf5780518252601f1990920191602091820191016113b0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611431576040519150601f19603f3d011682016040523d82523d6000602084013e611436565b606091505b50509050806114765760405162461bcd60e51b81526004018080602001828103825260238152602001806116aa6023913960400191505060405180910390fd5b505050565b60008084116114bb5760405162461bcd60e51b81526004018080602001828103825260228152602001806115846022913960400191505060405180910390fd5b6000831180156114cb5750600082115b6115065760405162461bcd60e51b81526004018080602001828103825260258152602001806115a66025913960400191505060405180910390fd5b826115118584611521565b8161151857fe5b04949350505050565b6000826115305750600061157d565b8282028284828161153d57fe5b041461157a5760405162461bcd60e51b81526004018080602001828103825260218152602001806116156021913960400191505060405180910390fd5b90505b9291505056fe4f6e6553776170526f757465723a20494e53554646494349454e545f414d4f554e544f6e6553776170526f757465723a20494e53554646494349454e545f4c49515549444954594f6e6553776170526f757465723a204e4f545f454e5445525f4554485f56414c55454f6e6553776170526f757465723a20494e53554646494349454e545f53544f434b5f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6553776170526f757465723a20494e53554646494349454e545f4d4f4e45595f414d4f554e544f6e6553776170526f757465723a205452414e534645525f46524f4d5f4641494c45444f6e6553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544a26469706673582212201e165bbd889b7adeeeaa828225074fef5bd1a49f3531ebc4409cfbe02332a8b264736f6c634300060c00330000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c4
Deployed Bytecode
0x60806040526004361061004a5760003560e01c806301f3cc5a1461004f5780635a47ddc3146100a357806396c92f5e14610121578063a70002601461018d578063c45a015514610278575b600080fd5b6100a1600480360360e081101561006557600080fd5b5080351515906001600160a01b036020820135169060408101359060608101359063ffffffff6080820135169060a08101359060c001356102a9565b005b61010360048036036101208110156100ba57600080fd5b506001600160a01b0381358116916020810135821691604082013515159160608101359160808201359160a08101359160c08201359160e0810135909116906101000135610503565b60408051938452602084019290925282820152519081900360600190f35b34801561012d57600080fd5b50610174600480360360c081101561014457600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610823565b6040805192835260208301919091528051918290030190f35b610228600480360360c08110156101a357600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156101da57600080fd5b8201836020820111156101ec57600080fd5b8035906020019184602083028401116401000000008311171561020e57600080fd5b91935091506001600160a01b03813516906020013561089d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561026457818101518382015260200161024c565b505050509050019250505060405180910390f35b34801561028457600080fd5b5061028d610a82565b604080516001600160a01b039092168252519081900360200190f35b80428110156102f8576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b60008061030489610aa6565b6040805163c2dab57b60e01b815267ffffffffffffffff8916600482015263ffffffff8b166024820152815193955091935060009283926001600160a01b038e169263c2dab57b92604480840193829003018186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d604081101561039057600080fd5b50805160209091015190925090508b15610401576001600160a01b038316156103f05734156103f05760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b6103fc83338d84610bc2565b610459565b6001600160a01b0384161561044d57341561044d5760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b61045984338d85610bc2565b50506040805163c018f41360e01b81528b1515600482015233602482015267ffffffffffffffff8716604482015263ffffffff808a1660648301528816608482015268ffffffffffffffffff8a1660a482015290516001600160a01b038b169163c018f4139160c480830192600092919082900301818387803b1580156104df57600080fd5b505af11580156104f3573d6000803e3d6000fd5b5050505050505050505050505050565b60008060008342811015610557576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b038d161580159061057757506001600160a01b038c1615155b156105b95734156105b95760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b60408051633643c09f60e11b81526001600160a01b038f811660048301528e811660248301528d1515604483015291516000927f0000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c41691636c87813e916064808301926020929190829003018186803b15801561063457600080fd5b505afa158015610648573d6000803e3d6000fd5b505050506040513d602081101561065e57600080fd5b505190506001600160a01b038116610729577f0000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c46001600160a01b03166382dfdce48f8f8f6040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b0316815260200182151581526020019350505050602060405180830381600087803b1580156106fa57600080fd5b505af115801561070e573d6000803e3d6000fd5b505050506040513d602081101561072457600080fd5b505190505b610736818c8c8c8c610ea4565b90955093506107478e338388610bc2565b6107538d338387610bc2565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b505050506040513d60208110156107cc57600080fd5b5051604080518781526020810187905280820183905290519194507ff75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b24919081900360600190a1505099509950999650505050505050565b6000808242811015610875576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b61087e89610aa6565b505061088d898989898961100e565b909a909950975050505050505050565b606081428110156108ee576040805162461bcd60e51b815260206004820152601660248201527513db9954ddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b0389161561093a57341561093a5760405162461bcd60e51b81526004018080602001828103825260228152602001806115cb6022913960400191505060405180910390fd5b6001851015610990576040805162461bcd60e51b815260206004820152601b60248201527f4f6e6553776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6109b5868660008181106109a057fe5b905060200201356001600160a01b0316610aa6565b50506109df8933888860008181106109c957fe5b905060200201356001600160a01b03168b610bc2565b610a1f89898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061119d915050565b915086828787905081518110610a3157fe5b60200260200101511015610a765760405162461bcd60e51b81526004018080602001828103825260298152602001806116816029913960400191505060405180910390fd5b50979650505050505050565b7f0000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c481565b6000807f0000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c46001600160a01b031663c0225aa1846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050604080518083038186803b158015610b1557600080fd5b505afa158015610b29573d6000803e3d6000fd5b505050506040513d6040811015610b3f57600080fd5b50805160209091015190925090506001600160a01b038216151580610b6c57506001600160a01b03811615155b610bbd576040805162461bcd60e51b815260206004820152601d60248201527f4f6e6553776170526f757465723a20504149525f4e4f545f4558495354000000604482015290519081900360640190fd5b915091565b6001600160a01b038416610bf557610bda8282611383565b3481811115610bef57610bef33838303611383565b50610e9e565b6000846001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c4457600080fd5b505afa158015610c58573d6000803e3d6000fd5b505050506040513d6020811015610c6e57600080fd5b5051604080516001600160a01b0387811660248301528681166044830152606480830187905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251949550600094606094928b16939282918083835b60208310610cf65780518252601f199092019160209182019101610cd7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d58576040519150601f19603f3d011682016040523d82523d6000602084013e610d5d565b606091505b5091509150818015610d8b575080511580610d8b5750808060200190516020811015610d8857600080fd5b50515b610dc65760405162461bcd60e51b815260040180806020018281038252602381526020018061165e6023913960400191505060405180910390fd5b6000876001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e1557600080fd5b505afa158015610e29573d6000803e3d6000fd5b505050506040513d6020811015610e3f57600080fd5b505190508385018114610e99576040805162461bcd60e51b815260206004820152601e60248201527f4f6e6553776170526f757465723a205452414e534645525f4641494c45440000604482015290519081900360640190fd5b505050505b50505050565b600080600080886001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610ee357600080fd5b505afa158015610ef7573d6000803e3d6000fd5b505050506040513d6060811015610f0d57600080fd5b5080516020909101516001600160701b03918216935016905081158015610f32575080155b15610f4257879350869250611002565b6000610f4f89848461147b565b9050878111610fa25785811015610f975760405162461bcd60e51b81526004018080602001828103825260288152602001806116366028913960400191505060405180910390fd5b889450925082611000565b6000610faf89848661147b565b905089811115610fbb57fe5b87811015610ffa5760405162461bcd60e51b81526004018080602001828103825260288152602001806115ed6028913960400191505060405180910390fd5b94508793505b505b50509550959350505050565b604080516323b872dd60e01b81523360048201526001600160a01b03871660248201819052604482018790529151600092839290916323b872dd9160648082019260209290919082900301818787803b15801561106a57600080fd5b505af115801561107e573d6000803e3d6000fd5b505050506040513d602081101561109457600080fd5b50506040805163226bf2d160e21b81526001600160a01b0385811660048301528251908a16926389afcb4492602480820193918290030181600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b505050506040513d604081101561110757600080fd5b5080516020909101519092509050848210156111545760405162461bcd60e51b81526004018080602001828103825260288152602001806115ed6028913960400191505060405180910390fd5b838110156111935760405162461bcd60e51b81526004018080602001828103825260288152602001806116366028913960400191505060405180910390fd5b9550959350505050565b6060825160010167ffffffffffffffff811180156111ba57600080fd5b506040519080825280602002602001820160405280156111e4578160200160208202803683370190505b50905083816000815181106111f557fe5b60200260200101818152505060005b835181101561137a57600080600186510383106112235784600161123d565b85836001018151811061123257fe5b602002602001015160005b9150915085838151811061124d57fe5b60200260200101516001600160a01b031663a6e81533898487878151811061127157fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b03168152602001826001600160701b031681526020019350505050602060405180830381600087803b1580156112d857600080fd5b505af11580156112ec573d6000803e3d6000fd5b505050506040513d602081101561130257600080fd5b5051845185906001860190811061131557fe5b602002602001018181525050806113705760008061134588868151811061133857fe5b6020026020010151610aa6565b91509150896001600160a01b0316826001600160a01b03161415611369578061136b565b815b995050505b5050600101611204565b50949350505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106113cf5780518252601f1990920191602091820191016113b0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611431576040519150601f19603f3d011682016040523d82523d6000602084013e611436565b606091505b50509050806114765760405162461bcd60e51b81526004018080602001828103825260238152602001806116aa6023913960400191505060405180910390fd5b505050565b60008084116114bb5760405162461bcd60e51b81526004018080602001828103825260228152602001806115846022913960400191505060405180910390fd5b6000831180156114cb5750600082115b6115065760405162461bcd60e51b81526004018080602001828103825260258152602001806115a66025913960400191505060405180910390fd5b826115118584611521565b8161151857fe5b04949350505050565b6000826115305750600061157d565b8282028284828161153d57fe5b041461157a5760405162461bcd60e51b81526004018080602001828103825260218152602001806116156021913960400191505060405180910390fd5b90505b9291505056fe4f6e6553776170526f757465723a20494e53554646494349454e545f414d4f554e544f6e6553776170526f757465723a20494e53554646494349454e545f4c49515549444954594f6e6553776170526f757465723a204e4f545f454e5445525f4554485f56414c55454f6e6553776170526f757465723a20494e53554646494349454e545f53544f434b5f414d4f554e54536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6553776170526f757465723a20494e53554646494349454e545f4d4f4e45595f414d4f554e544f6e6553776170526f757465723a205452414e534645525f46524f4d5f4641494c45444f6e6553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544a26469706673582212201e165bbd889b7adeeeaa828225074fef5bd1a49f3531ebc4409cfbe02332a8b264736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c4
-----Decoded View---------------
Arg [0] : _factory (address): 0x5eD3C9089Ed0355bc77CF439Dc2eD28c4054C8c4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005ed3c9089ed0355bc77cf439dc2ed28c4054c8c4
Deployed Bytecode Sourcemap
18553:7762:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23518:946;;;;;;;;;;;;;;;;-1:-1:-1;23518:946:0;;;;;-1:-1:-1;;;;;23518:946:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20173:1075;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20173:1075:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;21762:395;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21762:395:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22840:670;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22840:670:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22840:670:0;-1:-1:-1;;;;;;22840:670:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18634:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;18634:41:0;;;;;;;;;;;;;;23518:946;23676:8;18802:15;18790:8;:27;;18782:62;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;;;;23700:13:::1;23715::::0;23732:24:::1;23751:4;23732:18;:24::i;:::-;23823:72;::::0;;-1:-1:-1;;;23823:72:0;;::::1;::::0;::::1;;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;;;;23699:57;;-1:-1:-1;23699:57:0;;-1:-1:-1;23783:17:0::1;::::0;;;-1:-1:-1;;;;;23823:36:0;::::1;::::0;::::1;::::0;:72;;;;;;;;;;:36;:72;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23823:72:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;23823:72:0;-1:-1:-1;23910:417:0;::::1;;;-1:-1:-1::0;;;;;23944:19:0;::::1;::::0;23940:91:::1;;23975:9;:14:::0;23967:61:::1;;;;-1:-1:-1::0;;;23967:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24049:56;24067:5;24074:10;24086:4;24092:12;24049:17;:56::i;:::-;23910:417;;;-1:-1:-1::0;;;;;24150:19:0;::::1;::::0;24146:91:::1;;24181:9;:14:::0;24173:61:::1;;;;-1:-1:-1::0;;;24173:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24255:56;24273:5;24280:10;24292:4;24298:12;24255:17;:56::i;:::-;-1:-1:-1::0;;24348:108:0::1;::::0;;-1:-1:-1;;;24348:108:0;;;::::1;;;::::0;::::1;::::0;24388:10:::1;24348:108:::0;;;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;;;;24348:32:0;::::1;::::0;::::1;::::0;:108;;;;;-1:-1:-1;;24348:108:0;;;;;;;-1:-1:-1;24348:32:0;:108;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18855:1;;23518:946:::0;;;;;;;;:::o;20173:1075::-;20431:16;20449;20467:14;20412:8;18802:15;18790:8;:27;;18782:62;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20500:19:0;::::1;::::0;;::::1;::::0;:42:::1;;-1:-1:-1::0;;;;;;20523:19:0;::::1;::::0;::::1;20500:42;20496:136;;;20567:9;:14:::0;20559:61:::1;;;;-1:-1:-1::0;;;20559:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20657:63;::::0;;-1:-1:-1;;;20657:63:0;;-1:-1:-1;;;;;20657:63:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;::::1;;::::0;;;;;;20642:12:::1;::::0;20673:7:::1;20657:37;::::0;::::1;::::0;:63;;;;;::::1;::::0;;;;;;;;:37;:63;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20657:63:0;;-1:-1:-1;;;;;;20735:18:0;::::1;20731:119;;20793:7;-1:-1:-1::0;;;;;20777:35:0::1;;20813:5;20820;20827:10;20777:61;;;;;;;;;;;;;-1:-1:-1::0;;;;;20777:61:0::1;;;;;;-1:-1:-1::0;;;;;20777:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20777:61:0;;-1:-1:-1;20731:119:0::1;20889:104;20903:4;20909:18;20942;20962:14;20978;20889:13;:104::i;:::-;20860:133:::0;;-1:-1:-1;20860:133:0;-1:-1:-1;21004:55:0::1;21022:5:::0;21029:10:::1;21041:4:::0;20860:133;21004:17:::1;:55::i;:::-;21070;21088:5;21095:10;21107:4;21113:11;21070:17;:55::i;:::-;21161:4;-1:-1:-1::0;;;;;21148:23:0::1;;21172:2;21148:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;21148:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21148:27:0;21191:49:::1;::::0;;;;;21148:27:::1;21191:49:::0;::::1;::::0;;;;;;;;;;;21148:27;;-1:-1:-1;21191:49:0::1;::::0;;;;;;;;::::1;18855:1;20173:1075:::0;;;;;;;;;;;;;;:::o;21762:395::-;21939:16;21957;21920:8;18802:15;18790:8;:27;;18782:62;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;;;;22016:24:::1;22035:4;22016:18;:24::i;:::-;;;22080:69;22097:4;22103:9;22114:14;22130;22146:2;22080:16;:69::i;:::-;22051:98:::0;;;;-1:-1:-1;21762:395:0;-1:-1:-1;;;;;;;;21762:395:0:o;22840:670::-;23021:21;23002:8;18802:15;18790:8;:27;;18782:62;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;-1:-1:-1;;;18782:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23061:19:0;::::1;::::0;23057:91:::1;;23092:9;:14:::0;23084:61:::1;;;;-1:-1:-1::0;;;23084:61:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23181:1;23166:16:::0;::::1;;23158:56;;;::::0;;-1:-1:-1;;;23158:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23255:27;23274:4;;23279:1;23274:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;23274:7:0::1;23255:18;:27::i;:::-;;;23293:55;23311:5;23318:10;23330:4;;23335:1;23330:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;23330:7:0::1;23339:8;23293:17;:55::i;:::-;23369:32;23375:5;23382:8;23392:4;;23369:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;23398:2:0;;-1:-1:-1;23369:5:0::1;::::0;-1:-1:-1;;23369:32:0:i:1;:::-;23359:42;;23444:12;23420:7;23428:4;;:11;;23420:20;;;;;;;;;;;;;;:36;;23412:90;;;;-1:-1:-1::0;;;23412:90:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22840:670:::0;;;;;;;;;;:::o;18634:41::-;;;:::o;26039:273::-;26103:13;26118;26177:7;-1:-1:-1;;;;;26161:42:0;;26204:4;26161:48;;;;;;;;;;;;;-1:-1:-1;;;;;26161:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26161:48:0;;;;;;;;;-1:-1:-1;26161:48:0;-1:-1:-1;;;;;;26228:19:0;;;;;:42;;-1:-1:-1;;;;;;26251:19:0;;;;26228:42;26220:84;;;;;-1:-1:-1;;;26220:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26039:273;;;:::o;24532:911::-;-1:-1:-1;;;;;24636:19:0;;24632:233;;24672:27;24689:2;24693:5;24672:16;:27::i;:::-;24732:9;24760:18;;;24756:77;;;24782:48;24799:10;24824:5;24811:10;:18;24782:16;:48::i;:::-;24847:7;;;24632:233;24877:17;24904:5;-1:-1:-1;;;;;24897:23:0;;24921:2;24897:27;;;;;;;;;;;;;-1:-1:-1;;;;;24897:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24897:27:0;25121:51;;;-1:-1:-1;;;;;25121:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24897:27;25121:51;;;;-1:-1:-1;;;;;25121:51:0;-1:-1:-1;;;25121:51:0;;;25110:63;;;;24897:27;;-1:-1:-1;25075:12:0;;25089:17;;25110:10;;;;25121:51;25110:63;;;;25121:51;25110:63;;;;;;;;;;-1:-1:-1;;25110:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25074:99;;;;25192:7;:57;;;;-1:-1:-1;25204:11:0;;:16;;:44;;;25235:4;25224:24;;;;;;;;;;;;;;;-1:-1:-1;25224:24:0;25204:44;25184:105;;;;-1:-1:-1;;;25184:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25300:16;25326:5;-1:-1:-1;;;;;25319:23:0;;25343:2;25319:27;;;;;;;;;;;;;-1:-1:-1;;;;;25319:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25319:27:0;;-1:-1:-1;25380:20:0;;;25365:35;;25357:78;;;;;-1:-1:-1;;;25357:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24532:911;;;;;;;;;:::o;18954:1211::-;19114:16;19132;19164:17;19183;19219:4;-1:-1:-1;;;;;19206:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19206:32:0;;;;;;;-1:-1:-1;;;;;19163:75:0;;;;-1:-1:-1;19163:75:0;;-1:-1:-1;19253:17:0;;:38;;;;-1:-1:-1;19274:17:0;;19253:38;19249:909;;;19338:18;;-1:-1:-1;19358:18:0;;-1:-1:-1;19249:909:0;;;19410:23;19436:54;19443:18;19463:12;19477;19436:6;:54::i;:::-;19410:80;;19531:18;19509;:40;19505:642;;19600:14;19578:18;:36;;19570:89;;;;-1:-1:-1;;;19570:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19708:18;;-1:-1:-1;19728:18:0;-1:-1:-1;19728:18:0;19505:642;;;19788:23;19814:54;19821:18;19841:12;19855;19814:6;:54::i;:::-;19788:80;;19916:18;19894;:40;;19887:48;;;;19984:14;19962:18;:36;;19954:89;;;;-1:-1:-1;;;19954:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20092:18;-1:-1:-1;20112:18:0;;-1:-1:-1;19505:642:0;19249:909;;18954:1211;;;;;;;;;;:::o;21256:498::-;21439:54;;;-1:-1:-1;;;21439:54:0;;21465:10;21439:54;;;;-1:-1:-1;;;;;21439:25:0;;:54;;;;;;;;;;;;;;21392:16;;;;21439:25;;;;:54;;;;;;;;;;;;;;;21392:16;21439:25;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21533:27:0;;;-1:-1:-1;;;21533:27:0;;-1:-1:-1;;;;;21533:27:0;;;;;;;;;:23;;;;;;:27;;;;;;;;;;;-1:-1:-1;21533:23:0;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21533:27:0;;;;;;;;;-1:-1:-1;21533:27:0;-1:-1:-1;21579:29:0;;;;21571:82;;;;-1:-1:-1;;;21571:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21687:14;21672:11;:29;;21664:82;;;;-1:-1:-1;;;21664:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21256:498;;;;;;;;:::o;22165:667::-;22272:21;22327:4;:11;22341:1;22327:15;22316:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22316:27:0;;22306:37;;22367:8;22354:7;22362:1;22354:10;;;;;;;;;;;;;:21;;;;;22393:6;22388:437;22409:4;:11;22405:1;:15;22388:437;;;22443:10;22455:15;22492:1;22478:4;:11;:15;22474:1;:19;:54;;22518:3;22523:4;22474:54;;;22497:4;22502:1;22504;22502:3;22497:9;;;;;;;;;;;;;;22508:5;22474:54;22442:86;;;;22573:4;22578:1;22573:7;;;;;;;;;;;;;;-1:-1:-1;;;;;22560:36:0;;22597:5;22604:2;22616:7;22624:1;22616:10;;;;;;;;;;;;;;22560:68;;;;;;;;;;;;;-1:-1:-1;;;;;22560:68:0;;;;;;-1:-1:-1;;;;;22560:68:0;;;;;;-1:-1:-1;;;;;22560:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22560:68:0;22543:14;;:7;;22555:1;22551:5;;;22543:14;;;;;;;;;;;:85;;;;;22648:10;22643:171;;22680:13;22695;22712:27;22731:4;22736:1;22731:7;;;;;;;;;;;;;;22712:18;:27::i;:::-;22679:60;;;;22776:5;-1:-1:-1;;;;;22767:14:0;:5;-1:-1:-1;;;;;22767:14:0;;;22766:32;;22793:5;22766:32;;;22785:5;22766:32;22758:40;;22643:171;;;-1:-1:-1;;22422:3:0;;22388:437;;;;22165:667;;;;;;:::o;25451:256::-;25620:12;;;25582;25620;;;;;;;;;-1:-1:-1;;;;;25599:7:0;;;25613:5;;25599:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25599:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25581:52;;;25652:7;25644:55;;;;-1:-1:-1;;;25644:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25451:256;;;:::o;25715:316::-;25798:12;25841:1;25831:7;:11;25823:58;;;;-1:-1:-1;;;25823:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25911:1;25900:8;:12;:28;;;;;25927:1;25916:8;:12;25900:28;25892:78;;;;-1:-1:-1;;;25892:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26015:8;25991:21;:7;26003:8;25991:11;:21::i;:::-;:32;;;;;;;25715:316;-1:-1:-1;;;;25715:316:0:o;9992:471::-;10050:7;10295:6;10291:47;;-1:-1:-1;10325:1:0;10318:8;;10291:47;10362:5;;;10366:1;10362;:5;:1;10386:5;;;;;:10;10378:56;;;;-1:-1:-1;;;10378:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10454:1;-1:-1:-1;9992:471:0;;;;;:::o
Swarm Source
ipfs://1e165bbd889b7adeeeaa828225074fef5bd1a49f3531ebc4409cfbe02332a8b2
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.