Contract 0x152ee697f2e276fa89e96742e9bb9ab1f2e61be3 2

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x43a90115a043140afc43300b0b61256bca3cee99fd19e1503ec2eb3f762ffac2Create Pair447405972022-08-12 10:07:463 days 21 hrs ago0x773a30c24b91461a0a36c8d16163180e5931ed0b IN  SpookySwap: Factory0 FTM0.003388297329
0x29ce20e01e190ba8c25a2a8b98927ac65c8a7298c0b6b2453082da0818607278Create Pair446534352022-08-11 3:34:355 days 4 hrs ago0x64085bf25121fb888c13f6a9b23c3e14b18f2c12 IN  SpookySwap: Factory0 FTM0.005053894256
0x5b52628631f22959f5b99a311f5a8a454e8e5ffd6ecdf37085ec3a102b2f0871Create Pair446050192022-08-10 10:12:005 days 21 hrs ago0xe9153160a00839a8a08ecb725b5073978ed383a3 IN  SpookySwap: Factory0 FTM0.004628046013
0x9a0346cdf8cc66ad03fc98aa454eeb286ca829f98e1d425d6fecb3ed717d58baCreate Pair437347392022-07-28 16:11:2318 days 15 hrs ago0x64085bf25121fb888c13f6a9b23c3e14b18f2c12 IN  SpookySwap: Factory0 FTM0.639257413662
0x217ea154f472acd087c1e0e7d23c8b1148a8df283321cbb6f485bd0431a56ec6Create Pair436403882022-07-27 6:33:3820 days 1 hr ago0xee05aef160f2a6c928e9cb4078562aefb69d6a60 IN  SpookySwap: Factory0 FTM0.043914264374
0x0cb8867d81914933f661959e95b09d0fbfe5a574cc0e7deedc69cda13fa2e040Create Pair436403412022-07-27 6:32:3120 days 1 hr ago0xee05aef160f2a6c928e9cb4078562aefb69d6a60 IN  SpookySwap: Factory0 FTM0.043913874165
0x3ca490afde5b35d2b688c534001ae4a9eb1c6180f212e7d77642d8cd999b536eCreate Pair435297542022-07-25 16:50:5621 days 15 hrs ago0xee05aef160f2a6c928e9cb4078562aefb69d6a60 IN  SpookySwap: Factory0 FTM0.003163719999
0x4fb872c72d194ac2d293ab3d3cb533e09c0bd3d72eea03f9609f31fdb79e6283Create Pair435296872022-07-25 16:49:4521 days 15 hrs ago0xee05aef160f2a6c928e9cb4078562aefb69d6a60 IN  SpookySwap: Factory0 FTM0.008039128252
0x254b94cd59d993a305e80b2bf66d21e3069e787e5564bc24716f52d84fe2fe04Create Pair431625822022-07-20 10:00:4026 days 21 hrs ago0x2ff40a25a3d15f819d0b8e8a9afa8a6f1cf86c59 IN  SpookySwap: Factory0 FTM0.134141647258
0xc605eadc14ecff76164a0f52532c799bb96177ee229f5624d6cdd46a44358195Create Pair427254202022-07-14 6:53:5933 days 1 hr ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.006172460973
0x7b2ec3ab7f1db2354926d5ce2f3b0a42ac08857d35eaed637d871f24f4779222Create Pair427254112022-07-14 6:53:5133 days 1 hr ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.006172460973
0xcc87bdc97db0eac5270a05b9c662dee2844e5c85dc9b1abee3c1cdcd592f22ffCreate Pair427238692022-07-14 6:26:4233 days 1 hr ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.006397299056
0x4d8706c8574e2d79d913b76ea24dc3c8277e204a2dc709d0e58b6fe52798b36bCreate Pair427238622022-07-14 6:26:3533 days 1 hr ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.006397299056
0x28f37797716ec5cb7e661ad2f1d017d2957016b011cfd0c9909b710f7c5dd116Create Pair427228182022-07-14 6:07:5633 days 1 hr ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.006688938745
0xef71f64e9d33306d59b2438be015b65fc34f5711292485133a4d6a8636a4d889Create Pair427228062022-07-14 6:07:4533 days 1 hr ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.006688938745
0x8b5a9b7a40a4606b76bda2ac6cbdc38f8749ed01e932d12d2fc8fc7afa7317ebCreate Pair427164822022-07-14 4:07:3233 days 3 hrs ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.007673019802
0x951f2142afa40d93a21328dc8035649f29f509dc2f5050da87903fc85f813db2Create Pair427164742022-07-14 4:07:2333 days 3 hrs ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.007673019802
0xb56f8d15c22871266e16335c2c83da2a4a57b5a2f8946fdd7235b8e2872a499cCreate Pair427142962022-07-14 3:25:3733 days 4 hrs ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.007719671375
0x349f6134e79d7a0554dd10229cfb958314f3b5fdba14d8c0c37289de3d04bf98Create Pair427142892022-07-14 3:25:3033 days 4 hrs ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.007719633798
0x490b8f96a52651275f8bc96eeee2e57629037f2761a0a9c78a47a4d39eadda90Create Pair427120692022-07-14 2:44:3933 days 5 hrs ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.008303965987
0xa028a264f0102c3b53098906620a6b8ff64ca9cde0661d21abb6cef4c565cf8cCreate Pair427119192022-07-14 2:42:1433 days 5 hrs ago0xa59ceeba17597dedadf77b34b8a877f4ded1c1c1 IN  SpookySwap: Factory0 FTM0.2
0xf2eed0733536f73de6617dfc719d88b27170c9ca1426118ea9a762a3edd9bb46Set Fee To Sette...405826462022-06-15 15:29:1461 days 16 hrs agoSpookySwap: Deployer IN  SpookySwap: Factory0 FTM0.00256344773
0xe6341300e7bdbc3dbea4c163305a186ca77fcdbed3573eb1f13e1ad635cceb9cCreate Pair405654222022-06-15 9:56:3961 days 22 hrs ago0x5322d18080c18ed152c03c13f09817bb0b51a486 IN  SpookySwap: Factory0 FTM0.853647246733
0x3a1c428f8259f46dbbd8ef5df50fca7c65bfdd0524887251586dd6cc112f4ad2Create Pair401857632022-06-10 4:45:5867 days 3 hrs ago0x5322d18080c18ed152c03c13f09817bb0b51a486 IN  SpookySwap: Factory0 FTM0.0184304906
0x6f45e71a766f23284e7bbb573a3f5139b463b3f7f9d2ab4dbd0fe90577b83068Create Pair401857102022-06-10 4:45:0467 days 3 hrs ago0x5322d18080c18ed152c03c13f09817bb0b51a486 IN  SpookySwap: Factory0 FTM0.0280437723
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xca1f94e1cf79529aadd3bed1431421546cf8ce18faed2ad02cb368786de98152449593782022-08-15 12:49:3919 hrs 10 mins ago SpookySwap: Factory  Contract Creation0 FTM
0x975dd9be5cbb52652998957fd3a58e54a4ac7d23a4042ee3a9e9838d82e176e4449591732022-08-15 12:43:2819 hrs 16 mins ago SpookySwap: Factory  Contract Creation0 FTM
0xb9879d03d3b8304bddd19e0edd7a8cbc3f277f2acefbeab34a6a7826bbaa1e8c449572482022-08-15 11:57:0420 hrs 3 mins ago SpookySwap: Factory  Contract Creation0 FTM
0xddccfd0efae4e407ba12bf05538815cf0058f041ea0c7a10561eaedb87a21b14449532322022-08-15 10:38:4321 hrs 21 mins ago SpookySwap: Factory  Contract Creation0 FTM
0xeb5998dfc18869e6cc1147c53dbaaac6f2866220057f1f4de3ef1a2d25e184e2449493262022-08-15 9:23:5822 hrs 36 mins ago SpookySwap: Factory  Contract Creation0 FTM
0xe5e346d6adfb37a6d7113b6c0f40632a6ddfcb571ddcb389164a55851c7ffa04449411602022-08-15 6:31:131 day 1 hr ago SpookySwap: Factory  Contract Creation0 FTM
0x24892fc78429842ce58e031077d6b787f574a6671b535a84b8d7306b13f2ff88449289422022-08-15 2:16:151 day 5 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xac9142394fde543f7ac4feca83c9549453748042c31a78be82bb0b5297527a4d448978762022-08-14 15:34:211 day 16 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xb449371b4eb58e663c432e3bf3ddc81887d4c6b23d5a459943293dd1bcb90fac448715902022-08-14 6:45:112 days 1 hr ago SpookySwap: Factory  Contract Creation0 FTM
0x3b7ec5517f97607776ffbe08158e4ae270790289a3c21f66309f188ed80e9467448715192022-08-14 6:43:562 days 1 hr ago SpookySwap: Factory  Contract Creation0 FTM
0xbe5cc64a4561c3e8d83d187aabe3ec0c78c3fbc4cd18f7f565a6961576eaa588448713452022-08-14 6:40:492 days 1 hr ago SpookySwap: Factory  Contract Creation0 FTM
0x4aa921f2eb7fcf57efb1680291306274408370fadaaedc7a40c1a505ef9e305f448708622022-08-14 6:31:142 days 1 hr ago SpookySwap: Factory  Contract Creation0 FTM
0xb78595bfef8e4749b518809dbdcaa6bce47f5035a860b928f2b6b235ad73f1b0448706312022-08-14 6:27:042 days 1 hr ago SpookySwap: Factory  Contract Creation0 FTM
0x69e74bb38d159dc98a1be0682df5616d8c8b40c44f55309d187f3ca40461450b447834142022-08-13 0:54:013 days 7 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xcc158388cdc7bb9a21ca51383d4f868b7929d1d58d1e549b24414ad3535dd6cc447757272022-08-12 22:21:213 days 9 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xc55d342f7f31d05a5c1840f30fd381a3d30a919fb059257ce0abf4f997b263bc447431782022-08-12 11:04:043 days 20 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0x43a90115a043140afc43300b0b61256bca3cee99fd19e1503ec2eb3f762ffac2447405972022-08-12 10:07:463 days 21 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0x9aea866d6fc5bba0f98e640d7e7c10e3ace3ca7c0c0966f070c5ffa4a61d007c447359472022-08-12 8:18:123 days 23 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xc5a3a5932635b49103b60ff2b1d0195de8a29613cbf53519a6ebdea283a05eff446712692022-08-11 10:01:414 days 21 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xe575dc5190c81a4e5eac853cd06df6c102e105a57868634aa931924277f1f35d446701562022-08-11 9:40:064 days 22 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0x29ce20e01e190ba8c25a2a8b98927ac65c8a7298c0b6b2453082da0818607278446534352022-08-11 3:34:355 days 4 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0x604909b8947aa29c7b8a670253bc8208a9def34526b81e59ee25c9838f9ddb9d446373872022-08-10 22:02:355 days 9 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0x12e4cf1a83b3e1785ec29536ae18cfa5384d03a0aff8d71cf410019bac6c4382446340302022-08-10 20:48:185 days 11 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0xa3eb1047f948f40496e0ec3c5098cc19206e2027798571227920b18835ce13f6446297352022-08-10 19:21:115 days 12 hrs ago SpookySwap: Factory  Contract Creation0 FTM
0x6ca435f6fad88cac524af61b7556e081ac93197cd62384fe2d24fa3806591e83446285122022-08-10 18:55:235 days 13 hrs ago SpookySwap: Factory  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Factory

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-04-17
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}


contract UniswapV2ERC20 {
    using SafeMath for uint;

    string public constant name = 'Spooky LP';
    string public constant symbol = 'spLP';
    uint8 public constant decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public nonces;

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid()
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}
library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}
library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}

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);
}

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

contract UniswapV2Pair is UniswapV2ERC20 {
    using SafeMath  for uint;
    using UQ112x112 for uint224;

    uint public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public factory;
    address public token0;
    address public token1;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'UniswapV2: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
    }

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint denominator = rootK.mul(3).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
           _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20(_token0).balanceOf(address(this));
        uint balance1 = IERC20(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
        require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');

        uint balance0;
        uint balance1;
        { // scope for _token{0,1}, avoids stack too deep errors
        address _token0 = token0;
        address _token1 = token1;
        require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(2));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(2));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external lock {
        _update(IERC20(token0).balanceOf(address(this)), IERC20(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}

contract UniswapV2Factory is IUniswapV2Factory {
    bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked(type(UniswapV2Pair).creationCode));
    address public override feeTo;
    address public override feeToSetter;

    mapping(address => mapping(address => address)) public override getPair;
    address[] public override allPairs;

    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    constructor(address _feeToSetter) public {
        feeToSetter = _feeToSetter;
    }

    function allPairsLength() external override view returns (uint) {
        return allPairs.length;
    }

    function pairCodeHash() external pure returns (bytes32) {
        return keccak256(type(UniswapV2Pair).creationCode);
    }

    function createPair(address tokenA, address tokenB) external override returns (address pair) {
        require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
        require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient
        bytes memory bytecode = type(UniswapV2Pair).creationCode;
        bytes32 salt = keccak256(abi.encodePacked(token0, token1));
        assembly {
            pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
        }
        UniswapV2Pair(pair).initialize(token0, token1);
        getPair[token0][token1] = pair;
        getPair[token1][token0] = pair; // populate mapping in the reverse direction
        allPairs.push(pair);
        emit PairCreated(token0, token1, pair, allPairs.length);
    }

    function setFeeTo(address _feeTo) external override {
        require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');
        feeTo = _feeTo;
    }

    function setFeeToSetter(address _feeToSetter) external override {
        require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');
        feeToSetter = _feeToSetter;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[],"name":"INIT_CODE_PAIR_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516136753803806136758339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613612806100636000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80639aab924811610076578063c9c653961161005b578063c9c6539614610178578063e6a43905146101b3578063f46901ed146101ee576100be565b80639aab92481461013b578063a2e74af614610143576100be565b80631e3dd18b116100a75780631e3dd18b146100fc578063574f2ba3146101195780635855a25a14610133576100be565b8063017e7e58146100c3578063094b7415146100f4575b600080fd5b6100cb610221565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100cb61023d565b6100cb6004803603602081101561011257600080fd5b5035610259565b61012161028d565b60408051918252519081900360200190f35b610121610293565b610121610344565b6101766004803603602081101561015957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610376565b005b6100cb6004803603604081101561018e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610443565b6100cb600480360360408110156101c957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610877565b6101766004803603602081101561020457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108aa565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061026657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b6040516102a260208201610977565b6020820181038252601f19601f820116604052506040516020018082805190602001908083835b6020831061030657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102c9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60006040518060200161035690610977565b6020820181038252601f19601f8201166040525080519060200120905090565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061051d578385610520565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff82166105a757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561064857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b60606040518060200161065a90610977565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f594508473ffffffffffffffffffffffffffffffffffffffff1663485cc95585856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561076857600080fd5b505af115801561077c573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461093057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612c58806109858339019056fe60806040526001600c5534801561001557600080fd5b506040805180820182526009815268053706f6f6b79204c560bc1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fa91fe58471fd2a6be67edb07e310245d14cf2e61eb70f1d79b9e0f5cdb6fc0cc818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b51806101076000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846002612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846002612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600981526020017f53706f6f6b79204c50000000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600481526020017f73704c500000000000000000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866003612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220dcc02d08a0d2a855883ec246a1af8cf8f67b5238ab62de5a68f41c5b52af7d5b64736f6c634300060c0033a2646970667358221220272876017580971dfc6f93f164bb0fccf807dd4055f4e75f023529cc893fdf4164736f6c634300060c003300000000000000000000000095478c4f7d22d1048f46100001c2c69d2ba57380

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000095478c4f7d22d1048f46100001c2c69d2ba57380

-----Decoded View---------------
Arg [0] : _feeToSetter (address): 0x95478c4f7d22d1048f46100001c2c69d2ba57380

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000095478c4f7d22d1048f46100001c2c69d2ba57380


Deployed ByteCode Sourcemap

16147:2127:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16315:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16351:35;;;:::i;16473:34::-;;;;;;;;;;;;;;;;-1:-1:-1;16473:34:0;;:::i;16704:105::-;;;:::i;:::-;;;;;;;;;;;;;;;;16201:107;;;:::i;16817:125::-;;;:::i;18091:178::-;;;;;;;;;;;;;;;;-1:-1:-1;18091:178:0;;;;:::i;:::-;;16950:971;;;;;;;;;;;;;;;;-1:-1:-1;16950:971:0;;;;;;;;;;;:::i;16395:71::-;;;;;;;;;;;;;;;;-1:-1:-1;16395:71:0;;;;;;;;;;;:::i;17929:154::-;;;;;;;;;;;;;;;;-1:-1:-1;17929:154:0;;;;:::i;16315:29::-;;;;;;:::o;16351:35::-;;;;;;:::o;16473:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16473:34:0;:::o;16704:105::-;16786:8;:15;16704:105;:::o;16201:107::-;16274:32;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16257:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16247:61;;;;;;16201:107;:::o;16817:125::-;16864:7;16901:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16891:43;;;;;;16884:50;;16817:125;:::o;18091:178::-;18188:11;;;;18174:10;:25;18166:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18235:11;:26;;;;;;;;;;;;;;;18091:178::o;16950:971::-;17029:12;17072:6;17062:16;;:6;:16;;;;17054:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17125:14;17141;17168:6;17159:15;;:6;:15;;;:53;;17197:6;17205;17159:53;;;17178:6;17186;17159:53;17124:88;;-1:-1:-1;17124:88:0;-1:-1:-1;17231:20:0;;;17223:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17298:37;:15;;;17333:1;17298:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;17290:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17403:21;17427:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;17403:56;;17470:12;17512:6;17520;17495:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17485:43;;;;;;17470:58;;17618:4;17607:8;17601:15;17596:2;17586:8;17582:17;17579:1;17571:52;17563:60;;17658:4;17644:30;;;17675:6;17683;17644:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;17701:15:0;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;;;;;;;;;;17742:15;;;;;;:23;;;;;;;;:30;;;;;;;;17828:8;:19;;-1:-1:-1;17828:19:0;;;;;;;;;;;;;;;;;;;;;;17897:15;;17863:50;;;;;;;;;;;;;;;;;;;;;;16950:971;;;;;;;;:::o;16395:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17929:154::-;18014:11;;;;18000:10;:25;17992:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18061:5;:14;;;;;;;;;;;;;;;17929:154::o;-1:-1:-1:-;;;;;;;;:::o

Swarm Source

ipfs://272876017580971dfc6f93f164bb0fccf807dd4055f4e75f023529cc893fdf41
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.