Contract 0x32E4c68B3A4a813b710595AebA7f6B7604Ab9c15

 
Txn Hash Method
Block
From
To
Value
0xb538adcb5d6fa9d443032ff409802aae61f8e05e88d698bea0d96734e93fb77fBurn126792192021-06-21 18:19:231 day 1 hr ago0xaae0baad97b5f00dba39fe3887146567cccce7b7 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00503502634
0x1aef665ead48b3420c470c3eb69bfa1e38ab3c9af5b564c99ad5060c41b53fecBurn126758162021-06-21 5:40:091 day 14 hrs ago0x4e8b4273631c7c0fdc6d9187b2afb614dfb1079e IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.0036200220
0x52a69086c092b1fdb0974a77b8089363e53ed9f8a288da87f890b215fe22c452Burn126739682021-06-20 22:40:501 day 21 hrs ago0x67d6f959519731ea3402f23767585991f04cdb67 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00113083416.9
0x850c1298fe9615801ec0a6743a8ff15ad77cb47ba6038ecbef089bd1f6fceb31Burn126737512021-06-20 21:53:011 day 21 hrs ago0xec178cdaa24688365829f716639fd163a9b7189f IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00100700526.8
0x0dac0cff69690d80856e9c3febc19c6706838e6d8ac42acd3083a8deea8d1187Burn126724572021-06-20 17:12:542 days 2 hrs ago0x9e70c8a9e20c0dd13ade9e994c412e76e62df5fb IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00079903296.1
0x85a358b80d605855049650332a77ebfb6ff26f88f528946cde96c4ae2dcf2138Burn126721092021-06-20 15:59:132 days 3 hrs ago0x25c705bd4cafce51184b1e1986ababaec885579d IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00176655713
0x76e53569b3e16979e43392e9da4415cf1ab0f6d1b6a55eff45094155c5ada811Burn126704032021-06-20 9:20:032 days 10 hrs ago0x4e135eaf946157384efbc4e3a22d7cd60fcef9f9 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00066804395.1
0xbf83b4aba28dbd5f1a2f20693c5d69d896a4fd421d63ba0ef3da62feccf96d92Mint126697502021-06-20 6:52:322 days 12 hrs ago0x67eeae0a8946f5456002a7ea1a2d0547975336d8 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00201364911
0x38d62e61dec93eebdbc87ba51d0adc96c5fc86f1c19549f42f20aa0514ee0d2eBurn126682192021-06-20 1:08:162 days 18 hrs ago0x23671d505d1b14c562aca1ebc12f450c0ae40383 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00106177513.5
0x4b530fa48ef17e68a2b8eebfdc3b386ebdb6bbbea6eee06a31fae1b3b23dd6b7Burn126682192021-06-20 1:08:162 days 18 hrs ago0x23671d505d1b14c562aca1ebc12f450c0ae40383 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.0015298910
0xd54cb953f1979f2dde192680e294bd7ca4e384ee44c71c318f8f4f1811c754cfMint126628492021-06-19 5:10:253 days 14 hrs ago0xd42bd417c8e5042efe018f9bc49e28807a3d4b1f IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.0016475319
0xb082a8105ed13db7aa180a37aa848d9e1e19ea95c6a4799e07a65a79098cde2aBurn126621542021-06-19 2:28:213 days 17 hrs ago0xfdc9aa70138ace3fd25ce4522d7590f46d9f0e35 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.000550557
0x515e917cf0402bde7dbab19375ba2553cead11ec1a6cf1f7c842ed5b675a8819Burn126621542021-06-19 2:28:213 days 17 hrs ago0xfdc9aa70138ace3fd25ce4522d7590f46d9f0e35 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00088327856.5
0x6fef49a8a49a9e1a00ec23c969e76ce76f90b2997ed72a4f1f4e3f288a41e339Burn126592542021-06-18 15:44:134 days 4 hrs ago0x66a0cbd88b3155d56edae163fb3e5054579236ba IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00273214723
0xa2597a166b6a0f4de8b2714a4a386ca4e43f4352b930f6f3e8b1e2d686762ca8Mint126580342021-06-18 11:00:504 days 8 hrs ago0x4a3747c9bd7c7241fe27b2357b173771051bf446 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00201364911
0x32bec8e53fb7309c8534c3334bcf55b7ec80efa795255431990377f11005c843Burn126579522021-06-18 10:41:344 days 9 hrs ago0xed49d2b005390e683b05ea994f24c6685eae114a IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00288175822
0xba0278205fd95ff400d4b4c445f28bc069ae897621ebe9f73e0acf19527e45e0Mint126565582021-06-18 5:21:244 days 14 hrs ago0x66a0cbd88b3155d56edae163fb3e5054579236ba IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00127316046.9
0xacaf85be7778f7bf42d427b6bfb5f1bac2cb302b1ab4c645934824bf3cef5729Mint126562702021-06-18 4:19:514 days 15 hrs ago0xd6f2f8a2d6bd2f06234a95e61b55f41676cbe50d IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00274588515
0xb63f2d0fb562e166a50bf7dc18db2ddc67c1c513caeed2f5087ce65e70946f59Transfer126544362021-06-17 21:45:004 days 22 hrs ago0xe52e80d8bd63ffbfd6400c7412d4ed7a5055e8ae IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.001947950413.2
0xb8d97d9f77f2dd1ec5d1860600bdf431ada8ae9353dc2e22356a7efa429c4322Mint126541532021-06-17 20:40:214 days 23 hrs ago0x87e0c4b556fe69bc34ab746951bb739f103fce97 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00372305818.8
0xbc7ebb6bd620fa33cb2e5ce1974f3931b8ef2be6b64aea0fc82acc6c84965971Margin Trade126537452021-06-17 19:12:305 days 37 mins ago0x9cc10ca2e6b4b82f54602e4ac518df3db5d643aa IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.07591721632
0xaa80e51fb126b6e98e2783cbcdc243e885e60d35821081559af6a337e789cf7eBurn126524412021-06-17 14:20:255 days 5 hrs ago0xdeece5fa036d2bf58bce77f3efb651f95f68e5a1 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00380489228
0x6333951b4a6a27e46c8762805a123c7631e58bf886254939a3b0ecdccee72c14Mint126522492021-06-17 13:33:065 days 6 hrs ago0xd1216282b156a152fec1ac216804074860fe1508 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00345776483918.8888
0xd2c61e92e9ab61df7b2cf21d980b2419f56d67e48df5b45457be49141fd49063Burn126521472021-06-17 13:10:195 days 6 hrs ago0xdeece5fa036d2bf58bce77f3efb651f95f68e5a1 IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.00253401414
0x1323b2bc75f3247e35ebbf41d0300f037a870f7e3b1af099db9eff2fd40c690dMint126512412021-06-17 9:48:415 days 10 hrs ago0x965cf7e7d50b6f38378d8e4e712f1e796c0b9d9c IN  0x32e4c68b3a4a813b710595aeba7f6b7604ab9c150 Ether0.001943647224.2
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x44a4898ea24b7c837521b5b5eda0127d287123af3d41d7f82be7e508a31af807126363822021-06-15 2:36:527 days 17 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether0.55 Ether
0x5dd17f9b212385663a6358530d62f5528b21011538f0e45cacf97d27d92cef56125769282021-06-05 21:42:2716 days 22 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
0x193f378ccfa6baf5ba1b1e94f85308020cf57aad22b3c62247fea924b87ef613125749622021-06-05 14:28:3217 days 5 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
0xfc342ec037b5523b725f0080f055e685b9903ff24ccea32426ed68185a0f8a84125702462021-06-04 20:39:1017 days 23 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
0x1f32dfb53a17548f5d722b57e5f35f3c17abd9299f76a71c42e0a6d715441bc9125649752021-06-04 1:21:5918 days 18 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3.8 Ether
0x26c095bf545df6b2c29f048643476642bbdb6f5bab5623178be26284b7144bfb125553352021-06-02 13:22:1920 days 6 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether1 Ether
0x69d94b3d7c7e4e8ddbea9de62ed3b7802258dcc84d3c5baac053c23377b71c65125489572021-06-01 13:55:4821 days 5 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether0.5 Ether
0x8301d1bdd01949440f80a588f57c997454cfcfd3e33c94e0fc6ed43f1330d9ff125188632021-05-27 21:51:5425 days 21 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether10 Ether
0xe3d312ecbf4658526c8c96b02ee78dfb3063f59bcaf0ced11799605145525807125166432021-05-27 13:33:1526 days 6 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
0xb247628aa5bd08d51105dea063c8c0ee319eb25407c2fd3480e9a8430162386e125166092021-05-27 13:21:2826 days 6 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether8 Ether
0x173a5c220e0c02c9909290125f7080615eefdede3f8075c9374bd2f049b9b282125143932021-05-27 4:53:4926 days 14 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether5 Ether
0x548c8468a7bee9992dd25b82773dd8509019972c6ed8f1cce43bed334c2ede66125140012021-05-27 3:34:3826 days 16 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether6 Ether
0xb5bfc05f9f1dff8b83f304c1c5157a5f2c10880a2c49f35dc0ed29d90fa16577125121022021-05-26 20:30:0026 days 23 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
0x94dca6bd7630f4ebfa36b4732464cb69c5e39b7cf7d48629a01dbdf5cebcbb60125120002021-05-26 20:09:3926 days 23 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether1 Ether
0x8fbfff3b628429eda9652af10091780f678e516808590f1f053ce2273c54d48e125114482021-05-26 17:59:0627 days 1 hr ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether7 Ether
0x96278eb5773d60515bb5525a69dce98639e288f9b08cb99d39c4fc4abbfee73d125063252021-05-25 23:00:4527 days 20 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3.3 Ether
0xc77dfb48018c57573e8ef938429318ea437acffa801503b9e18cfbded8917a81125059382021-05-25 21:32:5927 days 22 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether5 Ether
0x4a97208c142a643375c8a1ee90f5d4999a95447f39bd5074dc709a130722aee1125051842021-05-25 18:41:4128 days 1 hr ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether4.5 Ether
0xe5ecffb8affa2be3d66cfff58ff8a84bbcada355014478957144b644ac44b13b125037382021-05-25 13:22:4828 days 6 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether6.5 Ether
0x683d661768a1fdac97fcb55f5f94ac18515a9c17dcae3570d5cd9076fac86fe2125005212021-05-25 1:18:0228 days 18 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether1.5 Ether
0x7ecb53b219b2b666e2bee4dc83f9b9de61ba5a6eefac19ace6c93246f6cb030f124999332021-05-24 23:04:2628 days 20 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether1.1 Ether
0xa8c98ba4764106d0d84625fe23a1c3afc85f284235ef60de106860a7d114c588124997652021-05-24 22:26:1328 days 21 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether1.2 Ether
0x7612d67add195e35854872e8a35110e34545015c307dc0a160ee75fe97d6d6dc124990742021-05-24 20:01:4328 days 23 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether6 Ether
0x6a090f57d45f2c9188d1190ce92205f7ee9c3d42dafe4f783478ed1ac343137d124971292021-05-24 13:00:0829 days 6 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
0x0f4c63ef44ac218458680d5f3b38148cb9f95e74d881ef13af36913fe2d94857124932442021-05-23 22:18:1429 days 21 hrs ago 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15 Wrapped Ether3 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LoanToken

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-03
*/

/**
 * Copyright 2017-2020, bZeroX, LLC <https://bzx.network/>. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0.
 */

pragma solidity 0.5.17;


interface IWeth {
    function deposit() external payable;
    function withdraw(uint256 wad) external;
}

contract IERC20 {
    string public name;
    uint8 public decimals;
    string public symbol;
    function totalSupply() public view returns (uint256);
    function balanceOf(address _who) public view returns (uint256);
    function allowance(address _owner, address _spender) public view returns (uint256);
    function approve(address _spender, uint256 _value) public returns (bool);
    function transfer(address _to, uint256 _value) public returns (bool);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract IWethERC20 is IWeth, IERC20 {}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b != 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Integer division of two numbers, rounding up and truncating the quotient
    */
    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        return divCeil(a, b, "SafeMath: division by zero");
    }

    /**
    * @dev Integer division of two numbers, rounding up and truncating the quotient
    */
    function divCeil(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b != 0, errorMessage);

        if (a == 0) {
            return 0;
        }
        uint256 c = ((a - 1) / b) + 1;

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function min256(uint256 _a, uint256 _b) internal pure returns (uint256) {
        return _a < _b ? _a : _b;
    }
}

/**
 * @title SignedSafeMath
 * @dev Signed math operations with safety checks that revert on error.
 */
library SignedSafeMath {
    int256 constant private _INT256_MIN = -2**255;

        /**
     * @dev Returns the multiplication of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        require(!(a == -1 && b == _INT256_MIN), "SignedSafeMath: multiplication overflow");

        int256 c = a * b;
        require(c / a == b, "SignedSafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two signed integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        require(b != 0, "SignedSafeMath: division by zero");
        require(!(b == -1 && a == _INT256_MIN), "SignedSafeMath: division overflow");

        int256 c = a / b;

        return c;
    }

    /**
     * @dev Returns the subtraction of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a), "SignedSafeMath: subtraction overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two signed integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a), "SignedSafeMath: addition overflow");

        return c;
    }
}

/**
 * @title Helps contracts guard against reentrancy attacks.
 * @author Remco Bloemen <[email protected]π.com>, Eenae <[email protected]>
 * @dev If you mark a function `nonReentrant`, you should also
 * mark it `external`.
 */
contract ReentrancyGuard {

    /// @dev Constant for unlocked guard state - non-zero to prevent extra gas costs.
    /// See: https://github.com/OpenZeppelin/openzeppelin-solidity/issues/1056
    uint256 internal constant REENTRANCY_GUARD_FREE = 1;

    /// @dev Constant for locked guard state
    uint256 internal constant REENTRANCY_GUARD_LOCKED = 2;

    /**
    * @dev We use a single lock for the whole contract.
    */
    uint256 internal reentrancyLock = REENTRANCY_GUARD_FREE;

    /**
    * @dev Prevents a contract from calling itself, directly or indirectly.
    * If you mark a function `nonReentrant`, you should also
    * mark it `external`. Calling one `nonReentrant` function from
    * another is not supported. Instead, you can implement a
    * `private` function doing the actual work, and an `external`
    * wrapper marked as `nonReentrant`.
    */
    modifier nonReentrant() {
        require(reentrancyLock == REENTRANCY_GUARD_FREE, "nonReentrant");
        reentrancyLock = REENTRANCY_GUARD_LOCKED;
        _;
        reentrancyLock = REENTRANCY_GUARD_FREE;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following 
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Converts an `address` into `address payable`. Note that this is
     * simply a type cast: the actual underlying value is not changed.
     *
     * _Available since v2.4.0._
     */
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     *
     * _Available since v2.4.0._
     */
    function sendValue(address recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "unauthorized");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Pausable {

    // keccak256("Pausable_FunctionPause")
    bytes32 internal constant Pausable_FunctionPause = 0xa7143c84d793a15503da6f19bf9119a2dac94448ca45d77c8bf08f57b2e91047;

    modifier pausable(bytes4 sig) {
        require(!_isPaused(sig), "unauthorized");
        _;
    }

    function _isPaused(
        bytes4 sig)
        internal
        view
        returns (bool isPaused)
    {
        bytes32 slot = keccak256(abi.encodePacked(sig, Pausable_FunctionPause));
        assembly {
            isPaused := sload(slot)
        }
    }
}

contract LoanTokenBase is ReentrancyGuard, Ownable, Pausable {

    uint256 internal constant WEI_PRECISION = 10**18;
    uint256 internal constant WEI_PERCENT_PRECISION = 10**20;

    int256 internal constant sWEI_PRECISION = 10**18;

    string public name;
    string public symbol;
    uint8 public decimals;

    // uint88 for tight packing -> 8 + 88 + 160 = 256
    uint88 internal lastSettleTime_;

    address public loanTokenAddress;

    uint256 public baseRate;
    uint256 public rateMultiplier;
    uint256 public lowUtilBaseRate;
    uint256 public lowUtilRateMultiplier;

    uint256 public targetLevel;
    uint256 public kinkLevel;
    uint256 public maxScaleRate;

    uint256 internal _flTotalAssetSupply;
    uint256 public checkpointSupply;
    uint256 public initialPrice;

    mapping (uint256 => bytes32) public loanParamsIds; // mapping of keccak256(collateralToken, isTorqueLoan) to loanParamsId
    mapping (address => uint256) internal checkpointPrices_; // price of token at last user checkpoint
}

contract AdvancedTokenStorage is LoanTokenBase {
    using SafeMath for uint256;

    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    event Mint(
        address indexed minter,
        uint256 tokenAmount,
        uint256 assetAmount,
        uint256 price
    );

    event Burn(
        address indexed burner,
        uint256 tokenAmount,
        uint256 assetAmount,
        uint256 price
    );

    mapping(address => uint256) internal balances;
    mapping (address => mapping (address => uint256)) internal allowed;
    uint256 internal totalSupply_;

    function totalSupply()
        public
        view
        returns (uint256)
    {
        return totalSupply_;
    }

    function balanceOf(
        address _owner)
        public
        view
        returns (uint256)
    {
        return balances[_owner];
    }

    function allowance(
        address _owner,
        address _spender)
        public
        view
        returns (uint256)
    {
        return allowed[_owner][_spender];
    }
}

contract LoanToken is AdvancedTokenStorage {

    address internal target_;

    constructor(
        address _newOwner,
        address _newTarget)
        public
    {
        transferOwnership(_newOwner);
        _setTarget(_newTarget);
    }

    function()
        external
        payable
    {
        if (gasleft() <= 2300) {
            return;
        }

        address target = target_;
        bytes memory data = msg.data;
        assembly {
            let result := delegatecall(gas, target, add(data, 0x20), mload(data), 0, 0)
            let size := returndatasize
            let ptr := mload(0x40)
            returndatacopy(ptr, 0, size)
            switch result
            case 0 { revert(ptr, size) }
            default { return(ptr, size) }
        }
    }

    function setTarget(
        address _newTarget)
        public
        onlyOwner
    {
        _setTarget(_newTarget);
    }

    function _setTarget(
        address _newTarget)
        internal
    {
        require(Address.isContract(_newTarget), "target not a contract");
        target_ = _newTarget;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"},{"internalType":"address","name":"_newTarget","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"assetAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"assetAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkpointSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kinkLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"loanParamsIds","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"loanTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lowUtilBaseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lowUtilRateMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxScaleRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rateMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newTarget","type":"address"}],"name":"setTarget","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"targetLevel","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600160005534801561001557600080fd5b50604051610bde380380610bde8339818101604052604081101561003857600080fd5b50805160209091015160006100546001600160e01b036100bb16565b600180546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610bbe833981519152908290a3506100a2826001600160e01b036100bf16565b6100b4816001600160e01b0361012516565b50506102a5565b3390565b6100d06001600160e01b036101ab16565b610110576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610122816001600160e01b036101da16565b50565b6101388161026960201b61084d1760201c565b610189576040805162461bcd60e51b815260206004820152601560248201527f746172676574206e6f74206120636f6e74726163740000000000000000000000604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b03166101cb6001600160e01b036100bb16565b6001600160a01b031614905090565b6001600160a01b03811661021f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610b986026913960400191505060405180910390fd5b6001546040516001600160a01b03808416921690600080516020610bbe83398151915290600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061029d57508115155b949350505050565b6108e4806102b46000396000f3fe60806040526004361061012a5760003560e01c8063797bf385116100ab57806395d89b411161006f57806395d89b41146103ff578063ba0e43bf14610414578063d759dbeb14610429578063dd62ed3e1461043e578063ef2b0b3914610479578063f2fde38b1461048e5761012a565b8063797bf385146103665780637b7933b4146103975780637e37c08c146103ac5780638da5cb5b146103c15780638f32d59b146103d65761012a565b80633291c11a116100f25780633291c11a146102ac578063330691ac146102d657806356e07d70146102eb57806370a0823114610300578063776d1a01146103335761012a565b806306fdde03146101a657806318160ddd146102305780631d0806ae146102575780631f68f20a1461026c578063313ce56714610281575b6108fc5a11610138576101a4565b60145460408051602036601f81018290048202830182019093528282526001600160a01b039093169260609260009181908401838280828437600092018290525084519495509384935091505060208401855af43d604051816000823e8280156101a0578282f35b8282fd5b005b3480156101b257600080fd5b506101bb6104c1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023c57600080fd5b5061024561054c565b60408051918252519081900360200190f35b34801561026357600080fd5b50610245610552565b34801561027857600080fd5b50610245610558565b34801561028d57600080fd5b5061029661055e565b6040805160ff9092168252519081900360200190f35b3480156102b857600080fd5b50610245600480360360208110156102cf57600080fd5b5035610567565b3480156102e257600080fd5b50610245610579565b3480156102f757600080fd5b5061024561057f565b34801561030c57600080fd5b506102456004803603602081101561032357600080fd5b50356001600160a01b0316610585565b34801561033f57600080fd5b506101a46004803603602081101561035657600080fd5b50356001600160a01b03166105a0565b34801561037257600080fd5b5061037b6105f4565b604080516001600160a01b039092168252519081900360200190f35b3480156103a357600080fd5b5061024561060a565b3480156103b857600080fd5b50610245610610565b3480156103cd57600080fd5b5061037b610616565b3480156103e257600080fd5b506103eb610625565b604080519115158252519081900360200190f35b34801561040b57600080fd5b506101bb61064b565b34801561042057600080fd5b506102456106a6565b34801561043557600080fd5b506102456106ac565b34801561044a57600080fd5b506102456004803603604081101561046157600080fd5b506001600160a01b03813581169160200135166106b2565b34801561048557600080fd5b506102456106dd565b34801561049a57600080fd5b506101a4600480360360208110156104b157600080fd5b50356001600160a01b03166106e3565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b505050505081565b60135490565b600e5481565b60055481565b60045460ff1681565b600f6020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526011602052604090205490565b6105a8610625565b6105e8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105f181610734565b50565b600454600160601b90046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661063c6107a8565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105445780601f1061051957610100808354040283529160200191610544565b60095481565b60075481565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b600b5481565b6106eb610625565b61072b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105f1816107ac565b61073d8161084d565b610786576040805162461bcd60e51b81526020600482015260156024820152741d185c99d95d081b9bdd08184818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0381166107f15760405162461bcd60e51b815260040180806020018281038252602681526020018061088a6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061088157508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a723158208e159523001d7b30b1641290c62dffd797f6077e0bcbf6b86ce07051a8c0caad64736f6c634300051100324f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000b7f72028d9b502dc871c444363a7ac5a5254660800000000000000000000000011ba2b39bc80464c14b7eea54d2ec93d8f60e7b8

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

000000000000000000000000B7F72028D9b502Dc871C444363a7aC5A5254660800000000000000000000000011ba2b39bC80464c14B7EEA54d2Ec93D8F60E7b8

-----Decoded View---------------
Arg [0] : _newOwner (address): 0xb7f72028d9b502dc871c444363a7ac5a52546608
Arg [1] : _newTarget (address): 0x11ba2b39bc80464c14b7eea54d2ec93d8f60e7b8

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000B7F72028D9b502Dc871C444363a7aC5A52546608
Arg [1] : 00000000000000000000000011ba2b39bC80464c14B7EEA54d2Ec93D8F60E7b8


Deployed ByteCode Sourcemap

20280:1151:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20623:4;20610:9;:17;20606:56;;20644:7;;20606:56;20691:7;;20709:28;;;;20729:8;20709:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20691:7:0;;;;20709:17;;-1:-1:-1;;20729:8:0;;20709:28;;-1:-1:-1;20729:8:0;;-1:-1:-1;20709:28:0;1:33:-1;99:1;81:16;;74:27;;;-1:-1;20829:11:0;;20709:28;;-1:-1:-1;99:1;;;-1:-1;20829:11:0;-1:-1:-1;;20822:4:0;20812:15;;20804:6;20799:3;20786:61;20873:14;20918:4;20912:11;20960:4;20957:1;20952:3;20937:28;20986:6;21006:28;;;;21070:4;21065:3;21058:17;21006:28;21027:4;21022:3;21015:17;20757:331;20280:1151;18214:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18214:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18214:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19800:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19800:123:0;;;:::i;:::-;;;;;;;;;;;;;;;;18760:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18760:27:0;;;:::i;18431:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18431:23:0;;;:::i;18266:21::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18266:21:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18796:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18796:49:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18796:49:0;;:::i;18461:29::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18461:29:0;;;:::i;18612:24::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18612:24:0;;;:::i;19931:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19931:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19931:149:0;-1:-1:-1;;;;;19931:149:0;;:::i;21103:130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21103:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21103:130:0;-1:-1:-1;;;;;21103:130:0;;:::i;18391:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18391:31:0;;;:::i;:::-;;;;-1:-1:-1;;;;;18391:31:0;;;;;;;;;;;;;;18722;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18722:31:0;;;:::i;18534:36::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18534:36:0;;;:::i;16339:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16339:79:0;;;:::i;16685:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16685:94:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;18239:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18239:20:0;;;:::i;18579:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18579:26:0;;;:::i;18497:30::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18497:30:0;;;:::i;20088:185::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20088:185:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20088:185:0;;;;;;;;;;:::i;18643:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18643:27:0;;;:::i;16934:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16934:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16934:109:0;-1:-1:-1;;;;;16934:109:0;;:::i;18214:18::-;;;;;;;;;;;;;;-1:-1:-1;;18214:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19800:123::-;19903:12;;19800:123;:::o;18760:27::-;;;;:::o;18431:23::-;;;;:::o;18266:21::-;;;;;;:::o;18796:49::-;;;;;;;;;;;;;:::o;18461:29::-;;;;:::o;18612:24::-;;;;:::o;19931:149::-;-1:-1:-1;;;;;20056:16:0;20024:7;20056:16;;;:8;:16;;;;;;;19931:149::o;21103:130::-;16551:9;:7;:9::i;:::-;16543:34;;;;;-1:-1:-1;;;16543:34:0;;;;;;;;;;;;-1:-1:-1;;;16543:34:0;;;;;;;;;;;;;;;21203:22;21214:10;21203;:22::i;:::-;21103:130;:::o;18391:31::-;;;-1:-1:-1;;;18391:31:0;;-1:-1:-1;;;;;18391:31:0;;:::o;18722:::-;;;;:::o;18534:36::-;;;;:::o;16339:79::-;16404:6;;-1:-1:-1;;;;;16404:6:0;16339:79;:::o;16685:94::-;16765:6;;16725:4;;-1:-1:-1;;;;;16765:6:0;16749:12;:10;:12::i;:::-;-1:-1:-1;;;;;16749:22:0;;16742:29;;16685:94;:::o;18239:20::-;;;;;;;;;;;;;;;-1:-1:-1;;18239:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18579:26;;;;:::o;18497:30::-;;;;:::o;20088:185::-;-1:-1:-1;;;;;20240:15:0;;;20208:7;20240:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;20088:185::o;18643:27::-;;;;:::o;16934:109::-;16551:9;:7;:9::i;:::-;16543:34;;;;;-1:-1:-1;;;16543:34:0;;;;;;;;;;;;-1:-1:-1;;;16543:34:0;;;;;;;;;;;;;;;17007:28;17026:8;17007:18;:28::i;21241:187::-;21333:30;21352:10;21333:18;:30::i;:::-;21325:64;;;;;-1:-1:-1;;;21325:64:0;;;;;;;;;;;;-1:-1:-1;;;21325:64:0;;;;;;;;;;;;;;;21400:7;:20;;-1:-1:-1;;;;;;21400:20:0;-1:-1:-1;;;;;21400:20:0;;;;;;;;;;21241:187::o;15130:98::-;15210:10;15130:98;:::o;17149:229::-;-1:-1:-1;;;;;17223:22:0;;17215:73;;;;-1:-1:-1;;;17215:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17325:6;;17304:38;;-1:-1:-1;;;;;17304:38:0;;;;17325:6;;17304:38;;17325:6;;17304:38;17353:6;:17;;-1:-1:-1;;;;;;17353:17:0;-1:-1:-1;;;;;17353:17:0;;;;;;;;;;17149:229::o;12041:619::-;12101:4;12569:20;;12412:66;12609:23;;;;;;:42;;-1:-1:-1;12636:15:0;;;12609:42;12601:51;12041:619;-1:-1:-1;;;;12041:619:0:o

Swarm Source

bzzr://8e159523001d7b30b1641290c62dffd797f6077e0bcbf6b86ce07051a8c0caad
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.