ERC-20
Overview
Max Total Supply
538,029,741.8939164436679467 DB
Holders
262
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ERC20TokenGovernedProxy
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core // Energi Governance system is the fundamental part of Energi Core. // NOTE: It's not allowed to change the compiler due to byte-to-byte // match requirement. pragma solidity 0.5.16; import { NonReentrant } from './NonReentrant.sol'; import { SafeMath } from './libraries/SafeMath.sol'; import { IERC20TokenGovernedProxy } from './interfaces/IERC20TokenGovernedProxy.sol'; import { IGovernedContract } from './interfaces/IGovernedContract.sol'; import { IGovernedProxy } from './interfaces/IGovernedProxy.sol'; import { IUpgradeProposal } from './interfaces/IUpgradeProposal.sol'; import { ISporkRegistry } from './interfaces/ISporkRegistry.sol'; import { IGovernedERC20 } from './interfaces/IGovernedERC20.sol'; import { IOwnedERC20 } from './interfaces/IOwnedERC20.sol'; import { IERC20Token } from './interfaces/IERC20Token.sol'; /** * SC-9: This contract has no chance of being updated. It must be stupid simple. * * If another upgrade logic is required in the future - it can be done as proxy stage II. */ contract ERC20TokenGovernedProxy is IERC20TokenGovernedProxy, IGovernedProxy, NonReentrant { using SafeMath for uint256; IGovernedContract public impl; IGovernedContract public implementation; // only used for block explorers to detect contract as a proxy IGovernedProxy public spork_proxy; mapping(address => IGovernedContract) public upgrade_proposals; IUpgradeProposal[] public upgrade_proposal_list; modifier senderOrigin() { // Internal calls are expected to use impl directly. // That's due to use of call() instead of delegatecall() on purpose. // solium-disable-next-line security/no-tx-origin require(tx.origin == msg.sender, 'Only direct calls are allowed!'); _; } modifier onlyImpl() { require(msg.sender == address(impl), 'Only calls from impl are allowed!'); _; } constructor(IGovernedContract _impl) public { impl = _impl; implementation = _impl; // to allow block explorers to find the impl contract } function setSporkProxy(address payable _sporkProxy) external onlyImpl { spork_proxy = IGovernedProxy(_sporkProxy); } function emitAirdropRewardsClaimed( address recipient, uint256 claimAmountAirdrop, uint256 claimAmountReferral1, uint256 claimAmountReferral2, uint256 claimAmountReferral3, bytes4 airdropId, uint256 lastClaimNonce, uint256 claimNonce, bytes calldata airdropServiceSignature ) external onlyImpl { emit AirdropRewardsClaimed( recipient, claimAmountAirdrop, claimAmountReferral1, claimAmountReferral2, claimAmountReferral3, airdropId, lastClaimNonce, claimNonce, airdropServiceSignature ); } function emitTransfer( address from, address to, uint256 value ) external onlyImpl { emit Transfer(from, to, value); } function emitApproval( address owner, address spender, uint256 value ) external onlyImpl { emit Approval(owner, spender, value); } // ERC20 standard functions // function name() external view returns (string memory _name) { _name = IERC20Token(address(uint160(address(impl)))).name(); } function symbol() external view returns (string memory _symbol) { _symbol = IERC20Token(address(uint160(address(impl)))).symbol(); } function decimals() external view returns (uint256 _decimals) { _decimals = IERC20Token(address(uint160(address(impl)))).decimals(); } function balanceOf(address account) external view returns (uint256 _balance) { _balance = IGovernedERC20(address(uint160(address(impl)))).balanceOf(account); } function allowance(address owner, address spender) external view returns (uint256 _allowance) { _allowance = IGovernedERC20(address(uint160(address(impl)))).allowance(owner, spender); } function totalSupply() external view returns (uint256 _totalSupply) { _totalSupply = IGovernedERC20(address(uint160(address(impl)))).totalSupply(); } function approve(address spender, uint256 value) external returns (bool result) { result = IGovernedERC20(address(uint160(address(impl)))).approve( msg.sender, spender, value ); emit Approval(msg.sender, spender, value); } function transfer(address to, uint256 value) external returns (bool result) { result = IGovernedERC20(address(uint160(address(impl)))).transfer(msg.sender, to, value); emit Transfer(msg.sender, to, value); } function transferFrom( address from, address to, uint256 value ) external returns (bool result) { result = IGovernedERC20(address(uint160(address(impl)))).transferFrom( msg.sender, from, to, value ); emit Transfer(from, to, value); uint256 newApproveAmount = IGovernedERC20(address(uint160(address(impl)))).allowance( from, msg.sender ); emit Approval(from, msg.sender, newApproveAmount); } function increaseAllowance(address spender, uint256 addedValue) external returns (bool result) { result = IGovernedERC20(address(uint160(address(impl)))).increaseAllowance( msg.sender, spender, addedValue ); uint256 newApproveAmount = IGovernedERC20(address(uint160(address(impl)))).allowance( msg.sender, spender ); emit Approval(msg.sender, spender, newApproveAmount); } function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool result) { result = IGovernedERC20(address(uint160(address(impl)))).decreaseAllowance( msg.sender, spender, subtractedValue ); uint256 newApproveAmount = IGovernedERC20(address(uint160(address(impl)))).allowance( msg.sender, spender ); emit Approval(msg.sender, spender, newApproveAmount); } // OwnedERC20 functions // function mint(address recipient, uint256 amount) external { IOwnedERC20(address(uint160(address(impl)))).mint(recipient, amount); } function burn(address recipient, uint256 amount) external { IOwnedERC20(address(uint160(address(impl)))).burn(recipient, amount); } // Governance functions // /** * Pre-create a new contract first. * Then propose upgrade based on that. */ function proposeUpgrade(IGovernedContract _newImpl, uint256 _period) external payable senderOrigin noReentry returns (IUpgradeProposal) { require(_newImpl != impl, 'Already active!'); require(_newImpl.proxy() == address(this), 'Wrong proxy!'); ISporkRegistry spork_reg = ISporkRegistry(address(spork_proxy.impl())); IUpgradeProposal proposal = spork_reg.createUpgradeProposal.value(msg.value)( _newImpl, _period, msg.sender ); upgrade_proposals[address(proposal)] = _newImpl; upgrade_proposal_list.push(proposal); emit UpgradeProposal(_newImpl, proposal); return proposal; } /** * Once proposal is accepted, anyone can activate that. */ function upgrade(IUpgradeProposal _proposal) external noReentry { IGovernedContract new_impl = upgrade_proposals[address(_proposal)]; require(new_impl != impl, 'Already active!'); // in case it changes in the flight require(address(new_impl) != address(0), 'Not registered!'); require(_proposal.isAccepted(), 'Not accepted!'); IGovernedContract old_impl = impl; new_impl.migrate(old_impl); impl = new_impl; implementation = new_impl; old_impl.destroy(new_impl); // SECURITY: prevent downgrade attack _cleanupProposal(_proposal); // Return fee ASAP _proposal.destroy(); emit Upgraded(new_impl, _proposal); } /** * Map proposal to implementation */ function upgradeProposalImpl(IUpgradeProposal _proposal) external view returns (IGovernedContract new_impl) { new_impl = upgrade_proposals[address(_proposal)]; } /** * Lists all available upgrades */ function listUpgradeProposals() external view returns (IUpgradeProposal[] memory proposals) { uint256 len = upgrade_proposal_list.length; proposals = new IUpgradeProposal[](len); for (uint256 i = 0; i < len; ++i) { proposals[i] = upgrade_proposal_list[i]; } return proposals; } /** * Once proposal is reject, anyone can start collect procedure. */ function collectUpgradeProposal(IUpgradeProposal _proposal) external noReentry { IGovernedContract new_impl = upgrade_proposals[address(_proposal)]; require(address(new_impl) != address(0), 'Not registered!'); _proposal.collect(); delete upgrade_proposals[address(_proposal)]; _cleanupProposal(_proposal); } function _cleanupProposal(IUpgradeProposal _proposal) internal { delete upgrade_proposals[address(_proposal)]; uint256 len = upgrade_proposal_list.length; for (uint256 i = 0; i < len; ++i) { if (upgrade_proposal_list[i] == _proposal) { upgrade_proposal_list[i] = upgrade_proposal_list[len - 1]; upgrade_proposal_list.pop(); break; } } } /** * Related to above */ function proxy() external view returns (address) { return address(this); } /** * SECURITY: prevent on-behalf-of calls */ function transferFrom( address, address, address, uint256 ) external pure { revert('Good try'); } /** * SECURITY: prevent on-behalf-of calls */ function increaseAllowance( address, address, uint256 ) external pure { revert('Good try'); } /** * SECURITY: prevent on-behalf-of calls */ function decreaseAllowance( address, address, uint256 ) external pure { revert('Good try'); } /** * SECURITY: prevent on-behalf-of calls */ function transfer( address, address, uint256 ) external pure { revert('Good try'); } /** * SECURITY: prevent on-behalf-of calls */ function approve( address, address, uint256 ) external pure { revert('Good try'); } /** * SECURITY: prevent on-behalf-of calls */ function migrate(IGovernedContract) external pure { revert('Good try'); } /** * SECURITY: prevent on-behalf-of calls */ function destroy(IGovernedContract) external pure { revert('Good try'); } /** * Proxy all other calls to implementation. */ function() external payable senderOrigin { // SECURITY: senderOrigin() modifier is mandatory // A dummy delegatecall opcode in the fallback function is necessary for // block explorers to pick up the Energi proxy-implementation pattern if (false) { (bool success, bytes memory data) = address(0).delegatecall( abi.encodeWithSignature('') ); require( success && !success && data.length == 0 && data.length != 0, 'ERC20TokenGovernedProxy: delegatecall cannot be used' ); } IGovernedContract impl_m = impl; // solium-disable-next-line security/no-inline-assembly assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize) let res := call(sub(gas, 10000), impl_m, callvalue, ptr, calldatasize, 0, 0) // NOTE: returndatasize should allow repeatable calls // what should save one opcode. returndatacopy(ptr, 0, returndatasize) switch res case 0 { revert(ptr, returndatasize) } default { return(ptr, returndatasize) } } } }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core pragma solidity 0.5.16; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, 'SafeMath: addition overflow'); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, 'SafeMath: subtraction overflow'); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, 'SafeMath: multiplication overflow'); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, 'SafeMath: division by zero'); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, 'SafeMath: modulo by zero'); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core // Energi Governance system is the fundamental part of Energi Core. // NOTE: It's not allowed to change the compiler due to byte-to-byte // match requirement. pragma solidity 0.5.16; import { IProposal } from './IProposal.sol'; import { IGovernedContract } from './IGovernedContract.sol'; contract IUpgradeProposal is IProposal { function impl() external view returns (IGovernedContract); }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core // Energi Governance system is the fundamental part of Energi Core. // NOTE: It's not allowed to change the compiler due to byte-to-byte // match requirement. pragma solidity 0.5.16; import { IGovernedContract } from './IGovernedContract.sol'; import { IUpgradeProposal } from './IUpgradeProposal.sol'; interface ISporkRegistry { function createUpgradeProposal( IGovernedContract _impl, uint256 _period, address payable _fee_payer ) external payable returns (IUpgradeProposal); function consensusGasLimits() external view returns (uint256 callGas, uint256 xferGas); }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core // Energi Governance system is the fundamental part of Energi Core. // NOTE: It's not allowed to change the compiler due to byte-to-byte // match requirement. pragma solidity 0.5.16; interface IProposal { function parent() external view returns (address); function created_block() external view returns (uint256); function deadline() external view returns (uint256); function fee_payer() external view returns (address payable); function fee_amount() external view returns (uint256); function accepted_weight() external view returns (uint256); function rejected_weight() external view returns (uint256); function total_weight() external view returns (uint256); function quorum_weight() external view returns (uint256); function isFinished() external view returns (bool); function isAccepted() external view returns (bool); function withdraw() external; function destroy() external; function collect() external; function voteAccept() external; function voteReject() external; function setFee() external payable; function canVote(address owner) external view returns (bool); }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core pragma solidity 0.5.16; interface IOwnedERC20 { function owner() external view returns (address _owner); function setOwner(address _owner) external; function mint(address recipient, uint256 amount) external; function burn(address recipient, uint256 amount) external; }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core // Energi Governance system is the fundamental part of Energi Core. // NOTE: It's not allowed to change the compiler due to byte-to-byte // match requirement. pragma solidity 0.5.16; import { IGovernedContract } from './IGovernedContract.sol'; import { IUpgradeProposal } from './IUpgradeProposal.sol'; interface IGovernedProxy { event UpgradeProposal(IGovernedContract indexed impl, IUpgradeProposal proposal); event Upgraded(IGovernedContract indexed impl, IUpgradeProposal proposal); function impl() external view returns (IGovernedContract); function proposeUpgrade(IGovernedContract _newImpl, uint256 _period) external payable returns (IUpgradeProposal); function upgrade(IUpgradeProposal _proposal) external; function upgradeProposalImpl(IUpgradeProposal _proposal) external view returns (IGovernedContract new_impl); function listUpgradeProposals() external view returns (IUpgradeProposal[] memory proposals); function collectUpgradeProposal(IUpgradeProposal _proposal) external; function() external payable; }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core pragma solidity 0.5.16; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IGovernedERC20 { function erc20Storage() external view returns (address _erc20Storage); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function transfer( address sender, address recipient, uint256 amount ) external returns (bool); function approve( address owner, address spender, uint256 amount ) external returns (bool); function transferFrom( address spender, address sender, address recipient, uint256 amount ) external returns (bool); function increaseAllowance( address sender, address spender, uint256 addedValue ) external returns (bool); function decreaseAllowance( address sender, address spender, uint256 subtractedValue ) external returns (bool); }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core // Energi Governance system is the fundamental part of Energi Core. // NOTE: It's not allowed to change the compiler due to byte-to-byte // match requirement. pragma solidity 0.5.16; /** * Genesis version of GovernedContract interface. * * Base Consensus interface for upgradable contracts. * Unlike common approach, the implementation is NOT expected to be * called through delegatecall() to minimize risks of shared storage. * * NOTE: it MUST NOT change after blockchain launch! */ interface IGovernedContract { // Return actual proxy address for secure validation function proxy() external view returns (address); // It must check that the caller is the proxy // and copy all required data from the old address. function migrate(IGovernedContract _oldImpl) external; // It must check that the caller is the proxy // and self destruct to the new address. function destroy(IGovernedContract _newImpl) external; // function () external payable; // This line (from original Energi IGovernedContract) is commented because it // makes truffle migrations fail }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core pragma solidity 0.5.16; interface IERC20TokenGovernedProxy { event AirdropRewardsClaimed( address indexed recipient, uint256 claimAmountAirdrop, uint256 claimAmountReferral1, uint256 claimAmountReferral2, uint256 claimAmountReferral3, bytes4 airdropId, uint256 lastClaimNonce, uint256 claimNonce, bytes airdropServiceSignature ); // ERC20 events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function setSporkProxy(address payable _sporkProxy) external; function emitAirdropRewardsClaimed( address recipient, uint256 claimAmountAirdrop, uint256 claimAmountReferral1, uint256 claimAmountReferral2, uint256 claimAmountReferral3, bytes4 airdropId, uint256 lastClaimNonce, uint256 claimNonce, bytes calldata airdropServiceSignature ) external; function emitTransfer( address from, address to, uint256 value ) external; // ERC20 standard interface function name() external view returns (string memory _name); function symbol() external view returns (string memory _symbol); function decimals() external view returns (uint256 _decimals); function balanceOf(address account) external view returns (uint256 _balance); function allowance(address owner, address spender) external view returns (uint256 _allowance); function totalSupply() external view returns (uint256 _totalSupply); function approve(address spender, uint256 value) external returns (bool result); function transfer(address to, uint256 value) external returns (bool result); function transferFrom( address from, address to, uint256 value ) external returns (bool result); function increaseAllowance(address spender, uint256 addedValue) external returns (bool result); function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool result); }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core pragma solidity 0.5.16; interface IERC20Token { function eRC20TokenStorage() external view returns (address _eRC20TokenStorage); function name() external view returns (string memory _name); function symbol() external view returns (string memory _symbol); function decimals() external view returns (uint8 _decimals); function getAirdropService() external view returns (address _airdropService); function getAirdropLastClaimNonce(bytes4 airdropId, address _user) external view returns (uint256 _lastClaimNonce); // Setter functions // function setName(string calldata _name) external; function setSymbol(string calldata _symbol) external; function setDecimals(uint8 _decimals) external; function setAirdropService(address _airdropService) external; function setERC721ManagerProxy(address _eRC721ManagerProxy) external; // Mint/burn functions // function mint(address recipient, uint256 amount) external; function burn(address account, uint256 amount) external; // ERC20 airdrop and airdrop referral rewards claim function function claimAirdrop( uint256 claimAmountAirdrop, uint256 claimAmountReferral1, uint256 claimAmountReferral2, uint256 claimAmountReferral3, bytes4 airdropId, uint256 lastClaimNonce, uint256 claimNonce, bytes calldata airdropServiceSignature ) external; }
// SPDX-License-Identifier: MIT // Copyright 2023 Energi Core pragma solidity 0.5.16; /** * A little helper to protect contract from being re-entrant in state * modifying functions. */ contract NonReentrant { uint256 private entry_guard; modifier noReentry() { require(entry_guard == 0, 'Reentry'); entry_guard = 1; _; entry_guard = 0; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IGovernedContract","name":"_impl","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"claimAmountAirdrop","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimAmountReferral1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimAmountReferral2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimAmountReferral3","type":"uint256"},{"indexed":false,"internalType":"bytes4","name":"airdropId","type":"bytes4"},{"indexed":false,"internalType":"uint256","name":"lastClaimNonce","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claimNonce","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"airdropServiceSignature","type":"bytes"}],"name":"AirdropRewardsClaimed","type":"event"},{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IGovernedContract","name":"impl","type":"address"},{"indexed":false,"internalType":"contract IUpgradeProposal","name":"proposal","type":"address"}],"name":"UpgradeProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IGovernedContract","name":"impl","type":"address"},{"indexed":false,"internalType":"contract IUpgradeProposal","name":"proposal","type":"address"}],"name":"Upgraded","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"_allowance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IUpgradeProposal","name":"_proposal","type":"address"}],"name":"collectUpgradeProposal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"_decimals","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"decreaseAllowance","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IGovernedContract","name":"","type":"address"}],"name":"destroy","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"claimAmountAirdrop","type":"uint256"},{"internalType":"uint256","name":"claimAmountReferral1","type":"uint256"},{"internalType":"uint256","name":"claimAmountReferral2","type":"uint256"},{"internalType":"uint256","name":"claimAmountReferral3","type":"uint256"},{"internalType":"bytes4","name":"airdropId","type":"bytes4"},{"internalType":"uint256","name":"lastClaimNonce","type":"uint256"},{"internalType":"uint256","name":"claimNonce","type":"uint256"},{"internalType":"bytes","name":"airdropServiceSignature","type":"bytes"}],"name":"emitAirdropRewardsClaimed","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"emitApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"emitTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"impl","outputs":[{"internalType":"contract IGovernedContract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"contract IGovernedContract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"increaseAllowance","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"listUpgradeProposals","outputs":[{"internalType":"contract IUpgradeProposal[]","name":"proposals","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IGovernedContract","name":"","type":"address"}],"name":"migrate","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"_name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IGovernedContract","name":"_newImpl","type":"address"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"proposeUpgrade","outputs":[{"internalType":"contract IUpgradeProposal","name":"","type":"address"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"proxy","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"_sporkProxy","type":"address"}],"name":"setSporkProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"spork_proxy","outputs":[{"internalType":"contract IGovernedProxy","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"_symbol","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"result","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IUpgradeProposal","name":"_proposal","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IUpgradeProposal","name":"_proposal","type":"address"}],"name":"upgradeProposalImpl","outputs":[{"internalType":"contract IGovernedContract","name":"new_impl","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"upgrade_proposal_list","outputs":[{"internalType":"contract IUpgradeProposal","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"upgrade_proposals","outputs":[{"internalType":"contract IGovernedContract","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516121873803806121878339818101604052602081101561003357600080fd5b5051600180546001600160a01b039092166001600160a01b03199283168117909155600280549092161790556121198061006e6000396000f3fe6080604052600436106102035760003560e01c80636fa09ab011610118578063a9059cbb116100a0578063d73b1dc91161006f578063d73b1dc91461070c578063dd62ed3e14610a42578063dd6a851d14610a7d578063e1f21c671461070c578063ec55688914610a9257610203565b8063a9059cbb146109a4578063b364595e146109dd578063beabacc81461070c578063ce5494bb1461037d57610203565b806390d6001a116100e757806390d6001a1461082757806395d89b41146108ea5780639dc29fac146108ff578063a1b0e47614610938578063a457c2d71461096b57610203565b80636fa09ab01461078257806370a08231146107ac5780638abf6077146107df5780638d2c45f5146107f457610203565b8063313ce5671161019b5780635687f2b81161016a5780635687f2b8146106885780635b6dee4c146106cb5780635c60da1b146106f75780636c43a2ca1461070c5780636d5b6c441461074f57610203565b8063313ce567146105b257806332e3a905146105c7578063395093511461061657806340c10f191461064f57610203565b806315dacbea116101d757806315dacbea146104bc57806318160ddd1461050557806323b872dd1461052c57806323de66511461056f57610203565b8062f55d9d1461037d57806306fdde03146103b25780630900f0101461043c578063095ea7b31461046f575b323314610257576040805162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206469726563742063616c6c732061726520616c6c6f776564210000604482015290519081900360640190fd5b610345565b6020831061027b5780518252601f19909201916020918201910161025c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146102db576040519150601f19603f3d011682016040523d82523d6000602084013e6102e0565b606091505b50915091508180156102f0575081155b80156102fb57508051155b80156103075750805115155b6103425760405162461bcd60e51b81526004018080602001828103825260348152602001806120706034913960400191505060405180910390fd5b50505b6001546040516001600160a01b03909116903660008237600080368334866127105a03f13d6000833e808015610379573d83f35b3d83fd5b34801561038957600080fd5b506103b0600480360360208110156103a057600080fd5b50356001600160a01b0316610aa7565b005b3480156103be57600080fd5b506103c7610adf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104015781810151838201526020016103e9565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044857600080fd5b506103b06004803603602081101561045f57600080fd5b50356001600160a01b0316610c16565b34801561047b57600080fd5b506104a86004803603604081101561049257600080fd5b506001600160a01b038135169060200135610f46565b604080519115158252519081900360200190f35b3480156104c857600080fd5b506103b0600480360360808110156104df57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610aa7565b34801561051157600080fd5b5061051a611009565b60408051918252519081900360200190f35b34801561053857600080fd5b506104a86004803603606081101561054f57600080fd5b506001600160a01b0381358116916020810135909116906040013561107f565b34801561057b57600080fd5b506103b06004803603606081101561059257600080fd5b506001600160a01b03813581169160208101359091169060400135611216565b3480156105be57600080fd5b5061051a6112af565b3480156105d357600080fd5b506105fa600480360360208110156105ea57600080fd5b50356001600160a01b0316611328565b604080516001600160a01b039092168252519081900360200190f35b34801561062257600080fd5b506104a86004803603604081101561063957600080fd5b506001600160a01b038135169060200135611343565b34801561065b57600080fd5b506103b06004803603604081101561067257600080fd5b506001600160a01b03813516906020013561148c565b34801561069457600080fd5b506103b0600480360360608110156106ab57600080fd5b506001600160a01b038135811691602081013590911690604001356114fd565b6105fa600480360360408110156106e157600080fd5b506001600160a01b038135169060200135611584565b34801561070357600080fd5b506105fa6118d7565b34801561071857600080fd5b506103b06004803603606081101561072f57600080fd5b506001600160a01b03813581169160208101359091169060400135610aa7565b34801561075b57600080fd5b506105fa6004803603602081101561077257600080fd5b50356001600160a01b03166118e6565b34801561078e57600080fd5b506105fa600480360360208110156107a557600080fd5b5035611904565b3480156107b857600080fd5b5061051a600480360360208110156107cf57600080fd5b50356001600160a01b031661192b565b3480156107eb57600080fd5b506105fa6119ae565b34801561080057600080fd5b506103b06004803603602081101561081757600080fd5b50356001600160a01b03166119bd565b34801561083357600080fd5b506103b0600480360361012081101561084b57600080fd5b6001600160a01b03823516916020810135916040820135916060810135916080820135916001600160e01b031960a0820135169160c08201359160e08101359181019061012081016101008201356401000000008111156108ab57600080fd5b8201836020820111156108bd57600080fd5b803590602001918460018302840111640100000000831117156108df57600080fd5b509092509050611a28565b3480156108f657600080fd5b506103c7611b33565b34801561090b57600080fd5b506103b06004803603604081101561092257600080fd5b506001600160a01b038135169060200135611b78565b34801561094457600080fd5b506103b06004803603602081101561095b57600080fd5b50356001600160a01b0316611bcd565b34801561097757600080fd5b506104a86004803603604081101561098e57600080fd5b506001600160a01b038135169060200135611cfa565b3480156109b057600080fd5b506104a8600480360360408110156109c757600080fd5b506001600160a01b038135169060200135611d59565b3480156109e957600080fd5b506109f2611e2e565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610a2e578181015183820152602001610a16565b505050509050019250505060405180910390f35b348015610a4e57600080fd5b5061051a60048036036040811015610a6557600080fd5b506001600160a01b0381358116916020013516611ec8565b348015610a8957600080fd5b506105fa611f54565b348015610a9e57600080fd5b506105fa611f63565b6040805162461bcd60e51b8152602060048201526008602482015267476f6f642074727960c01b604482015290519081900360640190fd5b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde03916004808301926000929190829003018186803b158015610b2457600080fd5b505afa158015610b38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b6157600080fd5b8101908080516040519392919084640100000000821115610b8157600080fd5b908301906020820185811115610b9657600080fd5b8251640100000000811182820188101715610bb057600080fd5b82525081516020918201929091019080838360005b83811015610bdd578181015183820152602001610bc5565b50505050905090810190601f168015610c0a5780820380516001836020036101000a031916815260200191505b50604052505050905090565b60005415610c55576040805162461bcd60e51b81526020600482015260076024820152665265656e74727960c81b604482015290519081900360640190fd5b600160008181556001600160a01b038084168252600460205260409091205491549181169116811415610cc1576040805162461bcd60e51b815260206004820152600f60248201526e416c7265616479206163746976652160881b604482015290519081900360640190fd5b6001600160a01b038116610d0e576040805162461bcd60e51b815260206004820152600f60248201526e4e6f7420726567697374657265642160881b604482015290519081900360640190fd5b816001600160a01b0316635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6020811015610d7157600080fd5b5051610db4576040805162461bcd60e51b815260206004820152600d60248201526c4e6f742061636365707465642160981b604482015290519081900360640190fd5b6001546040805163ce5494bb60e01b81526001600160a01b03928316600482018190529151919284169163ce5494bb9160248082019260009290919082900301818387803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b5050600180546001600160a01b038087166001600160a01b031992831681179093556002805490921683179091556040805162f55d9d60e01b8152600481019390935251908516935062f55d9d9250602480830192600092919082900301818387803b158015610e8857600080fd5b505af1158015610e9c573d6000803e3d6000fd5b50505050610ea983611f67565b826001600160a01b03166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b5050604080516001600160a01b038781168252915191861693507f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c7925081900360200190a250506000805550565b6001546040805163e1f21c6760e01b81523360048201526001600160a01b038581166024830152604482018590529151600093929092169163e1f21c679160648082019260209290919082900301818787803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b505050506040513d6020811015610fcf57600080fd5b50516040805184815290519192506001600160a01b0385169133916000805160206120c5833981519152919081900360200190a392915050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561104e57600080fd5b505afa158015611062573d6000803e3d6000fd5b505050506040513d602081101561107857600080fd5b5051919050565b60015460408051630aed65f560e11b81523360048201526001600160a01b038681166024830152858116604483015260648201859052915160009392909216916315dacbea9160848082019260209290919082900301818787803b1580156110e657600080fd5b505af11580156110fa573d6000803e3d6000fd5b505050506040513d602081101561111057600080fd5b50516040805184815290519192506001600160a01b0380861692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a360015460408051636eb1769f60e11b81526001600160a01b0387811660048301523360248301529151600093929092169163dd62ed3e91604480820192602092909190829003018186803b1580156111b057600080fd5b505afa1580156111c4573d6000803e3d6000fd5b505050506040513d60208110156111da57600080fd5b505160408051828152905191925033916001600160a01b038816916000805160206120c5833981519152919081900360200190a3509392505050565b6001546001600160a01b0316331461125f5760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d602081101561131e57600080fd5b505160ff16919050565b6004602052600090815260409020546001600160a01b031681565b60015460408051633621d16560e11b81523360048201526001600160a01b0385811660248301526044820185905291516000939290921691636c43a2ca9160648082019260209290919082900301818787803b1580156113a257600080fd5b505af11580156113b6573d6000803e3d6000fd5b505050506040513d60208110156113cc57600080fd5b505160015460408051636eb1769f60e11b81523360048201526001600160a01b0387811660248301529151939450600093919092169163dd62ed3e916044808301926020929190829003018186803b15801561142757600080fd5b505afa15801561143b573d6000803e3d6000fd5b505050506040513d602081101561145157600080fd5b50516040805182815290519192506001600160a01b0386169133916000805160206120c5833981519152919081900360200190a35092915050565b600154604080516340c10f1960e01b81526001600160a01b03858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b1580156114e157600080fd5b505af11580156114f5573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031633146115465760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b03166000805160206120c5833981519152836040518082815260200191505060405180910390a3505050565b60003233146115da576040805162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206469726563742063616c6c732061726520616c6c6f776564210000604482015290519081900360640190fd5b60005415611619576040805162461bcd60e51b81526020600482015260076024820152665265656e74727960c81b604482015290519081900360640190fd5b60016000819055546001600160a01b0384811691161415611673576040805162461bcd60e51b815260206004820152600f60248201526e416c7265616479206163746976652160881b604482015290519081900360640190fd5b306001600160a01b0316836001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b657600080fd5b505afa1580156116ca573d6000803e3d6000fd5b505050506040513d60208110156116e057600080fd5b50516001600160a01b03161461172c576040805162461bcd60e51b815260206004820152600c60248201526b57726f6e672070726f78792160a01b604482015290519081900360640190fd5b60035460408051638abf607760e01b815290516000926001600160a01b031691638abf6077916004808301926020929190829003018186803b15801561177157600080fd5b505afa158015611785573d6000803e3d6000fd5b505050506040513d602081101561179b57600080fd5b5051604080516362877ccd60e01b81526001600160a01b038781166004830152602482018790523360448301529151929350600092918416916362877ccd913491606480830192602092919082900301818588803b1580156117fc57600080fd5b505af1158015611810573d6000803e3d6000fd5b50505050506040513d602081101561182757600080fd5b50516001600160a01b0380821660008181526004602090815260408083208054958c166001600160a01b031996871681179091556005805460018101825594527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09093018054909516841790945583519283529251939450927f812eb2689eecf94cfb55caf4a123ea76c6d93eef07dd54a5273b7a4949f7d763929181900390910190a260008055949350505050565b6002546001600160a01b031681565b6001600160a01b039081166000908152600460205260409020541690565b6005818154811061191157fe5b6000918252602090912001546001600160a01b0316905081565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d60208110156119a657600080fd5b505192915050565b6001546001600160a01b031681565b6001546001600160a01b03163314611a065760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611a715760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b896001600160a01b03167f928751aabde843c1f88d22d1392d97ac696d9d71f6904a5a195bd37c489939348a8a8a8a8a8a8a8a8a604051808a8152602001898152602001888152602001878152602001866001600160e01b0319166001600160e01b0319168152602001858152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039c50909a5050505050505050505050a250505050505050505050565b600154604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301926000929190829003018186803b158015610b2457600080fd5b60015460408051632770a7eb60e21b81526001600160a01b0385811660048301526024820185905291519190921691639dc29fac91604480830192600092919082900301818387803b1580156114e157600080fd5b60005415611c0c576040805162461bcd60e51b81526020600482015260076024820152665265656e74727960c81b604482015290519081900360640190fd5b600160009081556001600160a01b03808316825260046020526040909120541680611c70576040805162461bcd60e51b815260206004820152600f60248201526e4e6f7420726567697374657265642160881b604482015290519081900360640190fd5b816001600160a01b031663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b5050506001600160a01b038316600090815260046020526040902080546001600160a01b031916905550611cf282611f67565b505060008055565b6001546040805163d73b1dc960e01b81523360048201526001600160a01b038581166024830152604482018590529151600093929092169163d73b1dc99160648082019260209290919082900301818787803b1580156113a257600080fd5b600154604080516317d5759960e31b81523360048201526001600160a01b038581166024830152604482018590529151600093929092169163beabacc89160648082019260209290919082900301818787803b158015611db857600080fd5b505af1158015611dcc573d6000803e3d6000fd5b505050506040513d6020811015611de257600080fd5b50516040805184815290519192506001600160a01b0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a392915050565b60055460408051828152602080840282010190915260609190818015611e5e578160200160208202803883390190505b50915060005b81811015611ec35760058181548110611e7957fe5b9060005260206000200160009054906101000a90046001600160a01b0316838281518110611ea357fe5b6001600160a01b0390921660209283029190910190910152600101611e64565b505090565b60015460408051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529151600093929092169163dd62ed3e91604480820192602092909190829003018186803b158015611f2157600080fd5b505afa158015611f35573d6000803e3d6000fd5b505050506040513d6020811015611f4b57600080fd5b50519392505050565b6003546001600160a01b031681565b3090565b6001600160a01b038116600090815260046020526040812080546001600160a01b0319169055600554905b8181101561206a57826001600160a01b031660058281548110611fb157fe5b6000918252602090912001546001600160a01b031614156120625760056001830381548110611fdc57fe5b600091825260209091200154600580546001600160a01b03909216918390811061200257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600580548061203b57fe5b600082815260209020810160001990810180546001600160a01b031916905501905561206a565b600101611f92565b50505056fe4552433230546f6b656e476f7665726e656450726f78793a2064656c656761746563616c6c2063616e6e6f7420626520757365644f6e6c792063616c6c732066726f6d20696d706c2061726520616c6c6f776564218c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a723158202a0e4f802cfdc1a7b12d8d094db9ece470d5e9adedbbfef5cbce0c72c988f84064736f6c6343000510003200000000000000000000000061a7ce2ea07908f56e98d71d01211226d5980325
Deployed Bytecode
0x6080604052600436106102035760003560e01c80636fa09ab011610118578063a9059cbb116100a0578063d73b1dc91161006f578063d73b1dc91461070c578063dd62ed3e14610a42578063dd6a851d14610a7d578063e1f21c671461070c578063ec55688914610a9257610203565b8063a9059cbb146109a4578063b364595e146109dd578063beabacc81461070c578063ce5494bb1461037d57610203565b806390d6001a116100e757806390d6001a1461082757806395d89b41146108ea5780639dc29fac146108ff578063a1b0e47614610938578063a457c2d71461096b57610203565b80636fa09ab01461078257806370a08231146107ac5780638abf6077146107df5780638d2c45f5146107f457610203565b8063313ce5671161019b5780635687f2b81161016a5780635687f2b8146106885780635b6dee4c146106cb5780635c60da1b146106f75780636c43a2ca1461070c5780636d5b6c441461074f57610203565b8063313ce567146105b257806332e3a905146105c7578063395093511461061657806340c10f191461064f57610203565b806315dacbea116101d757806315dacbea146104bc57806318160ddd1461050557806323b872dd1461052c57806323de66511461056f57610203565b8062f55d9d1461037d57806306fdde03146103b25780630900f0101461043c578063095ea7b31461046f575b323314610257576040805162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206469726563742063616c6c732061726520616c6c6f776564210000604482015290519081900360640190fd5b610345565b6020831061027b5780518252601f19909201916020918201910161025c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146102db576040519150601f19603f3d011682016040523d82523d6000602084013e6102e0565b606091505b50915091508180156102f0575081155b80156102fb57508051155b80156103075750805115155b6103425760405162461bcd60e51b81526004018080602001828103825260348152602001806120706034913960400191505060405180910390fd5b50505b6001546040516001600160a01b03909116903660008237600080368334866127105a03f13d6000833e808015610379573d83f35b3d83fd5b34801561038957600080fd5b506103b0600480360360208110156103a057600080fd5b50356001600160a01b0316610aa7565b005b3480156103be57600080fd5b506103c7610adf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104015781810151838201526020016103e9565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561044857600080fd5b506103b06004803603602081101561045f57600080fd5b50356001600160a01b0316610c16565b34801561047b57600080fd5b506104a86004803603604081101561049257600080fd5b506001600160a01b038135169060200135610f46565b604080519115158252519081900360200190f35b3480156104c857600080fd5b506103b0600480360360808110156104df57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610aa7565b34801561051157600080fd5b5061051a611009565b60408051918252519081900360200190f35b34801561053857600080fd5b506104a86004803603606081101561054f57600080fd5b506001600160a01b0381358116916020810135909116906040013561107f565b34801561057b57600080fd5b506103b06004803603606081101561059257600080fd5b506001600160a01b03813581169160208101359091169060400135611216565b3480156105be57600080fd5b5061051a6112af565b3480156105d357600080fd5b506105fa600480360360208110156105ea57600080fd5b50356001600160a01b0316611328565b604080516001600160a01b039092168252519081900360200190f35b34801561062257600080fd5b506104a86004803603604081101561063957600080fd5b506001600160a01b038135169060200135611343565b34801561065b57600080fd5b506103b06004803603604081101561067257600080fd5b506001600160a01b03813516906020013561148c565b34801561069457600080fd5b506103b0600480360360608110156106ab57600080fd5b506001600160a01b038135811691602081013590911690604001356114fd565b6105fa600480360360408110156106e157600080fd5b506001600160a01b038135169060200135611584565b34801561070357600080fd5b506105fa6118d7565b34801561071857600080fd5b506103b06004803603606081101561072f57600080fd5b506001600160a01b03813581169160208101359091169060400135610aa7565b34801561075b57600080fd5b506105fa6004803603602081101561077257600080fd5b50356001600160a01b03166118e6565b34801561078e57600080fd5b506105fa600480360360208110156107a557600080fd5b5035611904565b3480156107b857600080fd5b5061051a600480360360208110156107cf57600080fd5b50356001600160a01b031661192b565b3480156107eb57600080fd5b506105fa6119ae565b34801561080057600080fd5b506103b06004803603602081101561081757600080fd5b50356001600160a01b03166119bd565b34801561083357600080fd5b506103b0600480360361012081101561084b57600080fd5b6001600160a01b03823516916020810135916040820135916060810135916080820135916001600160e01b031960a0820135169160c08201359160e08101359181019061012081016101008201356401000000008111156108ab57600080fd5b8201836020820111156108bd57600080fd5b803590602001918460018302840111640100000000831117156108df57600080fd5b509092509050611a28565b3480156108f657600080fd5b506103c7611b33565b34801561090b57600080fd5b506103b06004803603604081101561092257600080fd5b506001600160a01b038135169060200135611b78565b34801561094457600080fd5b506103b06004803603602081101561095b57600080fd5b50356001600160a01b0316611bcd565b34801561097757600080fd5b506104a86004803603604081101561098e57600080fd5b506001600160a01b038135169060200135611cfa565b3480156109b057600080fd5b506104a8600480360360408110156109c757600080fd5b506001600160a01b038135169060200135611d59565b3480156109e957600080fd5b506109f2611e2e565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610a2e578181015183820152602001610a16565b505050509050019250505060405180910390f35b348015610a4e57600080fd5b5061051a60048036036040811015610a6557600080fd5b506001600160a01b0381358116916020013516611ec8565b348015610a8957600080fd5b506105fa611f54565b348015610a9e57600080fd5b506105fa611f63565b6040805162461bcd60e51b8152602060048201526008602482015267476f6f642074727960c01b604482015290519081900360640190fd5b600154604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde03916004808301926000929190829003018186803b158015610b2457600080fd5b505afa158015610b38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b6157600080fd5b8101908080516040519392919084640100000000821115610b8157600080fd5b908301906020820185811115610b9657600080fd5b8251640100000000811182820188101715610bb057600080fd5b82525081516020918201929091019080838360005b83811015610bdd578181015183820152602001610bc5565b50505050905090810190601f168015610c0a5780820380516001836020036101000a031916815260200191505b50604052505050905090565b60005415610c55576040805162461bcd60e51b81526020600482015260076024820152665265656e74727960c81b604482015290519081900360640190fd5b600160008181556001600160a01b038084168252600460205260409091205491549181169116811415610cc1576040805162461bcd60e51b815260206004820152600f60248201526e416c7265616479206163746976652160881b604482015290519081900360640190fd5b6001600160a01b038116610d0e576040805162461bcd60e51b815260206004820152600f60248201526e4e6f7420726567697374657265642160881b604482015290519081900360640190fd5b816001600160a01b0316635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d4757600080fd5b505afa158015610d5b573d6000803e3d6000fd5b505050506040513d6020811015610d7157600080fd5b5051610db4576040805162461bcd60e51b815260206004820152600d60248201526c4e6f742061636365707465642160981b604482015290519081900360640190fd5b6001546040805163ce5494bb60e01b81526001600160a01b03928316600482018190529151919284169163ce5494bb9160248082019260009290919082900301818387803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b5050600180546001600160a01b038087166001600160a01b031992831681179093556002805490921683179091556040805162f55d9d60e01b8152600481019390935251908516935062f55d9d9250602480830192600092919082900301818387803b158015610e8857600080fd5b505af1158015610e9c573d6000803e3d6000fd5b50505050610ea983611f67565b826001600160a01b03166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ee457600080fd5b505af1158015610ef8573d6000803e3d6000fd5b5050604080516001600160a01b038781168252915191861693507f5d611f318680d00598bb735d61bacf0c514c6b50e1e5ad30040a4df2b12791c7925081900360200190a250506000805550565b6001546040805163e1f21c6760e01b81523360048201526001600160a01b038581166024830152604482018590529151600093929092169163e1f21c679160648082019260209290919082900301818787803b158015610fa557600080fd5b505af1158015610fb9573d6000803e3d6000fd5b505050506040513d6020811015610fcf57600080fd5b50516040805184815290519192506001600160a01b0385169133916000805160206120c5833981519152919081900360200190a392915050565b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561104e57600080fd5b505afa158015611062573d6000803e3d6000fd5b505050506040513d602081101561107857600080fd5b5051919050565b60015460408051630aed65f560e11b81523360048201526001600160a01b038681166024830152858116604483015260648201859052915160009392909216916315dacbea9160848082019260209290919082900301818787803b1580156110e657600080fd5b505af11580156110fa573d6000803e3d6000fd5b505050506040513d602081101561111057600080fd5b50516040805184815290519192506001600160a01b0380861692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a360015460408051636eb1769f60e11b81526001600160a01b0387811660048301523360248301529151600093929092169163dd62ed3e91604480820192602092909190829003018186803b1580156111b057600080fd5b505afa1580156111c4573d6000803e3d6000fd5b505050506040513d60208110156111da57600080fd5b505160408051828152905191925033916001600160a01b038816916000805160206120c5833981519152919081900360200190a3509392505050565b6001546001600160a01b0316331461125f5760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6001546040805163313ce56760e01b815290516000926001600160a01b03169163313ce567916004808301926020929190829003018186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d602081101561131e57600080fd5b505160ff16919050565b6004602052600090815260409020546001600160a01b031681565b60015460408051633621d16560e11b81523360048201526001600160a01b0385811660248301526044820185905291516000939290921691636c43a2ca9160648082019260209290919082900301818787803b1580156113a257600080fd5b505af11580156113b6573d6000803e3d6000fd5b505050506040513d60208110156113cc57600080fd5b505160015460408051636eb1769f60e11b81523360048201526001600160a01b0387811660248301529151939450600093919092169163dd62ed3e916044808301926020929190829003018186803b15801561142757600080fd5b505afa15801561143b573d6000803e3d6000fd5b505050506040513d602081101561145157600080fd5b50516040805182815290519192506001600160a01b0386169133916000805160206120c5833981519152919081900360200190a35092915050565b600154604080516340c10f1960e01b81526001600160a01b03858116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b1580156114e157600080fd5b505af11580156114f5573d6000803e3d6000fd5b505050505050565b6001546001600160a01b031633146115465760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b816001600160a01b0316836001600160a01b03166000805160206120c5833981519152836040518082815260200191505060405180910390a3505050565b60003233146115da576040805162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206469726563742063616c6c732061726520616c6c6f776564210000604482015290519081900360640190fd5b60005415611619576040805162461bcd60e51b81526020600482015260076024820152665265656e74727960c81b604482015290519081900360640190fd5b60016000819055546001600160a01b0384811691161415611673576040805162461bcd60e51b815260206004820152600f60248201526e416c7265616479206163746976652160881b604482015290519081900360640190fd5b306001600160a01b0316836001600160a01b031663ec5568896040518163ffffffff1660e01b815260040160206040518083038186803b1580156116b657600080fd5b505afa1580156116ca573d6000803e3d6000fd5b505050506040513d60208110156116e057600080fd5b50516001600160a01b03161461172c576040805162461bcd60e51b815260206004820152600c60248201526b57726f6e672070726f78792160a01b604482015290519081900360640190fd5b60035460408051638abf607760e01b815290516000926001600160a01b031691638abf6077916004808301926020929190829003018186803b15801561177157600080fd5b505afa158015611785573d6000803e3d6000fd5b505050506040513d602081101561179b57600080fd5b5051604080516362877ccd60e01b81526001600160a01b038781166004830152602482018790523360448301529151929350600092918416916362877ccd913491606480830192602092919082900301818588803b1580156117fc57600080fd5b505af1158015611810573d6000803e3d6000fd5b50505050506040513d602081101561182757600080fd5b50516001600160a01b0380821660008181526004602090815260408083208054958c166001600160a01b031996871681179091556005805460018101825594527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09093018054909516841790945583519283529251939450927f812eb2689eecf94cfb55caf4a123ea76c6d93eef07dd54a5273b7a4949f7d763929181900390910190a260008055949350505050565b6002546001600160a01b031681565b6001600160a01b039081166000908152600460205260409020541690565b6005818154811061191157fe5b6000918252602090912001546001600160a01b0316905081565b600154604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d60208110156119a657600080fd5b505192915050565b6001546001600160a01b031681565b6001546001600160a01b03163314611a065760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611a715760405162461bcd60e51b81526004018080602001828103825260218152602001806120a46021913960400191505060405180910390fd5b896001600160a01b03167f928751aabde843c1f88d22d1392d97ac696d9d71f6904a5a195bd37c489939348a8a8a8a8a8a8a8a8a604051808a8152602001898152602001888152602001878152602001866001600160e01b0319166001600160e01b0319168152602001858152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039c50909a5050505050505050505050a250505050505050505050565b600154604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b41916004808301926000929190829003018186803b158015610b2457600080fd5b60015460408051632770a7eb60e21b81526001600160a01b0385811660048301526024820185905291519190921691639dc29fac91604480830192600092919082900301818387803b1580156114e157600080fd5b60005415611c0c576040805162461bcd60e51b81526020600482015260076024820152665265656e74727960c81b604482015290519081900360640190fd5b600160009081556001600160a01b03808316825260046020526040909120541680611c70576040805162461bcd60e51b815260206004820152600f60248201526e4e6f7420726567697374657265642160881b604482015290519081900360640190fd5b816001600160a01b031663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b5050506001600160a01b038316600090815260046020526040902080546001600160a01b031916905550611cf282611f67565b505060008055565b6001546040805163d73b1dc960e01b81523360048201526001600160a01b038581166024830152604482018590529151600093929092169163d73b1dc99160648082019260209290919082900301818787803b1580156113a257600080fd5b600154604080516317d5759960e31b81523360048201526001600160a01b038581166024830152604482018590529151600093929092169163beabacc89160648082019260209290919082900301818787803b158015611db857600080fd5b505af1158015611dcc573d6000803e3d6000fd5b505050506040513d6020811015611de257600080fd5b50516040805184815290519192506001600160a01b0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a392915050565b60055460408051828152602080840282010190915260609190818015611e5e578160200160208202803883390190505b50915060005b81811015611ec35760058181548110611e7957fe5b9060005260206000200160009054906101000a90046001600160a01b0316838281518110611ea357fe5b6001600160a01b0390921660209283029190910190910152600101611e64565b505090565b60015460408051636eb1769f60e11b81526001600160a01b03858116600483015284811660248301529151600093929092169163dd62ed3e91604480820192602092909190829003018186803b158015611f2157600080fd5b505afa158015611f35573d6000803e3d6000fd5b505050506040513d6020811015611f4b57600080fd5b50519392505050565b6003546001600160a01b031681565b3090565b6001600160a01b038116600090815260046020526040812080546001600160a01b0319169055600554905b8181101561206a57826001600160a01b031660058281548110611fb157fe5b6000918252602090912001546001600160a01b031614156120625760056001830381548110611fdc57fe5b600091825260209091200154600580546001600160a01b03909216918390811061200257fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600580548061203b57fe5b600082815260209020810160001990810180546001600160a01b031916905501905561206a565b600101611f92565b50505056fe4552433230546f6b656e476f7665726e656450726f78793a2064656c656761746563616c6c2063616e6e6f7420626520757365644f6e6c792063616c6c732066726f6d20696d706c2061726520616c6c6f776564218c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a723158202a0e4f802cfdc1a7b12d8d094db9ece470d5e9adedbbfef5cbce0c72c988f84064736f6c63430005100032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000061A7CE2EA07908F56e98D71d01211226d5980325
-----Decoded View---------------
Arg [0] : _impl (address): 0x61A7CE2EA07908F56e98D71d01211226d5980325
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000061A7CE2EA07908F56e98D71d01211226d5980325
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.