Contract 0x97dfbEF4eD5a7f63781472Dbc69Ab8e5d7357cB9

 
Ad
Ad
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd75399845b4c29c7d7796c31c5dfb404d2f2da93732bdb77d76ea6f31449088aBurn195278122021-09-26 7:48:1312 hrs 13 mins ago0x34661fee715ade68995786d05281d1ecf134b3ef IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00250904
0xd0b8040bc175af47d1ef0d7db81895939f6cdf319edeb424efe25ac68d173bc5Burn195184532021-09-26 1:48:0918 hrs 13 mins ago0xa8593254fe34a45decc1c785e9605564554530ad IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.000550608
0xde0365c551dd94655b6e64ebf44c8db347657a50c51b52df6023301dd933d7adBurn194651052021-09-24 16:36:252 days 3 hrs ago0xe487a866b0f6b1b663b4566ff7e998af6116fba9 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00206478
0x27ea314419e18718bd90e4b7413d160f6165bfd94d0e327c6886886114b8ea8fBurn194386292021-09-24 0:23:562 days 19 hrs ago0xcce15dab72f0c54014f2fe8ebcd2085d3721df03 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0066865916
0xfcb2aef09a4be2e4b9f8e663c4a2621fd5197b9246018d5d3eda4b95ecedde03Burn193891832021-09-22 15:53:594 days 4 hrs ago0x698f50ff94c40771a662d6821b6f4fffcef053eb IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.008109407155
0xf166552c689647c34a04a6fb53dabc2d75555eb0e70b855d10c0f895be5f75c2Approve193673662021-09-22 1:07:424 days 18 hrs ago0xc075ba2f4d65fe520402c12e92bb36ae742ec043 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00295665
0xa35f5cfa529c7cc356af33ab3f580f689fa8cad7bf6960f0a013cca8de4ceeedBurn193366062021-09-21 4:57:065 days 15 hrs ago0x85c9b8d85a67ef9859660cb1b2f5ae4bfe564e69 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.014928788
0xdb8fb677f7f0e25d032e703082e2573cf481e4ecd7fd5682716995ad605116c3Burn193292432021-09-21 0:09:495 days 19 hrs ago0xcd081fe01bb797c2afdb01b0e3a62ed3fb8900d6 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.003441
0x543ff1f7117aa684956e9768a42a76870c60e5c9605a4c315b76f03434b67e14Approve193280172021-09-20 23:24:555 days 20 hrs ago0x3c10e6f13abc22df2eb9b898b0c533d78d1360bb IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0000532389
0x59f018154c48da50de8dad7ce465f850827364ca04ce883c23142f23ff3a69c3Mint193279862021-09-20 23:23:495 days 20 hrs ago0x3c10e6f13abc22df2eb9b898b0c533d78d1360bb IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0130067
0x7b82446acda263ab51daf32c90b58d57c8c0b34a7d5e3d50f1cecc328ec0f922Mint192885822021-09-19 22:11:586 days 21 hrs ago0x57b3c8623e43e4fb17d526179d10e0d8a4a81e53 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00348374
0x1745dfbe02db8d67f2553fcc4a2c6a93aaff21dfa472afd1dfb91072780853fdBurn192881172021-09-19 21:55:466 days 22 hrs ago0x4c9447296a38f56dcbced69a3baa74bc4ce35816 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00654835
0x391df28b9199a07bb7bc01bb1ca86a2361fe385ff8733e3f18f23cfd23bc1e90Burn192881112021-09-19 21:55:346 days 22 hrs ago0x4c9447296a38f56dcbced69a3baa74bc4ce35816 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0060276
0xe77c300955b2bb94d7655c8b6b15c4da6455f57442ef9eec5ccf6ade3d597ba8Burn192836282021-09-19 19:07:317 days 53 mins ago0x57b3c8623e43e4fb17d526179d10e0d8a4a81e53 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00376356
0x9567e9efee60442c4fb06be1e27cfd11ea1a9127edc8a3e0a17af34be3866ffbMint192678082021-09-19 8:29:167 days 11 hrs ago0x35456d7f6d80dfb303c7d74af213ade90f5445fe IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0066365247
0x3d26e0116ccbe539eb495c0d3eb663a1d0094278b016ef01d6d0f6315464e12fMint192669092021-09-19 7:55:047 days 12 hrs ago0xcf7c03cf8babeb0a81992b49e326788906f026e0 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00573897
0xad10326cf6c91cce1bfbeadf5234ca535a86b152cab24901de21650789b0e097Burn192496102021-09-18 19:46:118 days 15 mins ago0x399abd36b9c7cef008f75d8805ee5fdf05d41773 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.001017606175
0xa0bff8e5c55987793052f58b5ef09a8074223bfa89fde10148d01b7540763a5aBurn192491172021-09-18 19:20:408 days 40 mins ago0xe487a866b0f6b1b663b4566ff7e998af6116fba9 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0412956
0x69fe33e5d60af56a3ac49f56db22a852745867852c3073ded75f665a83bbcb2fBurn192481622021-09-18 18:47:508 days 1 hr ago0xe487a866b0f6b1b663b4566ff7e998af6116fba9 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.00241104
0x2596f02e99567bc10a5a34f5ca7e1b2d87647d4a4cd0886788253fd2d3367208Mint192360962021-09-18 10:42:308 days 9 hrs ago0x206a14aa83264ccc816bc71e34d807fe558f04d7 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.011836442117
0x0d263f60d6cbe1ba1957b60ebf9ac65455d8e7d04573d9c1ecd1cddbe4d3a85eMint192322282021-09-18 8:01:258 days 11 hrs ago0xcb470dd050d929cb4dbf42f9dfe465e905d8453e IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.002869485
0x442cb7064c15683cd804ccc2b0de605777f125ecc3f90ec6efd1623110fc9404Burn191729132021-09-16 14:00:0810 days 6 hrs ago0xfe36046f6193d691f99e2c90153003f8938cfc41 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0068826
0xe33111a39f62ef590540767d1521ffaf1f7a31c5d4361e11ec0564064425aff4Burn191727492021-09-16 13:51:1210 days 6 hrs ago0xcf7c03cf8babeb0a81992b49e326788906f026e0 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.007892352
0xdc68c9445630a0811f06ff181ef6b958df6b8fafaa33a78ca1b6d5a9031d9883Mint191606762021-09-16 5:25:3510 days 14 hrs ago0x2781a5ff0b93f8a5e42346dda40d15fa92438514 IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.001916189
0xb6545c214e7a8e79616910f5084de91c7154dcb19a512182f27ce2fb9fe6c127Burn191465052021-09-15 19:52:2011 days 9 mins ago0x6fa33157d37e3961a8613bf3b4d2ee7b674cf66e IN  0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb90 MATIC0.0060276
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x0e9225f1d71046bbd30510f11982fd9bbc7af32a77eae42de10a636873d4513f188433032021-09-07 10:07:4919 days 9 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.330418230363436315 MATIC
0x98e30dadc41d2147cde5262da7e2a8e878676606970ac24a62f16696704e095b178664222021-08-11 11:47:1746 days 8 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token5.069159898307984331 MATIC
0xe7ac31e285646a674a416a633113312b2a68f5752d7f8c105c5929c2aaaef4a7174219672021-07-30 9:43:5658 days 10 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token1.98434878758780928 MATIC
0xf0b3b01d0a02af34d05d198320575d3e79e66a9689370e30804ac1b87111afdf174193422021-07-30 7:46:3558 days 12 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token1 MATIC
0xe6854f097f70aad10d2562cbb5dabfc8f92c6d8db2b8f1a38d69555a8b02c54c174057262021-07-29 22:19:1458 days 21 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.100889633400804123 MATIC
0xed8a5d11c3496af58aa172d3cec7f6696717590d32af4bbc27a74d17a278e4d3169333582021-07-16 19:12:3772 days 48 mins ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.378025834754284689 MATIC
0x698942830046a4dd4753b36bd0272aa29c05a60afdb4c36a1e2cd639fd41a0c7166100812021-07-07 17:45:3281 days 2 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token20 MATIC
0xf1bfb38e521a54d8d611ee6ac138124055476251ff532a39d2326ee35aaa3359164310602021-07-03 4:36:1485 days 15 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token3.606944493897644503 MATIC
0xcc42e7aaf9240daf5dda4c768893ec91fefab8c9e6f5f443913c2a61ae20734f164102472021-07-02 16:18:4686 days 3 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token600 MATIC
0xe22fbe52961495e951601ba1d7b4318a1e21e508007c9f3c1d7347e8249ecb58162907212021-06-29 14:51:3189 days 5 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.58 MATIC
0x408658945d9302ca1a2ab0366063358967a07e5bde08a399ca955e1cae32bf9b162434462021-06-28 9:32:3190 days 10 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token2.139612928206563999 MATIC
0xf34721f63a75f9988c52420f8811792fd2f21319ad6e55da0697217a22b1b4f1162427362021-06-28 9:05:5990 days 10 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.589248895743223452 MATIC
0x3a1572df070f2606a4ba6374312a8149fe6425f73857a24f3a88b0dd4c776def159989612021-06-22 1:33:5996 days 18 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token6.261679075986549351 MATIC
0x65c8065f6ac8dbaa656fd5865d023a4c9126f89a682c526fc0a36815b9d7be71159474422021-06-20 17:55:3298 days 2 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token6.293421649744725067 MATIC
0x1e9deb8c4baf644c033e1389b04a5f7d8e21153accb44c686d7f64c573c1eb34158983112021-06-19 12:05:0799 days 7 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token10 MATIC
0x5ef4f792bebc695bfc9da27c4a82e76da43aaff202553c7a6f3d70bac1f6c6c3158626062021-06-18 13:08:44100 days 6 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.818013771554359963 MATIC
0x30657d2a448e3644b3b89913a72302779ad5e2cb8515e6fffd42554cbc09402f158620712021-06-18 12:50:18100 days 7 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token5 MATIC
0x794e00d0ad1d0b52550fd88d8a78aa594bd149b9ed968deecc62231e5ef5c0d0158543622021-06-18 8:16:48100 days 11 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token10.63368 MATIC
0x520878dddcf19bd8d06cc3f64044697ae02e575a7c3f12f7e7d3678ab9c2341d158529982021-06-18 7:27:48100 days 12 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token15.52 MATIC
0x5dfe7a2db56291fa88f7aafc13b06600f359afb1d5a60f25153fc6db8640de5d158392382021-06-17 22:51:25100 days 21 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.306318094353745149 MATIC
0x91bea49f192b4fa379e866c2247d0c1b33c6d39f96ce5d7f125c0b0c8574ba04158385862021-06-17 22:26:49100 days 21 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token726.151447568956208835 MATIC
0xf6665f444215fb0f8e77ed48cafe135f64b372e68743264593695250c5a6ac1d157886672021-06-16 16:31:15102 days 3 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token26,990.341088688807839767 MATIC
0xfb711e9f46a944aeb0af4c0bf50d5f2418a0718ab50719b20cb298844da23dac157861392021-06-16 14:58:27102 days 5 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token2 MATIC
0x3c9ee1cbf300b2b8c03851f6e61ac85a8d07d824ba0cda5c8929bdec3f745366157715762021-06-16 5:49:02102 days 14 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token1 MATIC
0x1adafc8217c4d08721a73fca715fdc07882f08a20c763e4799f3914c5a70f407157711672021-06-16 5:28:50102 days 14 hrs ago 0x97dfbef4ed5a7f63781472dbc69ab8e5d7357cb9 Polygon: WMATIC Token0.8 MATIC
[ Download CSV Export 
Loading

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

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 polygonscan.com on 2021-06-09
*/

/**
 * Copyright 2017-2021, 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
    );

    event FlashBorrow(
        address borrower,
        address target,
        address loanToken,
        uint256 loanAmount
    );

    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":false,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"loanToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"loanAmount","type":"uint256"}],"name":"FlashBorrow","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"}]

6080604052600160005534801561001557600080fd5b50604051610bde380380610bde8339818101604052604081101561003857600080fd5b50805160209091015160006100546001600160e01b036100bb16565b600180546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020610bbe833981519152908290a3506100a2826001600160e01b036100bf16565b6100b4816001600160e01b0361012516565b50506102a5565b3390565b6100d06001600160e01b036101ab16565b610110576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610122816001600160e01b036101da16565b50565b6101388161026960201b61084d1760201c565b610189576040805162461bcd60e51b815260206004820152601560248201527f746172676574206e6f74206120636f6e74726163740000000000000000000000604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b03166101cb6001600160e01b036100bb16565b6001600160a01b031614905090565b6001600160a01b03811661021f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610b986026913960400191505060405180910390fd5b6001546040516001600160a01b03808416921690600080516020610bbe83398151915290600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061029d57508115155b949350505050565b6108e4806102b46000396000f3fe60806040526004361061012a5760003560e01c8063797bf385116100ab57806395d89b411161006f57806395d89b41146103ff578063ba0e43bf14610414578063d759dbeb14610429578063dd62ed3e1461043e578063ef2b0b3914610479578063f2fde38b1461048e5761012a565b8063797bf385146103665780637b7933b4146103975780637e37c08c146103ac5780638da5cb5b146103c15780638f32d59b146103d65761012a565b80633291c11a116100f25780633291c11a146102ac578063330691ac146102d657806356e07d70146102eb57806370a0823114610300578063776d1a01146103335761012a565b806306fdde03146101a657806318160ddd146102305780631d0806ae146102575780631f68f20a1461026c578063313ce56714610281575b6108fc5a11610138576101a4565b60145460408051602036601f81018290048202830182019093528282526001600160a01b039093169260609260009181908401838280828437600092018290525084519495509384935091505060208401855af43d604051816000823e8280156101a0578282f35b8282fd5b005b3480156101b257600080fd5b506101bb6104c1565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f55781810151838201526020016101dd565b50505050905090810190601f1680156102225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023c57600080fd5b5061024561054c565b60408051918252519081900360200190f35b34801561026357600080fd5b50610245610552565b34801561027857600080fd5b50610245610558565b34801561028d57600080fd5b5061029661055e565b6040805160ff9092168252519081900360200190f35b3480156102b857600080fd5b50610245600480360360208110156102cf57600080fd5b5035610567565b3480156102e257600080fd5b50610245610579565b3480156102f757600080fd5b5061024561057f565b34801561030c57600080fd5b506102456004803603602081101561032357600080fd5b50356001600160a01b0316610585565b34801561033f57600080fd5b506101a46004803603602081101561035657600080fd5b50356001600160a01b03166105a0565b34801561037257600080fd5b5061037b6105f4565b604080516001600160a01b039092168252519081900360200190f35b3480156103a357600080fd5b5061024561060a565b3480156103b857600080fd5b50610245610610565b3480156103cd57600080fd5b5061037b610616565b3480156103e257600080fd5b506103eb610625565b604080519115158252519081900360200190f35b34801561040b57600080fd5b506101bb61064b565b34801561042057600080fd5b506102456106a6565b34801561043557600080fd5b506102456106ac565b34801561044a57600080fd5b506102456004803603604081101561046157600080fd5b506001600160a01b03813581169160200135166106b2565b34801561048557600080fd5b506102456106dd565b34801561049a57600080fd5b506101a4600480360360208110156104b157600080fd5b50356001600160a01b03166106e3565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105445780601f1061051957610100808354040283529160200191610544565b820191906000526020600020905b81548152906001019060200180831161052757829003601f168201915b505050505081565b60135490565b600e5481565b60055481565b60045460ff1681565b600f6020526000908152604090205481565b60065481565b600a5481565b6001600160a01b031660009081526011602052604090205490565b6105a8610625565b6105e8576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105f181610734565b50565b600454600160601b90046001600160a01b031681565b600d5481565b60085481565b6001546001600160a01b031690565b6001546000906001600160a01b031661063c6107a8565b6001600160a01b031614905090565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105445780601f1061051957610100808354040283529160200191610544565b60095481565b60075481565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b600b5481565b6106eb610625565b61072b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6105f1816107ac565b61073d8161084d565b610786576040805162461bcd60e51b81526020600482015260156024820152741d185c99d95d081b9bdd08184818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b601480546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6001600160a01b0381166107f15760405162461bcd60e51b815260040180806020018281038252602681526020018061088a6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061088157508115155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a7231582045c18d00653b6cff45eb698f7f53a191ca87668afbc5bea72c8b5950303b36a264736f6c634300051100324f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000b7f72028d9b502dc871c444363a7ac5a52546608000000000000000000000000bd36f94b35df4dd5135d3d16c449ba2655f12a8c

Deployed ByteCode Sourcemap

20422:1151:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20765:4;20752:9;:17;20748:56;;20786:7;;20748:56;20833:7;;20851:28;;;;20871:8;20851:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20833:7:0;;;;20851:17;;-1:-1:-1;;20871:8:0;;20851:28;;-1:-1:-1;20871:8:0;;-1:-1:-1;20851:28:0;1:33:-1;99:1;81:16;;74:27;;;-1:-1;20971:11:0;;20851:28;;-1:-1:-1;99:1;;;-1:-1;20971:11:0;-1:-1:-1;;20964:4:0;20954:15;;20946:6;20941:3;20928:61;21015:14;21060:4;21054:11;21102:4;21099:1;21094:3;21079:28;21128:6;21148:28;;;;21212:4;21207:3;21200:17;21148:28;21169:4;21164:3;21157:17;20899:331;20422: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19942:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19942: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;20073:149::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20073:149:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20073:149:0;-1:-1:-1;;;;;20073:149:0;;:::i;21245:130::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21245:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21245:130:0;-1:-1:-1;;;;;21245: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;20230:185::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20230:185:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20230: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;19942:123::-;20045:12;;19942:123;:::o;18760:27::-;;;;:::o;18431:23::-;;;;:::o;18266:21::-;;;;;;:::o;18796:49::-;;;;;;;;;;;;;:::o;18461:29::-;;;;:::o;18612:24::-;;;;:::o;20073:149::-;-1:-1:-1;;;;;20198:16:0;20166:7;20198:16;;;:8;:16;;;;;;;20073:149::o;21245:130::-;16551:9;:7;:9::i;:::-;16543:34;;;;;-1:-1:-1;;;16543:34:0;;;;;;;;;;;;-1:-1:-1;;;16543:34:0;;;;;;;;;;;;;;;21345:22;21356:10;21345;:22::i;:::-;21245: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;20230:185::-;-1:-1:-1;;;;;20382:15:0;;;20350:7;20382:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;20230: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;21383:187::-;21475:30;21494:10;21475:18;:30::i;:::-;21467:64;;;;;-1:-1:-1;;;21467:64:0;;;;;;;;;;;;-1:-1:-1;;;21467:64:0;;;;;;;;;;;;;;;21542:7;:20;;-1:-1:-1;;;;;;21542:20:0;-1:-1:-1;;;;;21542:20:0;;;;;;;;;;21383: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://45c18d00653b6cff45eb698f7f53a191ca87668afbc5bea72c8b5950303b36a2
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.