Contract 0xb965c131f1c48d89b1760860b782d2acdf87273b 1

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x94c60f9fe0a06f3801d113c72f506815b52a888c8cb0d82a08591cd3c96ce2eaApprove390751972023-02-08 23:33:2313 hrs 48 mins ago0xbe8c503b2f04c5417d8728893cc0632e85d3648d IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.002960675428 113.322951418
0x05c47f849e5ab039227c4468403a665d35f448a11dd9868ea6cab594233ac524Approve390751732023-02-08 23:32:3313 hrs 49 mins ago0xbe8c503b2f04c5417d8728893cc0632e85d3648d IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.002695247228 111.715461701
0x6b64d1ecc90a0d9076a1a4098b1bd351dc36018556eb6cdb4ee82fe8d594da27Approve390712022023-02-08 21:05:2016 hrs 16 mins ago0x844a503210d77f9c3742a119b364c0eefb49e6bd IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.006099380239131.423836238
0xf2b6bb64063f82fff7f66c8d6b9a23ae7f80e30a06e4f424e32114f5eeb7ed55Approve390705332023-02-08 20:41:0816 hrs 40 mins ago0x86d23cf8d880aeff82a66fc135495a26e0d175e9 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.003053613731 126.569416045
0xf39360b4f64301cac70d9ff7bc364d6a01b1df95ac6238808199322cbdb0d439Approve389915072023-02-06 20:40:562 days 16 hrs ago0xb65201f8a3443fface61f01540f3fc3a85b9461e IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.0069615 150
0xe95d99db0ea8d1a5d09dacca0887d631b0e9cc71749066b6273c72b3cb68160aApprove386682082023-01-29 14:41:3010 days 22 hrs ago0x10f192526d2080c86f086a5708b8344d5efc2c60 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.0069615 150
0x3a4ec7939b0e2b3e1b66d625f9c13cc19ffc9794d5bce1bab56214e90497bff4Approve384576422023-01-24 5:41:0116 days 7 hrs ago0x1da29ca4e330f0faa816edb6b55b46f9ee453f7f IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001016292852 42.124382513
0x82ebcbf3682be7b4f86cf45aec3b22d7b9aeb1d35fe8a02e7b2c27042c02dd43Approve384576382023-01-24 5:40:5316 days 7 hrs ago0x1da29ca4e330f0faa816edb6b55b46f9ee453f7f IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001027351095 42.582736288
0x93b72e09a4e86d84395e742fae51cb4b8b3ad3de811c00039e198f44a322bffdApprove384097712023-01-23 1:04:4517 days 12 hrs ago0xe0f20c6669e93bee9b0eb7c3566e1f8509822c96 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.002002458 83
0x36f24e0e68e76ec3bc365d55f4beaf896f9bc95419670b3c6ac53649ffcd46adApprove384031392023-01-22 21:05:2417 days 16 hrs ago0x9281fb2b9345d39ae22161e857eb0c4ef1cc11c9 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.00283771232861.144415615
0x704138f91031bacf5793b996b589df4101061729611639d86864d76f84074589Approve383889252023-01-22 12:28:0518 days 53 mins ago0x86d23cf8d880aeff82a66fc135495a26e0d175e9 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.002457809337 52.958615333
0x381b660f9c377151c654e61f7ca3b2942c1c2d849a2005347ae8a9b766b002f4Approve382836192023-01-19 20:31:2520 days 16 hrs ago0x3445b3d4f888b14e31a17485154f75a7d519895a IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001215117081 50.365459734
0xdcd3540704d2216c832f9ebca054ca45098d1b2b141b5ed260e1ed78f87401d7Approve382835602023-01-19 20:29:1920 days 16 hrs ago0x3445b3d4f888b14e31a17485154f75a7d519895a IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001211132473 50.200301484
0x8191710493dd8b5c862cb34c35819d8cd2319539ecb305ea321b0c8167cb7206Approve382479892023-01-18 23:00:0521 days 14 hrs ago0xb3d8edaf090070d2691ebbf38c408f33b7c83a26 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.00160934486 66.705830236
0x97aad7f837fb4f80a1bdbea4d3f8974df748778050398e8c1a8ecd649328dd1dApprove380881282023-01-15 0:17:2925 days 13 hrs ago0x17e025525e445638787f6230c4af6d2d84d137cb IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.0012469673951.685625084
0xe9c13f3b3ee4f25d7536ea0324a98e3ff89643de5aa25896ba9e098c48259c23Approve380335922023-01-13 16:48:0726 days 20 hrs ago0x45720469f82132e4874221c1e9da83c5a635885c IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001611704352 66.803628979
0xb7bac432a66319126106bb1fd556dcaae97ab51ead005bf30189cddd9c2df508Approve378604402023-01-09 11:06:0431 days 2 hrs ago0x285904bccd6687f41d05a80be6fcd31bffd56c46 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.00200245883
0x57a99038ff39f88b7bf8aa4b88054a4ad3590b895091d0b64f951140adf7421dApprove376991232023-01-05 10:52:3635 days 2 hrs ago0xeaab2b1cb03b54b470c3d6f0f39953903b2f1c79 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.0069615 150
0x5962f19ec7477a445a5c1e2fe42e5fea28d3213fefba3327be3bd0d189332da4Approve376928562023-01-05 7:02:1135 days 6 hrs ago0x3547298de41ecffff986e59ec45ec218676a6fb7 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001237068849 51.275339842
0xf780dc8c3df69b65e190b1ad4782404c4c2b464a45acef820d3259f1907589f2Approve376841732023-01-05 2:01:5235 days 11 hrs ago0xb3db8d23a98780002b10da5fb082e47b2d22e4f3 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001761761397 73.023352281
0xda02887cc34ae76c5118fa901b4f6e07b970c8ca289e795e92989efbc5557185Approve371889852022-12-23 18:56:0147 days 18 hrs ago0xe9c52bb95761185839dde8a360fa827564240c84 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.00098916641
0x7057ca838393f5df1510394f29a7400f5909076cd98f8c7336f4ee0b67889560Approve371401922022-12-22 13:33:4048 days 23 hrs ago0xe82bc6a5364d16d23645054cda1e694f8b69f688 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.00340669077873.40424
0x528dafb7d4c5dc1284da2202f01ee1681a6beb6ec1bd762d4c9cefb2be5fc8c8Approve370703442022-12-20 20:20:0950 days 17 hrs ago0xe0f20c6669e93bee9b0eb7c3566e1f8509822c96 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.0069615 150
0x80f36b4dc727c350844a6b9e004eb9ce26128e66d84cc646c030db757584d148Approve369317402022-12-17 8:12:5554 days 5 hrs ago0xce84dff321d416469579c8c4988c30d148e77e95 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.002110764388 80.791716635
0x7d31c30ac432ba9a71fd15d896fba1af63887c1255f05cac48e8e458d76d640eApprove369311292022-12-17 7:51:3254 days 5 hrs ago0xce84dff321d416469579c8c4988c30d148e77e95 IN  0xb965c131f1c48d89b1760860b782d2acdf87273b0 MATIC0.001191894609 49.402910107
[ Download CSV Export 
Latest 2 internal transactions
Parent Txn Hash Block From To Value
0x4f8145f22ee974ce972bca8ce4153c5eaed98707ceae4a3c8e4e55deb4c1f76f328825282022-09-09 9:42:52153 days 3 hrs ago 0xf4a83f87fff92a684c9b66a0c22ac57b8d862d91 0xb965c131f1c48d89b1760860b782d2acdf87273b0.01 MATIC
0xe2a88c3773ebf13d15d8cb51d56aa408c1842e074cd695f978be490482c61285314163552022-08-02 2:17:12191 days 11 hrs ago 0x7cfb780010e9c861e03bcbc7ac12e013137d47a5  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xD15EB8710E28C23993968e671807d572189CC86e

Contract Name:
MeerkatPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 10 : MeerkatPair.sol
pragma solidity =0.5.16;

import './interfaces/IMeerkatPair.sol';
import './MeerkatERC20.sol';
import './libraries/Math.sol';
import './libraries/UQ112x112.sol';
import './interfaces/IERC20.sol';
import './interfaces/IMeerkatFactory.sol';
import './interfaces/IMeerkatCallee.sol';

contract MeerkatPair is IMeerkatPair, MeerkatERC20 {
    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
    uint32 public swapFee = 17; // uses 0.17% default

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'Meerkat: 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))), 'Meerkat: 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, 'Meerkat: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    function setSwapFee(uint32 _swapFee) external {
        require(_swapFee > 0, "MeerkatPair: lower then 0");
        require(msg.sender == factory, 'MeerkatPair: FORBIDDEN');
        require(_swapFee <= 1000, 'MeerkatPair: FORBIDDEN_FEE');
        swapFee = _swapFee;
    }

    // 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), 'Meerkat: 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);
    }

    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IMeerkatFactory(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)).mul(2);
                    uint denominator = rootK.mul(3).add(rootKLast.mul(2));
                    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, 'Meerkat: 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, 'Meerkat: 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, 'Meerkat: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Meerkat: 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, 'Meerkat: 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) IMeerkatCallee(to).MeerkatCall(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, 'Meerkat: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint _swapFee = swapFee;
        uint balance0Adjusted = (balance0.mul(10000).sub(amount0In.mul(_swapFee)));
        uint balance1Adjusted = (balance1.mul(10000).sub(amount1In.mul(_swapFee)));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'Meerkat: 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);
    }
}

File 2 of 10 : IMeerkatPair.sol
pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function swapFee() external view returns (uint32);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
    function setSwapFee(uint32) external;
}

File 3 of 10 : MeerkatERC20.sol
pragma solidity =0.5.16;

import './interfaces/IMeerkatERC20.sol';
import './libraries/SafeMath.sol';

contract MeerkatERC20 is IMeerkatERC20 {
    using SafeMath for uint;

    string public constant name = 'Meerkat LPs';
    string public constant symbol = 'MEERKAT-LP';
    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, 'Meerkat: 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, 'Meerkat: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

File 4 of 10 : Math.sol
pragma solidity =0.5.16;

// a library for performing various math operations

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

File 5 of 10 : UQ112x112.sol
pragma solidity =0.5.16;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

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

File 6 of 10 : IERC20.sol
pragma solidity >=0.5.0;

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 7 of 10 : IMeerkatFactory.sol
pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function INIT_CODE_HASH() external pure returns (bytes32);

    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;
    function setSwapFee(address pair, uint32 swapFee) external;
}

File 8 of 10 : IMeerkatCallee.sol
pragma solidity >=0.5.0;

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

File 9 of 10 : IMeerkatERC20.sol
pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

File 10 of 10 : SafeMath.sol
pragma solidity =0.5.16;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

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

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"_swapFee","type":"uint32"}],"name":"setSwapFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600c805463ffffffff191660111790556001600d5534801561002557600080fd5b5060405146908060526125388239604080519182900360520182208282018252600b83526a4d6565726b6174204c507360a81b6020938401528151808301835260018152603160f81b908401528151808401919091527f60676653c1150bb4efe35f490be641c2c0b4839ffb6df5fbf84741b8db7ad0e2818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612422806101166000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80636a62784211610104578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610583578063d6d788c3146105d4578063dd62ed3e146105f7578063fff6cae914610625576101cf565b8063ba9a7a5614610545578063bc25cf771461054d578063c45a015514610573578063d21220a71461057b576101cf565b80637ecebe00116100de5780637ecebe00146104ac57806389afcb44146104d257806395d89b4114610511578063a9059cbb14610519576101cf565b80636a6278421461045857806370a082311461047e5780637464fc3d146104a4576101cf565b806330adf81f11610171578063485cc9551161014b578063485cc955146103f957806354cf2aeb146104275780635909c0d5146104485780635a3d549314610450576101cf565b806330adf81f146103cb578063313ce567146103d35780633644e515146103f1576101cf565b8063095ea7b3116101ad578063095ea7b3146103175780630dfe16811461035757806318160ddd1461037b57806323b872dd14610395576101cf565b8063022c0d9f146101d457806306fdde03146102625780630902f1ac146102df575b600080fd5b610260600480360360808110156101ea57600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561022157600080fd5b82018360208201111561023357600080fd5b8035906020019184600183028401116401000000008311171561025557600080fd5b50909250905061062d565b005b61026a610b84565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102a457818101518382015260200161028c565b50505050905090810190601f1680156102d15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e7610bab565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103436004803603604081101561032d57600080fd5b506001600160a01b038135169060200135610bd5565b604080519115158252519081900360200190f35b61035f610bec565b604080516001600160a01b039092168252519081900360200190f35b610383610bfb565b60408051918252519081900360200190f35b610343600480360360608110156103ab57600080fd5b506001600160a01b03813581169160208101359091169060400135610c01565b610383610c9b565b6103db610cbf565b6040805160ff9092168252519081900360200190f35b610383610cc4565b6102606004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610cca565b61042f610d4c565b6040805163ffffffff9092168252519081900360200190f35b610383610d58565b610383610d5e565b6103836004803603602081101561046e57600080fd5b50356001600160a01b0316610d64565b6103836004803603602081101561049457600080fd5b50356001600160a01b0316611062565b610383611074565b610383600480360360208110156104c257600080fd5b50356001600160a01b031661107a565b6104f8600480360360208110156104e857600080fd5b50356001600160a01b031661108c565b6040805192835260208301919091528051918290030190f35b61026a611430565b6103436004803603604081101561052f57600080fd5b506001600160a01b038135169060200135611456565b610383611463565b6102606004803603602081101561056357600080fd5b50356001600160a01b0316611469565b61035f6115d2565b61035f6115e1565b610260600480360360e081101561059957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356115f0565b610260600480360360208110156105ea57600080fd5b503563ffffffff166117f0565b6103836004803603604081101561060d57600080fd5b506001600160a01b038135811691602001351661191c565b610260611939565b600d54600114610676576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d55841515806106895750600084115b6106c45760405162461bcd60e51b81526004018080602001828103825260238152602001806123cb6023913960400191505060405180910390fd5b6000806106cf610bab565b5091509150816001600160701b0316871080156106f45750806001600160701b031686105b610745576040805162461bcd60e51b815260206004820152601f60248201527f4d6565726b61743a20494e53554646494349454e545f4c495155494449545900604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107835750806001600160a01b0316896001600160a01b031614155b6107ca576040805162461bcd60e51b81526020600482015260136024820152724d6565726b61743a20494e56414c49445f544f60681b604482015290519081900360640190fd5b8a156107db576107db828a8d611a99565b89156107ec576107ec818a8c611a99565b86156108a757886001600160a01b03166321d8d577338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561088e57600080fd5b505af11580156108a2573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108ed57600080fd5b505afa158015610901573d6000803e3d6000fd5b505050506040513d602081101561091757600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561096357600080fd5b505afa158015610977573d6000803e3d6000fd5b505050506040513d602081101561098d57600080fd5b5051925060009150506001600160701b0385168a900383116109b05760006109bf565b89856001600160701b03160383035b9050600089856001600160701b03160383116109dc5760006109eb565b89856001600160701b03160383035b905060008211806109fc5750600081115b610a375760405162461bcd60e51b81526004018080602001828103825260228152602001806123836022913960400191505060405180910390fd5b600c5463ffffffff90811690600090610a7690610a589086908590611c3316565b610a6a8861271063ffffffff611c3316565b9063ffffffff611c9616565b90506000610a8d610a58858563ffffffff611c3316565b9050610abf6305f5e100610ab36001600160701b038c8116908c1663ffffffff611c3316565b9063ffffffff611c3316565b610acf838363ffffffff611c3316565b1015610b0f576040805162461bcd60e51b815260206004820152600a6024820152694d6565726b61743a204b60b01b604482015290519081900360640190fd5b505050610b1e84848888611ce6565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600d55505050505050505050565b6040518060400160405280600b81526020016a4d6565726b6174204c507360a81b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610be2338484611ea9565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c86576001600160a01b0384166000908152600260209081526040808320338452909152902054610c61908363ffffffff611c9616565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c91848484611f0b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610d1e576040805162461bcd60e51b815260206004820152601260248201527126b2b2b935b0ba1d102327a92124a22222a760711b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b600c5463ffffffff1681565b60095481565b600a5481565b6000600d54600114610daf576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d81905580610dbf610bab565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610e1357600080fd5b505afa158015610e27573d6000803e3d6000fd5b505050506040513d6020811015610e3d57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e9057600080fd5b505afa158015610ea4573d6000803e3d6000fd5b505050506040513d6020811015610eba57600080fd5b505190506000610ed9836001600160701b03871663ffffffff611c9616565b90506000610ef6836001600160701b03871663ffffffff611c9616565b90506000610f048787611fc5565b60005490915080610f4157610f2d6103e8610a6a610f28878763ffffffff611c3316565b612138565b9850610f3c60006103e861218a565b610f90565b610f8d6001600160701b038916610f5e868463ffffffff611c3316565b81610f6557fe5b046001600160701b038916610f80868563ffffffff611c3316565b81610f8757fe5b04612220565b98505b60008911610fcf5760405162461bcd60e51b81526004018080602001828103825260268152602001806123a56026913960400191505060405180910390fd5b610fd98a8a61218a565b610fe586868a8a611ce6565b811561101557600854611011906001600160701b0380821691600160701b90041663ffffffff611c3316565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600d5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600d546001146110d8576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d819055806110e8610bab565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561114457600080fd5b505afa158015611158573d6000803e3d6000fd5b505050506040513d602081101561116e57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156111bc57600080fd5b505afa1580156111d0573d6000803e3d6000fd5b505050506040513d60208110156111e657600080fd5b5051306000908152600160205260408120549192506112058888611fc5565b6000549091508061121c848763ffffffff611c3316565b8161122357fe5b049a5080611237848663ffffffff611c3316565b8161123e57fe5b04995060008b118015611251575060008a115b61128c5760405162461bcd60e51b815260040180806020018281038252602681526020018061235d6026913960400191505060405180910390fd5b6112963084612238565b6112a1878d8d611a99565b6112ac868d8c611a99565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561136857600080fd5b505afa15801561137c573d6000803e3d6000fd5b505050506040513d602081101561139257600080fd5b505193506113a285858b8b611ce6565b81156113d2576008546113ce906001600160701b0380821691600160701b90041663ffffffff611c3316565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600d81905550915091565b6040518060400160405280600a81526020016904d4545524b41542d4c560b41b81525081565b6000610be2338484611f0b565b6103e881565b600d546001146114b2576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611561928592879261155c926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561152457600080fd5b505afa158015611538573d6000803e3d6000fd5b505050506040513d602081101561154e57600080fd5b50519063ffffffff611c9616565b611a99565b600854604080516370a0823160e01b815230600482015290516115c8928492879261155c92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b15801561152457600080fd5b50506001600d5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611638576040805162461bcd60e51b815260206004820152601060248201526f1359595c9ad85d0e881156141254915160821b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611753573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117895750886001600160a01b0316816001600160a01b0316145b6117da576040805162461bcd60e51b815260206004820152601a60248201527f4d6565726b61743a20494e56414c49445f5349474e4154555245000000000000604482015290519081900360640190fd5b6117e5898989611ea9565b505050505050505050565b60008163ffffffff161161184b576040805162461bcd60e51b815260206004820152601960248201527f4d6565726b6174506169723a206c6f776572207468656e203000000000000000604482015290519081900360640190fd5b6005546001600160a01b031633146118a3576040805162461bcd60e51b815260206004820152601660248201527526b2b2b935b0ba2830b4b91d102327a92124a22222a760511b604482015290519081900360640190fd5b6103e88163ffffffff161115611900576040805162461bcd60e51b815260206004820152601a60248201527f4d6565726b6174506169723a20464f5242494444454e5f464545000000000000604482015290519081900360640190fd5b600c805463ffffffff191663ffffffff92909216919091179055565b600260209081526000928352604080842090915290825290205481565b600d54600114611982576040805162461bcd60e51b815260206004820152600f60248201526e1359595c9ad85d0e881313d0d2d151608a1b604482015290519081900360640190fd5b6000600d55600654604080516370a0823160e01b81523060048201529051611a92926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d60208110156119fd57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611a4a57600080fd5b505afa158015611a5e573d6000803e3d6000fd5b505050506040513d6020811015611a7457600080fd5b50516008546001600160701b0380821691600160701b900416611ce6565b6001600d55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611b465780518252601f199092019160209182019101611b27565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611ba8576040519150601f19603f3d011682016040523d82523d6000602084013e611bad565b606091505b5091509150818015611bdb575080511580611bdb5750808060200190516020811015611bd857600080fd5b50515b611c2c576040805162461bcd60e51b815260206004820152601860248201527f4d6565726b61743a205452414e534645525f4641494c45440000000000000000604482015290519081900360640190fd5b5050505050565b6000811580611c4e57505080820282828281611c4b57fe5b04145b610be6576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610be6576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611d0457506001600160701b038311155b611d49576040805162461bcd60e51b81526020600482015260116024820152704d6565726b61743a204f564552464c4f5760781b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d7957506001600160701b03841615155b8015611d8d57506001600160701b03831615155b15611dfe578063ffffffff16611dbb85611da6866122d6565b6001600160e01b03169063ffffffff6122e816565b600980546001600160e01b03929092169290920201905563ffffffff8116611de684611da6876122d6565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611f34908263ffffffff611c9616565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611f69908263ffffffff61230d16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561201657600080fd5b505afa15801561202a573d6000803e3d6000fd5b505050506040513d602081101561204057600080fd5b5051600b546001600160a01b03821615801594509192509061212457801561211f576000612083610f286001600160701b0388811690881663ffffffff611c3316565b9050600061209083612138565b90508082111561211c5760006120c36002610ab36120b4868663ffffffff611c9616565b6000549063ffffffff611c3316565b905060006120f86120db84600263ffffffff611c3316565b6120ec86600363ffffffff611c3316565b9063ffffffff61230d16565b9050600081838161210557fe5b049050801561211857612118878261218a565b5050505b50505b612130565b8015612130576000600b555b505092915050565b6000600382111561217b575080600160028204015b818110156121755780915060028182858161216457fe5b04018161216d57fe5b04905061214d565b50612185565b8115612185575060015b919050565b60005461219d908263ffffffff61230d16565b60009081556001600160a01b0383168152600160205260409020546121c8908263ffffffff61230d16565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081831061222f5781612231565b825b9392505050565b6001600160a01b038216600090815260016020526040902054612261908263ffffffff611c9616565b6001600160a01b0383166000908152600160205260408120919091555461228e908263ffffffff611c9616565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161230557fe5b049392505050565b80820182811015610be6576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe4d6565726b61743a20494e53554646494349454e545f4c49515549444954595f4255524e45444d6565726b61743a20494e53554646494349454e545f494e5055545f414d4f554e544d6565726b61743a20494e53554646494349454e545f4c49515549444954595f4d494e5445444d6565726b61743a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a723158203e4cdfe4a2c857b347361b3b60b3595e9cdcb946c7e9d11407d818baebb9802364736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.