Contract 0x6b093998D36f2C7F0cc359441FBB24CC629D5FF0

 
Ad
Ad
Txn Hash Method
Block
From
To
Value
0xb49dd0caff73de11f2976bd2dc5cee3f40543d729f9bf1c01eadf1ff7caeed64Burn(pending)2021-06-22 18:08:232 hrs 35 mins ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xf5e304d0a67292ba0f5572461a7700bcc300ff7d274baa76000b175b1be7a285Burn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xc6a100fda3895e7f51c8d989e15f194aae43fb1b8e3bb36d2382d985a1d3e7afBurn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xa36e075529cee9715cfe83e8c0251a973a74c531bb880dbe4c1d3031304a772fBurn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xcee83fc4577a3109b403cec91469daedc49a47c3641fea74deadc85956a77f96Burn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x5edb956b4cd2ccbd65e2217eaed567894eb3e56f7d67b4e86741a2c075691a1cBurn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xa536e0324a73b38903e2fe331765666aac1d3bef05ade0e1d3d6bc80676ff5deBurn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x3d7cb6e2204b3db16457037818115c146ca4daff19b3135438049674911ddbcaBurn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x3598458d9deca24a4d2edb29d8aefd0d2d4d4d60af27b3d405d26972f3fdc447Burn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x2710180b22a5195c8ed315f7b9daf12253048c6bc05c67269ba378cf3cd8f0fbBurn(pending)2021-06-21 7:13:011 day 13 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x17d50deae8acbb411bbcb8f1a51784054b5cfaf2ec4df761e00de227844b809eBurn(pending)2021-06-20 8:18:282 days 12 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xfce72dc060b4720dc2666630adb9b96c437edaa7eed8f0cf1f376619e8f94fb8Burn(pending)2021-06-20 4:19:402 days 16 hrs ago0x428f002da47cd55bf1da74ee03684c1cdba93d3c IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0xe47a74e1cbe79f70ff08d93ec1ea52b309438c4553de5ee914f95e951a6e08e0Burn(pending)2021-06-20 3:21:302 days 17 hrs ago0x4183b867121d85256f79e2e95ccdb9aca30bc865 IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x5844afea870ff2647106c9914b1fa13e9289c3d39d140028f930d7ecba03b226Mint(pending)2021-06-20 2:27:422 days 18 hrs ago0x9ec71e875387a3e6571101d787d3daf47c0abc6e IN 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether(Pending)(Pending)
0x1ebc18be9d659c3db546e4e9bec738581c99cb48b2d2165ace5941afd46d16b4Burn126854392021-06-22 17:44:532 hrs 59 mins ago0x910a4f57d4de4924c31fbccd9243a23939b00e75 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00328375628
0x2872f44f54ece904c6dd77b21b4423ccb1527813132ddc2c6093567e0636f871Mint126830622021-06-22 8:52:1511 hrs 51 mins ago0xead7224d6aa5f942b2dfeb6c218caaff3d22b439 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00824103951
0xd71013c79251b95bdc1adea1a09d6c855b9e44ac7c4c43eba765a562f7649a79Mint126765862021-06-21 8:27:221 day 12 hrs ago0x3bd2acfb611b4a4988af6069934fe55a7356cff6 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.003215621119.9
0xe4d6e931745b32fc371dfcb513c2c74a84980ccec960531a14b298d3ebfc2496Transfer126743422021-06-20 23:56:031 day 20 hrs ago0x563354e87ae36a5a66c54acebe24fa8a187e3a32 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.0005678946
0x4d6b1fd06447fd246bd7d48d45e1b62e0b4cae0dc1ec0cb42e80b70d22c44b2aBurn126735912021-06-20 21:18:211 day 23 hrs ago0x2f3590e477a7cb614f81979e73838dc44eb5ba7e IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00261606618
0x0ba6c63a34afd37e19150e07909f300d9e57ee07057300eab2ac96957fe6ef4eBurn126735652021-06-20 21:09:571 day 23 hrs ago0xdd1ebdfdc7908daa45b6cd5e56c4fb4157e034d1 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00102263079.1
0x55bdf9e6a02afe69d8d2f62822f6c9c729ca7c1ae9c43c1b06d0cb6e1c114a68Burn126735032021-06-20 20:58:551 day 23 hrs ago0x2f3590e477a7cb614f81979e73838dc44eb5ba7e IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00292386618
0x08b0f6402cf0038426988753d2c4cee4ce2cc57dce0ea5b14a852d26002f4098Mint126699652021-06-20 7:41:012 days 13 hrs ago0x9360edf93374a4ba4f19d575dbefcee7a389c0e3 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.0005767743
0x94b2852ff83b8ca87d61be0dd28e2d44ec106c8cfa8bc555336d11a5f7646a9eBurn126670482021-06-19 20:45:412 days 23 hrs ago0x23671d505d1b14c562aca1ebc12f450c0ae40383 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00071538976.1
0x794f6cd97c065c6655895fd6fbbf281e40dc7c39b83c0129d39508f35361697cBorrow With Gas ...126628032021-06-19 4:59:293 days 15 hrs ago0x21cfe08c7ddb08a8e5fa04baac8b2a1457696731 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.002173478238.47
0xc069d44ae2436df526be10b7d1c9203ada644ecd2cff5921412f7ac55a3a658aBurn126623522021-06-19 3:09:413 days 17 hrs ago0xe3491998e82d355bc777327d137be31b458bbad6 IN  0x6b093998d36f2c7f0cc359441fbb24cc629d5ff00 Ether0.00110194711
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1d4f99e7ca73d9d6d296586ff52ea40250ec5a415dec4116d686b2c3389390e9126433712021-06-16 4:22:416 days 16 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether70 Ether
0x4365d132a06f2bd190e2fc75620129c07fca17ad384b4288542aa1c0a1701f8d126383932021-06-15 10:04:527 days 10 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether0.071461560473952398 Ether
0xa966bfe9d370f09827c898577af88b357760c7b67d78de1fbecb0d09ad9bf80e126311352021-06-14 7:12:118 days 13 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether70 Ether
0xe4386073420cbb3dc4e2830c47bf7338bbe54402c099ce4af278d88ec7b4719a126018082021-06-09 18:04:4713 days 2 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether2 Ether
0x72cdc9ee2bba330bd1372b3367d23ed48ac3087428b68752cbb2fc0754ee804b126016862021-06-09 17:32:0613 days 3 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether2 Ether
0xd465aa4583fee21286dc9a600703869e28f47b760e96bfb2cba38420a577d3dd125713572021-06-05 0:50:5517 days 19 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether5 Ether
0x907c17a6319252433661015a5ce4c02250ce2ea5d595bc2a94561df576cea26f125712692021-06-05 0:29:5417 days 20 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether3 Ether
0x4b9fbed2dff0e8c0693364b8d04a24eaaa039f74d3c4524188bcbdbd5f035783125625832021-06-03 16:27:3219 days 4 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether0.35 Ether
0xef7b646abe5676560d8bec3e0c9f1e0cbaa03b19e92960997e7a18457e574a24125467882021-06-01 5:44:2721 days 14 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether4 Ether
0xe81d8dd7e236d33c6f94228eeb7075949c9f9cdba661bc723e377e8edcdc3e20125343462021-05-30 7:25:1823 days 13 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether4 Ether
0x7159235c9df8e59e8fdfac1ec98a3462d3f445a195fc16e846673e20e8a88fad125268122021-05-29 3:24:4824 days 17 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether18.761987069889948404 Ether
0xf5b7abe5ca70f3688e625ca8c0c981dd07db6ebd30f5c49ef2ce45a691c0efd5125247432021-05-28 19:43:3225 days 1 hr ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether3 Ether
0x36768394a902972b1653c2d68718447dc960096fbeb94772083cf52d82f564f7125106182021-05-26 14:56:5127 days 5 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether1 Ether
0x2e4202ebcd5dd66604982f2687bda038073d571267c67e66ec257ed6c0b1427c125037992021-05-25 13:34:5028 days 7 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether4 Ether
0xfdb5623fe95d13d216f2be9906443f60306b5ce19ea0b78547020dd1715614d1124811892021-05-22 1:26:5331 days 19 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether5 Ether
0x66b10b2fd559f4e7b4f7757c84af40ec7d3b93d9f1945c48369f386a879be7f0124638952021-05-19 9:07:3434 days 11 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether10 Ether
0xed4a7ee576e82f3697fb872a53332cc60eef09921305f13b8e1f50a9801ace81124624142021-05-19 3:23:3134 days 17 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether258.95933410986014137 Ether
0x93d50768e6b9c3264c299b0d814cb10c09174aa450c820787ea605b0a731fab5124527402021-05-17 15:30:5736 days 5 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether4.7094 Ether
0xc736e9a861338770d6f4a2cff6404d2716f702352e1950514fb0ef1872634be8124499422021-05-17 5:05:5736 days 15 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether200 Ether
0x29ec649e94f2922a5cff99c498c2bb76d3beae14821a1bfb087cff6c656b409f124483222021-05-16 22:58:1136 days 21 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether9 Ether
0x8ec8ada5ae75077cbb3c5c6d9fac582e2cc5d1eb66f8f67513972218f11fb50a124456672021-05-16 13:14:1037 days 7 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether150 Ether
0x57163864534c0c096a55d4cba5b581542940ad66759740238ebc9a8b682cc48a124375122021-05-15 7:04:1438 days 13 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether2.82 Ether
0x6dde59509732da8e4d432eb8f9e297505190ab93c2b352cd706149010709a98f124367552021-05-15 4:10:1738 days 16 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether9 Ether
0xa1c89b484551182382e6808d42a6fe0cfa8a4fd43ab84ed7aefb88122aa46be4124323682021-05-14 11:58:3239 days 8 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether8.5 Ether
0xbe786e6bee52cb792cbfe211b217852fc1ed6ad2342432b058b33043f71d3d52124323152021-05-14 11:47:1039 days 8 hrs ago 0x6b093998d36f2c7f0cc359441fbb24cc629d5ff0 Wrapped Ether50 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.