Contract 0x4b6dae049a35196a773028b2e835cccce9dd4723 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf580e14e6a8c11d39b30e96d896749bff4160fdef78d0814362d9b38fcc932ceInitialize Lendi...638884802023-02-23 20:29:4524 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000125840.1
0x6a9e5e1eb57bd1fc90d728c24c12a02b549793e425a992215f8fe63edc21e7f5Initialize Lendi...638884732023-02-23 20:29:4324 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000125840.1
0xc155f7df64b4ce48dfe5624ba35072de88c79256a5e50e9d124a85cb4b0c1e8cCreate Borrowabl...638884542023-02-23 20:29:3824 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000386380.1
0x21c19106d5005d435daa14a7cb61bff16b8fb1ec4996d8a7a9f73b49e68f89c8Create Borrowabl...638884462023-02-23 20:29:3524 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000386370.1
0xa237ed8586504af576f24041e3e96ff8a7d36782125651529464f74abdfba2d4Create Collatera...638884352023-02-23 20:29:3324 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000429250.1
0x964bdabcebe700dc364188436ec20682a937895d9c4fe910ac16c2cce49a6750Create Borrowabl...638884262023-02-23 20:29:3024 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000386380.1
0xe249b41803b41cde3f3ebe43a95289c931a4e058976792e31a867a5b01fada2dCreate Borrowabl...638884182023-02-23 20:29:2824 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000386370.1
0xefbd566ff215fe67ee68ce9cc1400553508b2a3f05d076491faa07154bd1a912Create Collatera...638884092023-02-23 20:29:2524 days 22 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000429250.1
0x71a61637360ba6e9e785cd3597061b9f01f6fec85e533bdd2df7483515df55faInitialize Lendi...638356372023-02-23 16:39:2725 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000061590.1
0x708bcd22fdc50c54253b191fedc950b19932ec305d0a33407d408551110e4273Create Borrowabl...638356222023-02-23 16:39:2325 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000321290.1
0xd7107a047e8a5906e5768001624ca7b4c80735f0f753516256f47784e48f0ff4Create Borrowabl...638356142023-02-23 16:39:2125 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000321280.1
0x83c594f2bf2f279bf8731fa7093c0845cb6800840f600283281cb66074eec97bCreate Collatera...638356062023-02-23 16:39:1925 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000364170.1
0xfae689bd7704052b53345cf71dff7c8246f095dc6c5bfe3e6941933ff997a24bInitialize Lendi...638355472023-02-23 16:39:0525 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000061590.1
0x7e7b1bcd868a09ef71c82e0b9bf8bda10509530375c87d8fd0a780a89d8fe82aCreate Borrowabl...638355312023-02-23 16:39:0125 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000321290.1
0xf13cecaac015341b7702cbc4565b364a96f30cce8bc2f51827d6fcf3fc6c2d9eCreate Borrowabl...638355232023-02-23 16:38:5925 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000321280.1
0x38ed0fd884a9d1cb70df4ccd7600485be1c2ee2dec53107f522f6e70c249e735Create Collatera...638355152023-02-23 16:38:5725 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000364170.1
0xba48a5b2f46a9d2867f92eb950496b71c6df4e28576298597a7a653894e11bc7Initialize Lendi...638354412023-02-23 16:38:3825 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000061590.1
0x9cfc67ad2c8fec66dc15fabf2730b634e34ad724d0564b33fc3514b29ed594daCreate Borrowabl...638354262023-02-23 16:38:3425 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000321290.1
0x6dd9f6e8a5b13889e44ff3213d775776f9d912f2b36915bac3949c9bbecb2b93Create Borrowabl...638354172023-02-23 16:38:3225 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000321280.1
0xcb6f1005e0e7a7f47f162c8049135b4e0c5b32d0a5a38f7fee8da59d95e72b4eCreate Collatera...638354092023-02-23 16:38:3025 days 2 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.00036620.10058
0xeee3bc4a7e31f7d29430fe53a2e696bdf05a86b432c2297fe74b57ed3a9d409eInitialize Lendi...619142812023-02-17 22:41:2030 days 20 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000109030.1
0xfb420ed55c56a7f02c1894f1b0439446756300156941c1ffd67d3bcb0eab442aInitialize Lendi...619142752023-02-17 22:41:1830 days 20 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000109870.1
0x62204f8489600efbfe362dc2557b53a2b731d28ac8806df794b004430f9eea7fInitialize Lendi...619142682023-02-17 22:41:1630 days 20 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000109030.1
0xa18c83e74a0be831e081cb2d1083c35f61a22e687431651ffd38526d8e2b2f6cCreate Borrowabl...619142482023-02-17 22:41:0930 days 20 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000369580.1
0x094481b6e710d96903f7429a4593df2179e919fa11696da7e52cc56a01d34198Create Borrowabl...619142412023-02-17 22:41:0730 days 20 hrs ago0x5b0390bccca1f040d8993eb6e4ce8ded93721765 IN  0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH0.000369570.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x7fbcfc2e77bac72618912c5e26712419463b05b45e2e35a28ca28fe9fbe71a48718219032023-03-20 15:53:283 hrs 23 mins ago 0x6d3b2d168fba1c6d4cefade730a72d24a675e4e9 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x60fe5424b69a916758e741805d7ec8130e6b9a08d282d815da299bf3e7d977ca716906252023-03-20 6:53:0212 hrs 24 mins ago 0xbc831b33fbaca77252abb620a7842347d29b90af 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x4f617dfe566953b81480d90cb66b4719471103097f36d9564d01006ed68b0581716427512023-03-20 3:30:1115 hrs 47 mins ago 0xbc831b33fbaca77252abb620a7842347d29b90af 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x8e706afe766054a61f1cac633e3e756bf77163c4124111efe91b5857f16c42d9714021282023-03-19 10:42:261 day 8 hrs ago 0xbc831b33fbaca77252abb620a7842347d29b90af 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x59e1702580cad3f137498033f91b2ad28d802fef90a9e3d149fde010b55b971d713934072023-03-19 10:05:521 day 9 hrs ago 0xf64a9ebc4c986735ad318ab58baa5e10b749b3b6 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x183b74c93f3a5c54ce5b8ec31442d257089ec60bee448713cca3c99fed738819713909142023-03-19 9:55:221 day 9 hrs ago 0x6d3b2d168fba1c6d4cefade730a72d24a675e4e9 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x102fc3607d934e3f343a495734c7f0ee2c7e5fbf05368af129bd849f2cfaca8d713904562023-03-19 9:53:261 day 9 hrs ago 0xbc831b33fbaca77252abb620a7842347d29b90af 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xf46fa18b6691aa9e7487f9a2e940168fce98b1c3b8c2f59a65a27338ef86e654713878672023-03-19 9:42:421 day 9 hrs ago 0xf64a9ebc4c986735ad318ab58baa5e10b749b3b6 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xcf1566cf0fc31b9763a8231c02686bb915040e7b6993566f0988d54538cc7052712032432023-03-18 20:30:461 day 22 hrs ago 0xf64a9ebc4c986735ad318ab58baa5e10b749b3b6 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xe39e9a6245073d483255247ef21bfe1fad728b8c71aab4049efda48f76a5be50712007162023-03-18 20:19:501 day 22 hrs ago 0xd280237390023dfe5683a036a1f0b8d1b6524b58 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xf3f425c9a1931d010dedefd2a9062c6d12d85e699996da212e3b303158f0ac3e712006232023-03-18 20:19:311 day 22 hrs ago 0xd389ce9c8727c621a9bceb08f314aea0c5fffa5c 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xd5e36e20696b3eb549d307030b6e2fdad0337e64829b3934322594fdfc3d0bc0708871542023-03-17 22:27:482 days 20 hrs ago 0xd4c70ec570e6a589016a9987ad96d98eda0782c1 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x588a35b5ff01b3529bc9eaaec1ecd7a804d28303b1b3c1425e243ec79f8f9e09707548362023-03-17 13:11:513 days 6 hrs ago 0xbc831b33fbaca77252abb620a7842347d29b90af 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xcd7d552328905995bc13ea324a7e7a5e3178faea83372955ba7657457b314321707196682023-03-17 10:46:293 days 8 hrs ago 0xd4c70ec570e6a589016a9987ad96d98eda0782c1 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x87b844ca1b4bc5a0f0a515d913732ec373d7d3e5232bf307154f7610859455de707058282023-03-17 9:49:283 days 9 hrs ago 0xd4c70ec570e6a589016a9987ad96d98eda0782c1 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x5ee69e8c90c105532f3c7f9310dcaced21721f737ba09ae1070394741ccc8254705739762023-03-17 0:35:093 days 18 hrs ago 0xbc831b33fbaca77252abb620a7842347d29b90af 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x7e06b2c8082f01650620ee27a0ae3fa8716b1e3ecb7a03c4874acfecf090ec68705247472023-03-16 20:54:483 days 22 hrs ago 0x1f6effc63b5622fb360f957842ebadc6ebd86620 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x92a66b26d008c7a76f107b0e9aae22d20f240b3b88c6eff21f108c0db9803bdf704671982023-03-16 16:50:364 days 2 hrs ago 0x6d3b2d168fba1c6d4cefade730a72d24a675e4e9 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x6fb1b48fdf02246f1a4d136108c0f2274c424c24a7c1e57d457e6d564bed4278704428422023-03-16 15:11:264 days 4 hrs ago 0xd4c70ec570e6a589016a9987ad96d98eda0782c1 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0xd030006688a2f6183c1019c4269db90e6a7eff5853bde38376b96c28bbe69faf704423032023-03-16 15:09:114 days 4 hrs ago 0xd4c70ec570e6a589016a9987ad96d98eda0782c1 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x58be0201dd0a015772b986825ed091f4af824314bc900db64fbf7d3dfeeb8b59704422042023-03-16 15:08:464 days 4 hrs ago 0xe7be453ffaf40b490b2e8713832123be9fda8156 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x1d9112e24804cfefd881b47c84cfe20c7921345bfe1b36203fe50023c07321e9703132992023-03-16 6:12:134 days 13 hrs ago 0xe7be453ffaf40b490b2e8713832123be9fda8156 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x012eca0716b7516ddc3a3e02db6e2db752eea643be3934e31e1e1c101d23c25d703130682023-03-16 6:11:144 days 13 hrs ago 0xe7be453ffaf40b490b2e8713832123be9fda8156 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x02dd4c2c77aa4592a4be9971f7f06320c800c1551e20949088b4b8a279aed2bd702517712023-03-16 1:47:134 days 17 hrs ago 0xc07f52b6c6cd1c2305335234228381368b5d7c82 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
0x43090d030da138775a7883ab34d260b3feb12991a7c51c03b280acc6f03b9b11702237332023-03-15 23:49:524 days 19 hrs ago 0xf64a9ebc4c986735ad318ab58baa5e10b749b3b6 0x4b6dae049a35196a773028b2e835cccce9dd47230 ETH
[ Download CSV Export 
Loading

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

Contract Name:
Factory

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 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/IBaseV1Pair.sol";
import "./interfaces/ITarotSolidlyPriceOracleV2.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;
    ITarotSolidlyPriceOracleV2 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,
        ITarotSolidlyPriceOracleV2 _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 = IBaseV1Pair(uniswapV2Pair).token0();
        token1 = IBaseV1Pair(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 {
        require(IBaseV1Pair(uniswapV2Pair).stable(), "Tarot: STABLE");
        (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"
        );

        tarotPriceOracle.getResult(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 kinkUtilizationRateLower() external view returns (uint256);

    function kinkUtilizationRateUpper() 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 NewKinkUtilizationRates(uint256 newKinkUtilizationRateLower, uint256 newKinkUtilizationRateUpper);
    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 _setKinkUtilizationRates(uint256 newKinkUtilizationRateLower, uint256 newKinkUtilizationRateUpper) 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 safetyMargin() external view returns (uint256);

    function mTolerance() external view returns (uint256);

    function liquidationIncentive() external view returns (uint256);

    function liquidationFee() external view returns (uint256);

    function liquidationPenalty() external view returns (uint256);

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

    function getReserves() external returns (uint112 reserve0, uint112 reserve1);

    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);
    event NewLiquidationFee(uint256 newLiquidationFee);
    event NewMTolerance(uint256 mTolerance);

    function M_TOLERANCE_MIN() external pure returns (uint256);
    
    function M_TOLERANCE_MAX() external pure returns (uint256);

    function SAFETY_MARGIN_MIN() external pure returns (uint256);

    function SAFETY_MARGIN_MAX() external pure returns (uint256);

    function LIQUIDATION_INCENTIVE_MIN() external pure returns (uint256);

    function LIQUIDATION_INCENTIVE_MAX() external pure returns (uint256);

    function LIQUIDATION_FEE_MAX() external pure returns (uint256);

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

    function _setSafetyMargin(uint256 newSafetyMargin) external;

    function _setLiquidationIncentive(uint256 newLiquidationIncentive) external;

    function _setLiquidationFee(uint256 newLiquidationFee) external;
    
    function _setMTolerance(uint256 newMTolerance) external;

    function isUnderlyingVaultToken() external view returns (bool);
}

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

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

    function stable() external view returns (bool);
    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 tokens() external view returns (address, address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function observationLength() external view returns (uint);
    function observations(uint) external view returns (
        uint timestamp,
        uint reserve0Cumulative,
        uint reserve1Cumulative
    );
    function currentCumulativePrices() external view returns (
        uint reserve0Cumulative,
        uint reserve1Cumulative,
        uint timestamp
    );

    function metadata() external view returns (uint, uint, uint, uint, bool, address, address);
}

File 9 of 9 : ITarotSolidlyPriceOracleV2.sol
pragma solidity >=0.5;

interface ITarotSolidlyPriceOracleV2 {
    function MIN_T() external pure returns (uint32);

    function getResult(address pair) external returns (uint112 reserve0, uint112 reserve1, uint32 T);
}

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

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 ITarotSolidlyPriceOracleV2","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 ITarotSolidlyPriceOracleV2","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516116b83803806116b8833981810160405260a081101561003357600080fd5b5080516020808301516040808501516060860151608090960151600080546001600160a01b03199081166001600160a01b03808a169182178455600280548416828a16179055600780548416828816179055600880548416828d161790556009805490931690851617909155845191825295810195909552825195969395919490927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92918290030190a160408051600081526001600160a01b038616602082015281517fa328ba21363a99cbf330243928bb26a15acf20bf43166ef838e67ff5d84d4ae7929181900390910190a15050505050611582806101366000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80639e1348e3116100ad578063d407112711610071578063d4071127146102e8578063db5a269014610305578063e9c714f21461030d578063eb5ab75f14610315578063f851a4401461033b5761012c565b80639e1348e314610248578063b1ccc03e14610250578063b658ca7514610276578063b71d1a0c1461029c578063cbed6d71146102c25761012c565b806349a78838116100f457806349a78838146101ee578063714c0206146102145780637a4660d51461022e578063822d73b214610236578063998c077d1461023e5761012c565b80630572bf5f1461013157806323c6145d1461019457806326782247146101d6578063345ef941146101de57806334fb08a8146101e6575b600080fd5b6101576004803603602081101561014757600080fd5b50356001600160a01b0316610343565b60408051951515865262ffffff90941660208601526001600160a01b03928316858501529082166060850152166080830152519081900360a00190f35b6101ba600480360360208110156101aa57600080fd5b50356001600160a01b031661038a565b604080516001600160a01b039092168252519081900360200190f35b6101ba610524565b6101ba610533565b6101ba610542565b6101ba6004803603602081101561020457600080fd5b50356001600160a01b0316610551565b61021c6106e5565b60408051918252519081900360200190f35b6101ba6106eb565b6101ba6106fa565b610246610709565b005b6101ba610811565b6102466004803603602081101561026657600080fd5b50356001600160a01b0316610820565b6102466004803603602081101561028c57600080fd5b50356001600160a01b03166108d8565b610246600480360360208110156102b257600080fd5b50356001600160a01b0316610ea1565b6101ba600480360360208110156102d857600080fd5b50356001600160a01b0316610f59565b6101ba600480360360208110156102fe57600080fd5b50356110eb565b6101ba611112565b610246611121565b6102466004803603602081101561032b57600080fd5b50356001600160a01b0316611229565b6101ba6112e1565b60056020526000908152604090208054600182015460029092015460ff82169262ffffff610100840416926001600160a01b03640100000000909104811692918116911685565b6000610395826112f0565b50506001600160a01b0382811660009081526005602052604090205464010000000090041615610404576040805162461bcd60e51b81526020600482015260156024820152745461726f743a20414c52454144595f45584953545360581b604482015290519081900360640190fd5b60085460408051637924fedd60e01b81526001600160a01b03858116600483015291519190921691637924fedd9160248083019260209291908290030181600087803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b505050506040513d602081101561047d57600080fd5b5051604080516312974c5b60e21b815290519192506001600160a01b03831691634a5d316c9160048082019260009290919082900301818387803b1580156104c457600080fd5b505af11580156104d8573d6000803e3d6000fd5b505050506104e5826113d0565b6001600160a01b039182166000908152600560205260409020805492821664010000000002640100000000600160c01b03199093169290921790915590565b6001546001600160a01b031681565b6004546001600160a01b031681565b6009546001600160a01b031681565b600061055c826112f0565b50506001600160a01b0382811660009081526005602052604090206001015416156105c6576040805162461bcd60e51b81526020600482015260156024820152745461726f743a20414c52454144595f45584953545360581b604482015290519081900360640190fd5b600754604080516354bcd7ad60e01b81526001600160a01b03858116600483015260006024830181905292519316926354bcd7ad92604480840193602093929083900390910190829087803b15801561061e57600080fd5b505af1158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b5051604080516312974c5b60e21b815290519192506001600160a01b03831691634a5d316c9160048082019260009290919082900301818387803b15801561068f57600080fd5b505af11580156106a3573d6000803e3d6000fd5b505050506106b0826113d0565b6001600160a01b03918216600090815260056020526040902060010180546001600160a01b0319169282169290921790915590565b60065490565b6008546001600160a01b031681565b6002546001600160a01b031681565b6003546001600160a01b0316331461075e576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b60028054600380546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927fa328ba21363a99cbf330243928bb26a15acf20bf43166ef838e67ff5d84d4ae792908290030190a1604080516001600160a01b03831681526000602082015281517f01d5e27ed5584d16c62ba1a14cfde0783f979d4797a3fc41342aff17d8ef5b41929181900390910190a15050565b6003546001600160a01b031681565b6002546001600160a01b03163314610875576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b600380546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f01d5e27ed5584d16c62ba1a14cfde0783f979d4797a3fc41342aff17d8ef5b41929181900390910190a15050565b806001600160a01b03166322be3de16040518163ffffffff1660e01b815260040160206040518083038186803b15801561091157600080fd5b505afa158015610925573d6000803e3d6000fd5b505050506040513d602081101561093b57600080fd5b505161097e576040805162461bcd60e51b815260206004820152600d60248201526c5461726f743a20535441424c4560981b604482015290519081900360640190fd5b60008061098a836112f0565b915091506109966114fc565b506001600160a01b03808416600090815260056020908152604091829020825160a081018452815460ff8116158015835262ffffff61010083041694830194909452640100000000900485169381019390935260018101548416606084015260020154909216608082015290610a53576040805162461bcd60e51b815260206004820152601a60248201527f5461726f743a20414c52454144595f494e495449414c495a4544000000000000604482015290519081900360640190fd5b60408101516001600160a01b0316610a9c5760405162461bcd60e51b815260040180806020018281038252602381526020018061152b6023913960400191505060405180910390fd5b60608101516001600160a01b0316610afb576040805162461bcd60e51b815260206004820152601e60248201527f5461726f743a20424f52524f5741424c45305f4e4f545f435245415445440000604482015290519081900360640190fd5b60808101516001600160a01b0316610b5a576040805162461bcd60e51b815260206004820152601e60248201527f5461726f743a20424f52524f5741424c45315f4e4f545f435245415445440000604482015290519081900360640190fd5b6009546040805163022351bf60e51b81526001600160a01b0387811660048301529151919092169163446a37e09160248083019260609291908290030181600087803b158015610ba957600080fd5b505af1158015610bbd573d6000803e3d6000fd5b505050506040513d6060811015610bd357600080fd5b505060408181015160608301516080840151835163c548e3c560e01b81526001600160a01b0389811660448301529283166064820152908216608482015260a06004820152601060a48201526f15185c9bdd0810dbdb1b185d195c985b60821b60c482015260e06024820152600660e48201526518d5105493d560d21b610104820152925191169163c548e3c59161012480830192600092919082900301818387803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b50505060608201516040808401518151636a030c1160e01b81526001600160a01b038881166044830152918216606482015260806004820152601060848201526f5461726f7420426f72726f7761626c6560801b60a482015260c06024820152600660c4820152651895105493d560d21b60e4820152915192169250636a030c119161010480830192600092919082900301818387803b158015610d3957600080fd5b505af1158015610d4d573d6000803e3d6000fd5b505050506080818101516040808401518151636a030c1160e01b81526001600160a01b03878116604483015291821660648201526004810194909452601060848501526f5461726f7420426f72726f7761626c6560801b60a485015260c06024850152600660c4850152651895105493d560d21b60e48501529051911691636a030c119161010480830192600092919082900301818387803b158015610df257600080fd5b505af1158015610e06573d6000803e3d6000fd5b5050506001600160a01b03808616600081815260056020908152604091829020805460ff19166001179055858201516060808801516080808a01518a8601518751958a168652928916958501959095529387168386015262ffffff169082015291518785169550938816937f4c3ab495dc8ebd1b2f3232d7632e54411bc7e4d111475e7fbbd5547d9a28c4959281900390910190a450505050565b6000546001600160a01b03163314610ef6576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b600180546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6000610f64826112f0565b50506001600160a01b038281166000908152600560205260409020600201541615610fce576040805162461bcd60e51b81526020600482015260156024820152745461726f743a20414c52454144595f45584953545360581b604482015290519081900360640190fd5b600754604080516354bcd7ad60e01b81526001600160a01b03858116600483015260016024830152915191909216916354bcd7ad9160448083019260209291908290030181600087803b15801561102457600080fd5b505af1158015611038573d6000803e3d6000fd5b505050506040513d602081101561104e57600080fd5b5051604080516312974c5b60e21b815290519192506001600160a01b03831691634a5d316c9160048082019260009290919082900301818387803b15801561109557600080fd5b505af11580156110a9573d6000803e3d6000fd5b505050506110b6826113d0565b6001600160a01b03918216600090815260056020526040902060020180546001600160a01b0319169282169290921790915590565b600681815481106110f857fe5b6000918252602090912001546001600160a01b0316905081565b6007546001600160a01b031681565b6001546001600160a01b03163314611176576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b60008054600180546001600160a01b038082166001600160a01b031980861682179687905590921690925560408051938316808552949092166020840152815190927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1604080516001600160a01b03831681526000602082015281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a15050565b6002546001600160a01b0316331461127e576040805162461bcd60e51b815260206004820152601360248201527215185c9bdd0e8815539055551213d492569151606a1b604482015290519081900360640190fd5b600480546001600160a01b038381166001600160a01b0319831681179093556040805191909216808252602082019390935281517f324bacfad26225895fcf55780481bec4ce49013c92500fa1c25626ff43fbf661929181900390910190a15050565b6000546001600160a01b031681565b600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561132c57600080fd5b505afa158015611340573d6000803e3d6000fd5b505050506040513d602081101561135657600080fd5b50516040805163d21220a760e01b815290519193506001600160a01b0385169163d21220a791600480820192602092909190829003018186803b15801561139c57600080fd5b505afa1580156113b0573d6000803e3d6000fd5b505050506040513d60208110156113c657600080fd5b5051919391925050565b6001600160a01b038116600090815260056020526040902054610100900462ffffff16156113fd576114f9565b60068054600181810183557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f90910180546001600160a01b038086166001600160a01b031992831681179093556040805160a0810182526000808252965462ffffff90811660208381019182528385018a8152606085018b8152608086018c8152998c526005909252949099209251835491519451861664010000000002640100000000600160c01b0319959093166101000263ffffff001991151560ff199093169290921716179290921691909117815594519385018054948216948316949094179093559051600290930180549390921692169190911790555b50565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091529056fe5461726f743a20434f4c4c41544552414c495a41424c455f4e4f545f43524541544544a265627a7a72315820e81859984e600a5321c605372831941a3c99e774148db86661dba8effe9b5e7964736f6c634300051000320000000000000000000000001bb4e4fc22b4e2470a05b60c2943f88b832cea100000000000000000000000001e6bf02f5bad0a8aa93df20955feff295d97f96900000000000000000000000035c052bbf8338b06351782a565aa9aad173432ea00000000000000000000000082b3413d575aa93806308a04b53c78ae2037da1100000000000000000000000036df0a76a124d8b2205fa11766ec2eff8ce38a35

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.