ERC-20
Overview
Max Total Supply
300,848.620359 ERC20 ***
Holders
1,073
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
200 ERC20 ***Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xc5585164...E2436d61A The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
InterestToken
Compiler Version
v0.8.0+commit.c7dfd78e
Optimization Enabled:
Yes with 7500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; import "./libraries/ERC20Permit.sol"; import "./libraries/DateString.sol"; import "./interfaces/IInterestToken.sol"; import "./interfaces/ITranche.sol"; contract InterestToken is ERC20Permit, IInterestToken { // The tranche address which controls the minting ITranche public immutable tranche; /// @dev Initializes the ERC20 and writes the correct names /// @param _tranche The tranche contract address /// @param _strategySymbol The symbol of the associated WrappedPosition contract /// @param _timestamp The unlock time on the tranche /// @param _decimals The decimal encoding for this token constructor( address _tranche, string memory _strategySymbol, uint256 _timestamp, uint8 _decimals ) ERC20Permit( _processName("Element Yield Token ", _strategySymbol, _timestamp), _processSymbol("eY", _strategySymbol, _timestamp) ) { tranche = ITranche(_tranche); _setupDecimals(_decimals); } /// @notice We use this function to add the date to the name string /// @param _name start of the name /// @param _strategySymbol the strategy symbol /// @param _timestamp the unix second timestamp to be encoded and added to the end of the string function _processName( string memory _name, string memory _strategySymbol, uint256 _timestamp ) internal returns (string memory) { // Set the name in the super name = _name; // Use the library to write the rest DateString._encodeAndWriteTimestamp(_strategySymbol, _timestamp, name); // load and return the name return name; } /// @notice We use this function to add the date to the name string /// @param _symbol start of the symbol /// @param _strategySymbol the strategy symbol /// @param _timestamp the unix second timestamp to be encoded and added to the end of the string function _processSymbol( string memory _symbol, string memory _strategySymbol, uint256 _timestamp ) internal returns (string memory) { // Set the symbol in the super symbol = _symbol; // Use the library to write the rest DateString._encodeAndWriteTimestamp( _strategySymbol, _timestamp, symbol ); // load and return the name return symbol; } /// @dev Aliasing of the lookup method for the supply of yield tokens which /// improves our ERC20 compatibility. /// @return The total supply of yield tokens function totalSupply() external view returns (uint256) { return uint256(tranche.interestSupply()); } /// @dev Prevents execution if the caller isn't the tranche modifier onlyMintAuthority() { require( msg.sender == address(tranche), "caller is not an authorized minter" ); _; } /// @dev Mints tokens to an address /// @param _account The account to mint to /// @param _amount The amount to mint function mint(address _account, uint256 _amount) external override onlyMintAuthority { _mint(_account, _amount); } /// @dev Burns tokens from an address /// @param _account The account to burn from /// @param _amount The amount of token to burn function burn(address _account, uint256 _amount) external override onlyMintAuthority { _burn(_account, _amount); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; import "../interfaces/IERC20Permit.sol"; // This default erc20 library is designed for max efficiency and security. // WARNING: By default it does not include totalSupply which breaks the ERC20 standard // to use a fully standard compliant ERC20 use 'ERC20PermitWithSupply" abstract contract ERC20Permit is IERC20Permit { // --- ERC20 Data --- // The name of the erc20 token string public name; // The symbol of the erc20 token string public override symbol; // The decimals of the erc20 token, should default to 18 for new tokens uint8 public override decimals; // A mapping which tracks user token balances mapping(address => uint256) public override balanceOf; // A mapping which tracks which addresses a user allows to move their tokens mapping(address => mapping(address => uint256)) public override allowance; // A mapping which tracks the permit signature nonces for users mapping(address => uint256) public override nonces; // --- EIP712 niceties --- // solhint-disable-next-line var-name-mixedcase bytes32 public override DOMAIN_SEPARATOR; // bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; /// @notice Initializes the erc20 contract /// @param name_ the value 'name' will be set to /// @param symbol_ the value 'symbol' will be set to /// @dev decimals default to 18 and must be reset by an inheriting contract for /// non standard decimal values constructor(string memory name_, string memory symbol_) { // Set the state variables name = name_; symbol = symbol_; decimals = 18; // By setting these addresses to 0 attempting to execute a transfer to // either of them will revert. This is a gas efficient way to prevent // a common user mistake where they transfer to the token address. // These values are not considered 'real' tokens and so are not included // in 'total supply' which only contains minted tokens. balanceOf[address(0)] = type(uint256).max; balanceOf[address(this)] = type(uint256).max; // Optional extra state manipulation _extraConstruction(); // Computes the EIP 712 domain separator which prevents user signed messages for // this contract to be replayed in other contracts. // https://eips.ethereum.org/EIPS/eip-712 DOMAIN_SEPARATOR = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes(name)), keccak256(bytes("1")), block.chainid, address(this) ) ); } /// @notice An optional override function to execute and change state before immutable assignment function _extraConstruction() internal virtual {} // --- Token --- /// @notice Allows a token owner to send tokens to another address /// @param recipient The address which will be credited with the tokens /// @param amount The amount user token to send /// @return returns true on success, reverts on failure so cannot return false. /// @dev transfers to this contract address or 0 will fail function transfer(address recipient, uint256 amount) public virtual override returns (bool) { // We forward this call to 'transferFrom' return transferFrom(msg.sender, recipient, amount); } /// @notice Transfers an amount of erc20 from a spender to a receipt /// @param spender The source of the ERC20 tokens /// @param recipient The destination of the ERC20 tokens /// @param amount the number of tokens to send /// @return returns true on success and reverts on failure /// @dev will fail transfers which send funds to this contract or 0 function transferFrom( address spender, address recipient, uint256 amount ) public virtual override returns (bool) { // Load balance and allowance uint256 balance = balanceOf[spender]; require(balance >= amount, "ERC20: insufficient-balance"); // We potentially have to change allowances if (spender != msg.sender) { // Loading the allowance in the if block prevents vanilla transfers // from paying for the sload. uint256 allowed = allowance[spender][msg.sender]; // If the allowance is max we do not reduce it // Note - This means that max allowances will be more gas efficient // by not requiring a sstore on 'transferFrom' if (allowed != type(uint256).max) { require(allowed >= amount, "ERC20: insufficient-allowance"); allowance[spender][msg.sender] = allowed - amount; } } // Update the balances balanceOf[spender] = balance - amount; // Note - In the constructor we initialize the 'balanceOf' of address 0 and // the token address to uint256.max and so in 8.0 transfers to those // addresses revert on this step. balanceOf[recipient] = balanceOf[recipient] + amount; // Emit the needed event emit Transfer(spender, recipient, amount); // Return that this call succeeded return true; } /// @notice This internal minting function allows inheriting contracts /// to mint tokens in the way they wish. /// @param account the address which will receive the token. /// @param amount the amount of token which they will receive /// @dev This function is virtual so that it can be overridden, if you /// are reviewing this contract for security you should ensure to /// check for overrides function _mint(address account, uint256 amount) internal virtual { // Add tokens to the account balanceOf[account] = balanceOf[account] + amount; // Emit an event to track the minting emit Transfer(address(0), account, amount); } /// @notice This internal burning function allows inheriting contracts to /// burn tokens in the way they see fit. /// @param account the account to remove tokens from /// @param amount the amount of tokens to remove /// @dev This function is virtual so that it can be overridden, if you /// are reviewing this contract for security you should ensure to /// check for overrides function _burn(address account, uint256 amount) internal virtual { // Reduce the balance of the account balanceOf[account] = balanceOf[account] - amount; // Emit an event tracking transfers emit Transfer(account, address(0), amount); } /// @notice This function allows a user to approve an account which can transfer /// tokens on their behalf. /// @param account The account which will be approve to transfer tokens /// @param amount The approval amount, if set to uint256.max the allowance does not go down on transfers. /// @return returns true for compatibility with the ERC20 standard function approve(address account, uint256 amount) public virtual override returns (bool) { // Set the senders allowance for account to amount allowance[msg.sender][account] = amount; // Emit an event to track approvals emit Approval(msg.sender, account, amount); return true; } /// @notice This function allows a caller who is not the owner of an account to execute the functionality of 'approve' with the owners signature. /// @param owner the owner of the account which is having the new approval set /// @param spender the address which will be allowed to spend owner's tokens /// @param value the new allowance value /// @param deadline the timestamp which the signature must be submitted by to be valid /// @param v Extra ECDSA data which allows public key recovery from signature assumed to be 27 or 28 /// @param r The r component of the ECDSA signature /// @param s The s component of the ECDSA signature /// @dev The signature for this function follows EIP 712 standard and should be generated with the /// eth_signTypedData JSON RPC call instead of the eth_sign JSON RPC call. If using out of date /// parity signing libraries the v component may need to be adjusted. Also it is very rare but possible /// for v to be other values, those values are not supported. function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external override { // The EIP 712 digest for this function bytes32 digest = keccak256( abi.encodePacked( "\x19\x01", DOMAIN_SEPARATOR, keccak256( abi.encode( PERMIT_TYPEHASH, owner, spender, value, nonces[owner], deadline ) ) ) ); // Require that the owner is not zero require(owner != address(0), "ERC20: invalid-address-0"); // Require that we have a valid signature from the owner require(owner == ecrecover(digest, v, r, s), "ERC20: invalid-permit"); // Require that the signature is not expired require( deadline == 0 || block.timestamp <= deadline, "ERC20: permit-expired" ); // Format the signature to the default format require( uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ERC20: invalid signature 's' value" ); // Increment the signature nonce to prevent replay nonces[owner]++; // Set the allowance to the new value allowance[owner][spender] = value; // Emit an approval event to be able to track this happening emit Approval(owner, spender, value); } /// @notice Internal function which allows inheriting contract to set custom decimals /// @param decimals_ the new decimal value function _setupDecimals(uint8 decimals_) internal { // Set the decimals decimals = decimals_; } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; library DateString { uint256 public constant SECONDS_PER_DAY = 24 * 60 * 60; uint256 public constant SECONDS_PER_HOUR = 60 * 60; uint256 public constant SECONDS_PER_MINUTE = 60; int256 public constant OFFSET19700101 = 2440588; // This function was forked from https://github.com/bokkypoobah/BokkyPooBahsDateTimeLibrary // ------------------------------------------------------------------------ // Calculate year/month/day from the number of days since 1970/01/01 using // the date conversion algorithm from // http://aa.usno.navy.mil/faq/docs/JD_Formula.php // and adding the offset 2440588 so that 1970/01/01 is day 0 // // int L = days + 68569 + offset // int N = 4 * L / 146097 // L = L - (146097 * N + 3) / 4 // year = 4000 * (L + 1) / 1461001 // L = L - 1461 * year / 4 + 31 // month = 80 * L / 2447 // dd = L - 2447 * month / 80 // L = month / 11 // month = month + 2 - 12 * L // year = 100 * (N - 49) + year + L // ------------------------------------------------------------------------ // solhint-disable-next-line private-vars-leading-underscore function _daysToDate(uint256 _days) internal pure returns ( uint256 year, uint256 month, uint256 day ) { int256 __days = int256(_days); // solhint-disable-next-line var-name-mixedcase int256 L = __days + 68569 + OFFSET19700101; // solhint-disable-next-line var-name-mixedcase int256 N = (4 * L) / 146097; L = L - (146097 * N + 3) / 4; int256 _year = (4000 * (L + 1)) / 1461001; L = L - (1461 * _year) / 4 + 31; int256 _month = (80 * L) / 2447; int256 _day = L - (2447 * _month) / 80; L = _month / 11; _month = _month + 2 - 12 * L; _year = 100 * (N - 49) + _year + L; year = uint256(_year); month = uint256(_month); day = uint256(_day); } /// @dev Writes a prefix and an timestamp encoding to an output storage location /// This function is designed to only work with ASCII encoded strings. No emojis please. /// @param _prefix The string to write before the timestamp /// @param _timestamp the timestamp to encode and store /// @param _output the storage location of the output string /// NOTE - Current cost ~90k if gas is problem revisit and use assembly to remove the extra /// sstore s. function encodeAndWriteTimestamp( string memory _prefix, uint256 _timestamp, string storage _output ) external { _encodeAndWriteTimestamp(_prefix, _timestamp, _output); } /// @dev Sn internal version of the above function 'encodeAndWriteTimestamp' // solhint-disable-next-line function _encodeAndWriteTimestamp( string memory _prefix, uint256 _timestamp, string storage _output ) internal { // Cast the prefix string to a byte array bytes memory bytePrefix = bytes(_prefix); // Cast the output string to a byte array bytes storage bytesOutput = bytes(_output); // Copy the bytes from the prefix onto the byte array // NOTE - IF PREFIX CONTAINS NON-ASCII CHARS THIS WILL CAUSE AN INCORRECT STRING LENGTH for (uint256 i = 0; i < bytePrefix.length; i++) { bytesOutput.push(bytePrefix[i]); } // Add a '-' to the string to separate the prefix from the the date bytesOutput.push(bytes1("-")); // Add the date string timestampToDateString(_timestamp, _output); } /// @dev Converts a unix second encoded timestamp to a date format (year, month, day) /// then writes the string encoding of that to the output pointer. /// @param _timestamp the unix seconds timestamp /// @param _outputPointer the storage pointer to change. function timestampToDateString( uint256 _timestamp, string storage _outputPointer ) public { _timestampToDateString(_timestamp, _outputPointer); } /// @dev Sn internal version of the above function 'timestampToDateString' // solhint-disable-next-line function _timestampToDateString( uint256 _timestamp, string storage _outputPointer ) internal { // We pretend the string is a 'bytes' only push UTF8 encodings to it bytes storage output = bytes(_outputPointer); // First we get the day month and year (uint256 year, uint256 month, uint256 day) = _daysToDate( _timestamp / SECONDS_PER_DAY ); // First we add encoded day to the string { // Round out the second digit uint256 firstDigit = day / 10; // add it to the encoded byte for '0' output.push(bytes1(uint8(bytes1("0")) + uint8(firstDigit))); // Extract the second digit uint256 secondDigit = day % 10; // add it to the string output.push(bytes1(uint8(bytes1("0")) + uint8(secondDigit))); } // Next we encode the month string and add it if (month == 1) { stringPush(output, "J", "A", "N"); } else if (month == 2) { stringPush(output, "F", "E", "B"); } else if (month == 3) { stringPush(output, "M", "A", "R"); } else if (month == 4) { stringPush(output, "A", "P", "R"); } else if (month == 5) { stringPush(output, "M", "A", "Y"); } else if (month == 6) { stringPush(output, "J", "U", "N"); } else if (month == 7) { stringPush(output, "J", "U", "L"); } else if (month == 8) { stringPush(output, "A", "U", "G"); } else if (month == 9) { stringPush(output, "S", "E", "P"); } else if (month == 10) { stringPush(output, "O", "C", "T"); } else if (month == 11) { stringPush(output, "N", "O", "V"); } else if (month == 12) { stringPush(output, "D", "E", "C"); } else { revert("date decoding error"); } // We take the last two digits of the year // Hopefully that's enough { uint256 lastDigits = year % 100; // Round out the second digit uint256 firstDigit = lastDigits / 10; // add it to the encoded byte for '0' output.push(bytes1(uint8(bytes1("0")) + uint8(firstDigit))); // Extract the second digit uint256 secondDigit = lastDigits % 10; // add it to the string output.push(bytes1(uint8(bytes1("0")) + uint8(secondDigit))); } } function stringPush( bytes storage output, bytes1 data1, bytes1 data2, bytes1 data3 ) internal { output.push(data1); output.push(data2); output.push(data3); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; import "./IERC20Permit.sol"; interface IInterestToken is IERC20Permit { function mint(address _account, uint256 _amount) external; function burn(address _account, uint256 _amount) external; }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; import "./IERC20Permit.sol"; import "./IInterestToken.sol"; interface ITranche is IERC20Permit { function deposit(uint256 _shares, address destination) external returns (uint256, uint256); function prefundedDeposit(address _destination) external returns (uint256, uint256); function withdrawPrincipal(uint256 _amount, address _destination) external returns (uint256); function withdrawInterest(uint256 _amount, address _destination) external returns (uint256); function interestToken() external view returns (IInterestToken); function interestSupply() external view returns (uint128); function underlying() external view returns (IERC20); function unlockTimestamp() external view returns (uint256); }
// Forked from openzepplin // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC20.sol"; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit is IERC20 { /** * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens, * given `owner`'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; interface IERC20 { function symbol() external view returns (string memory); function balanceOf(address account) external view returns (uint256); // Note this is non standard but nearly all ERC20 have exposed decimal functions function decimals() external view returns (uint8); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); }
{ "optimizer": { "enabled": true, "runs": 7500 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_tranche","type":"address"},{"internalType":"string","name":"_strategySymbol","type":"string"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tranche","outputs":[{"internalType":"contract ITranche","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040516200322338038062003223833981016040819052620000349162000d36565b60408051808201909152601481527f456c656d656e74205969656c6420546f6b656e20000000000000000000000000602082015262000075908484620001de565b604080518082019091526002815261655960f01b60208201526200009b908585620002ac565b8151620000b090600090602085019062000c79565b508051620000c690600190602084019062000c79565b506002805460ff1916601217905560036020526000197f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff819055306000908152604090205562000115620002ed565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405162000147919062000e44565b60408051918290038220828201825260018352603160f81b60209384015290516200019a93927fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc691469130910162000ee9565b60408051601f19818403018152919052805160209091012060065550506001600160601b0319606085901b16608052620001d481620002ef565b505050506200119a565b8251606090620001f690600090602087019062000c79565b5062000210838360006200030560201b620009f01760201c565b600080546200021f90620010e6565b80601f01602080910402602001604051908101604052809291908181526020018280546200024d90620010e6565b80156200029e5780601f1062000272576101008083540402835291602001916200029e565b820191906000526020600020905b8154815290600101906020018083116200028057829003601f168201915b505050505090509392505050565b8251606090620002c490600190602087019062000c79565b50620002de838360016200030560201b620009f01760201c565b600180546200021f90620010e6565b565b6002805460ff191660ff92909216919091179055565b828160005b8251811015620003d957818382815181106200033657634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b90808054806200035190620010e6565b80601f8114620003615762000377565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615620003a15790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508080620003d09062001123565b9150506200030a565b5080602d60f81b9080805480620003f090620010e6565b80601f8114620004005762000416565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615620004405790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506200047484846200047b60201b60201c565b5050505050565b6200048782826200048b565b5050565b8060008080620004a9620004a3620151808862000ffb565b6200093b565b919450925090506000620004bf600a8362000ffb565b905084620004cf82603062000f9f565b60f81b9080805480620004e290620010e6565b80601f8114620004f25762000508565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615620005325790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506000600a8362000565919062001141565b9050856200057582603062000f9f565b60f81b90808054806200058890620010e6565b80601f81146200059857620005ae565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615620005d85790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055505050816001141562000626576200062084602560f91b604160f81b602760f91b62000ae7565b620007d5565b81600214156200064a576200062084602360f91b604560f81b602160f91b62000ae7565b81600314156200066e576200062084604d60f81b604160f81b602960f91b62000ae7565b816004141562000692576200062084604160f81b600560fc1b602960f91b62000ae7565b8160051415620006b6576200062084604d60f81b604160f81b605960f81b62000ae7565b8160061415620006da576200062084602560f91b605560f81b602760f91b62000ae7565b8160071415620006fe576200062084602560f91b605560f81b601360fa1b62000ae7565b816008141562000722576200062084604160f81b605560f81b604760f81b62000ae7565b816009141562000746576200062084605360f81b604560f81b600560fc1b62000ae7565b81600a14156200076a576200062084604f60f81b604360f81b601560fa1b62000ae7565b81600b14156200078e576200062084602760f91b604f60f81b602b60f91b62000ae7565b81600c1415620007b2576200062084601160fa1b604560f81b604360f81b62000ae7565b60405162461bcd60e51b8152600401620007cc9062000f15565b60405180910390fd5b6000620007e460648562001141565b90506000620007f5600a8362000ffb565b9050856200080582603062000f9f565b60f81b90808054806200081890620010e6565b80601f811462000828576200083e565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615620008685790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506000600a836200089b919062001141565b905086620008ab82603062000f9f565b60f81b9080805480620008be90620010e6565b80601f8114620008ce57620008e4565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156200090e5790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550505050505050505050565b60008080838162253d8c620009548362010bd962000f58565b62000960919062000f58565b9050600062023ab16200097583600462001012565b62000981919062000fc7565b90506004620009948262023ab162001012565b620009a190600362000f58565b620009ad919062000fc7565b620009b99083620010a1565b9150600062164b09620009ce84600162000f58565b620009dc90610fa062001012565b620009e8919062000fc7565b90506004620009fa826105b562001012565b62000a06919062000fc7565b62000a129084620010a1565b62000a1f90601f62000f58565b9250600061098f62000a3385605062001012565b62000a3f919062000fc7565b90506000605062000a538361098f62001012565b62000a5f919062000fc7565b62000a6b9086620010a1565b905062000a7a600b8362000fc7565b945062000a8985600c62001012565b62000a9683600262000f58565b62000aa29190620010a1565b9150848362000ab3603187620010a1565b62000ac090606462001012565b62000acc919062000f58565b62000ad8919062000f58565b9a919950975095505050505050565b8383908080548062000af990620010e6565b80601f811462000b095762000b1f565b83600052602060002060ff1984168155603f9350505b5060029190910190915581546001161562000b495790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508382908080548062000b7d90620010e6565b80601f811462000b8d5762000ba3565b83600052602060002060ff1984168155603f9350505b5060029190910190915581546001161562000bcd5790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508381908080548062000c0190620010e6565b80601f811462000c115762000c27565b83600052602060002060ff1984168155603f9350505b5060029190910190915581546001161562000c515790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b8404021790555050505050565b82805462000c8790620010e6565b90600052602060002090601f01602090048101928262000cab576000855562000cf6565b82601f1062000cc657805160ff191683800117855562000cf6565b8280016001018555821562000cf6579182015b8281111562000cf657825182559160200191906001019062000cd9565b5062000d0492915062000d08565b5090565b5b8082111562000d04576000815560010162000d09565b805160ff8116811462000d3157600080fd5b919050565b6000806000806080858703121562000d4c578384fd5b84516001600160a01b038116811462000d63578485fd5b602086810151919550906001600160401b038082111562000d82578586fd5b818801915088601f83011262000d96578586fd5b81518181111562000dab5762000dab62001184565b604051601f8201601f191681018501838111828210171562000dd15762000dd162001184565b60405281815283820185018b101562000de8578788fd5b8792505b8183101562000e0b578383018501518184018601529184019162000dec565b8183111562000e1c57878583830101525b80975050505050506040850151915062000e396060860162000d1f565b905092959194509250565b815460009081906002810460018083168062000e6157607f831692505b602080841082141562000e8257634e487b7160e01b87526022600452602487fd5b81801562000e99576001811462000eab5762000edb565b60ff1986168952848901965062000edb565b62000eb68a62000f4c565b885b8681101562000ed35781548b82015290850190830162000eb8565b505084890196505b509498975050505050505050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60208082526013908201527f64617465206465636f64696e67206572726f7200000000000000000000000000604082015260600190565b60009081526020902090565b600080821280156001600160ff1b038490038513161562000f7d5762000f7d62001158565b600160ff1b839003841281161562000f995762000f9962001158565b50500190565b600060ff821660ff84168060ff0382111562000fbf5762000fbf62001158565b019392505050565b60008262000fd95762000fd96200116e565b600160ff1b82146000198414161562000ff65762000ff662001158565b500590565b6000826200100d576200100d6200116e565b500490565b60006001600160ff1b03818413828413808216868404861116156200103b576200103b62001158565b600160ff1b848712828116878305891216156200105c576200105c62001158565b8587129250878205871284841616156200107a576200107a62001158565b8785058712818416161562001093576200109362001158565b505050929093029392505050565b60008083128015600160ff1b850184121615620010c257620010c262001158565b6001600160ff1b0384018313811615620010e057620010e062001158565b50500390565b600281046001821680620010fb57607f821691505b602082108114156200111d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200113a576200113a62001158565b5060010190565b6000826200115357620011536200116e565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c612055620011ce6000396000818161033d015281816106160152818161066301526106ce01526120556000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636ebc0af1116100975780639dc29fac116100665780639dc29fac146101e8578063a9059cbb146101fb578063d505accf1461020e578063dd62ed3e1461022157610100565b80636ebc0af1146101a557806370a08231146101ba5780637ecebe00146101cd57806395d89b41146101e057610100565b806330adf81f116100d357806330adf81f1461016b578063313ce567146101735780633644e5151461018857806340c10f191461019057610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014357806323b872dd14610158575b600080fd5b61010d610234565b60405161011a9190611a2d565b60405180910390f35b61013661013136600461190a565b6102c2565b60405161011a9190611999565b61014b610339565b60405161011a91906119a4565b61013661016636600461185e565b6103f0565b61014b6105cb565b61017b6105ef565b60405161011a9190611ca2565b61014b6105f8565b6101a361019e36600461190a565b6105fe565b005b6101ad610661565b60405161011a9190611a0c565b61014b6101c8366004611812565b610685565b61014b6101db366004611812565b610697565b61010d6106a9565b6101a36101f636600461190a565b6106b6565b61013661020936600461190a565b610715565b6101a361021c366004611899565b610729565b61014b61022f36600461182c565b6109d3565b6000805461024190611f20565b80601f016020809104026020016040519081016040528092919081815260200182805461026d90611f20565b80156102ba5780601f1061028f576101008083540402835291602001916102ba565b820191906000526020600020905b81548152906001019060200180831161029d57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103289086906119a4565b60405180910390a350600192915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663041be7c26040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a157600080fd5b505afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d99190611933565b6fffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548281101561043f5760405162461bcd60e51b815260040161043690611c0e565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851633146105125773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461051057838110156104d45760405162461bcd60e51b815260040161043690611a9e565b6104de8482611f09565b73ffffffffffffffffffffffffffffffffffffffff871660009081526004602090815260408083203384529091529020555b505b61051c8382611f09565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600360205260408082209390935590861681522054610559908490611d24565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b89087906119a4565b60405180910390a3506001949350505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b60065481565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106535760405162461bcd60e51b815260040161043690611c45565b61065d8282610b84565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205481565b60056020526000908152604090205481565b6001805461024190611f20565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461070b5760405162461bcd60e51b815260040161043690611c45565b61065d8282610c1d565b60006107223384846103f0565b9392505050565b60065473ffffffffffffffffffffffffffffffffffffffff8816600090815260056020908152604080832054905192939261078f927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92918d91016119ad565b604051602081830303815290604052805190602001206040516020016107b6929190611963565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120905073ffffffffffffffffffffffffffffffffffffffff88166108215760405162461bcd60e51b815260040161043690611b69565b6001818585856040516000815260200160405260405161084494939291906119ee565b6020604051602081039080840390855afa158015610866573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146108ba5760405162461bcd60e51b815260040161043690611ba0565b8415806108c75750844211155b6108e35760405162461bcd60e51b815260040161043690611bd7565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156109235760405162461bcd60e51b815260040161043690611ad5565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260056020526040812080549161095483611f74565b909155505073ffffffffffffffffffffffffffffffffffffffff8089166000818152600460209081526040808320948c168084529490915290819020899055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109c1908a906119a4565b60405180910390a35050505050505050565b600460209081526000928352604080842090915290825290205481565b828160005b8251811015610ad35781838281518110610a38577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b9080805480610a5190611f20565b80601f8114610a5f57610a75565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610a9e5790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508080610acb90611f74565b9150506109f5565b50807f2d000000000000000000000000000000000000000000000000000000000000009080805480610b0490611f20565b80601f8114610b1257610b28565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610b515790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550610b7d8484610ca7565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610bb5908290611d24565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c119085906119a4565b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610c4e908290611f09565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600360205260408082209390935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c119085906119a4565b61065d82828060008080610cc6610cc16201518088611dc9565b6114f2565b919450925090506000610cda600a83611dc9565b905084610ce8826030611d3c565b60f81b9080805480610cf990611f20565b80601f8114610d0757610d1d565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610d465790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506000600a83610d779190611fad565b905085610d85826030611d3c565b60f81b9080805480610d9690611f20565b80601f8114610da457610dba565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610de35790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b8404021790555050508160011415610e8157610e7c847f4a000000000000000000000000000000000000000000000000000000000000007f41000000000000000000000000000000000000000000000000000000000000007f4e00000000000000000000000000000000000000000000000000000000000000611666565b6113a0565b8160021415610ef657610e7c847f46000000000000000000000000000000000000000000000000000000000000007f45000000000000000000000000000000000000000000000000000000000000007f4200000000000000000000000000000000000000000000000000000000000000611666565b8160031415610f6b57610e7c847f4d000000000000000000000000000000000000000000000000000000000000007f41000000000000000000000000000000000000000000000000000000000000007f5200000000000000000000000000000000000000000000000000000000000000611666565b8160041415610fe057610e7c847f41000000000000000000000000000000000000000000000000000000000000007f50000000000000000000000000000000000000000000000000000000000000007f5200000000000000000000000000000000000000000000000000000000000000611666565b816005141561105557610e7c847f4d000000000000000000000000000000000000000000000000000000000000007f41000000000000000000000000000000000000000000000000000000000000007f5900000000000000000000000000000000000000000000000000000000000000611666565b81600614156110ca57610e7c847f4a000000000000000000000000000000000000000000000000000000000000007f55000000000000000000000000000000000000000000000000000000000000007f4e00000000000000000000000000000000000000000000000000000000000000611666565b816007141561113f57610e7c847f4a000000000000000000000000000000000000000000000000000000000000007f55000000000000000000000000000000000000000000000000000000000000007f4c00000000000000000000000000000000000000000000000000000000000000611666565b81600814156111b457610e7c847f41000000000000000000000000000000000000000000000000000000000000007f55000000000000000000000000000000000000000000000000000000000000007f4700000000000000000000000000000000000000000000000000000000000000611666565b816009141561122957610e7c847f53000000000000000000000000000000000000000000000000000000000000007f45000000000000000000000000000000000000000000000000000000000000007f5000000000000000000000000000000000000000000000000000000000000000611666565b81600a141561129e57610e7c847f4f000000000000000000000000000000000000000000000000000000000000007f43000000000000000000000000000000000000000000000000000000000000007f5400000000000000000000000000000000000000000000000000000000000000611666565b81600b141561131357610e7c847f4e000000000000000000000000000000000000000000000000000000000000007f4f000000000000000000000000000000000000000000000000000000000000007f5600000000000000000000000000000000000000000000000000000000000000611666565b81600c141561138857610e7c847f44000000000000000000000000000000000000000000000000000000000000007f45000000000000000000000000000000000000000000000000000000000000007f4300000000000000000000000000000000000000000000000000000000000000611666565b60405162461bcd60e51b815260040161043690611b32565b60006113ad606485611fad565b905060006113bc600a83611dc9565b9050856113ca826030611d3c565b60f81b90808054806113db90611f20565b80601f81146113e9576113ff565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156114285790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506000600a836114599190611fad565b905086611467826030611d3c565b60f81b908080548061147890611f20565b80601f81146114865761149c565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156114c55790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550505050505050505050565b60008080838162253d8c6115098362010bd9611cb0565b6115139190611cb0565b9050600062023ab1611526836004611ddd565b6115309190611d61565b905060046115418262023ab1611ddd565b61154c906003611cb0565b6115569190611d61565b6115609083611e95565b9150600062164b09611573846001611cb0565b61157f90610fa0611ddd565b6115899190611d61565b90506004611599826105b5611ddd565b6115a39190611d61565b6115ad9084611e95565b6115b890601f611cb0565b9250600061098f6115ca856050611ddd565b6115d49190611d61565b9050600060506115e68361098f611ddd565b6115f09190611d61565b6115fa9086611e95565b9050611607600b83611d61565b945061161485600c611ddd565b61161f836002611cb0565b6116299190611e95565b91508483611638603187611e95565b611643906064611ddd565b61164d9190611cb0565b6116579190611cb0565b9a919950975095505050505050565b8383908080548061167690611f20565b80601f81146116845761169a565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156116c35790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550838290808054806116f590611f20565b80601f811461170357611719565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156117425790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508381908080548061177490611f20565b80601f811461178257611798565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156117c15790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b8404021790555050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461180d57600080fd5b919050565b600060208284031215611823578081fd5b610722826117e9565b6000806040838503121561183e578081fd5b611847836117e9565b9150611855602084016117e9565b90509250929050565b600080600060608486031215611872578081fd5b61187b846117e9565b9250611889602085016117e9565b9150604084013590509250925092565b600080600080600080600060e0888a0312156118b3578283fd5b6118bc886117e9565b96506118ca602089016117e9565b95506040880135945060608801359350608088013560ff811681146118ed578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561191c578182fd5b611925836117e9565b946020939093013593505050565b600060208284031215611944578081fd5b81516fffffffffffffffffffffffffffffffff81168114610722578182fd5b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080835283518082850152825b81811015611a5957858101830151858201604001528201611a3d565b81811115611a6a5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601d908201527f45524332303a20696e73756666696369656e742d616c6c6f77616e6365000000604082015260600190565b60208082526022908201527f45524332303a20696e76616c6964207369676e6174757265202773272076616c60408201527f7565000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f64617465206465636f64696e67206572726f7200000000000000000000000000604082015260600190565b60208082526018908201527f45524332303a20696e76616c69642d616464726573732d300000000000000000604082015260600190565b60208082526015908201527f45524332303a20696e76616c69642d7065726d69740000000000000000000000604082015260600190565b60208082526015908201527f45524332303a207065726d69742d657870697265640000000000000000000000604082015260600190565b6020808252601b908201527f45524332303a20696e73756666696369656e742d62616c616e63650000000000604082015260600190565b60208082526022908201527f63616c6c6572206973206e6f7420616e20617574686f72697a6564206d696e7460408201527f6572000000000000000000000000000000000000000000000000000000000000606082015260800190565b60ff91909116815260200190565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615611cea57611cea611fc1565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615611d1e57611d1e611fc1565b50500190565b60008219821115611d3757611d37611fc1565b500190565b600060ff821660ff84168060ff03821115611d5957611d59611fc1565b019392505050565b600082611d7057611d70611ff0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615611dc457611dc4611fc1565b500590565b600082611dd857611dd8611ff0565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615611e1c57611e1c611fc1565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615611e5657611e56611fc1565b858712925087820587128484161615611e7157611e71611fc1565b87850587128184161615611e8757611e87611fc1565b505050929093029392505050565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615611ecf57611ecf611fc1565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615611f0357611f03611fc1565b50500390565b600082821015611f1b57611f1b611fc1565b500390565b600281046001821680611f3457607f821691505b60208210811415611f6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611fa657611fa6611fc1565b5060010190565b600082611fbc57611fbc611ff0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e89408a6949d45297d5a5b5197a2478cb56d82afb6608863c04c8c8fa2c106b264736f6c63430008000033000000000000000000000000c9b88361c09ec184bdd32cf52cffc79a1452f79d0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000006324817d0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000d797643757276652d616c55534400000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80636ebc0af1116100975780639dc29fac116100665780639dc29fac146101e8578063a9059cbb146101fb578063d505accf1461020e578063dd62ed3e1461022157610100565b80636ebc0af1146101a557806370a08231146101ba5780637ecebe00146101cd57806395d89b41146101e057610100565b806330adf81f116100d357806330adf81f1461016b578063313ce567146101735780633644e5151461018857806340c10f191461019057610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014357806323b872dd14610158575b600080fd5b61010d610234565b60405161011a9190611a2d565b60405180910390f35b61013661013136600461190a565b6102c2565b60405161011a9190611999565b61014b610339565b60405161011a91906119a4565b61013661016636600461185e565b6103f0565b61014b6105cb565b61017b6105ef565b60405161011a9190611ca2565b61014b6105f8565b6101a361019e36600461190a565b6105fe565b005b6101ad610661565b60405161011a9190611a0c565b61014b6101c8366004611812565b610685565b61014b6101db366004611812565b610697565b61010d6106a9565b6101a36101f636600461190a565b6106b6565b61013661020936600461190a565b610715565b6101a361021c366004611899565b610729565b61014b61022f36600461182c565b6109d3565b6000805461024190611f20565b80601f016020809104026020016040519081016040528092919081815260200182805461026d90611f20565b80156102ba5780601f1061028f576101008083540402835291602001916102ba565b820191906000526020600020905b81548152906001019060200180831161029d57829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103289086906119a4565b60405180910390a350600192915050565b60007f000000000000000000000000c9b88361c09ec184bdd32cf52cffc79a1452f79d73ffffffffffffffffffffffffffffffffffffffff1663041be7c26040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a157600080fd5b505afa1580156103b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d99190611933565b6fffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548281101561043f5760405162461bcd60e51b815260040161043690611c0e565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851633146105125773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461051057838110156104d45760405162461bcd60e51b815260040161043690611a9e565b6104de8482611f09565b73ffffffffffffffffffffffffffffffffffffffff871660009081526004602090815260408083203384529091529020555b505b61051c8382611f09565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600360205260408082209390935590861681522054610559908490611d24565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906105b89087906119a4565b60405180910390a3506001949350505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b60065481565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c9b88361c09ec184bdd32cf52cffc79a1452f79d16146106535760405162461bcd60e51b815260040161043690611c45565b61065d8282610b84565b5050565b7f000000000000000000000000c9b88361c09ec184bdd32cf52cffc79a1452f79d81565b60036020526000908152604090205481565b60056020526000908152604090205481565b6001805461024190611f20565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c9b88361c09ec184bdd32cf52cffc79a1452f79d161461070b5760405162461bcd60e51b815260040161043690611c45565b61065d8282610c1d565b60006107223384846103f0565b9392505050565b60065473ffffffffffffffffffffffffffffffffffffffff8816600090815260056020908152604080832054905192939261078f927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928d928d928d92918d91016119ad565b604051602081830303815290604052805190602001206040516020016107b6929190611963565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120905073ffffffffffffffffffffffffffffffffffffffff88166108215760405162461bcd60e51b815260040161043690611b69565b6001818585856040516000815260200160405260405161084494939291906119ee565b6020604051602081039080840390855afa158015610866573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146108ba5760405162461bcd60e51b815260040161043690611ba0565b8415806108c75750844211155b6108e35760405162461bcd60e51b815260040161043690611bd7565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156109235760405162461bcd60e51b815260040161043690611ad5565b73ffffffffffffffffffffffffffffffffffffffff8816600090815260056020526040812080549161095483611f74565b909155505073ffffffffffffffffffffffffffffffffffffffff8089166000818152600460209081526040808320948c168084529490915290819020899055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109c1908a906119a4565b60405180910390a35050505050505050565b600460209081526000928352604080842090915290825290205481565b828160005b8251811015610ad35781838281518110610a38577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602001015160f81c60f81b9080805480610a5190611f20565b80601f8114610a5f57610a75565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610a9e5790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508080610acb90611f74565b9150506109f5565b50807f2d000000000000000000000000000000000000000000000000000000000000009080805480610b0490611f20565b80601f8114610b1257610b28565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610b515790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550610b7d8484610ca7565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610bb5908290611d24565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c119085906119a4565b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054610c4e908290611f09565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600360205260408082209390935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c119085906119a4565b61065d82828060008080610cc6610cc16201518088611dc9565b6114f2565b919450925090506000610cda600a83611dc9565b905084610ce8826030611d3c565b60f81b9080805480610cf990611f20565b80601f8114610d0757610d1d565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610d465790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506000600a83610d779190611fad565b905085610d85826030611d3c565b60f81b9080805480610d9690611f20565b80601f8114610da457610dba565b83600052602060002060ff1984168155603f9350505b50600291909101909155815460011615610de35790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b8404021790555050508160011415610e8157610e7c847f4a000000000000000000000000000000000000000000000000000000000000007f41000000000000000000000000000000000000000000000000000000000000007f4e00000000000000000000000000000000000000000000000000000000000000611666565b6113a0565b8160021415610ef657610e7c847f46000000000000000000000000000000000000000000000000000000000000007f45000000000000000000000000000000000000000000000000000000000000007f4200000000000000000000000000000000000000000000000000000000000000611666565b8160031415610f6b57610e7c847f4d000000000000000000000000000000000000000000000000000000000000007f41000000000000000000000000000000000000000000000000000000000000007f5200000000000000000000000000000000000000000000000000000000000000611666565b8160041415610fe057610e7c847f41000000000000000000000000000000000000000000000000000000000000007f50000000000000000000000000000000000000000000000000000000000000007f5200000000000000000000000000000000000000000000000000000000000000611666565b816005141561105557610e7c847f4d000000000000000000000000000000000000000000000000000000000000007f41000000000000000000000000000000000000000000000000000000000000007f5900000000000000000000000000000000000000000000000000000000000000611666565b81600614156110ca57610e7c847f4a000000000000000000000000000000000000000000000000000000000000007f55000000000000000000000000000000000000000000000000000000000000007f4e00000000000000000000000000000000000000000000000000000000000000611666565b816007141561113f57610e7c847f4a000000000000000000000000000000000000000000000000000000000000007f55000000000000000000000000000000000000000000000000000000000000007f4c00000000000000000000000000000000000000000000000000000000000000611666565b81600814156111b457610e7c847f41000000000000000000000000000000000000000000000000000000000000007f55000000000000000000000000000000000000000000000000000000000000007f4700000000000000000000000000000000000000000000000000000000000000611666565b816009141561122957610e7c847f53000000000000000000000000000000000000000000000000000000000000007f45000000000000000000000000000000000000000000000000000000000000007f5000000000000000000000000000000000000000000000000000000000000000611666565b81600a141561129e57610e7c847f4f000000000000000000000000000000000000000000000000000000000000007f43000000000000000000000000000000000000000000000000000000000000007f5400000000000000000000000000000000000000000000000000000000000000611666565b81600b141561131357610e7c847f4e000000000000000000000000000000000000000000000000000000000000007f4f000000000000000000000000000000000000000000000000000000000000007f5600000000000000000000000000000000000000000000000000000000000000611666565b81600c141561138857610e7c847f44000000000000000000000000000000000000000000000000000000000000007f45000000000000000000000000000000000000000000000000000000000000007f4300000000000000000000000000000000000000000000000000000000000000611666565b60405162461bcd60e51b815260040161043690611b32565b60006113ad606485611fad565b905060006113bc600a83611dc9565b9050856113ca826030611d3c565b60f81b90808054806113db90611f20565b80601f81146113e9576113ff565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156114285790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055506000600a836114599190611fad565b905086611467826030611d3c565b60f81b908080548061147890611f20565b80601f81146114865761149c565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156114c55790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550505050505050505050565b60008080838162253d8c6115098362010bd9611cb0565b6115139190611cb0565b9050600062023ab1611526836004611ddd565b6115309190611d61565b905060046115418262023ab1611ddd565b61154c906003611cb0565b6115569190611d61565b6115609083611e95565b9150600062164b09611573846001611cb0565b61157f90610fa0611ddd565b6115899190611d61565b90506004611599826105b5611ddd565b6115a39190611d61565b6115ad9084611e95565b6115b890601f611cb0565b9250600061098f6115ca856050611ddd565b6115d49190611d61565b9050600060506115e68361098f611ddd565b6115f09190611d61565b6115fa9086611e95565b9050611607600b83611d61565b945061161485600c611ddd565b61161f836002611cb0565b6116299190611e95565b91508483611638603187611e95565b611643906064611ddd565b61164d9190611cb0565b6116579190611cb0565b9a919950975095505050505050565b8383908080548061167690611f20565b80601f81146116845761169a565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156116c35790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b84040217905550838290808054806116f590611f20565b80601f811461170357611719565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156117425790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b840402179055508381908080548061177490611f20565b80601f811461178257611798565b83600052602060002060ff1984168155603f9350505b506002919091019091558154600116156117c15790600052602060002090602091828204019190065b909190919091601f036101000a81548160ff02191690600160f81b8404021790555050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461180d57600080fd5b919050565b600060208284031215611823578081fd5b610722826117e9565b6000806040838503121561183e578081fd5b611847836117e9565b9150611855602084016117e9565b90509250929050565b600080600060608486031215611872578081fd5b61187b846117e9565b9250611889602085016117e9565b9150604084013590509250925092565b600080600080600080600060e0888a0312156118b3578283fd5b6118bc886117e9565b96506118ca602089016117e9565b95506040880135945060608801359350608088013560ff811681146118ed578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561191c578182fd5b611925836117e9565b946020939093013593505050565b600060208284031215611944578081fd5b81516fffffffffffffffffffffffffffffffff81168114610722578182fd5b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080835283518082850152825b81811015611a5957858101830151858201604001528201611a3d565b81811115611a6a5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601d908201527f45524332303a20696e73756666696369656e742d616c6c6f77616e6365000000604082015260600190565b60208082526022908201527f45524332303a20696e76616c6964207369676e6174757265202773272076616c60408201527f7565000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f64617465206465636f64696e67206572726f7200000000000000000000000000604082015260600190565b60208082526018908201527f45524332303a20696e76616c69642d616464726573732d300000000000000000604082015260600190565b60208082526015908201527f45524332303a20696e76616c69642d7065726d69740000000000000000000000604082015260600190565b60208082526015908201527f45524332303a207065726d69742d657870697265640000000000000000000000604082015260600190565b6020808252601b908201527f45524332303a20696e73756666696369656e742d62616c616e63650000000000604082015260600190565b60208082526022908201527f63616c6c6572206973206e6f7420616e20617574686f72697a6564206d696e7460408201527f6572000000000000000000000000000000000000000000000000000000000000606082015260800190565b60ff91909116815260200190565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615611cea57611cea611fc1565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615611d1e57611d1e611fc1565b50500190565b60008219821115611d3757611d37611fc1565b500190565b600060ff821660ff84168060ff03821115611d5957611d59611fc1565b019392505050565b600082611d7057611d70611ff0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f800000000000000000000000000000000000000000000000000000000000000083141615611dc457611dc4611fc1565b500590565b600082611dd857611dd8611ff0565b500490565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81841382841385830485118282161615611e1c57611e1c611fc1565b7f800000000000000000000000000000000000000000000000000000000000000084871286820588128184161615611e5657611e56611fc1565b858712925087820587128484161615611e7157611e71611fc1565b87850587128184161615611e8757611e87611fc1565b505050929093029392505050565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615611ecf57611ecf611fc1565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615611f0357611f03611fc1565b50500390565b600082821015611f1b57611f1b611fc1565b500390565b600281046001821680611f3457607f821691505b60208210811415611f6e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611fa657611fa6611fc1565b5060010190565b600082611fbc57611fbc611ff0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220e89408a6949d45297d5a5b5197a2478cb56d82afb6608863c04c8c8fa2c106b264736f6c63430008000033
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.