Contract 0x18240BD9C07fA6156Ce3F3f61921cC82b2619157

 
Txn Hash Method
Block
From
To
Value
0xcf1b226a4196658b517aecdafd6e1d71ca3a5d739a5e545c6bffc4a8c045e65fApprove126732122021-06-20 19:55:572 days 1 hr ago0xa4c9d9a5568781867a61a78b96098036defbd65e IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.002459741947.3
0xe338c07226297d8ab22d395a64e91c21f7728dd7159ad706ea333c16daf51762Mint126732052021-06-20 19:54:552 days 1 hr ago0xa4c9d9a5568781867a61a78b96098036defbd65e IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.01073446535
0xda33e0499e1b38cca0d5f7811f5bf4f98d474de44c64f2d646d88c55ee1ae49dBurn126578532021-06-18 10:18:144 days 11 hrs ago0x4db941c235b7ca3940825dcb9d6d4b8c9054daf6 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.003077006411.7
0xc71b8937176829a852128f1b54a3c82a5f7264ef1e72d66958431b24f438509aBurn126449452021-06-16 10:26:246 days 10 hrs ago0xab286c5655b4b0ae3082f1f05893bdd53ba65870 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00300950412
0x0ba34384886c68225a76683b061a7adf610c02a8269357a575464cf08cae8d10Burn126434972021-06-16 4:50:136 days 16 hrs ago0x3a3139d4d4a9c1f90fa0c6f048768283c5648f7a IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.0018205986.5
0xc0698beade932b77ae9a788474df7e19d0d9d34b6a20bdec2fd4990ac675edfeBorrow126375732021-06-15 6:55:117 days 14 hrs ago0x8da35b920fe236a757a0fad93d3a3ab8ea0a24cc IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.01438498515
0x306d9932a8c496600072cefa33d5e0dc5d282d325ff4b1400161370f48437b9dBurn126354962021-06-14 23:13:417 days 22 hrs ago0x733c372b7fbacaa0313ca292e47145232b288f82 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00428627216
0x735ac8a32bc2e17466f6c94cb0db843368ac7cdd08d5bd47e7d803dc035af8b2Mint126022662021-06-09 19:47:5813 days 1 hr ago0x9ff797e6076b27d9218327ebcdb5e4faf41ce800 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.005857721719.1
0x51a8a5cc8571ddd710df41ecdc10b252e4731b5dde96e54ef6917c35f2b266f1Burn125901782021-06-07 22:43:1814 days 22 hrs ago0x733c372b7fbacaa0313ca292e47145232b288f82 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00651120822
0xf5700cee14f16b75ecb45894ede6c3307595d55bd847e3954dff342bc9145446Burn125901612021-06-07 22:40:0314 days 22 hrs ago0x733c372b7fbacaa0313ca292e47145232b288f82 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.007826625
0x7e18f7f46de04ccef3369a6ff54ef9af4430a7218919c4254253bbfea642a752Borrow With Gas ...125540322021-06-02 8:50:1920 days 12 hrs ago0x9030b78a312147dba34359d1a8819336fd054230 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.005750268317.1
0xeba95399484241a8b9825dd08ec359a1dd0ef8636d8685c18ec600e2c4a789bbMint125533592021-06-02 6:18:4020 days 15 hrs ago0x7450572c4d590bb69ef85a9da75665ff3a78a5c5 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.005796611118.9
0x42f970f764cf688ef9bedeaf154d44d635124b406eb911e827ecc10376e26392Borrow125530332021-06-02 5:01:1720 days 16 hrs ago0x9030b78a312147dba34359d1a8819336fd054230 IN  0x18240bd9c07fa6156ce3f3f61921cc82b2619157144.894244152922917 Ether0.016788383518.1
0x20d00fe1a50a28ecf57baa7b60285d90eccff546cb9476e722d8ddf76475de0eBorrow125416502021-05-31 10:44:5422 days 10 hrs agoENS Name debanker.eth IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.018173437218.3
0x7ee487ed24185deeaf99de5614a39999e89e8c51fb3452f6667af6fa58006679Burn125102962021-05-26 13:47:0427 days 7 hrs ago0xc3836599de06bc821ce9b99ab30cae1b426760ea IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.0071639240
0x874d493828c194122391aa85b8ab6aa09a6f0a0f65428c5526ab7335b0730aa9Burn124411122021-05-15 20:12:0438 days 1 hr ago0x8c4318486c897ad1fcc7cfc900dd0d0f3f3e382a IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.01199876267
0x0170fcbfd2fdf4a621b5948bec91622b6cc49e4a277468816278506e9eb070a5Burn124380862021-05-15 9:12:5738 days 12 hrs ago0xce0755dbf5e895c6b60952e27731474b2d0c20de IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.0152233385
0xe8f8e600a4384958d481c23de8bb51d7e09f6d29d8508bfa2d388cb7b298e0d3Burn124018852021-05-09 18:51:4644 days 2 hrs ago0x077b89835d729283bdcce39840df5b063bc1159f IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.01946140874
0x4d61c5c52de08fdbefa3ea1b64e1354e67f16584e7126989ba2a9a117b15ff07Margin Trade123897152021-05-07 21:55:2745 days 23 hrs ago0xafbb81bd5e2b46a0720449f51adca272a63de062 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.01576496751
0x67afcf1e90f9c63c9039ec188bac0a1918b5d9b11e3a3a8a853505f78275530dMargin Trade123894272021-05-07 20:49:2846 days 30 mins ago0xafbb81bd5e2b46a0720449f51adca272a63de062 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.0847027550
0x0787c6370567d5a68833c417b573ae0e9d80a1b58a5f78eacf1acb99a60f3711Burn123805222021-05-06 11:38:4947 days 9 hrs ago0xe5072a1f8f859117edda69e56905e78a7c030375 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00644752836
0x3455744d4c728cef1c2065566c564ef9d193db61fbc1f051b1a557f6fa38ea3bApprove123726872021-05-05 6:44:1348 days 14 hrs ago0x6d4c20805b0a286b4e4c2b2f15e71554f85f9cb6 IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00140408127
0x4a0a1f6c89f805bb09c730912051122c585a301eea3eb1339bff736ecd54a5f6Burn123616142021-05-03 13:50:3250 days 7 hrs ago0xcf45c000b7a71a92f99eaca4cdbdfcf24d6d052b IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00355893447
0xe1c4ff54216fe768cc58e827733713cd307b7f4784021c26740dc62cd0616fb0Burn123616142021-05-03 13:50:3250 days 7 hrs ago0xcf45c000b7a71a92f99eaca4cdbdfcf24d6d052b IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00295315839
0x1901ce7bbf242001a76383ee167d38eb123ff285db7cf629eeb8b1a87ac5b97bBurn123616142021-05-03 13:50:3250 days 7 hrs ago0xcf45c000b7a71a92f99eaca4cdbdfcf24d6d052b IN  0x18240bd9c07fa6156ce3f3f61921cc82b26191570 Ether0.00698435439
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x42f970f764cf688ef9bedeaf154d44d635124b406eb911e827ecc10376e26392125530332021-06-02 5:01:1720 days 16 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether144.894244152922917651 Ether
0xd418739833b8b1671f871a04fcbf3f5775f71b5b3e1864dc325739984c3a50b0123044232021-04-24 17:59:0259 days 3 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether32.359884824911958253 Ether
0x791db0d1e3ae37c8355b4037ed569669856042eeac36748c04620cad319481f2123043712021-04-24 17:48:3459 days 3 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether19.802890414172403858 Ether
0xc606313c7625fd9965a70ab9a69407c76bbf7a624282cfa8f675a795108ce5a6123043452021-04-24 17:43:0259 days 3 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether19.605650469808136892 Ether
0xd9a4e941d9ec05e5db098158dba86103d047b7789a5894ffed84963e039563ee123042332021-04-24 17:20:1159 days 3 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether15.818643538014211052 Ether
0x0a294337cb118180a533f7bbf3ff832d91b20b3a2d4c62542d468557f2d4e7e6122977552021-04-23 17:09:0260 days 4 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether24.646819970662521265 Ether
0xd6872ad2db3e7891a88bfbb487294afd4a9006311b46e2cf6be6fdf76791d9c7122962292021-04-23 11:37:5060 days 9 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether18.411992192766540915 Ether
0x098c5eb953bc323c971f0b714576a212c2427633c27f8e3be5f40f71cfb7f9e9122961162021-04-23 11:14:0160 days 10 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether27 Ether
0xda6d09c4ff8260fcb91898c8c9cd04c9b2cd856b7ad77532907f6ef55f5ede5e122875192021-04-22 3:05:2961 days 18 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether11 Ether
0x8164f7cb537a52ffb77d99cefd3bda45606303b21159b3906bee5c17360f9f23122868132021-04-22 0:22:4361 days 20 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether27.083401119999435119 Ether
0x969fd327a0238d55519e3b9d011b7f11f40c0220ac155c5740cf6e8bc1e4a04e122863932021-04-21 22:52:3961 days 22 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether26.717730538368470763 Ether
0x5c3b123f1443b0a933b4e3cd5d1f800d71cf117f9522a1d6bd3e02c6589fc84f122860882021-04-21 21:51:4161 days 23 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether46.202340408381304136 Ether
0xce760fc647fc76726c7baf27826255795b23af9e6db3485cc6ddf99557db78a8122812432021-04-21 3:51:3862 days 17 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether34.647528486686101373 Ether
0xc3021c60869b1d7d6864e0407bcf810016a0bb340fad1fc1ee653cd55b333902122630352021-04-18 8:31:0965 days 12 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether56.690049480906298782 Ether
0xc5f11b923061714b5ebe0051a2dbec4fe755a995f7e5f1d5c2000ffada182d63122482262021-04-16 1:32:5467 days 19 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether52.63633476189309505 Ether
0x81510ec7ea9ba997722c11a0139ed0d09d7e70b65f1f0cf3542f86758f96aab3122475782021-04-15 23:07:0567 days 22 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether87.021341959987672962 Ether
0x6a1bd09a21704e5b9200f07bc3300cd6504e1cd6a3dee71c3ec9b825d7e8a834122449372021-04-15 13:31:4168 days 7 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether57.5 Ether
0x755e074c03235407beb4554729035076a35bd55acf37a124ca6e684575309ae9122387182021-04-14 14:17:2469 days 7 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether53.239395151835004699 Ether
0xe677e5b1d6b1f8fc666c3825d2e18d3c1958bedfa46299b2699d5b8d919fd142122385652021-04-14 13:46:3269 days 7 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether54.319027963460876687 Ether
0xe8c4b9953ab27a2873e9c17c50f9fd64c0e39c42aaf413279f50de43e986314e122380512021-04-14 11:57:0969 days 9 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether54 Ether
0x4cc3ef8b595c99dc78375d086a4159c5752d3ee36473663aa59ea2302c008eba122377232021-04-14 10:40:2369 days 10 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether18 Ether
0x79ea63cac6ef2efcf88e1eae0b7d1572e98f93016c74c19cf15044c30b9345c1122347752021-04-13 23:40:2169 days 21 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether25.370400308875703667 Ether
0xd2d36bbe6b83695a2711f2d9b5998cb9a81bd0b079462ac5873ea520b0982650122335232021-04-13 19:09:0570 days 2 hrs ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether44.629603402211297046 Ether
0xc08ef1daa3a559a5cc337aa6388c2c8f8844d64df4a42c6e269dd8dee73df0c1122275312021-04-12 20:50:5871 days 28 mins ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether22.014968302163316059 Ether
0x4e583d442c6a5111c0be05e3060932d05438ed79e7b5ff661db766e69a05d997122272602021-04-12 19:53:4271 days 1 hr ago 0x18240bd9c07fa6156ce3f3f61921cc82b2619157 Wrapped Ether31.673280560238367077 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x32e4c68b3a4a813b710595aeba7f6b7604ab9c15

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

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.