Overview
Max Total Supply
100,000,000 APY
Holders
12,839 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-0.74%)
Onchain Market Cap
$84,241.00
Circulating Supply Market Cap
$56,128.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
192.974437966979893457 APYValue
$0.16 ( ~7.18551730902411E-05 Eth) [0.0002%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
APYGovernanceTokenProxy
Compiler Version
v0.6.11+commit.5ef660b1
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
123456789101112131415161718192021222324// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/proxy/TransparentUpgradeableProxy.sol";contract APYGovernanceTokenProxy is TransparentUpgradeableProxy {constructor(address _logic,address _proxyAdmin,uint256 _totalSupply)publicTransparentUpgradeableProxy(_logic,_proxyAdmin,abi.encodeWithSignature("initialize(address,uint256)",_proxyAdmin,_totalSupply)){} // solhint-disable no-empty-blocks}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol";import "@openzeppelin/contracts-ethereum-package/contracts/Initializable.sol";import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol";contract APYGovernanceToken isInitializable,OwnableUpgradeSafe,ERC20UpgradeSafe{/* ------------------------------- *//* impl-specific storage variables *//* ------------------------------- */address public proxyAdmin;/* ------------------------------- */event AdminChanged(address);function initialize(address adminAddress, uint256 totalSupply)externalinitializer{
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;import "../GSN/Context.sol";import "../Initializable.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.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** 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 OwnableUpgradeSafe is Initializable, ContextUpgradeSafe {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.*/function __Ownable_init() internal initializer {
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;import "../Initializable.sol";/** @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 ContextUpgradeSafe is Initializable {// Empty internal constructor, to prevent people from mistakenly deploying// an instance of this contract, which should be used via inheritance.function __Context_init() internal initializer {__Context_init_unchained();}function __Context_init_unchained() internal initializer {}
1234567891011121314151617181920212223242526pragma solidity >=0.4.24 <0.7.0;/*** @title Initializable** @dev Helper contract to support initializer functions. To use it, replace* the constructor with a function that has the `initializer` modifier.* WARNING: Unlike constructors, initializer functions must be manually* invoked. This applies both to deploying an Initializable contract, as well* as extending an Initializable contract via inheritance.* WARNING: When used with inheritance, manual care must be taken to not invoke* a parent initializer twice, or ensure that all initializers are idempotent,* because this is not dealt with automatically as with constructors.*/contract Initializable {/*** @dev Indicates that the contract has been initialized.*/bool private initialized;/*** @dev Indicates that the contract is in the process of being initialized.*/bool private initializing;
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;import "../../GSN/Context.sol";import "./IERC20.sol";import "../../math/SafeMath.sol";import "../../utils/Address.sol";import "../../Initializable.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 {ERC20MinterPauser}.** 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
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/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.6.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.6.2;/*** @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
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;import "./UpgradeableProxy.sol";/*** @dev This contract implements a proxy that is upgradeable by an admin.** To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector* clashing], which can potentially be used in an attack, this contract uses the* https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two* things that go hand in hand:** 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if* that call matches one of the admin functions exposed by the proxy itself.* 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the* implementation. If the admin tries to call a function on the implementation it will fail with an error that says* "admin cannot fallback to proxy target".** These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing* the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due* to sudden errors when trying to call a function from the proxy implementation.** Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,* you should think of the `ProxyAdmin` instance as the real administrative inerface of your proxy.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;import "./Proxy.sol";import "../utils/Address.sol";/*** @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an* implementation address that can be changed. This address is stored in storage in the location specified by* https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the* implementation behind the proxy.** Upgradeability is only provided internally through {_upgradeTo}. For an externally upgradeable proxy see* {TransparentUpgradeableProxy}.*/contract UpgradeableProxy is Proxy {/*** @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.** If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded* function call, and allows initializating the storage of the proxy like a Solidity constructor.*/constructor(address _logic, bytes memory _data) public payable {assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));_setImplementation(_logic);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;/*** @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to* be specified by overriding the virtual {_implementation} function.** Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a* different contract through the {_delegate} function.** The success and return data of the delegated call will be returned back to the caller of the proxy.*/abstract contract Proxy {/*** @dev Delegates the current call to `implementation`.** This function does not return to its internall call site, it will return directly to the external caller.*/function _delegate(address implementation) internal {// solhint-disable-next-line no-inline-assemblyassembly {// Copy msg.data. We take full control of memory in this inline assembly// block because it will not return to Solidity code. We overwrite the// Solidity scratch pad at memory position 0.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.2;/*** @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) {
12345678910111213// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;pragma experimental ABIEncoderV2;import "./APYGovernanceToken.sol";contract APYGovernanceTokenUpgraded is APYGovernanceToken {bool public newlyAddedVariable;function initializeUpgrade() public override onlyAdmin {newlyAddedVariable = true;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts-ethereum-package/contracts/access/Ownable.sol";import "@openzeppelin/contracts-ethereum-package/contracts/utils/ReentrancyGuard.sol";import "@openzeppelin/contracts-ethereum-package/contracts/utils/Pausable.sol";import "@openzeppelin/contracts-ethereum-package/contracts/Initializable.sol";import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol";import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol";import "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol";import "./interfaces/ILiquidityPool.sol";contract APYPoolToken isILiquidityPool,Initializable,OwnableUpgradeSafe,ReentrancyGuardUpgradeSafe,PausableUpgradeSafe,ERC20UpgradeSafe{using SafeMath for uint256;using SafeERC20 for IERC20;uint256 public constant DEFAULT_APT_TO_UNDERLYER_FACTOR = 1000;
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;import "../Initializable.sol";/*** @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].*/contract ReentrancyGuardUpgradeSafe is Initializable {bool private _notEntered;function __ReentrancyGuard_init() internal initializer {__ReentrancyGuard_init_unchained();}
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;import "../GSN/Context.sol";import "../Initializable.sol";/*** @dev Contract module which allows children to implement an emergency stop* mechanism that can be triggered by an authorized account.** This module is used through inheritance. It will make available the* modifiers `whenNotPaused` and `whenPaused`, which can be applied to* the functions of your contract. Note that they will not be pausable by* simply including this module, only once the modifiers are put in place.*/contract PausableUpgradeSafe is Initializable, ContextUpgradeSafe {/*** @dev Emitted when the pause is triggered by `account`.*/event Paused(address account);/*** @dev Emitted when the pause is lifted by `account`.*/event Unpaused(address account);bool private _paused;
1234567891011121314151617181920212223242526pragma solidity ^0.6.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.6.0;interface AggregatorV3Interface {function decimals() external view returns (uint8);function description() external view returns (string memory);function version() external view returns (uint256);// getRoundData and latestRoundData should both raise "No data present"// if they do not have data to report, instead of returning unset values// which could be misinterpreted as actual reported values.function getRoundData(uint80 _roundId)externalviewreturns (uint80 roundId,int256 answer,uint256 startedAt,uint256 updatedAt,uint80 answeredInRound);function latestRoundData()externalviewreturns (uint80 roundId,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol";interface ILiquidityPool {event DepositedAPT(address indexed sender,IERC20 token,uint256 tokenAmount,uint256 aptMintAmount,uint256 tokenEthValue,uint256 totalEthValueLocked);event RedeemedAPT(address indexed sender,IERC20 token,uint256 redeemedTokenAmount,uint256 aptRedeemAmount,uint256 tokenEthValue,uint256 totalEthValueLocked);event AddLiquidityLocked();event AddLiquidityUnlocked();event RedeemLocked();event RedeemUnlocked();event AdminChanged(address);
12345678910111213// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;pragma experimental ABIEncoderV2;import "./APYPoolToken.sol";contract APYPoolTokenUpgraded is APYPoolToken {bool public newlyAddedVariable;function initializeUpgrade() public override onlyAdmin {newlyAddedVariable = true;}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;pragma experimental ABIEncoderV2;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";import "@openzeppelin/contracts/cryptography/ECDSA.sol";import "@openzeppelin/contracts/access/Ownable.sol";contract APYRewardDistributor is Ownable {using ECDSA for bytes32;using SafeERC20 for IERC20;event SignerSet(address newSigner);event Claimed(uint256 nonce, address recipient, uint256 amount);struct EIP712Domain {string name;string version;uint256 chainId;address verifyingContract;}struct Recipient {uint256 nonce;address wallet;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/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);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.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 IERC20;` 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 {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.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:*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;/*** @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.** These functions can be used to verify that a message was signed by the holder* of the private keys of a given address.*/library ECDSA {/*** @dev Returns the address that signed a hashed message (`hash`) with* `signature`. This address can then be used for verification purposes.** The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:* this function rejects them by requiring the `s` value to be in the lower* half order, and the `v` value to be either 27 or 28.** IMPORTANT: `hash` _must_ be the result of a hash operation for the* verification to be secure: it is possible to craft signatures that* recover to arbitrary addresses for non-hashed data. A safe way to ensure* this is by receiving a hash of the original message (which may otherwise* be too long), and then calling {toEthSignedMessageHash} on it.*/function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.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.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** 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 {
123456789101112131415161718192021222324// SPDX-License-Identifier: MITpragma solidity ^0.6.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.*/abstract contract Context {function _msgSender() internal view virtual returns (address payable) {return msg.sender;}function _msgData() internal view virtual returns (bytes memory) {this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691return msg.data;}}
12345678910// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;// We import the contract so truffle compiles it, and we have the ABI// available when working from truffle console.import "@gnosis.pm/mock-contract/contracts/MockContract.sol";import "@openzeppelin/contracts/proxy/ProxyAdmin.sol";import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; //helpersimport "./interfaces/IMintableERC20.sol";
1234567891011121314151617181920212223242526pragma solidity ^0.6.0;interface MockInterface {/*** @dev After calling this method, the mock will return `response` when it is called* with any calldata that is not mocked more specifically below* (e.g. using givenMethodReturn).* @param response ABI encoded response that will be returned if method is invoked*/function givenAnyReturn(bytes calldata response) external;function givenAnyReturnBool(bool response) external;function givenAnyReturnUint(uint response) external;function givenAnyReturnAddress(address response) external;function givenAnyRevert() external;function givenAnyRevertWithMessage(string calldata message) external;function givenAnyRunOutOfGas() external;/*** @dev After calling this method, the mock will return `response` when the given* methodId is called regardless of arguments. If the methodId and arguments* are mocked more specifically (using `givenMethodAndArguments`) the latter* will take precedence.* @param method ABI encoded methodId. It is valid to pass full calldata (including arguments). The mock will extract the methodId from it* @param response ABI encoded response that will be returned if method is invoked*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;import "../access/Ownable.sol";import "./TransparentUpgradeableProxy.sol";/*** @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an* explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.*/contract ProxyAdmin is Ownable {/*** @dev Returns the current implementation of `proxy`.** Requirements:** - This contract must be the admin of `proxy`.*/function getProxyImplementation(TransparentUpgradeableProxy proxy) public view returns (address) {// We need to manually run the static call since the getter cannot be flagged as view// bytes4(keccak256("implementation()")) == 0x5c60da1b(bool success, bytes memory returndata) = address(proxy).staticcall(hex"5c60da1b");require(success);return abi.decode(returndata, (address));
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.6.0;import "../../GSN/Context.sol";import "./IERC20.sol";import "../../math/SafeMath.sol";import "../../utils/Address.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 {ERC20PresetMinterPauser}.** 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
1234567891011121314// SPDX-License-Identifier: UNLICENSEDpragma solidity 0.6.11;import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";interface IMintableERC20 is IERC20 {function mint(address account, uint256 amount) external;function name() external view returns (string memory);function symbol() external view returns (string memory);function decimals() external view returns (uint8);}
12345678910111213141516171819{"metadata": {"useLiteralContent": false},"optimizer": {"enabled": true,"runs": 999999},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_proxyAdmin","type":"address"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000bba38038062000bba833981016040819052620000349162000211565b828283836040516024016200004b929190620002e1565b60408051601f198184030181529181526020820180516001600160e01b031663cd6dc68760e01b179052518390829060019062000088906200028f565b6040519081900390200360008051602062000b9a83398151915214620000aa57fe5b620000be826001600160e01b036200018916565b80511562000135576000826001600160a01b031682604051620000e2919062000253565b600060405180830381855af49150503d80600081146200011f576040519150601f19603f3d011682016040523d82523d6000602084013e62000124565b606091505b50509050806200013357600080fd5b505b505060016040516200014790620002b8565b6040519081900390200360008051602062000b7a833981519152146200016957fe5b6200017d826001600160e01b03620001da16565b50505050505062000357565b6200019f81620001ed60201b620003ba1760201c565b620001c75760405162461bcd60e51b8152600401620001be90620002fa565b60405180910390fd5b60008051602062000b9a83398151915255565b60008051602062000b7a83398151915255565b3b151590565b80516001600160a01b03811681146200020b57600080fd5b92915050565b60008060006060848603121562000226578283fd5b620002328585620001f3565b9250620002438560208601620001f3565b9150604084015190509250925092565b60008251815b8181101562000275576020818601810151858301520162000259565b81811115620002845782828501525b509190910192915050565b7f656970313936372e70726f78792e696d706c656d656e746174696f6e000000008152601c0190565b7f656970313936372e70726f78792e61646d696e00000000000000000000000000815260130190565b6001600160a01b03929092168252602082015260400190565b60208082526036908201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160408201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606082015260800190565b61081380620003676000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d3578063f851a440146100f35761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b610108565b005b61006b610108565b34801561008157600080fd5b5061006b610090366004610577565b610122565b61006b6100a33660046105b2565b610176565b3480156100b457600080fd5b506100bd610244565b6040516100ca9190610658565b60405180910390f35b3480156100df57600080fd5b5061006b6100ee366004610577565b61029b565b3480156100ff57600080fd5b506100bd610375565b6101106103c0565b61012061011b610435565b61045a565b565b61012a61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561016b57610166816104a3565b610173565b610173610108565b50565b61017e61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610237576101ba836104a3565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516101e3929190610648565b600060405180830381855af49150503d806000811461021e576040519150601f19603f3d011682016040523d82523d6000602084013e610223565b606091505b505090508061023157600080fd5b5061023f565b61023f610108565b505050565b600061024e61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561029057610289610435565b9050610298565b610298610108565b90565b6102a361047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561016b5773ffffffffffffffffffffffffffffffffffffffff811661032c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610323906106a0565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035561047e565b82604051610364929190610679565b60405180910390a1610166816104f0565b600061037f61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102905761028961047e565b3b151590565b6103c861047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561042d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103239061075a565b610120610120565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610479573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6104ac81610514565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61051d816103ba565b610553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610323906106fd565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b600060208284031215610588578081fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146105ab578182fd5b9392505050565b6000806000604084860312156105c6578182fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146105e9578283fd5b9250602084013567ffffffffffffffff80821115610605578384fd5b81860187601f820112610616578485fd5b8035925081831115610626578485fd5b876020848301011115610637578485fd5b949760209095019650909450505050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6020808252603a908201527f5472616e73706172656e745570677261646561626c6550726f78793a206e657760408201527f2061646d696e20697320746865207a65726f2061646472657373000000000000606082015260800190565b60208082526036908201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160408201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606082015260800190565b60208082526042908201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60408201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760608201527f6574000000000000000000000000000000000000000000000000000000000000608082015260a0019056fea26469706673582212205c21037165a8e5a71e50ac65c368d6f6d23f631dbacfb7c7aec476a34919ca2764736f6c634300060b0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc000000000000000000000000561af1ec26491a89e3907fb11eed479843240b620000000000000000000000003dea1f053ab24b0c5b0c663b1c07b6b702e973d900000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Deployed Bytecode
0x60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d3578063f851a440146100f35761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b610108565b005b61006b610108565b34801561008157600080fd5b5061006b610090366004610577565b610122565b61006b6100a33660046105b2565b610176565b3480156100b457600080fd5b506100bd610244565b6040516100ca9190610658565b60405180910390f35b3480156100df57600080fd5b5061006b6100ee366004610577565b61029b565b3480156100ff57600080fd5b506100bd610375565b6101106103c0565b61012061011b610435565b61045a565b565b61012a61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561016b57610166816104a3565b610173565b610173610108565b50565b61017e61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610237576101ba836104a3565b60008373ffffffffffffffffffffffffffffffffffffffff1683836040516101e3929190610648565b600060405180830381855af49150503d806000811461021e576040519150601f19603f3d011682016040523d82523d6000602084013e610223565b606091505b505090508061023157600080fd5b5061023f565b61023f610108565b505050565b600061024e61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561029057610289610435565b9050610298565b610298610108565b90565b6102a361047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561016b5773ffffffffffffffffffffffffffffffffffffffff811661032c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610323906106a0565b60405180910390fd5b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035561047e565b82604051610364929190610679565b60405180910390a1610166816104f0565b600061037f61047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102905761028961047e565b3b151590565b6103c861047e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561042d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103239061075a565b610120610120565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e808015610479573d6000f35b3d6000fd5b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6104ac81610514565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b61051d816103ba565b610553576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610323906106fd565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b600060208284031215610588578081fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146105ab578182fd5b9392505050565b6000806000604084860312156105c6578182fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146105e9578283fd5b9250602084013567ffffffffffffffff80821115610605578384fd5b81860187601f820112610616578485fd5b8035925081831115610626578485fd5b876020848301011115610637578485fd5b949760209095019650909450505050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6020808252603a908201527f5472616e73706172656e745570677261646561626c6550726f78793a206e657760408201527f2061646d696e20697320746865207a65726f2061646472657373000000000000606082015260800190565b60208082526036908201527f5570677261646561626c6550726f78793a206e657720696d706c656d656e746160408201527f74696f6e206973206e6f74206120636f6e747261637400000000000000000000606082015260800190565b60208082526042908201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60408201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760608201527f6574000000000000000000000000000000000000000000000000000000000000608082015260a0019056fea26469706673582212205c21037165a8e5a71e50ac65c368d6f6d23f631dbacfb7c7aec476a34919ca2764736f6c634300060b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000561af1ec26491a89e3907fb11eed479843240b620000000000000000000000003dea1f053ab24b0c5b0c663b1c07b6b702e973d900000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
-----Decoded View---------------
Arg [0] : _logic (address): 0x561aF1eC26491A89E3907fb11eed479843240b62
Arg [1] : _proxyAdmin (address): 0x3DEA1f053ab24b0c5B0C663B1c07B6b702e973D9
Arg [2] : _totalSupply (uint256): 100000000000000000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000561af1ec26491a89e3907fb11eed479843240b62
Arg [1] : 0000000000000000000000003dea1f053ab24b0c5b0c663b1c07b6b702e973d9
Arg [2] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
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.