Contract 0xD7cABeF2c1fD77a31c5ba97C724B82d3e25fC83C 10

 
Txn Hash Method
Block
From
To
Value
0x78a6626676245c73bbcaa2873b806a055089be8cc8e6294062a1817fa063a31cInitialize Lendi...784409222023-03-03 18:25:38276 days 21 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001322226340.001
0x2654b5cf96971e93920ee90c96ab6687e6064b885e4d6e2e617ffedddd5cc931Create Borrowabl...784409042023-03-03 18:25:23276 days 21 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001346888430.001
0xe3b9eeada341c4444d2057e066c98c4da24626b783468fd041b2aa270efbc240Create Borrowabl...784409012023-03-03 18:25:23276 days 21 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001346887640.001
0xc3f1df2ed9817c632797a50e49eb5f37d25df336c25490a1e46db343df3b4409Create Collatera...784408972023-03-03 18:25:23276 days 21 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001342578470.001
0x8c8934c1c673d321da18767758e15098ac9319c53ed1b84a81f7fa0712e5c0e1Initialize Lendi...745740572023-02-15 22:02:30292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001948661840.001
0xc50c2e8f3cf6211b9de26b129d74fc17e6e5a5ef66ad90db25a32c56e6336369Create Borrowabl...745740462023-02-15 22:02:30292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001973323930.001
0x47318da9d4259424b1a30c0a25f2bf5f074cc0986d235acf2932fb4ca0e39bf4Create Borrowabl...745740432023-02-15 22:02:30292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001973323140.001
0xfc1b863b7478c81a7ec4434b66c9d64873f0e229ac93f07b62055154f4358525Create Collatera...745740402023-02-15 22:02:15292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001969013970.001
0xe215b99e7b209812bf48f27fc33e2849554f60ddd1094038c5963b1dcf38d32dInitialize Lendi...745739992023-02-15 22:02:00292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001943105180.001
0x7aced9cbac974afa72ee26c7bb7d946c06033b5a5b3028e5af04a264e38c06c9Create Borrowabl...745739852023-02-15 22:01:45292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001967767270.001
0x092747a8a499e5bc154737b59e76171ce98e7a3b6d420c39296607df99f66a59Create Borrowabl...745739782023-02-15 22:01:45292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001967766480.001
0xe54a0fa5c8c957b0476ef11174e61d72d280398b62b84b7d1d5726f124e33cbcCreate Collatera...745739742023-02-15 22:01:45292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001963457310.001
0x9db5bb34afdad33c111e134e1e51f72416e3e96eb6071abd37855fa378b3d1d6Initialize Lendi...745738732023-02-15 22:00:43292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001948661840.001
0xc9061af4a13d3eb2cb4577bf7547dfc209b78e9a323abd67a422673d35eb3b84Create Borrowabl...745736042023-02-15 21:58:28292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001973323930.001
0x23b384aa7ba44254146c7508b1eb3bd94e726fdd23e2ba937388f04c1fed4183Create Borrowabl...745736012023-02-15 21:58:28292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001973323140.001
0x4e42cd19f04c64fa06f7e1b1396c72e76d6dffa78211ac7fa720e49be80b72b8Create Collatera...745735952023-02-15 21:58:28292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001969013970.001
0x4e577717c353df26bd33d7e6e25cc5f5a5361e18c7bb8870654d236f3b50c03dInitialize Lendi...745735462023-02-15 21:57:58292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001948661840.001
0x04ad40ff115c34917b4a9bb3ea51cf30ad74fc15c924d776b6e9061d9e2a9b58Initialize Lendi...745733872023-02-15 21:56:28292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001948657730.001
0x4cc37a8cc34966fe0025896be44300717fac77454ce06885273a623164c71866Create Borrowabl...745733712023-02-15 21:56:13292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001973323930.001
0x2033de6078f02682db2bdea1630fb1572af0940daf3738cee6165376f79ba88dCreate Borrowabl...745733572023-02-15 21:56:13292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001973323140.001
0xe05025e4b3da9834f20baf647247407b6780d5ab2d61d2e4f4644ef8888362a4Create Collatera...745733502023-02-15 21:56:13292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001969013970.001
0xfad4fa1744a1927dcac23843f6a32ceaac9382d0673f3f31faad5ab321bdc29dInitialize Lendi...745732732023-02-15 21:55:28292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001948661840.001
0x81d91997296eebaa7fc0ab5b45f300bf76ab5b3af4948137f220eaa83469ed74Create Borrowabl...745732512023-02-15 21:55:13292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001757643720.001
0x9be102ba2ab6894850de0bec4bfb2433e00e0e1fb3db79880ce8faf18c31045fCreate Borrowabl...745732422023-02-15 21:55:13292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.0001757642930.001
0xb275ef87f615370ecc696bcf781f9686f70aa9f7a22ed357be4dd819002499e7Create Collatera...745732302023-02-15 21:55:13292 days 18 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH0.000208461230.001
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x670ffc00adef6bccb927a0a911804c9d3c85c6fd0fe5bff941d200e4535ccdda1075485202023-07-30 5:43:37128 days 10 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x76b62bc2c9de459ab7e20b224a0d3526629b43db363026b3b2063f1d03ed1d8c1075469722023-07-30 4:52:01128 days 11 hrs ago 0x7175bf125e3294d19c33b30f256cff90f7414990 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x4f5a0266131f2b42e8192f68416c794f121112ce3d40cfb6f3c9a96d3fc225671075465272023-07-30 4:37:11128 days 11 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x95cf115bc5db0044f289c383ba8b1982ff405ed7efe8401c8c0e68a1a05d3a8e1075464822023-07-30 4:35:41128 days 11 hrs ago 0xdb37a76ffc5aaf97a40c0d542ff7a4eca33380ab 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xe7bd73fa1a898e2befdee046b352ff424c10de98025cf594db1a16edfbdfc92d1075392452023-07-30 0:34:27128 days 15 hrs ago 0xce38d8514b234bab4df7ec682ec3419f6c228d8c 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xe91d71dbe2e1402ada9d76f3f07db807dd978a4602677b242432cac1fde759991075256902023-07-29 17:02:37128 days 23 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x24cf3bb5ff2f59ad5d90b865ee7bdaeb349ee9728f8a2bcf1a41e019e46dae311075238762023-07-29 16:02:09129 days 10 mins ago 0xabcc0531d4cf0b4d6a92f1e5668696033a96f6d2 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x295b36f8b47f03fc7bd8f4927af1efaa4234a19a99ddeb4b051dbe981cd714a81075237822023-07-29 15:59:01129 days 13 mins ago 0xa3dabf80c30f2f474fd7da4d99f2b00bbeef87e6 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xc6a2943eee0984d2520b296c87b91ef55d4c010c2799203eba01a2366347a47c1075230072023-07-29 15:33:11129 days 39 mins ago 0xa3dabf80c30f2f474fd7da4d99f2b00bbeef87e6 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xbdb4bc6e42feae0569ed60596fd63a081527929f7afd5972a4d744078c77e7591075219792023-07-29 14:58:55129 days 1 hr ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x9cca4c4d19c5b3f9ca6d7494d7d1879c8f25646902f1f7bbda294c7bdbc9270e1075219342023-07-29 14:57:25129 days 1 hr ago 0xa3dabf80c30f2f474fd7da4d99f2b00bbeef87e6 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xc3e3b23e4497a25d8573050a876ef923d010331d14970dd03cec68d6e9d57feb1075111412023-07-29 8:57:39129 days 7 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x8321eb5bee9e08c40730d55400c62962c860410d4f9ff1a39b434c4f5c3659be1075110192023-07-29 8:53:35129 days 7 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xe6e184defbb470dac8a7188859a4eaefe8d5b617dbef349cc7cd6b95b62ab07c1075102342023-07-29 8:27:25129 days 7 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x2f701fb7282f812f7b71a5c4b2f40f17dcbac76b44ee3befb618e9c05f81aec81075100802023-07-29 8:22:17129 days 7 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xda3d703244a4f1d089e9a808824ba25e64a1029286db4e673e6f30fee0ec8a701075082252023-07-29 7:20:27129 days 8 hrs ago 0x1635353098ffb668e049c41e4d1546af682bc798 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x415963b67a38872ef7f6efca63a5ec724b010a39106f14a7f148eeb2e9573cbc1075012122023-07-29 3:26:41129 days 12 hrs ago 0x71abcdbb9af523d40424b708532b8c843a37566c 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0xdf45eb66150539fb5116b7bcc2f62b5297766dd60fab5450b52fca5cf7ceea391075012042023-07-29 3:26:25129 days 12 hrs ago 0x0af2fdfde652310677ddf3b0bb6cd903476c4342 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x5d00a510cdf2751d4edea866a82225b7bf54cd7c3a43bc23ba2f34ed827f78501074896632023-07-28 21:01:43129 days 19 hrs ago 0xce38d8514b234bab4df7ec682ec3419f6c228d8c 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x9e93dd3ab79ae46410f15c4b8631fecfac2206721271b094b4c3f503d4fcd47f1074878282023-07-28 20:00:33129 days 20 hrs ago 0x9e254991db95404737ab4ce7f60b71f8f80af916 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x8675b39a1d97dc6874625c365c7fc26fca4ee52da4c3629138e736db0062f8e31074806602023-07-28 16:01:37130 days 10 mins ago 0xabcc0531d4cf0b4d6a92f1e5668696033a96f6d2 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x46a673d3505b477fd17976d273727c6908c288076bc8c2f4188e90ae7d17fa2c1074630572023-07-28 6:14:51130 days 9 hrs ago 0x0af2fdfde652310677ddf3b0bb6cd903476c4342 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x0ba5128c30651a9401fee550c5cc88b71527c83aae3213a9c48858bc3f11746e1074626072023-07-28 5:59:51130 days 10 hrs ago 0xdb37a76ffc5aaf97a40c0d542ff7a4eca33380ab 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x2547d3519b911dc067567d807531e834c19ac5fd54029e5fdae6cb72a1807b3e1074545982023-07-28 1:32:53130 days 14 hrs ago 0xdb37a76ffc5aaf97a40c0d542ff7a4eca33380ab 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
0x79d6ada4bdc9c66441ac720ccb101fa9f10c70d1784a1f4e05e5f4645fb3fc6f1074412052023-07-27 18:06:27130 days 22 hrs ago 0x0af2fdfde652310677ddf3b0bb6cd903476c4342 0xd7cabef2c1fd77a31c5ba97c724b82d3e25fc83c0 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
This contract matches the deployed ByteCode of the Source Code for Contract 0x1D90fDAc4DD30c3ba38d53f52A884F6e75d0989e
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Factory

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : Factory.sol
pragma solidity =0.5.16;

import "./interfaces/IFactory.sol";
import "./interfaces/IBDeployer.sol";
import "./interfaces/IBorrowable.sol";
import "./interfaces/ICDeployer.sol";
import "./interfaces/ICollateral.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IUniswapV2Pair.sol";
import "./interfaces/ITarotPriceOracle.sol";

contract Factory is IFactory {
    address public admin;
    address public pendingAdmin;
    address public reservesAdmin;
    address public reservesPendingAdmin;
    address public reservesManager;

    struct LendingPool {
        bool initialized;
        uint24 lendingPoolId;
        address collateral;
        address borrowable0;
        address borrowable1;
    }
    mapping(address => LendingPool) public getLendingPool; // get by UniswapV2Pair
    address[] public allLendingPools; // address of the UniswapV2Pair

    function allLendingPoolsLength() external view returns (uint256) {
        return allLendingPools.length;
    }

    IBDeployer public bDeployer;
    ICDeployer public cDeployer;
    ITarotPriceOracle public tarotPriceOracle;

    event LendingPoolInitialized(
        address indexed uniswapV2Pair,
        address indexed token0,
        address indexed token1,
        address collateral,
        address borrowable0,
        address borrowable1,
        uint256 lendingPoolId
    );
    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
    event NewAdmin(address oldAdmin, address newAdmin);
    event NewReservesPendingAdmin(
        address oldReservesPendingAdmin,
        address newReservesPendingAdmin
    );
    event NewReservesAdmin(address oldReservesAdmin, address newReservesAdmin);
    event NewReservesManager(
        address oldReservesManager,
        address newReservesManager
    );

    constructor(
        address _admin,
        address _reservesAdmin,
        IBDeployer _bDeployer,
        ICDeployer _cDeployer,
        ITarotPriceOracle _tarotPriceOracle
    ) public {
        admin = _admin;
        reservesAdmin = _reservesAdmin;
        bDeployer = _bDeployer;
        cDeployer = _cDeployer;
        tarotPriceOracle = _tarotPriceOracle;
        emit NewAdmin(address(0), _admin);
        emit NewReservesAdmin(address(0), _reservesAdmin);
    }

    function _getTokens(address uniswapV2Pair)
        private
        view
        returns (address token0, address token1)
    {
        token0 = IUniswapV2Pair(uniswapV2Pair).token0();
        token1 = IUniswapV2Pair(uniswapV2Pair).token1();
    }

    function _createLendingPool(address uniswapV2Pair) private {
        if (getLendingPool[uniswapV2Pair].lendingPoolId != 0) return;
        allLendingPools.push(uniswapV2Pair);
        getLendingPool[uniswapV2Pair] = LendingPool(
            false,
            uint24(allLendingPools.length),
            address(0),
            address(0),
            address(0)
        );
    }

    function createCollateral(address uniswapV2Pair)
        external
        returns (address collateral)
    {
        _getTokens(uniswapV2Pair);
        require(
            getLendingPool[uniswapV2Pair].collateral == address(0),
            "Tarot: ALREADY_EXISTS"
        );
        collateral = cDeployer.deployCollateral(uniswapV2Pair);
        ICollateral(collateral)._setFactory();
        _createLendingPool(uniswapV2Pair);
        getLendingPool[uniswapV2Pair].collateral = collateral;
    }

    function createBorrowable0(address uniswapV2Pair)
        external
        returns (address borrowable0)
    {
        _getTokens(uniswapV2Pair);
        require(
            getLendingPool[uniswapV2Pair].borrowable0 == address(0),
            "Tarot: ALREADY_EXISTS"
        );
        borrowable0 = bDeployer.deployBorrowable(uniswapV2Pair, 0);
        IBorrowable(borrowable0)._setFactory();
        _createLendingPool(uniswapV2Pair);
        getLendingPool[uniswapV2Pair].borrowable0 = borrowable0;
    }

    function createBorrowable1(address uniswapV2Pair)
        external
        returns (address borrowable1)
    {
        _getTokens(uniswapV2Pair);
        require(
            getLendingPool[uniswapV2Pair].borrowable1 == address(0),
            "Tarot: ALREADY_EXISTS"
        );
        borrowable1 = bDeployer.deployBorrowable(uniswapV2Pair, 1);
        IBorrowable(borrowable1)._setFactory();
        _createLendingPool(uniswapV2Pair);
        getLendingPool[uniswapV2Pair].borrowable1 = borrowable1;
    }

    function initializeLendingPool(address uniswapV2Pair) external {
        (address token0, address token1) = _getTokens(uniswapV2Pair);
        LendingPool memory lPool = getLendingPool[uniswapV2Pair];
        require(!lPool.initialized, "Tarot: ALREADY_INITIALIZED");

        require(
            lPool.collateral != address(0),
            "Tarot: COLLATERALIZABLE_NOT_CREATED"
        );
        require(
            lPool.borrowable0 != address(0),
            "Tarot: BORROWABLE0_NOT_CREATED"
        );
        require(
            lPool.borrowable1 != address(0),
            "Tarot: BORROWABLE1_NOT_CREATED"
        );

        (, , , , , bool oracleInitialized) =
            tarotPriceOracle.getPair(uniswapV2Pair);
        if (!oracleInitialized) tarotPriceOracle.initialize(uniswapV2Pair);

        ICollateral(lPool.collateral)._initialize(
            "Tarot Collateral",
            "cTAROT",
            uniswapV2Pair,
            lPool.borrowable0,
            lPool.borrowable1
        );
        IBorrowable(lPool.borrowable0)._initialize(
            "Tarot Borrowable",
            "bTAROT",
            token0,
            lPool.collateral
        );
        IBorrowable(lPool.borrowable1)._initialize(
            "Tarot Borrowable",
            "bTAROT",
            token1,
            lPool.collateral
        );

        getLendingPool[uniswapV2Pair].initialized = true;
        emit LendingPoolInitialized(
            uniswapV2Pair,
            token0,
            token1,
            lPool.collateral,
            lPool.borrowable0,
            lPool.borrowable1,
            lPool.lendingPoolId
        );
    }

    function _setPendingAdmin(address newPendingAdmin) external {
        require(msg.sender == admin, "Tarot: UNAUTHORIZED");
        address oldPendingAdmin = pendingAdmin;
        pendingAdmin = newPendingAdmin;
        emit NewPendingAdmin(oldPendingAdmin, newPendingAdmin);
    }

    function _acceptAdmin() external {
        require(msg.sender == pendingAdmin, "Tarot: UNAUTHORIZED");
        address oldAdmin = admin;
        address oldPendingAdmin = pendingAdmin;
        admin = pendingAdmin;
        pendingAdmin = address(0);
        emit NewAdmin(oldAdmin, admin);
        emit NewPendingAdmin(oldPendingAdmin, address(0));
    }

    function _setReservesPendingAdmin(address newReservesPendingAdmin)
        external
    {
        require(msg.sender == reservesAdmin, "Tarot: UNAUTHORIZED");
        address oldReservesPendingAdmin = reservesPendingAdmin;
        reservesPendingAdmin = newReservesPendingAdmin;
        emit NewReservesPendingAdmin(
            oldReservesPendingAdmin,
            newReservesPendingAdmin
        );
    }

    function _acceptReservesAdmin() external {
        require(msg.sender == reservesPendingAdmin, "Tarot: UNAUTHORIZED");
        address oldReservesAdmin = reservesAdmin;
        address oldReservesPendingAdmin = reservesPendingAdmin;
        reservesAdmin = reservesPendingAdmin;
        reservesPendingAdmin = address(0);
        emit NewReservesAdmin(oldReservesAdmin, reservesAdmin);
        emit NewReservesPendingAdmin(oldReservesPendingAdmin, address(0));
    }

    function _setReservesManager(address newReservesManager) external {
        require(msg.sender == reservesAdmin, "Tarot: UNAUTHORIZED");
        address oldReservesManager = reservesManager;
        reservesManager = newReservesManager;
        emit NewReservesManager(oldReservesManager, newReservesManager);
    }
}

File 2 of 9 : IFactory.sol
pragma solidity >=0.5.0;

interface IFactory {
	event LendingPoolInitialized(address indexed uniswapV2Pair, address indexed token0, address indexed token1,
		address collateral, address borrowable0, address borrowable1, uint lendingPoolId);
	event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);
	event NewAdmin(address oldAdmin, address newAdmin);
	event NewReservesPendingAdmin(address oldReservesPendingAdmin, address newReservesPendingAdmin);
	event NewReservesAdmin(address oldReservesAdmin, address newReservesAdmin);
	event NewReservesManager(address oldReservesManager, address newReservesManager);
	
	function admin() external view returns (address);
	function pendingAdmin() external view returns (address);
	function reservesAdmin() external view returns (address);
	function reservesPendingAdmin() external view returns (address);
	function reservesManager() external view returns (address);

	function getLendingPool(address uniswapV2Pair) external view returns (
		bool initialized, 
		uint24 lendingPoolId, 
		address collateral, 
		address borrowable0, 
		address borrowable1
	);
	function allLendingPools(uint) external view returns (address uniswapV2Pair);
	function allLendingPoolsLength() external view returns (uint);
	
	function bDeployer() external view returns (address);
	function cDeployer() external view returns (address);
	function tarotPriceOracle() external view returns (address);

	function createCollateral(address uniswapV2Pair) external returns (address collateral);
	function createBorrowable0(address uniswapV2Pair) external returns (address borrowable0);
	function createBorrowable1(address uniswapV2Pair) external returns (address borrowable1);
	function initializeLendingPool(address uniswapV2Pair) external;

	function _setPendingAdmin(address newPendingAdmin) external;
	function _acceptAdmin() external;
	function _setReservesPendingAdmin(address newPendingAdmin) external;
	function _acceptReservesAdmin() external;
	function _setReservesManager(address newReservesManager) external;
}

File 3 of 9 : IBDeployer.sol
pragma solidity >=0.5.0;

interface IBDeployer {
	function deployBorrowable(address uniswapV2Pair, uint8 index) external returns (address borrowable);
}

File 4 of 9 : IBorrowable.sol
pragma solidity >=0.5.0;

interface IBorrowable {
    /*** Tarot ERC20 ***/

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

    /*** Pool Token ***/

    event Mint(
        address indexed sender,
        address indexed minter,
        uint256 mintAmount,
        uint256 mintTokens
    );
    event Redeem(
        address indexed sender,
        address indexed redeemer,
        uint256 redeemAmount,
        uint256 redeemTokens
    );
    event Sync(uint256 totalBalance);

    function underlying() external view returns (address);

    function factory() external view returns (address);

    function totalBalance() external view returns (uint256);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function exchangeRate() external returns (uint256);

    function mint(address minter) external returns (uint256 mintTokens);

    function redeem(address redeemer) external returns (uint256 redeemAmount);

    function skim(address to) external;

    function sync() external;

    function _setFactory() external;

    /*** Borrowable ***/

    event BorrowApproval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Borrow(
        address indexed sender,
        address indexed borrower,
        address indexed receiver,
        uint256 borrowAmount,
        uint256 repayAmount,
        uint256 accountBorrowsPrior,
        uint256 accountBorrows,
        uint256 totalBorrows
    );
    event Liquidate(
        address indexed sender,
        address indexed borrower,
        address indexed liquidator,
        uint256 seizeTokens,
        uint256 repayAmount,
        uint256 accountBorrowsPrior,
        uint256 accountBorrows,
        uint256 totalBorrows
    );

    function BORROW_FEE() external pure returns (uint256);

    function collateral() external view returns (address);

    function reserveFactor() external view returns (uint256);

    function exchangeRateLast() external view returns (uint256);

    function borrowIndex() external view returns (uint256);

    function totalBorrows() external view returns (uint256);

    function borrowAllowance(address owner, address spender)
        external
        view
        returns (uint256);

    function borrowBalance(address borrower) external view returns (uint256);

    function borrowTracker() external view returns (address);

    function BORROW_PERMIT_TYPEHASH() external pure returns (bytes32);

    function borrowApprove(address spender, uint256 value)
        external
        returns (bool);

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

    function borrow(
        address borrower,
        address receiver,
        uint256 borrowAmount,
        bytes calldata data
    ) external;

    function liquidate(address borrower, address liquidator)
        external
        returns (uint256 seizeTokens);

    function trackBorrow(address borrower) external;

    /*** Borrowable Interest Rate Model ***/

    event AccrueInterest(
        uint256 interestAccumulated,
        uint256 borrowIndex,
        uint256 totalBorrows
    );
    event CalculateKink(uint256 kinkRate);
    event CalculateBorrowRate(uint256 borrowRate);

    function KINK_BORROW_RATE_MAX() external pure returns (uint256);

    function KINK_BORROW_RATE_MIN() external pure returns (uint256);

    function KINK_MULTIPLIER() external pure returns (uint256);

    function borrowRate() external view returns (uint256);

    function kinkBorrowRate() external view returns (uint256);

    function kinkUtilizationRate() external view returns (uint256);

    function adjustSpeed() external view returns (uint256);

    function rateUpdateTimestamp() external view returns (uint32);

    function accrualTimestamp() external view returns (uint32);

    function accrueInterest() external;

    /*** Borrowable Setter ***/

    event NewReserveFactor(uint256 newReserveFactor);
    event NewKinkUtilizationRate(uint256 newKinkUtilizationRate);
    event NewAdjustSpeed(uint256 newAdjustSpeed);
    event NewBorrowTracker(address newBorrowTracker);

    function RESERVE_FACTOR_MAX() external pure returns (uint256);

    function KINK_UR_MIN() external pure returns (uint256);

    function KINK_UR_MAX() external pure returns (uint256);

    function ADJUST_SPEED_MIN() external pure returns (uint256);

    function ADJUST_SPEED_MAX() external pure returns (uint256);

    function _initialize(
        string calldata _name,
        string calldata _symbol,
        address _underlying,
        address _collateral
    ) external;

    function _setReserveFactor(uint256 newReserveFactor) external;

    function _setKinkUtilizationRate(uint256 newKinkUtilizationRate) external;

    function _setAdjustSpeed(uint256 newAdjustSpeed) external;

    function _setBorrowTracker(address newBorrowTracker) external;
}

File 5 of 9 : ICDeployer.sol
pragma solidity >=0.5.0;

interface ICDeployer {
	function deployCollateral(address uniswapV2Pair) external returns (address collateral);
}

File 6 of 9 : ICollateral.sol
pragma solidity >=0.5.0;

interface ICollateral {
    /*** Tarot ERC20 ***/

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

    /*** Pool Token ***/

    event Mint(
        address indexed sender,
        address indexed minter,
        uint256 mintAmount,
        uint256 mintTokens
    );
    event Redeem(
        address indexed sender,
        address indexed redeemer,
        uint256 redeemAmount,
        uint256 redeemTokens
    );
    event Sync(uint256 totalBalance);

    function underlying() external view returns (address);

    function factory() external view returns (address);

    function totalBalance() external view returns (uint256);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function exchangeRate() external returns (uint256);

    function mint(address minter) external returns (uint256 mintTokens);

    function redeem(address redeemer) external returns (uint256 redeemAmount);

    function skim(address to) external;

    function sync() external;

    function _setFactory() external;

    /*** Collateral ***/

    function borrowable0() external view returns (address);

    function borrowable1() external view returns (address);

    function tarotPriceOracle() external view returns (address);

    function safetyMarginSqrt() external view returns (uint256);

    function liquidationIncentive() external view returns (uint256);

    function getPrices() external returns (uint256 price0, uint256 price1);

    function tokensUnlocked(address from, uint256 value)
        external
        returns (bool);

    function accountLiquidityAmounts(
        address account,
        uint256 amount0,
        uint256 amount1
    ) external returns (uint256 liquidity, uint256 shortfall);

    function accountLiquidity(address account)
        external
        returns (uint256 liquidity, uint256 shortfall);

    function canBorrow(
        address account,
        address borrowable,
        uint256 accountBorrows
    ) external returns (bool);

    function seize(
        address liquidator,
        address borrower,
        uint256 repayAmount
    ) external returns (uint256 seizeTokens);

    function flashRedeem(
        address redeemer,
        uint256 redeemAmount,
        bytes calldata data
    ) external;

    /*** Collateral Setter ***/

    event NewSafetyMargin(uint256 newSafetyMarginSqrt);
    event NewLiquidationIncentive(uint256 newLiquidationIncentive);

    function SAFETY_MARGIN_SQRT_MIN() external pure returns (uint256);

    function SAFETY_MARGIN_SQRT_MAX() external pure returns (uint256);

    function LIQUIDATION_INCENTIVE_MIN() external pure returns (uint256);

    function LIQUIDATION_INCENTIVE_MAX() external pure returns (uint256);

    function _initialize(
        string calldata _name,
        string calldata _symbol,
        address _underlying,
        address _borrowable0,
        address _borrowable1
    ) external;

    function _setSafetyMarginSqrt(uint256 newSafetyMarginSqrt) external;

    function _setLiquidationIncentive(uint256 newLiquidationIncentive) external;
}

File 7 of 9 : 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 8 of 9 : IUniswapV2Pair.sol
pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    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);
	
    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);
}

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

interface ITarotPriceOracle {
    event PriceUpdate(
        address indexed pair,
        uint256 priceCumulative,
        uint32 blockTimestamp,
        bool latestIsSlotA
    );

    function MIN_T() external pure returns (uint32);

    function getPair(address uniswapV2Pair)
        external
        view
        returns (
            uint256 priceCumulativeSlotA,
            uint256 priceCumulativeSlotB,
            uint32 lastUpdateSlotA,
            uint32 lastUpdateSlotB,
            bool latestIsSlotA,
            bool initialized
        );

    function initialize(address uniswapV2Pair) external;

    function getResult(address uniswapV2Pair)
        external
        returns (uint224 price, uint32 T);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"address","name":"_reservesAdmin","type":"address"},{"internalType":"contract IBDeployer","name":"_bDeployer","type":"address"},{"internalType":"contract ICDeployer","name":"_cDeployer","type":"address"},{"internalType":"contract ITarotPriceOracle","name":"_tarotPriceOracle","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"uniswapV2Pair","type":"address"},{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"collateral","type":"address"},{"indexed":false,"internalType":"address","name":"borrowable0","type":"address"},{"indexed":false,"internalType":"address","name":"borrowable1","type":"address"},{"indexed":false,"internalType":"uint256","name":"lendingPoolId","type":"uint256"}],"name":"LendingPoolInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldReservesAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newReservesAdmin","type":"address"}],"name":"NewReservesAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldReservesManager","type":"address"},{"indexed":false,"internalType":"address","name":"newReservesManager","type":"address"}],"name":"NewReservesManager","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldReservesPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newReservesPendingAdmin","type":"address"}],"name":"NewReservesPendingAdmin","type":"event"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"_acceptReservesAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newReservesManager","type":"address"}],"name":"_setReservesManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newReservesPendingAdmin","type":"address"}],"name":"_setReservesPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allLendingPools","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"allLendingPoolsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bDeployer","outputs":[{"internalType":"contract IBDeployer","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cDeployer","outputs":[{"internalType":"contract ICDeployer","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"uniswapV2Pair","type":"address"}],"name":"createBorrowable0","outputs":[{"internalType":"address","name":"borrowable0","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"uniswapV2Pair","type":"address"}],"name":"createBorrowable1","outputs":[{"internalType":"address","name":"borrowable1","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"uniswapV2Pair","type":"address"}],"name":"createCollateral","outputs":[{"internalType":"address","name":"collateral","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getLendingPool","outputs":[{"internalType":"bool","name":"initialized","type":"bool"},{"internalType":"uint24","name":"lendingPoolId","type":"uint24"},{"internalType":"address","name":"collateral","type":"address"},{"internalType":"address","name":"borrowable0","type":"address"},{"internalType":"address","name":"borrowable1","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"uniswapV2Pair","type":"address"}],"name":"initializeLendingPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reservesAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reservesManager","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"reservesPendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tarotPriceOracle","outputs":[{"internalType":"contract ITarotPriceOracle","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051611686380380611686833981810160405260a081101561003357600080fd5b5080516020808301516040808501516060860151608090960151600080546001600160a01b03199081166001600160a01b03808a169182178455600280548416828a16179055600780548416828816179055600880548416828d161790556009805490931690851617909155845191825295810195909552825195969395919490927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92918290030190a160408051600081526001600160a01b038616602082015281517fa328ba21363a99cbf330243928bb26a15acf20bf43166ef838e67ff5d84d4ae7929181900390910190a15050505050611550806101366000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80639e1348e3116100ad578063d407112711610071578063d4071127146102e8578063db5a269014610305578063e9c714f21461030d578063eb5ab75f14610315578063f851a4401461033b5761012c565b80639e1348e314610248578063b1ccc03e14610250578063b658ca7514610276578063b71d1a0c1461029c578063cbed6d71146102c25761012c565b806349a78838116100f457806349a78838146101ee578063714c0206146102145780637a4660d51461022e578063822d73b214610236578063998c077d1461023e5761012c565b80630572bf5f1461013157806323c6145d1461019457806326782247146101d6578063345ef941146101de57806334fb08a8146101e6575b600080fd5b6101576004803603602081101561014757600080fd5b50356001600160a01b0316610343565b60408051951515865262ffffff90941660208601526001600160a01b03928316858501529082166060850152166080830152519081900360a00190f35b6101ba600480360360208110156101aa57600080fd5b50356001600160a01b031661038a565b604080516001600160a01b039092168252519081900360200190f35b6101ba610524565b6101ba610533565b6101ba610542565b6101ba6004803603602081101561020457600080fd5b50356001600160a01b0316610551565b61021c6106e5565b60408051918252519081900360200190f35b6101ba6106eb565b6101ba6106fa565b610246610709565b005b6101ba610811565b6102466004803603602081101561026657600080fd5b50356001600160a01b0316610820565b6102466004803603602081101561028c57600080fd5b50356001600160a01b03166108d8565b610246600480360360208110156102b257600080fd5b50356001600160a01b0316610e6f565b6101ba600480360360208110156102d857600080fd5b50356001600160a01b0316610f27565b6101ba600480360360208110156102fe57600080fd5b50356110b9565b6101ba6110e0565b6102466110ef565b6102466004803603602081101561032b57600080fd5b50356001600160a01b03166111f7565b6101ba6112af565b60056020526000908152604090208054600182015460029092015460ff82169262ffffff610100840416926001600160a01b03640100000000909104811692918116911685565b6000610395826112be565b50506001600160a01b0382811660009081526005602052604090205464010000000090041615610404576040805162461bcd60e51b81526020600482015260156024820152745461726f743a20414c52454144595f45584953545360581b604482015290519081900360640190fd5b60085460408051637924fedd60e01b81526001600160a01b03858116600483015291519190921691637924fedd9160248083019260209291908290030181600087803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050506040513d602081101561047d57600080fd5b5051604080516312974c5b60e21b815290519192506001600160a01b03831691634a5d316c9160048082019260009290919082900301818387803b1580156104c457600080fd5b505af11580156104d8573d6000803e3d6000fd5b505050506104e58261139e565b6001600160a01b039182166000908152600560205260409020805492821664010000000002640100000000600160c01b03199093169290921790915590565b6001546001600160a01b031681565b6004546001600160a01b031681565b6009546001600160a01b031681565b600061055c826112be565b50506001600160a01b0382811660009081526005602052604090206001015416156105c6576040805162461bcd60e51b81526020600482015260156024820152745461726f743a20414c52454144595f45584953545360581b604482015290519081900360640190fd5b600754604080516354bcd7ad60e01b81526001600160a01b03858116600483015260006024830181905292519316926354bcd7ad92604480840193602093929083900390910190829087803b15801561061e57600080fd5b505af1158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b5051604080516312974c5b60e21b815290519192506001600160a01b03831691634a5d316c9160048082019260009290919082900301818387803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b505050506106b08261139e565b6001600160a01b03918216600090815260056020526040902060010180546001600160a01b0319169282169290921790915590565b60065490565b6008546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b0316331461075e576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b60028054600380546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fa328ba21363a99cbf330243928bb26a15acf20bf43166ef838e67ff5d84d4ae792908290030190a1604080516001600160a01b03831681526000602082015281517f01d5e27ed5584d16c62ba1a14cfde0783f979d4797a3fc41342aff17d8ef5b41929181900390910190a15050565b6003546001600160a01b031681565b6002546001600160a01b03163314610875576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b600380546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f01d5e27ed5584d16c62ba1a14cfde0783f979d4797a3fc41342aff17d8ef5b41929181900390910190a15050565b6000806108e4836112be565b915091506108f06114ca565b506001600160a01b03808416600090815260056020908152604091829020825160a081018452815460ff8116158015835262ffffff610100830416948301949094526401000000009004851693810193909352600181015484166060840152600201549092166080820152906109ad576040805162461bcd60e51b815260206004820152601a60248201527f5461726f743a20414c52454144595f494e495449414c495a4544000000000000604482015290519081900360640190fd5b60408101516001600160a01b03166109f65760405162461bcd60e51b81526004018080602001828103825260238152602001806114f96023913960400191505060405180910390fd5b60608101516001600160a01b0316610a55576040805162461bcd60e51b815260206004820152601e60248201527f5461726f743a20424f52524f5741424c45305f4e4f545f435245415445440000604482015290519081900360640190fd5b60808101516001600160a01b0316610ab4576040805162461bcd60e51b815260206004820152601e60248201527f5461726f743a20424f52524f5741424c45315f4e4f545f435245415445440000604482015290519081900360640190fd5b60095460408051630d3c450160e11b81526001600160a01b03878116600483015291516000939290921691631a788a029160248082019260c092909190829003018186803b158015610b0557600080fd5b505afa158015610b19573d6000803e3d6000fd5b505050506040513d60c0811015610b2f57600080fd5b5060a00151905080610ba2576009546040805163189acdbd60e31b81526001600160a01b0388811660048301529151919092169163c4d66de891602480830192600092919082900301818387803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b505050505b60408083015160608401516080850151835163c548e3c560e01b81526001600160a01b038a811660448301529283166064820152908216608482015260a06004820152601060a48201526f15185c9bdd0810dbdb1b185d195c985b60821b60c482015260e06024820152600660e48201526518d5105493d560d21b610104820152925191169163c548e3c59161012480830192600092919082900301818387803b158015610c4f57600080fd5b505af1158015610c63573d6000803e3d6000fd5b50505060608301516040808501518151636a030c1160e01b81526001600160a01b038981166044830152918216606482015260806004820152601060848201526f5461726f7420426f72726f7761626c6560801b60a482015260c06024820152600660c4820152651895105493d560d21b60e4820152915192169250636a030c119161010480830192600092919082900301818387803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506080828101516040808501518151636a030c1160e01b81526001600160a01b03888116604483015291821660648201526004810194909452601060848501526f5461726f7420426f72726f7761626c6560801b60a485015260c06024850152600660c4850152651895105493d560d21b60e48501529051911691636a030c119161010480830192600092919082900301818387803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b5050506001600160a01b03808716600081815260056020908152604091829020805460ff19166001179055868201516060808901516080808b01518b8601518751958a168652928916958501959095529387168386015262ffffff169082015291518885169550938916937f4c3ab495dc8ebd1b2f3232d7632e54411bc7e4d111475e7fbbd5547d9a28c4959281900390910190a45050505050565b6000546001600160a01b03163314610ec4576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6000610f32826112be565b50506001600160a01b038281166000908152600560205260409020600201541615610f9c576040805162461bcd60e51b81526020600482015260156024820152745461726f743a20414c52454144595f45584953545360581b604482015290519081900360640190fd5b600754604080516354bcd7ad60e01b81526001600160a01b03858116600483015260016024830152915191909216916354bcd7ad9160448083019260209291908290030181600087803b158015610ff257600080fd5b505af1158015611006573d6000803e3d6000fd5b505050506040513d602081101561101c57600080fd5b5051604080516312974c5b60e21b815290519192506001600160a01b03831691634a5d316c9160048082019260009290919082900301818387803b15801561106357600080fd5b505af1158015611077573d6000803e3d6000fd5b505050506110848261139e565b6001600160a01b03918216600090815260056020526040902060020180546001600160a01b0319169282169290921790915590565b600681815481106110c657fe5b6000918252602090912001546001600160a01b0316905081565b6007546001600160a01b031681565b6001546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1604080516001600160a01b03831681526000602082015281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6002546001600160a01b0316331461124c576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b600480546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f324bacfad26225895fcf55780481bec4ce49013c92500fa1c25626ff43fbf661929181900390910190a15050565b6000546001600160a01b031681565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156112fa57600080fd5b505afa15801561130e573d6000803e3d6000fd5b505050506040513d602081101561132457600080fd5b50516040805163d21220a760e01b815290519193506001600160a01b0385169163d21220a791600480820192602092909190829003018186803b15801561136a57600080fd5b505afa15801561137e573d6000803e3d6000fd5b505050506040513d602081101561139457600080fd5b5051919391925050565b6001600160a01b038116600090815260056020526040902054610100900462ffffff16156113cb576114c7565b60068054600181810183557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910180546001600160a01b038086166001600160a01b031992831681179093556040805160a0810182526000808252965462ffffff90811660208381019182528385018a8152606085018b8152608086018c8152998c526005909252949099209251835491519451861664010000000002640100000000600160c01b0319959093166101000263ffffff001991151560ff199093169290921716179290921691909117815594519385018054948216948316949094179093559051600290930180549390921692169190911790555b50565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fe5461726f743a20434f4c4c41544552414c495a41424c455f4e4f545f43524541544544a265627a7a72315820e994243e5296e306aa05225e407df38ebdf8af052fff4e4a373d2d3f6e1e72be64736f6c634300051000320000000000000000000000001bb4e4fc22b4e2470a05b60c2943f88b832cea100000000000000000000000001e6bf02f5bad0a8aa93df20955feff295d97f96900000000000000000000000054b00658f247ee34e8b23055b19d73217a7d54200000000000000000000000005f90e27c07b96641a52ff2335b15158e74e46401000000000000000000000000981bd9f77c8aafc14ebc86769503f86a3cc29af5

Block Transaction Difficulty Gas Used Reward
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.