Feature Tip: Add private address tag to any address under My Name Tag !
88mph.app token contract has migrated to a new address.
ERC-20
Overview
Max Total Supply
313,293.469189276583316487 MPH
Holders
211
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.016042 MPHValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
MPHToken
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";contract MPHToken is ERC20, ERC20Detailed, Ownable {constructor() public ERC20Detailed("88mph.app", "MPH", 18) {}function ownerMint(address account, uint256 amount)publiconlyOwnerreturns (bool){_mint(account, amount);return true;}function ownerTransfer(address from,address to,uint256 amount) public onlyOwner returns (bool) {_transfer(from, to, amount);return true;}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";import "@openzeppelin/contracts/utils/Address.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";import "./libs/DecMath.sol";import "./moneymarkets/IMoneyMarket.sol";import "./models/fee/IFeeModel.sol";import "./models/interest/IInterestModel.sol";import "./NFT.sol";import "./rewards/MPHMinter.sol";import "./models/interest-oracle/IInterestOracle.sol";// DeLorean Interest -- It's coming back from the future!// EL PSY CONGROO// Author: Zefram Lou// Contact: zefram@baconlabs.devcontract DInterest is ReentrancyGuard, Ownable {using SafeMath for uint256;using DecMath for uint256;using SafeERC20 for ERC20;using Address for address;
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;/*** @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) {
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "../../GSN/Context.sol";import "./IERC20.sol";import "../../math/SafeMath.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.* For a generic mechanism see {ERC20Mintable}.** TIP: For a detailed writeup see our guide* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** We have followed general OpenZeppelin guidelines: functions revert instead* of returning `false` on failure. This behavior is nonetheless conventional* and does not conflict with the expectations of ERC20 applications.** Additionally, an {Approval} event is emitted on calls to {transferFrom}.* This allows applications to reconstruct the allowance for all accounts just* by listening to said events. Other implementations of the EIP may not emit* these events, as it isn't required by the specification.*
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;/** @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-blocksfunction _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/2691return msg.data;}
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;/*** @dev Interface of the ERC20 standard as defined in the EIP. Does not include* the optional functions; to access them see {ERC20Detailed}.*/interface IERC20 {/*** @dev Returns the amount of tokens in existence.*/function totalSupply() external view returns (uint256);/*** @dev Returns the amount of tokens owned by `account`.*/function balanceOf(address account) external view returns (uint256);/*** @dev Moves `amount` tokens from the caller's account to `recipient`.** Returns a boolean value indicating whether the operation succeeded.** Emits a {Transfer} event.*/function transfer(address recipient, uint256 amount) external returns (bool);
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "./IERC20.sol";import "../../math/SafeMath.sol";import "../../utils/Address.sol";/*** @title SafeERC20* @dev Wrappers around ERC20 operations that throw on failure (when the token* contract returns false). Tokens that return no value (and instead revert or* throw on failure) are also supported, non-reverting calls are assumed to be* successful.* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.*/library SafeERC20 {using SafeMath for uint256;using Address for address;function safeTransfer(IERC20 token, address to, uint256 value) internal {callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));}function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));}
1234567891011121314151617181920212223242526pragma solidity ^0.5.5;/*** @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
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].** _Since v2.5.0:_ this module is now much more gas efficient, given net gas* metering changes introduced in the Istanbul hardfork.*/contract ReentrancyGuard {bool private _notEntered;constructor () internal {// Storing an initial non-zero value makes deployment a bit more
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "../GSN/Context.sol";/*** @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);}
123456789101112131415161718pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";// Decimal math librarylibrary DecMath {using SafeMath for uint256;uint256 internal constant PRECISION = 10**18;function decmul(uint256 a, uint256 b) internal pure returns (uint256) {return a.mul(b).div(PRECISION);}function decdiv(uint256 a, uint256 b) internal pure returns (uint256) {return a.mul(PRECISION).div(b);}}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;// Interface for money market protocols (Compound, Aave, bZx, etc.)interface IMoneyMarket {function deposit(uint256 amount) external;function withdraw(uint256 amountInUnderlying)externalreturns (uint256 actualAmountWithdrawn);function claimRewards() external; // Claims farmed tokens (e.g. COMP, CRV) and sends it to the rewards poolfunction totalValue() external returns (uint256); // The total value locked in the money market, in terms of the underlying stablecoinfunction incomeIndex() external returns (uint256); // Used for calculating the interest generated (e.g. cDai's price for the Compound market)function stablecoin() external view returns (address);function setRewards(address newValue) external;event ESetParamAddress(address indexed sender,string indexed paramName,address newValue);}
12345678910pragma solidity 0.5.17;interface IFeeModel {function beneficiary() external view returns (address payable);function getFee(uint256 _txAmount)externalpurereturns (uint256 _feeAmount);}
1234567891011pragma solidity 0.5.17;interface IInterestModel {function calculateInterestAmount(uint256 depositAmount,uint256 depositPeriodInSeconds,uint256 moneyMarketInterestRatePerSecond,bool surplusIsNegative,uint256 surplusAmount) external view returns (uint256 interestAmount);}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC721/ERC721Metadata.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";contract NFT is ERC721Metadata, Ownable {string internal _contractURI;constructor(string memory name, string memory symbol)publicERC721Metadata(name, symbol){}function contractURI() external view returns (string memory) {return _contractURI;}function mint(address to, uint256 tokenId) external onlyOwner {_safeMint(to, tokenId);}function burn(uint256 tokenId) external onlyOwner {_burn(tokenId);}function setContractURI(string calldata newURI) external onlyOwner {
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "../../GSN/Context.sol";import "./ERC721.sol";import "./IERC721Metadata.sol";import "../../introspection/ERC165.sol";contract ERC721Metadata is Context, ERC165, ERC721, IERC721Metadata {// Token namestring private _name;// Token symbolstring private _symbol;// Base URIstring private _baseURI;// Optional mapping for token URIsmapping(uint256 => string) private _tokenURIs;/** bytes4(keccak256('name()')) == 0x06fdde03* bytes4(keccak256('symbol()')) == 0x95d89b41* bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd** => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "../../GSN/Context.sol";import "./IERC721.sol";import "./IERC721Receiver.sol";import "../../math/SafeMath.sol";import "../../utils/Address.sol";import "../../drafts/Counters.sol";import "../../introspection/ERC165.sol";/*** @title ERC721 Non-Fungible Token Standard basic implementation* @dev see https://eips.ethereum.org/EIPS/eip-721*/contract ERC721 is Context, ERC165, IERC721 {using SafeMath for uint256;using Address for address;using Counters for Counters.Counter;// Equals to `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`// which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;// Mapping from token ID to ownermapping (uint256 => address) private _tokenOwner;
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "../../introspection/IERC165.sol";/*** @dev Required interface of an ERC721 compliant contract.*/contract IERC721 is IERC165 {event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);event ApprovalForAll(address indexed owner, address indexed operator, bool approved);/*** @dev Returns the number of NFTs in `owner`'s account.*/function balanceOf(address owner) public view returns (uint256 balance);/*** @dev Returns the owner of the NFT specified by `tokenId`.*/function ownerOf(uint256 tokenId) public view returns (address owner);/*** @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to* another (`to`).*
12345678910111213141516171819202122pragma solidity ^0.5.0;/*** @dev Interface of the ERC165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[EIP].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
12345678910111213141516171819202122232425pragma solidity ^0.5.0;/*** @title ERC721 token receiver interface* @dev Interface for any contract that wants to support safeTransfers* from ERC721 asset contracts.*/contract IERC721Receiver {/*** @notice Handle the receipt of an NFT* @dev The ERC721 smart contract calls this function on the recipient* after a {IERC721-safeTransferFrom}. This function MUST return the function selector,* otherwise the caller will revert the transaction. The selector to be* returned can be obtained as `this.onERC721Received.selector`. This* function MAY throw to revert and reject the transfer.* Note: the ERC721 contract address is always the message sender.* @param operator The address which called `safeTransferFrom` function* @param from The address which previously owned the token* @param tokenId The NFT identifier which is being transferred* @param data Additional data with no specified format* @return bytes4 `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`*/function onERC721Received(address operator, address from, uint256 tokenId, bytes memory data)public returns (bytes4);}
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "../math/SafeMath.sol";/*** @title Counters* @author Matt Condon (@shrugs)* @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number* of elements in a mapping, issuing ERC721 ids, or counting request ids.** Include with `using Counters for Counters.Counter;`* Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the {SafeMath}* overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never* directly accessed.*/library Counters {using SafeMath for uint256;struct Counter {// This variable should never be directly accessed by users of the library: interactions must be restricted to// the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add// this feature: see https://github.com/ethereum/solidity/issues/4637uint256 _value; // default: 0}function current(Counter storage counter) internal view returns (uint256) {
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "./IERC165.sol";/*** @dev Implementation of the {IERC165} interface.** Contracts may inherit from this and call {_registerInterface} to declare* their support of an interface.*/contract ERC165 is IERC165 {/** bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7*/bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;/*** @dev Mapping of interface ids to whether or not it's supported.*/mapping(bytes4 => bool) private _supportedInterfaces;constructor () internal {// Derived contracts need only register support for their own interfaces,// we register support for ERC165 itself here_registerInterface(_INTERFACE_ID_ERC165);}
12345678910111213pragma solidity ^0.5.0;import "./IERC721.sol";/*** @title ERC-721 Non-Fungible Token Standard, optional metadata extension* @dev See https://eips.ethereum.org/EIPS/eip-721*/contract IERC721Metadata is IERC721 {function name() external view returns (string memory);function symbol() external view returns (string memory);function tokenURI(uint256 tokenId) external view returns (string memory);}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";import "@openzeppelin/contracts/utils/Address.sol";import "../libs/DecMath.sol";import "./MPHToken.sol";contract MPHMinter is Ownable {using Address for address;using DecMath for uint256;using SafeMath for uint256;uint256 internal constant PRECISION = 10**18;/**@notice The multiplier applied to the interest generated by a pool when minting MPH*/mapping(address => uint256) public poolMintingMultiplier;/**@notice The multiplier applied to the interest generated by a pool when letting depositors keep MPH*/mapping(address => uint256) public poolDepositorRewardMultiplier;/**@notice The multiplier applied to the interest generated by a pool when letting deficit funders keep MPH*/
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;import "./IERC20.sol";/*** @dev Optional functions from the ERC20 standard.*/contract ERC20Detailed is IERC20 {string private _name;string private _symbol;uint8 private _decimals;/*** @dev Sets the values for `name`, `symbol`, and `decimals`. All three of* these values are immutable: they can only be set once during* construction.*/constructor (string memory name, string memory symbol, uint8 decimals) public {_name = name;_symbol = symbol;_decimals = decimals;}/*** @dev Returns the name of the token.*/
123456789pragma solidity 0.5.17;interface IInterestOracle {function updateAndQuery() external returns (bool updated, uint256 value);function query() external view returns (uint256 value);function moneyMarket() external view returns (address);}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";import "@openzeppelin/contracts/math/SafeMath.sol";import "../libs/DecMath.sol";contract ATokenMock is ERC20, ERC20Detailed {using SafeMath for uint256;using DecMath for uint256;uint256 internal constant YEAR = 31556952; // Number of seconds in one Gregorian calendar year (365.2425 days)ERC20 public dai;uint256 public liquidityRate;uint256 public normalizedIncome;address[] public users;mapping(address => bool) public isUser;constructor(address _dai)publicERC20Detailed("aDAI", "aDAI", 18){dai = ERC20(_dai);liquidityRate = 10 ** 26; // 10% APY
1234567891011121314151617181920212223242526/**Modified from https://github.com/bugduino/idle-contracts/blob/master/contracts/mocks/cDAIMock.solat commit b85dafa8e55e053cb2d403fc4b28cfe86f2116d4Original license:Copyright 2020 Idle Labs Inc.Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.*/pragma solidity 0.5.17;// interfacesimport "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";
123456789101112131415161718192021pragma solidity 0.5.17;// interfacesimport "./ERC20Mock.sol";contract ComptrollerMock {uint256 public constant CLAIM_AMOUNT = 10**18;ERC20Mock public comp;constructor (address _comp) public {comp = ERC20Mock(_comp);}function claimComp(address holder) external {comp.mint(holder, CLAIM_AMOUNT);}function getCompAddress() external view returns (address) {return address(comp);}}
12345678910pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";contract ERC20Mock is ERC20, ERC20Detailed("", "", 6) {function mint(address to, uint256 amount) public {_mint(to, amount);}}
12345678910111213141516171819202122pragma solidity 0.5.17;contract LendingPoolAddressesProviderMock {address internal pool;address internal core;function getLendingPool() external view returns (address) {return pool;}function setLendingPoolImpl(address _pool) external {pool = _pool;}function getLendingPoolCore() external view returns (address) {return core;}function setLendingPoolCoreImpl(address _pool) external {core = _pool;}}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "./ATokenMock.sol";import "./LendingPoolMock.sol";contract LendingPoolCoreMock {LendingPoolMock internal lendingPool;function setLendingPool(address lendingPoolAddress) public {lendingPool = LendingPoolMock(lendingPoolAddress);}function bounceTransfer(address _reserve, address _sender, uint256 _amount)external{ERC20 token = ERC20(_reserve);token.transferFrom(_sender, address(this), _amount);token.transfer(msg.sender, _amount);}// The equivalent of exchangeRateStored() for Compound cTokensfunction getReserveNormalizedIncome(address _reserve) external view returns (uint256) {(, , , , , , , , , , , address aTokenAddress, ) = lendingPool.getReserveData(_reserve);
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "./ATokenMock.sol";import "./LendingPoolCoreMock.sol";contract LendingPoolMock {mapping(address => address) internal reserveAToken;LendingPoolCoreMock public core;constructor(address _core) public {core = LendingPoolCoreMock(_core);}function setReserveAToken(address _reserve, address _aTokenAddress) external {reserveAToken[_reserve] = _aTokenAddress;}function deposit(address _reserve, uint256 _amount, uint16)external{ERC20 token = ERC20(_reserve);core.bounceTransfer(_reserve, msg.sender, _amount);// Mint aTokensaddress aTokenAddress = reserveAToken[_reserve];
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20Detailed.sol";import "@openzeppelin/contracts/math/SafeMath.sol";import "../libs/DecMath.sol";contract VaultMock is ERC20, ERC20Detailed {using SafeMath for uint256;using DecMath for uint256;ERC20 public underlying;constructor(address _underlying) public ERC20Detailed("yUSD", "yUSD", 18) {underlying = ERC20(_underlying);}function deposit(uint256 tokenAmount) public {uint256 sharePrice = getPricePerFullShare();_mint(msg.sender, tokenAmount.decdiv(sharePrice));underlying.transferFrom(msg.sender, address(this), tokenAmount);}function withdraw(uint256 sharesAmount) public {uint256 sharePrice = getPricePerFullShare();
12345678910111213141516171819202122pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";import "./IFeeModel.sol";contract PercentageFeeModel is IFeeModel {using SafeMath for uint256;address payable public beneficiary;constructor(address payable _beneficiary) public {beneficiary = _beneficiary;}function getFee(uint256 _txAmount)externalpurereturns (uint256 _feeAmount){_feeAmount = _txAmount.div(10); // Precision is decreased by 1 decimal place}}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";import "../../moneymarkets/IMoneyMarket.sol";import "../../libs/DecMath.sol";import "./IInterestOracle.sol";contract EMAOracle is IInterestOracle {using SafeMath for uint256;using DecMath for uint256;uint256 internal constant PRECISION = 10**18;/**Immutable parameters*/uint256 public UPDATE_INTERVAL;uint256 public UPDATE_MULTIPLIER;uint256 public ONE_MINUS_UPDATE_MULTIPLIER;/**Public variables*/uint256 public emaStored;uint256 public lastIncomeIndex;uint256 public lastUpdateTimestamp;
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";import "../../libs/DecMath.sol";contract LinearInterestModel {using SafeMath for uint256;using DecMath for uint256;uint256 public constant PRECISION = 10**18;uint256 public IRMultiplier;constructor(uint256 _IRMultiplier) public {IRMultiplier = _IRMultiplier;}function calculateInterestAmount(uint256 depositAmount,uint256 depositPeriodInSeconds,uint256 moneyMarketInterestRatePerSecond,bool, /*surplusIsNegative*/uint256 /*surplusAmount*/) external view returns (uint256 interestAmount) {// interestAmount = depositAmount * moneyMarketInterestRatePerSecond * IRMultiplier * depositPeriodInSecondsinterestAmount = depositAmount.mul(PRECISION)
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";import "@openzeppelin/contracts/utils/Address.sol";import "../IMoneyMarket.sol";import "./imports/IAToken.sol";import "./imports/ILendingPool.sol";import "./imports/ILendingPoolAddressesProvider.sol";import "./imports/ILendingPoolCore.sol";contract AaveMarket is IMoneyMarket, Ownable {using SafeMath for uint256;using SafeERC20 for ERC20;using Address for address;uint16 internal constant REFERRALCODE = 20; // Aave referral program codeILendingPoolAddressesProvider public provider; // Used for fetching the current address of LendingPoolERC20 public stablecoin;constructor(address _provider, address _stablecoin) public {// Verify input addressesrequire(
12345678910pragma solidity 0.5.17;// Aave aToken interface// Documentation: https://docs.aave.com/developers/developing-on-aave/the-protocol/atokensinterface IAToken {function redeem(uint256 _amount) external;function balanceOf(address owner) external view returns (uint256);}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;// Aave lending pool interface// Documentation: https://docs.aave.com/developers/developing-on-aave/the-protocol/lendingpoolinterface ILendingPool {function deposit(address _reserve, uint256 _amount, uint16 _referralCode)external;function getReserveData(address _reserve)externalviewreturns (uint256 totalLiquidity,uint256 availableLiquidity,uint256 totalBorrowsStable,uint256 totalBorrowsVariable,uint256 liquidityRate,uint256 variableBorrowRate,uint256 stableBorrowRate,uint256 averageStableBorrowRate,uint256 utilizationRate,uint256 liquidityIndex,uint256 variableBorrowIndex,address aTokenAddress,uint40 lastUpdateTimestamp
1234567891011121314151617181920212223242526pragma solidity 0.5.17;// Aave lending pool addresses provider interface// Documentation: https://docs.aave.com/developers/developing-on-aave/the-protocol/lendingpooladdressesproviderinterface ILendingPoolAddressesProvider {function getLendingPool() external view returns (address);function setLendingPoolImpl(address _pool) external;function getLendingPoolCore() external view returns (address payable);function setLendingPoolCoreImpl(address _lendingPoolCore) external;function getLendingPoolConfigurator() external view returns (address);function setLendingPoolConfiguratorImpl(address _configurator) external;function getLendingPoolDataProvider() external view returns (address);function setLendingPoolDataProviderImpl(address _provider) external;function getLendingPoolParametersProvider() external view returns (address);function setLendingPoolParametersProviderImpl(address _parametersProvider)external;
123456789101112pragma solidity 0.5.17;// Aave lending pool core interface// Documentation: https://github.com/aave/aave-protocol/blob/master/contracts/lendingpool/LendingPoolCore.sol#L615interface ILendingPoolCore {// The equivalent of exchangeRateStored() for Compound cTokensfunction getReserveNormalizedIncome(address _reserve)externalviewreturns (uint256);}
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";import "@openzeppelin/contracts/utils/Address.sol";import "../IMoneyMarket.sol";import "../../libs/DecMath.sol";import "./imports/ICERC20.sol";import "./imports/IComptroller.sol";contract CompoundERC20Market is IMoneyMarket, Ownable {using DecMath for uint256;using SafeERC20 for ERC20;using Address for address;uint256 internal constant ERRCODE_OK = 0;ICERC20 public cToken;IComptroller public comptroller;address public rewards;ERC20 public stablecoin;constructor(address _cToken,address _comptroller,
1234567891011121314151617181920212223242526pragma solidity 0.5.17;// Compound finance ERC20 market interface// Documentation: https://compound.finance/docs/ctokensinterface ICERC20 {function transfer(address dst, uint256 amount) external returns (bool);function transferFrom(address src, address dst, uint256 amount)externalreturns (bool);function approve(address spender, uint256 amount) external returns (bool);function allowance(address owner, address spender)externalviewreturns (uint256);function balanceOf(address owner) external view returns (uint256);function balanceOfUnderlying(address owner) external returns (uint256);function getAccountSnapshot(address account)externalview
123456789pragma solidity 0.5.17;// Compound finance Comptroller interface// Documentation: https://compound.finance/docs/comptrollerinterface IComptroller {function claimComp(address holder) external;function getCompAddress() external view returns (address);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.5.17;interface Vault {function deposit(uint256) external;function withdraw(uint256) external;function getPricePerFullShare() external view returns (uint256);/*** @dev Returns the amount of tokens in existence.*/function totalSupply() external view returns (uint256);/*** @dev Returns the amount of tokens owned by `account`.*/function balanceOf(address account) external view returns (uint256);/*** @dev Moves `amount` tokens from the caller's account to `recipient`.** Returns a boolean value indicating whether the operation succeeded.*
1234567891011121314151617181920212223242526pragma solidity 0.5.17;import "@openzeppelin/contracts/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/ownership/Ownable.sol";import "@openzeppelin/contracts/utils/Address.sol";import "../IMoneyMarket.sol";import "../../libs/DecMath.sol";import "./imports/Vault.sol";contract YVaultMarket is IMoneyMarket, Ownable {using SafeMath for uint256;using DecMath for uint256;using SafeERC20 for ERC20;using Address for address;Vault public vault;ERC20 public stablecoin;constructor(address _vault, address _stablecoin) public {// Verify input addressesrequire(_vault != address(0) && _stablecoin != address(0),"YVaultMarket: An input address is 0");
123456// SPDX-License-Identifier: GPL-3.0-or-laterpragma solidity 0.5.17;interface IRewards {function notifyRewardAmount(uint256 reward) external;}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity 0.5.17;interface OneSplitAudit {function swap(address fromToken,address destToken,uint256 amount,uint256 minReturn,uint256[] calldata distribution,uint256 flags) external payable returns (uint256 returnAmount);function getExpectedReturn(address fromToken,address destToken,uint256 amount,uint256 parts,uint256 flags // See constants in IOneSplit.sol)externalviewreturns (uint256 returnAmount, uint256[] memory distribution);}
1234567891011121314151617181920212223242526/*____ __ __ __ _/ __/__ __ ___ / /_ / / ___ / /_ (_)__ ___\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ //___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\/___/* Synthetix: Rewards.sol** Docs: https://docs.synthetix.io/*** MIT License* ===========** Copyright (c) 2020 Synthetix** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in all* copies or substantial portions of the Software.*
1234567891011121314151617181920212223242526pragma solidity ^0.5.0;/*** @dev Standard math utilities missing in the Solidity language.*/library Math {/*** @dev Returns the largest of two numbers.*/function max(uint256 a, uint256 b) internal pure returns (uint256) {return a >= b ? a : b;}/*** @dev Returns the smallest of two numbers.*/function min(uint256 a, uint256 b) internal pure returns (uint256) {return a < b ? a : b;}/*** @dev Returns the average of two numbers. The result is rounded towards* zero.*/function average(uint256 a, uint256 b) internal pure returns (uint256) {// (a + b) / 2 can overflow, so we distribute
123456789101112131415161718{"metadata": {"useLiteralContent": true},"optimizer": {"enabled": true,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","abi"]}}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"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":"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"},{"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":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":false,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerMint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405180604001604052806009815260200168038386d70682e6170760bc1b8152506040518060400160405280600381526020016209aa0960eb1b815250601282600390805190602001906100679291906100fd565b50815161007b9060049060208501906100fd565b506005805460ff191660ff92909216919091179055506000905061009d6100f8565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610195565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061013e57805160ff191683800117855561016b565b8280016001018555821561016b579182015b8281111561016b578251825591602001919060010190610150565b5061017792915061017b565b5090565b6100fa91905b808211156101775760008155600101610181565b610ed180620001a56000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063a1291f7f11610071578063a1291f7f146102f7578063a457c2d71461032d578063a9059cbb14610359578063dd62ed3e14610385578063f2fde38b146103b35761010b565b8063715018a6146102b95780638da5cb5b146102c35780638f32d59b146102e757806395d89b41146102ef5761010b565b8063313ce567116100de578063313ce5671461021d578063395093511461023b578063484b973c1461026757806370a08231146102935761010b565b806306fdde0314610110578063095ea7b31461018d57806318160ddd146101cd57806323b872dd146101e7575b600080fd5b6101186103d9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b03813516906020013561046f565b604080519115158252519081900360200190f35b6101d561048c565b60408051918252519081900360200190f35b6101b9600480360360608110156101fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610492565b61022561051f565b6040805160ff9092168252519081900360200190f35b6101b96004803603604081101561025157600080fd5b506001600160a01b038135169060200135610528565b6101b96004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561057c565b6101d5600480360360208110156102a957600080fd5b50356001600160a01b03166105cf565b6102c16105ea565b005b6102cb610681565b604080516001600160a01b039092168252519081900360200190f35b6101b9610695565b6101186106c0565b6101b96004803603606081101561030d57600080fd5b506001600160a01b03813581169160208101359091169060400135610721565b6101b96004803603604081101561034357600080fd5b506001600160a01b038135169060200135610775565b6101b96004803603604081101561036f57600080fd5b506001600160a01b0381351690602001356107e3565b6101d56004803603604081101561039b57600080fd5b506001600160a01b03813581169160200135166107f7565b6102c1600480360360208110156103c957600080fd5b50356001600160a01b0316610822565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104655780601f1061043a57610100808354040283529160200191610465565b820191906000526020600020905b81548152906001019060200180831161044857829003601f168201915b5050505050905090565b600061048361047c610875565b8484610879565b50600192915050565b60025490565b600061049f848484610965565b610515846104ab610875565b61051085604051806060016040528060288152602001610de7602891396001600160a01b038a166000908152600160205260408120906104e9610875565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610ac116565b610879565b5060019392505050565b60055460ff1690565b6000610483610535610875565b846105108560016000610546610875565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610b5816565b6000610586610695565b6105c5576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b6104838383610bb9565b6001600160a01b031660009081526020819052604090205490565b6105f2610695565b610631576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b03166106b1610875565b6001600160a01b031614905090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104655780601f1061043a57610100808354040283529160200191610465565b600061072b610695565b61076a576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b610515848484610965565b6000610483610782610875565b8461051085604051806060016040528060258152602001610e7860259139600160006107ac610875565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610ac116565b60006104836107f0610875565b8484610965565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61082a610695565b610869576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b61087281610ca9565b50565b3390565b6001600160a01b0383166108be5760405162461bcd60e51b8152600401808060200182810382526024815260200180610e546024913960400191505060405180910390fd5b6001600160a01b0382166109035760405162461bcd60e51b8152600401808060200182810382526022815260200180610d9f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166109aa5760405162461bcd60e51b8152600401808060200182810382526025815260200180610e2f6025913960400191505060405180910390fd5b6001600160a01b0382166109ef5760405162461bcd60e51b8152600401808060200182810382526023815260200180610d566023913960400191505060405180910390fd5b610a3281604051806060016040528060268152602001610dc1602691396001600160a01b038616600090815260208190526040902054919063ffffffff610ac116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610a67908263ffffffff610b5816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610b505760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b15578181015183820152602001610afd565b50505050905090810190601f168015610b425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610bb2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610c14576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610c27908263ffffffff610b5816565b6002556001600160a01b038216600090815260208190526040902054610c53908263ffffffff610b5816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116610cee5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d796026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b031990921691909117905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820aae45f798727492777c23461f0cc870a0f13c017824d38c89c7028e23cfb191564736f6c63430005110032
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063a1291f7f11610071578063a1291f7f146102f7578063a457c2d71461032d578063a9059cbb14610359578063dd62ed3e14610385578063f2fde38b146103b35761010b565b8063715018a6146102b95780638da5cb5b146102c35780638f32d59b146102e757806395d89b41146102ef5761010b565b8063313ce567116100de578063313ce5671461021d578063395093511461023b578063484b973c1461026757806370a08231146102935761010b565b806306fdde0314610110578063095ea7b31461018d57806318160ddd146101cd57806323b872dd146101e7575b600080fd5b6101186103d9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b03813516906020013561046f565b604080519115158252519081900360200190f35b6101d561048c565b60408051918252519081900360200190f35b6101b9600480360360608110156101fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610492565b61022561051f565b6040805160ff9092168252519081900360200190f35b6101b96004803603604081101561025157600080fd5b506001600160a01b038135169060200135610528565b6101b96004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561057c565b6101d5600480360360208110156102a957600080fd5b50356001600160a01b03166105cf565b6102c16105ea565b005b6102cb610681565b604080516001600160a01b039092168252519081900360200190f35b6101b9610695565b6101186106c0565b6101b96004803603606081101561030d57600080fd5b506001600160a01b03813581169160208101359091169060400135610721565b6101b96004803603604081101561034357600080fd5b506001600160a01b038135169060200135610775565b6101b96004803603604081101561036f57600080fd5b506001600160a01b0381351690602001356107e3565b6101d56004803603604081101561039b57600080fd5b506001600160a01b03813581169160200135166107f7565b6102c1600480360360208110156103c957600080fd5b50356001600160a01b0316610822565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104655780601f1061043a57610100808354040283529160200191610465565b820191906000526020600020905b81548152906001019060200180831161044857829003601f168201915b5050505050905090565b600061048361047c610875565b8484610879565b50600192915050565b60025490565b600061049f848484610965565b610515846104ab610875565b61051085604051806060016040528060288152602001610de7602891396001600160a01b038a166000908152600160205260408120906104e9610875565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610ac116565b610879565b5060019392505050565b60055460ff1690565b6000610483610535610875565b846105108560016000610546610875565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610b5816565b6000610586610695565b6105c5576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b6104838383610bb9565b6001600160a01b031660009081526020819052604090205490565b6105f2610695565b610631576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b60055461010090046001600160a01b031690565b60055460009061010090046001600160a01b03166106b1610875565b6001600160a01b031614905090565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104655780601f1061043a57610100808354040283529160200191610465565b600061072b610695565b61076a576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b610515848484610965565b6000610483610782610875565b8461051085604051806060016040528060258152602001610e7860259139600160006107ac610875565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610ac116565b60006104836107f0610875565b8484610965565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61082a610695565b610869576040805162461bcd60e51b81526020600482018190526024820152600080516020610e0f833981519152604482015290519081900360640190fd5b61087281610ca9565b50565b3390565b6001600160a01b0383166108be5760405162461bcd60e51b8152600401808060200182810382526024815260200180610e546024913960400191505060405180910390fd5b6001600160a01b0382166109035760405162461bcd60e51b8152600401808060200182810382526022815260200180610d9f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166109aa5760405162461bcd60e51b8152600401808060200182810382526025815260200180610e2f6025913960400191505060405180910390fd5b6001600160a01b0382166109ef5760405162461bcd60e51b8152600401808060200182810382526023815260200180610d566023913960400191505060405180910390fd5b610a3281604051806060016040528060268152602001610dc1602691396001600160a01b038616600090815260208190526040902054919063ffffffff610ac116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610a67908263ffffffff610b5816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610b505760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b15578181015183820152602001610afd565b50505050905090810190601f168015610b425780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610bb2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610c14576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610c27908263ffffffff610b5816565b6002556001600160a01b038216600090815260208190526040902054610c53908263ffffffff610b5816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038116610cee5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d796026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b031990921691909117905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820aae45f798727492777c23461f0cc870a0f13c017824d38c89c7028e23cfb191564736f6c63430005110032
Deployed Bytecode Sourcemap
202:496:48:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;202:496:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:8;;;:::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;644:81:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:7;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:7;;;;;;;;;;;;;;;;;:::i;1472:81:8:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3802:207:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:7;;;;;;;;:::i;326:172:48:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;326:172:48;;;;;;;;:::i;1706:108:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:7;-1:-1:-1;;;;;1706:108:7;;:::i;1684:137:6:-;;;:::i;:::-;;899:77;;;:::i;:::-;;;;-1:-1:-1;;;;;899:77:6;;;;;;;;;;;;;;1250:92;;;:::i;838:85:8:-;;;:::i;504:192:48:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;504:192:48;;;;;;;;;;;;;;;;;:::i;4496:258:7:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:7;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:7;;;;;;;;:::i;2230:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:7;;;;;;;;;;:::i;1970:107:6:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1970:107:6;-1:-1:-1;;;;;1970:107:6;;:::i;644:81:8:-;713:5;706:12;;;;;;;;-1:-1:-1;;706:12:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;681:13;;706:12;;713:5;;706:12;;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:7:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:7;2500:149;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:7;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:7;;;;;;;;;;;;-1:-1:-1;3289:33:7;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:7;3107:300;;;;;:::o;1472:81:8:-;1537:9;;;;1472:81;:::o;3802:207:7:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:7;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:7;;;:34;;;;;;;;;;;:50;:38;:50;:::i;326:172:48:-;428:4;1103:9:6;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:6;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:6;;;;;;;;;;;;;;;448:22:48;454:7;463:6;448:5;:22::i;1706:108:7:-;-1:-1:-1;;;;;1789:18:7;1763:7;1789:18;;;;;;;;;;;;1706:108::o;1684:137:6:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:6;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:6;;;;;;;;;;;;;;;1766:6;;1745:40;;1782:1;;1766:6;;;-1:-1:-1;;;;;1766:6:6;;1745:40;;1782:1;;1745:40;1795:6;:19;;-1:-1:-1;;;;;;1795:19:6;;;1684:137::o;899:77::-;963:6;;;;;-1:-1:-1;;;;;963:6:6;;899:77::o;1250:92::-;1329:6;;1290:4;;1329:6;;;-1:-1:-1;;;;;1329:6:6;1313:12;:10;:12::i;:::-;-1:-1:-1;;;;;1313:22:6;;1306:29;;1250:92;:::o;838:85:8:-;909:7;902:14;;;;;;;;-1:-1:-1;;902:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:13;;902:14;;909:7;;902:14;;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;504:192:48;625:4;1103:9:6;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:6;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:6;;;;;;;;;;;;;;;641:27:48;651:4;657:2;661:6;641:9;:27::i;4496:258:7:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:7;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:7;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;2230:132::-;-1:-1:-1;;;;;2328:18:7;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;1970:107:6:-;1103:9;:7;:9::i;:::-;1095:54;;;;;-1:-1:-1;;;1095:54:6;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1095:54:6;;;;;;;;;;;;;;;2042:28;2061:8;2042:18;:28::i;:::-;1970:107;:::o;788:96:0:-;867:10;788:96;:::o;7350:332:7:-;-1:-1:-1;;;;;7443:19:7;;7435:68;;;;-1:-1:-1;;;7435:68:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:7;;7513:68;;;;-1:-1:-1;;;7513:68:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:7;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:7;;5317:70;;;;-1:-1:-1;;;5317:70:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:7;;5397:71;;;;-1:-1:-1;;;5397:71:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:7;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:7;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:7;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:5:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;1837:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:5;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:5:o;5962:302:7:-;-1:-1:-1;;;;;6037:21:7;;6029:65;;;;;-1:-1:-1;;;6029:65:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:7;;:9;:18;;;;;;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:7;;:9;:18;;;;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;:9;;6220:37;;;;;;;;;;5962:302;;:::o;2178:225:6:-;-1:-1:-1;;;;;2251:22:6;;2243:73;;;;-1:-1:-1;;;2243:73:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:6;;2331:38;;-1:-1:-1;;;;;2331:38:6;;;;2352:6;;;;;2331:38;;;;;2379:6;:17;;-1:-1:-1;;;;;2379:17:6;;;;;-1:-1:-1;;;;;;2379:17:6;;;;;;;;;2178:225::o
Swarm Source
bzzr://aae45f798727492777c23461f0cc870a0f13c017824d38c89c7028e23cfb1915
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.