Contract 0x2CaD4031C013Fa66E1F2F15baA135f1B2E45208e

Contract Overview

Balance:
0 Ether
Txn Hash
Method
Block
From
To
Value
0x758f7c7a34e6dcd854e15acd7e20dd777196fb3fabd6bfd10dc350496d7da9b80x6080604076604582020-12-04 10:57:07577 days 14 hrs ago0x32b230795ab78ab51ea7b3f15a23a762aaecd3e0 IN  Create: BaseInterestRateModel0 Ether0.000375251
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb6b0fbe60765be14952c25d15696bd34aebe8875a0573d4b2d13eb1b50dcc33695398562021-10-27 18:07:17250 days 7 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xf9b90a75ae2939f98594c1988b155df3902f7986e2732d5c6fcb824b0e9eb06395398552021-10-27 18:07:02250 days 7 hrs ago 0xc0a14c65582bfbc4695410230f65a97d15b33d89 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x8b85a2eb4214974971a464278a74d51fe6d5f11603e6f547e1811d36f86308f395398542021-10-27 18:06:47250 days 7 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x4027dae7fbd7bb44f66a07244a5b78baabafef41d3da5da9065fd138007b016b95398512021-10-27 18:06:02250 days 7 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xbf0b8276fd62c4868cdd34f155e4b99e15cb90c95c8f0f27b7602d8c9fb108d295398502021-10-27 18:05:47250 days 7 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xc42cacd184748c7e9aad745a365d1c4e76c277fbb157b1c606286d2da2fb814b95398492021-10-27 18:05:32250 days 7 hrs ago 0xc3231c1862e9fe6cee71ce11e6fb81f2d8470257 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xc1076eb748e8f8194cb35abcda7efe9948c6ee98a5c50e3c269b53c9a9b09bcd95398492021-10-27 18:05:32250 days 7 hrs ago 0xc0a14c65582bfbc4695410230f65a97d15b33d89 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xfb499ee78b46036591438acc31c2171fab55c3ca71f75d27ea53a41b8b8b60f295398442021-10-27 18:04:17250 days 7 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xad1eeab67d5341ce80e865166b2c69de3c7bcc07e97314e11ceb09171fb65f9495398442021-10-27 18:04:17250 days 7 hrs ago 0xc0a14c65582bfbc4695410230f65a97d15b33d89 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x7f2a310e14fee4d63bd32cf378c8b1ea9a9a3b9bd86779bda23555efec1a9a6595398402021-10-27 18:03:17250 days 7 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x3ac4f0c0277f04500bccb049e9cd35178760f2ba80fb0ec29b04ba94232ab15795398352021-10-27 18:02:02250 days 7 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xc587f07457cad63355ce18d7328763dbca42341e9432ddced7c2d7899ed0bfe695398352021-10-27 18:02:02250 days 7 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x8c79a71f2e73c87d983113f072fd008b75796b022a859eff8b8e99788a371f4695398332021-10-27 18:01:32250 days 7 hrs ago 0xc0a14c65582bfbc4695410230f65a97d15b33d89 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xae4e7e0cc336bce22d80b6040641cb3705526bf9ce8b95dd846e84332f481e5e95396772021-10-27 17:22:32250 days 8 hrs ago 0xc3231c1862e9fe6cee71ce11e6fb81f2d8470257 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xa7a67e1981945881b5c7aca4966b9590fd3d555e0334213f9c213ccb76e766a395396642021-10-27 17:19:17250 days 8 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x16317fc98a85de0995cd826488afff096cd0333a1ea437b73b52562b43b0d6dc95396522021-10-27 17:16:17250 days 8 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x0a4ed48b9d5bb38ed716bb1d776f89102e8f453644de8067b8cd292644184d0095396222021-10-27 17:08:47250 days 8 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x4261464812d1eaf8b8d12b8e776a0aedb4b4e12135a1d986d86c828552dd48d695396162021-10-27 17:07:17250 days 8 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xd2fce0e482f575d1a21bbd0f24066db14daf421b1da1d6b3ea0013cda344dd9095396102021-10-27 17:05:47250 days 8 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x636137f165ea6c658bd9e5cdae14475573926f4980ddb14a692872e53abf9a0e95395792021-10-27 16:58:02250 days 8 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x60d4277464f42d95ac7a4fa7fbdab94297119ee56249260f57fc1681e30f675995394172021-10-27 16:17:30250 days 9 hrs ago 0x0d9a9afcdb9cb363533132b720a43b86472f4389 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xe7143815b471b60e5e151da3e03979bcf80136a4435a01a3a3ccfd09ddd2775b95393912021-10-27 16:11:00250 days 9 hrs ago 0xc0a14c65582bfbc4695410230f65a97d15b33d89 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xec74c5039af6fbf320989b4e3edc44b8ab688ff8136b2a47e1378a3c96ebdfc195390202021-10-27 14:38:09250 days 10 hrs ago 0x82aa580e4dde8e750363962d057fea6ffb138b57 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0x34dffe105112968b2c30cb357c3fc361cfbcaf33d45cb0785a15169aacd0ebc095390082021-10-27 14:35:09250 days 10 hrs ago 0xb91b6e944f7d0c8fc96f57d4d44bc9aa818b4571 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
0xa2387352c18bd5a20c85d684580d5ddf7ec5d755d807fff216fedcb29964e37795389962021-10-27 14:32:09250 days 10 hrs ago 0x4a6c4425612aecc6fa9bf06575a6dbf202b2e28d 0x2cad4031c013fa66e1f2f15baa135f1b2e45208e0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BaseInterestRateModel

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license
File 1 of 3 : BaseInterestRateModel.sol
pragma solidity ^0.7.4;

import "./InterestRateModel.sol";
import "./SafeMath.sol";

/**
  * @title DefiPie's BaseInterestRateModel Contract
  * @author DefiPie
  */
contract BaseInterestRateModel is InterestRateModel {
    using SafeMath for uint;

    event NewInterestParams(uint baseRatePerBlock, uint multiplierPerBlock);

    /**
     * @notice The approximate number of blocks per year that is assumed by the interest rate model
     */
    uint public constant blocksPerYear = 2102400;

    /**
     * @notice The multiplier of utilization rate that gives the slope of the interest rate
     */
    uint public multiplierPerBlock;

    /**
     * @notice The base interest rate which is the y-intercept when utilization rate is 0
     */
    uint public baseRatePerBlock;

    /**
     * @notice Construct an interest rate model
     * @param baseRatePerYear The approximate target base APR, as a mantissa (scaled by 1e18)
     * @param multiplierPerYear The rate of increase in interest rate wrt utilization (scaled by 1e18)
     */
    constructor(uint baseRatePerYear, uint multiplierPerYear) {
        baseRatePerBlock = baseRatePerYear.div(blocksPerYear);
        multiplierPerBlock = multiplierPerYear.div(blocksPerYear);

        emit NewInterestParams(baseRatePerBlock, multiplierPerBlock);
    }

    /**
     * @notice Calculates the utilization rate of the market: `borrows / (cash + borrows - reserves)`
     * @param cash The amount of cash in the market
     * @param borrows The amount of borrows in the market
     * @param reserves The amount of reserves in the market (currently unused)
     * @return The utilization rate as a mantissa between [0, 1e18]
     */
    function utilizationRate(uint cash, uint borrows, uint reserves) public pure returns (uint) {
        // Utilization rate is 0 when there are no borrows
        if (borrows == 0) {
            return 0;
        }

        return borrows.mul(1e18).div(cash.add(borrows).sub(reserves));
    }

    /**
     * @notice Calculates the current borrow rate per block, with the error code expected by the market
     * @param cash The amount of cash in the market
     * @param borrows The amount of borrows in the market
     * @param reserves The amount of reserves in the market
     * @return The borrow rate percentage per block as a mantissa (scaled by 1e18)
     */
    function getBorrowRate(uint cash, uint borrows, uint reserves) public view override returns (uint) {
        uint ur = utilizationRate(cash, borrows, reserves);
        return ur.mul(multiplierPerBlock).div(1e18).add(baseRatePerBlock);
    }

    /**
     * @notice Calculates the current supply rate per block
     * @param cash The amount of cash in the market
     * @param borrows The amount of borrows in the market
     * @param reserves The amount of reserves in the market
     * @param reserveFactorMantissa The current reserve factor for the market
     * @return The supply rate percentage per block as a mantissa (scaled by 1e18)
     */
    function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) public view override returns (uint) {
        uint oneMinusReserveFactor = uint(1e18).sub(reserveFactorMantissa);
        uint borrowRate = getBorrowRate(cash, borrows, reserves);
        uint rateToPool = borrowRate.mul(oneMinusReserveFactor).div(1e18);
        return utilizationRate(cash, borrows, reserves).mul(rateToPool).div(1e18);
    }
}

File 2 of 3 : InterestRateModel.sol
pragma solidity ^0.7.4;

/**
  * @title DeFiPie's InterestRateModel Interface
  * @author DeFiPie
  */
abstract contract InterestRateModel {
    /// @notice Indicator that this is an InterestRateModel contract (for inspection)
    bool public constant isInterestRateModel = true;

    /**
      * @notice Calculates the current borrow interest rate per block
      * @param cash The total amount of cash the market has
      * @param borrows The total amount of borrows the market has outstanding
      * @param reserves The total amount of reserves the market has
      * @return The borrow rate per block (as a percentage, and scaled by 1e18)
      */
    function getBorrowRate(uint cash, uint borrows, uint reserves) external view virtual returns (uint);

    /**
      * @notice Calculates the current supply interest rate per block
      * @param cash The total amount of cash the market has
      * @param borrows The total amount of borrows the market has outstanding
      * @param reserves The total amount of reserves the market has
      * @param reserveFactorMantissa The current reserve factor the market has
      * @return The supply rate per block (as a percentage, and scaled by 1e18)
      */
    function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) external view virtual returns (uint);

}

File 3 of 3 : SafeMath.sol
pragma solidity ^0.7.4;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @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 addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    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 multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) 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, errorMessage);

        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.
     */
    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 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.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 1000
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"baseRatePerYear","type":"uint256"},{"internalType":"uint256","name":"multiplierPerYear","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"baseRatePerBlock","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"multiplierPerBlock","type":"uint256"}],"name":"NewInterestParams","type":"event"},{"inputs":[],"name":"baseRatePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksPerYear","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"getBorrowRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"},{"internalType":"uint256","name":"reserveFactorMantissa","type":"uint256"}],"name":"getSupplyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isInterestRateModel","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multiplierPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"borrows","type":"uint256"},{"internalType":"uint256","name":"reserves","type":"uint256"}],"name":"utilizationRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]

608060405234801561001057600080fd5b506040516106ab3803806106ab8339818101604052604081101561003357600080fd5b5080516020918201519091610056908390622014809061025c6100bc821b17901c565b60015561007181622014806100bc602090811b61025c17901c565b600081905560015460408051918252602082019290925281517ff35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27929181900390910190a150506101ad565b600061010483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061010b60201b60201c565b9392505050565b600081836101975760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816101a357fe5b0495945050505050565b6104ef806101bc6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638726bb891161005b5780638726bb8914610102578063a385fb961461010a578063b816881614610112578063f14039de146101415761007d565b806315f24053146100825780632191f92a146100bd5780636e71e2d8146100d9575b600080fd5b6100ab6004803603606081101561009857600080fd5b5080359060208101359060400135610149565b60408051918252519081900360200190f35b6100c5610197565b604080519115158252519081900360200190f35b6100ab600480360360608110156100ef57600080fd5b508035906020810135906040013561019c565b6100ab6101dc565b6100ab6101e2565b6100ab6004803603608081101561012857600080fd5b50803590602081013590604081013590606001356101e9565b6100ab610256565b60008061015785858561019c565b905061018c600154610186670de0b6b3a7640000610180600054866102a790919063ffffffff16565b9061025c565b90610300565b9150505b9392505050565b600181565b6000826101ab57506000610190565b6101d46101c2836101bc8787610300565b9061035a565b61018085670de0b6b3a76400006102a7565b949350505050565b60005481565b6220148081565b6000806101fe670de0b6b3a76400008461035a565b9050600061020d878787610149565b90506000610227670de0b6b3a764000061018084866102a7565b905061024a670de0b6b3a7640000610180836102448c8c8c61019c565b906102a7565b98975050505050505050565b60015481565b600061029e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061039c565b90505b92915050565b6000826102b6575060006102a1565b828202828482816102c357fe5b041461029e5760405162461bcd60e51b81526004018080602001828103825260218152602001806104996021913960400191505060405180910390fd5b60008282018381101561029e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061029e83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061043e565b600081836104285760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156103ed5781810151838201526020016103d5565b50505050905090810190601f16801561041a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161043457fe5b0495945050505050565b600081848411156104905760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156103ed5781810151838201526020016103d5565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122017c28500959ff75f5ce6cc4f4556b07e2a1ee467b6709da329b70daaf063511464736f6c6343000704003300000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000de0b6b3a7640000

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

00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000de0b6b3a7640000

-----Decoded View---------------
Arg [0] : baseRatePerYear (uint256): 20000000000000000
Arg [1] : multiplierPerYear (uint256): 1000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000470de4df820000
Arg [1] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000


Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.