Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 GTCOIN
Holders
2,805
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.181818181818181818 GTCOINValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
GameTesterToken
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-11-02 */ pragma solidity ^0.4.20; /** * @title SafeMath * @dev Math operations with safety checks that throw on error **/ library SafeMathLib{ function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; assert(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". **/ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) onlyOwner public { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @dev Abstract contract for approveAndCall. **/ contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes data) public; } /** * @title Game Tester Token * @dev ERC20 contract utilizing ERC865-ish structure (based on the CoinvestTokenV2 contract) * @dev to allow users to pay Ethereum fees in tokens. **/ contract GameTesterToken is Ownable { using SafeMathLib for uint256; string public constant symbol = "GTCOIN"; string public constant name = "Game Tester"; uint8 public constant decimals = 18; uint256 private _totalSupply = 100000000 * (10 ** 18); // Function sigs to be used within contract for signature recovery. bytes4 internal constant transferSig = 0xa9059cbb; bytes4 internal constant approveSig = 0x095ea7b3; bytes4 internal constant increaseApprovalSig = 0xd73dd623; bytes4 internal constant decreaseApprovalSig = 0x66188463; bytes4 internal constant approveAndCallSig = 0xcae9ca51; bytes4 internal constant revokeSignatureSig = 0xe40d89e5; // Balances for each account mapping(address => uint256) balances; // Owner of account approves the transfer of an amount to another account mapping(address => mapping (address => uint256)) allowed; // Keeps track of the last nonce sent from user. Used for delegated functions. mapping (address => uint256) nonces; // Mapping of past used hashes: true if already used. mapping (address => mapping (bytes => bool)) invalidSignatures; // Mapping of finalized ERC865 standard sigs => our function sigs for future-proofing mapping (bytes4 => bytes4) public standardSigs; event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed from, address indexed spender, uint tokens); event SignatureRedeemed(bytes _sig, address indexed from); /** * @dev Set owner and beginning balance. **/ constructor() public { balances[msg.sender] = _totalSupply; } /** * @dev This code allows us to redirect pre-signed calls with different function selectors to our own. **/ function () public { bytes memory calldata = msg.data; bytes4 new_selector = standardSigs[msg.sig]; require(new_selector != 0); assembly { mstore(add(0x20, calldata), new_selector) } require(address(this).delegatecall(calldata)); assembly { if iszero(eq(returndatasize, 0x20)) { revert(0, 0) } returndatacopy(0, 0, returndatasize) return(0, returndatasize) } } /** ******************************** ERC20 ********************************* **/ /** * @dev Transfers coins from one address to another. * @param _to The recipient of the transfer amount. * @param _amount The amount of tokens to transfer. **/ function transfer(address _to, uint256 _amount) public returns (bool success) { require(_transfer(msg.sender, _to, _amount)); return true; } /** * @dev An allowed address can transfer tokens from another's address. * @param _from The owner of the tokens to be transferred. * @param _to The address to which the tokens will be transferred. * @param _amount The amount of tokens to be transferred. **/ function transferFrom(address _from, address _to, uint _amount) public returns (bool success) { require(balances[_from] >= _amount && allowed[_from][msg.sender] >= _amount); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount); require(_transfer(_from, _to, _amount)); return true; } /** * @dev Approves a wallet to transfer tokens on one's behalf. * @param _spender The wallet approved to spend tokens. * @param _amount The amount of tokens approved to spend. **/ function approve(address _spender, uint256 _amount) public returns (bool success) { require(_approve(msg.sender, _spender, _amount)); return true; } /** * @dev Increases the allowed amount for spender from msg.sender. * @param _spender The address to increase allowed amount for. * @param _amount The amount of tokens to increase allowed amount by. **/ function increaseApproval(address _spender, uint256 _amount) public returns (bool success) { require(_increaseApproval(msg.sender, _spender, _amount)); return true; } /** * @dev Decreases the allowed amount for spender from msg.sender. * @param _spender The address to decrease allowed amount for. * @param _amount The amount of tokens to decrease allowed amount by. **/ function decreaseApproval(address _spender, uint256 _amount) public returns (bool success) { require(_decreaseApproval(msg.sender, _spender, _amount)); return true; } /** * @dev Used to approve an address and call a function on it in the same transaction. * @dev _spender The address to be approved to spend GTCOIN. * @dev _amount The amount of GTCOIN to be approved to spend. * @dev _data The data to send to the called contract. **/ function approveAndCall(address _spender, uint256 _amount, bytes _data) public returns (bool success) { require(_approve(msg.sender, _spender, _amount)); ApproveAndCallFallBack(_spender).receiveApproval(msg.sender, _amount, address(this), _data); return true; } /** ****************************** Internal ******************************** **/ /** * @dev Internal transfer for all functions that transfer. * @param _from The address that is transferring coins. * @param _to The receiving address of the coins. * @param _amount The amount of coins being transferred. **/ function _transfer(address _from, address _to, uint256 _amount) internal returns (bool success) { require (_to != address(0)); require(balances[_from] >= _amount); balances[_from] = balances[_from].sub(_amount); balances[_to] = balances[_to].add(_amount); emit Transfer(_from, _to, _amount); return true; } /** * @dev Internal approve for all functions that require an approve. * @param _owner The owner who is allowing spender to use their balance. * @param _spender The wallet approved to spend tokens. * @param _amount The amount of tokens approved to spend. **/ function _approve(address _owner, address _spender, uint256 _amount) internal returns (bool success) { allowed[_owner][_spender] = _amount; emit Approval(_owner, _spender, _amount); return true; } /** * @dev Increases the allowed by "_amount" for "_spender" from "owner" * @param _owner The address that tokens may be transferred from. * @param _spender The address that may transfer these tokens. * @param _amount The amount of tokens to transfer. **/ function _increaseApproval(address _owner, address _spender, uint256 _amount) internal returns (bool success) { allowed[_owner][_spender] = allowed[_owner][_spender].add(_amount); emit Approval(_owner, _spender, allowed[_owner][_spender]); return true; } /** * @dev Decreases the allowed by "_amount" for "_spender" from "_owner" * @param _owner The owner of the tokens to decrease allowed for. * @param _spender The spender whose allowed will decrease. * @param _amount The amount of tokens to decrease allowed by. **/ function _decreaseApproval(address _owner, address _spender, uint256 _amount) internal returns (bool success) { if (allowed[_owner][_spender] <= _amount) allowed[_owner][_spender] = 0; else allowed[_owner][_spender] = allowed[_owner][_spender].sub(_amount); emit Approval(_owner, _spender, allowed[_owner][_spender]); return true; } /** ************************ Delegated Functions *************************** **/ /** * @dev Called by delegate with a signed hash of the transaction data to allow a user * @dev to transfer tokens without paying gas in Ether (they pay in GTCOIN instead). * @param _signature Signed hash of data for this transfer. * @param _to The address to transfer GTCOIN to. * @param _value The amount of GTCOIN to transfer. * @param _gasPrice Price (IN GTCOIN) that will be paid per unit of gas by user to "delegate". * @param _nonce Nonce of the user's new transaction (to make signatures unique, not to be confused with address transaction nonce). **/ function transferPreSigned( bytes _signature, address _to, uint256 _value, uint256 _gasPrice, uint256 _nonce) public validPayload(292) returns (bool) { // Log starting gas left of transaction for later gas price calculations. uint256 gas = gasleft(); // Recover signer address from signature; ensure address is valid. address from = recoverPreSigned(_signature, transferSig, _to, _value, "", _gasPrice, _nonce); require(from != address(0)); // Require the hash has not been used, declare it used, increment nonce. require(!invalidSignatures[from][_signature]); invalidSignatures[from][_signature] = true; nonces[from]++; // Internal transfer. require(_transfer(from, _to, _value)); // If the delegate is charging, pay them for gas in GTCOIN. if (_gasPrice > 0) { // 35000 because of base fee of 21000 and ~14000 for the fee transfer. gas = 35000 + gas.sub(gasleft()); require(_transfer(from, msg.sender, _gasPrice.mul(gas))); } emit SignatureRedeemed(_signature, from); return true; } /** * @dev Called by a delegate with signed hash to approve a transaction for user. * @dev All variables equivalent to transfer except _to: * @param _to The address that will be approved to transfer GTCOIN from user's wallet. **/ function approvePreSigned( bytes _signature, address _to, uint256 _value, uint256 _gasPrice, uint256 _nonce) public validPayload(292) returns (bool) { uint256 gas = gasleft(); address from = recoverPreSigned(_signature, approveSig, _to, _value, "", _gasPrice, _nonce); require(from != address(0)); require(!invalidSignatures[from][_signature]); invalidSignatures[from][_signature] = true; nonces[from]++; require(_approve(from, _to, _value)); if (_gasPrice > 0) { gas = 35000 + gas.sub(gasleft()); require(_transfer(from, msg.sender, _gasPrice.mul(gas))); } emit SignatureRedeemed(_signature, from); return true; } /** * @dev Used to increase the amount allowed for "_to" to spend from "from" * @dev A bare approve allows potentially nasty race conditions when using a delegate. **/ function increaseApprovalPreSigned( bytes _signature, address _to, uint256 _value, uint256 _gasPrice, uint256 _nonce) public validPayload(292) returns (bool) { uint256 gas = gasleft(); address from = recoverPreSigned(_signature, increaseApprovalSig, _to, _value, "", _gasPrice, _nonce); require(from != address(0)); require(!invalidSignatures[from][_signature]); invalidSignatures[from][_signature] = true; nonces[from]++; require(_increaseApproval(from, _to, _value)); if (_gasPrice > 0) { gas = 35000 + gas.sub(gasleft()); require(_transfer(from, msg.sender, _gasPrice.mul(gas))); } emit SignatureRedeemed(_signature, from); return true; } /** * @dev Added for the same reason as increaseApproval. Decreases to 0 if "_value" is greater than allowed. **/ function decreaseApprovalPreSigned( bytes _signature, address _to, uint256 _value, uint256 _gasPrice, uint256 _nonce) public validPayload(292) returns (bool) { uint256 gas = gasleft(); address from = recoverPreSigned(_signature, decreaseApprovalSig, _to, _value, "", _gasPrice, _nonce); require(from != address(0)); require(!invalidSignatures[from][_signature]); invalidSignatures[from][_signature] = true; nonces[from]++; require(_decreaseApproval(from, _to, _value)); if (_gasPrice > 0) { gas = 35000 + gas.sub(gasleft()); require(_transfer(from, msg.sender, _gasPrice.mul(gas))); } emit SignatureRedeemed(_signature, from); return true; } /** * @dev approveAndCallPreSigned allows a user to approve a contract and call a function on it * @dev in the same transaction. As with the other presigneds, a delegate calls this with signed data from user. * @dev This function is the big reason we're using gas price and calculating gas use. * @dev Using this with the contract can result in varying gas costs. * @param _extraData The data to send to the contract. **/ function approveAndCallPreSigned( bytes _signature, address _to, uint256 _value, bytes _extraData, uint256 _gasPrice, uint256 _nonce) public validPayload(356) returns (bool) { uint256 gas = gasleft(); address from = recoverPreSigned(_signature, approveAndCallSig, _to, _value, _extraData, _gasPrice, _nonce); require(from != address(0)); require(!invalidSignatures[from][_signature]); invalidSignatures[from][_signature] = true; nonces[from]++; require(_approve(from, _to, _value)); ApproveAndCallFallBack(_to).receiveApproval(from, _value, address(this), _extraData); if (_gasPrice > 0) { gas = 35000 + gas.sub(gasleft()); require(_transfer(from, msg.sender, _gasPrice.mul(gas))); } emit SignatureRedeemed(_signature, from); return true; } /** *************************** Revoke PreSigned ************************** **/ /** * @dev Revoke signature without going through a delegate. * @param _sigToRevoke The signature that you no longer want to be used. **/ function revokeSignature(bytes _sigToRevoke) public returns (bool) { invalidSignatures[msg.sender][_sigToRevoke] = true; emit SignatureRedeemed(_sigToRevoke, msg.sender); return true; } /** * @dev Revoke signature through a delegate. * @param _signature The signature allowing this revocation. * @param _sigToRevoke The signature that you would like revoked. * @param _gasPrice The amount of token wei to be paid for each uint of gas. **/ function revokeSignaturePreSigned( bytes _signature, bytes _sigToRevoke, uint256 _gasPrice) public validPayload(356) returns (bool) { uint256 gas = gasleft(); address from = recoverRevokeHash(_signature, _sigToRevoke, _gasPrice); require(!invalidSignatures[from][_signature]); invalidSignatures[from][_signature] = true; invalidSignatures[from][_sigToRevoke] = true; if (_gasPrice > 0) { gas = 35000 + gas.sub(gasleft()); require(_transfer(from, msg.sender, _gasPrice.mul(gas))); } emit SignatureRedeemed(_signature, from); return true; } /** * @dev Get hash for a revocation. * @param _sigToRevoke The signature to be revoked. * @param _gasPrice The amount to be paid to delegate for sending this tx. **/ function getRevokeHash(bytes _sigToRevoke, uint256 _gasPrice) public pure returns (bytes32 txHash) { return keccak256(revokeSignatureSig, _sigToRevoke, _gasPrice); } /** * @dev Recover the address from a revocation signature. * @param _sigToRevoke The signature to be revoked. * @param _signature The signature allowing this revocation. * @param _gasPrice The amount of token wei to be paid for each unit of gas. **/ function recoverRevokeHash(bytes _signature, bytes _sigToRevoke, uint256 _gasPrice) public pure returns (address from) { return ecrecoverFromSig(getSignHash(getRevokeHash(_sigToRevoke, _gasPrice)), _signature); } /** ************************** PreSigned Constants ************************ **/ /** * @dev Used in frontend and contract to get hashed data of any given pre-signed transaction. * @param _to The address to transfer GTCOIN to. * @param _value The amount of GTCOIN to be transferred. * @param _extraData Extra data of tx if needed. Transfers and approves will leave this null. * @param _function Function signature of the pre-signed function being used. * @param _gasPrice The agreed-upon amount of GTCOIN to be paid per unit of gas. * @param _nonce The user's nonce of the new transaction. **/ function getPreSignedHash( bytes4 _function, address _to, uint256 _value, bytes _extraData, uint256 _gasPrice, uint256 _nonce) public view returns (bytes32 txHash) { return keccak256(address(this), _function, _to, _value, _extraData, _gasPrice, _nonce); } /** * @dev Recover an address from a signed pre-signed hash. * @param _sig The signed hash. * @param _function The function signature for function being called. * @param _to The address to transfer/approve/transferFrom/etc. tokens to. * @param _value The amont of tokens to transfer/approve/etc. * @param _extraData The extra data included in the transaction, if any. * @param _gasPrice The amount of token wei to be paid to the delegate for each unit of gas. * @param _nonce The user's nonce for this transaction. **/ function recoverPreSigned( bytes _sig, bytes4 _function, address _to, uint256 _value, bytes _extraData, uint256 _gasPrice, uint256 _nonce) public view returns (address recovered) { return ecrecoverFromSig(getSignHash(getPreSignedHash(_function, _to, _value, _extraData, _gasPrice, _nonce)), _sig); } /** * @dev Add signature prefix to hash for recovery à la ERC191. * @param _hash The hashed transaction to add signature prefix to. **/ function getSignHash(bytes32 _hash) public pure returns (bytes32 signHash) { return keccak256("\x19Ethereum Signed Message:\n32", _hash); } /** * @param hash The hash of signed data for the transaction. * @param sig Contains r, s, and v for recovery of address from the hash. **/ function ecrecoverFromSig(bytes32 hash, bytes sig) public pure returns (address recoveredAddress) { bytes32 r; bytes32 s; uint8 v; if (sig.length != 65) return address(0); assembly { r := mload(add(sig, 32)) s := mload(add(sig, 64)) // Here we are loading the last 32 bytes. We exploit the fact that 'mload' will pad with zeroes if we overread. // There is no 'mload8' to do this, but that would be nicer. v := byte(0, mload(add(sig, 96))) } // Albeit non-transactional signatures are not specified by the YP, one would expect it to match the YP range of [27, 28] // geth uses [0, 1] and some clients have followed. This might change, see https://github.com/ethereum/go-ethereum/issues/2053 if (v < 27) { v += 27; } if (v != 27 && v != 28) return address(0); return ecrecover(hash, v, r, s); } /** * @dev Frontend queries to find the next nonce of the user so they can find the new nonce to send. * @param _owner Address that will be sending the GTCOIN. **/ function getNonce(address _owner) external view returns (uint256 nonce) { return nonces[_owner]; } /** ****************************** Constants ******************************* **/ /** * @dev Return total supply of token. **/ function totalSupply() external view returns (uint256) { return _totalSupply; } /** * @dev Return balance of a certain address. * @param _owner The address whose balance we want to check. **/ function balanceOf(address _owner) external view returns (uint256) { return balances[_owner]; } /** * @dev Allowed amount for a user to spend of another's tokens. * @param _owner The owner of the tokens approved to spend. * @param _spender The address of the user allowed to spend the tokens. **/ function allowance(address _owner, address _spender) external view returns (uint256) { return allowed[_owner][_spender]; } /** ****************************** onlyOwner ******************************* **/ /** * @dev Allow the owner to take ERC20 tokens off of this contract if they are accidentally sent. **/ function token_escape(address _tokenContract) external onlyOwner { GameTesterToken lostToken = GameTesterToken(_tokenContract); uint256 stuckTokens = lostToken.balanceOf(address(this)); lostToken.transfer(owner, stuckTokens); } /** * @dev Owner may set the standard sig to redirect to one of our pre-signed functions. * @dev Added in order to prepare for the ERC865 standard function names to be different from ours. * @param _standardSig The function signature of the finalized standard function. * @param _ourSig The function signature of our implemented function. **/ function updateStandard(bytes4 _standardSig, bytes4 _ourSig) external onlyOwner returns (bool success) { // These 6 are the signatures of our pre-signed functions. require(_ourSig == 0x1296830d || _ourSig == 0x617b390b || _ourSig == 0xadb8249e || _ourSig == 0x8be52783 || _ourSig == 0xc8d4b389 || _ourSig == 0xe391a7c4); standardSigs[_standardSig] = _ourSig; return true; } /** ***************************** Modifiers ******************************** **/ modifier validPayload(uint _size) { uint payload_size; assembly { payload_size := calldatasize } require(payload_size >= _size); _; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_sig","type":"bytes"},{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"recoverPreSigned","outputs":[{"name":"recovered","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"transferPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getNonce","outputs":[{"name":"nonce","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"approvePreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"decreaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"standardSigs","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"getPreSignedHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"increaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"getSignHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_standardSig","type":"bytes4"},{"name":"_ourSig","type":"bytes4"}],"name":"updateStandard","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_gasPrice","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"approveAndCallPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sigToRevoke","type":"bytes"}],"name":"revokeSignature","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"token_escape","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"sig","type":"bytes"}],"name":"ecrecoverFromSig","outputs":[{"name":"recoveredAddress","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_sigToRevoke","type":"bytes"},{"name":"_gasPrice","type":"uint256"}],"name":"getRevokeHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"},{"name":"_gasPrice","type":"uint256"}],"name":"recoverRevokeHash","outputs":[{"name":"from","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"},{"name":"_gasPrice","type":"uint256"}],"name":"revokeSignaturePreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sig","type":"bytes"},{"indexed":true,"name":"from","type":"address"}],"name":"SignatureRedeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526a52b7d2dcc80cd2e400000060015534801561001f57600080fd5b5060008054600160a060020a03191633908117825560015490825260026020526040909120556127ee806100546000396000f3006080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806309ea63e31461033d5780631296830d1461041e57806318160ddd1461049157806323b872dd146104b85780632d0335ab146104e2578063313ce56714610503578063617b390b1461052e57806366188463146105a157806370a08231146105c55780638be52783146105e65780638da5cb5b1461065957806395d89b411461066e5780639871894814610683578063a9059cbb146106c2578063a9a0b495146106e6578063adb8249e14610768578063b15aa5b7146107db578063c22f8250146107f3578063c8d4b3891461081b578063cae9ca51146108d1578063ccbfc6ed1461093a578063d035e45f14610993578063d4acaf6c146109b6578063d4d64f2b14610a14578063d73dd62314610a6f578063dd62ed3e14610a93578063e269f92914610aba578063e391a7c414610b53578063f2fde38b14610bec575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610c0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610c44565b604080519115158252519081900360200190f35b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a919950975060809094019550919350918201918190840183828082843750949750508435955050506020909201359150610c659050565b60408051600160a060020a039092168252519081900360200190f35b34801561042a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135610c92565b34801561049d57600080fd5b506104a6610f2b565b60408051918252519081900360200190f35b3480156104c457600080fd5b50610329600160a060020a0360043581169060243516604435610f31565b3480156104ee57600080fd5b506104a6600160a060020a0360043516610fff565b34801561050f57600080fd5b5061051861101a565b6040805160ff9092168252519081900360200190f35b34801561053a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a031694505050602082013591604081013591506060013561101f565b3480156105ad57600080fd5b50610329600160a060020a03600435166024356111c7565b3480156105d157600080fd5b506104a6600160a060020a03600435166111d4565b3480156105f257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a03169450505060208201359160408101359150606001356111ef565b34801561066557600080fd5b50610402611397565b34801561067a57600080fd5b506102906113a6565b34801561068f57600080fd5b506106a5600160e060020a0319600435166113dd565b60408051600160e060020a03199092168252519081900360200190f35b3480156106ce57600080fd5b50610329600160a060020a03600435166024356113f5565b3480156106f257600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526104a694600160e060020a031981351694600160a060020a0360248035919091169560443595369560849493019181908401838280828437509497505084359550505060209092013591506114029050565b34801561077457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135611514565b3480156107e757600080fd5b506104a66004356116bc565b3480156107ff57600080fd5b50610329600160e060020a0319600435811690602435166116fa565b34801561082757600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505084359550505060209092013591506118859050565b3480156108dd57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611c1f9650505050505050565b34801561094657600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611d3b9650505050505050565b34801561099f57600080fd5b506109b4600160a060020a0360043516611e47565b005b3480156109c257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610402958335953695604494919390910191908190840183828082843750949750611f969650505050505050565b348015610a2057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526104a6943694929360249392840191908190840183828082843750949750509335945061206b9350505050565b348015610a7b57600080fd5b50610329600160a060020a03600435166024356120fe565b348015610a9f57600080fd5b506104a6600160a060020a036004358116906024351661210b565b348015610ac657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121369350505050565b348015610b5f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121569350505050565b348015610bf857600080fd5b506109b4600160a060020a0360043516612407565b60408051808201909152600b81527f47616d6520546573746572000000000000000000000000000000000000000000602082015281565b6000610c5133848461249b565b1515610c5c57600080fd5b50600192915050565b6000610c86610c80610c7b898989898989611402565b6116bc565b89611f96565b98975050505050505050565b600080806101243681811015610ca757600080fd5b5a9350610cd38a63a9059cbb60e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a0383161515610cea57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610d3f5780518252601f199092019160209182019101610d20565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610d7c905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b60208310610dd35780518252601f199092019160209182019101610db4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a612506565b1515610e4557600080fd5b6000871115610e8a57610e5f5a859063ffffffff61260116565b6188b8019350610e7f8333610e7a8a8863ffffffff61261316565b612506565b1515610e8a57600080fd5b82600160a060020a03166000805160206127a38339815191528b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ee1578181015183820152602001610ec9565b50505050905090810190601f168015610f0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019998505050505050505050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610f7c5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610f8757600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610fbb908363ffffffff61260116565b600160a060020a0385166000908152600360209081526040808320338452909152902055610fea848484612506565b1515610ff557600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b60008080610124368181101561103457600080fd5b5a93506110608a63095ea7b360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561107757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106110cc5780518252601f1990920191602091820191016110ad565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611109905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106111605780518252601f199092019160209182019101611141565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61249b565b6000610c5133848461263e565b600160a060020a031660009081526002602052604090205490565b60008080610124368181101561120457600080fd5b5a93506112308a636618846360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561124757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061129c5780518252601f19909201916020918201910161127d565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112d9905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106113305780518252601f199092019160209182019101611311565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61263e565b600054600160a060020a031681565b60408051808201909152600681527f4754434f494e0000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610c51338484612506565b6000308787878787876040518088600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040186600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083106114d25780518252601f1990920191602091820191016114b3565b51815160209384036101000a60001901801990921691161790529201948552508301919091525060408051918290030190209c9b505050505050505050505050565b60008080610124368181101561152957600080fd5b5a93506115558a63d73dd62360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561156c57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106115c15780518252601f1990920191602091820191016115a2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115fe905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106116555780518252601f199092019160209182019101611636565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61275b565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b60008054600160a060020a0316331461171257600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061177357507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117a757507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117db57507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061180f57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061184357507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b151561184e57600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b60008080610164368181101561189a57600080fd5b5a93506118cc8b7fcae9ca51000000000000000000000000000000000000000000000000000000008c8c8c8c8c610c65565b9250600160a060020a03831615156118e357600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106119385780518252601f199092019160209182019101611919565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611975905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208c6040518082805190602001908083835b602083106119cc5780518252601f1990920191602091820191016119ad565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611a33838b8b61249b565b1515611a3e57600080fd5b89600160a060020a0316638f4ffcb1848b308c6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ad6578181015183820152602001611abe565b50505050905090810190601f168015611b035780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b2557600080fd5b505af1158015611b39573d6000803e3d6000fd5b505050506000871115611b7d57611b575a859063ffffffff61260116565b6188b8019350611b728333610e7a8a8863ffffffff61261316565b1515611b7d57600080fd5b82600160a060020a03166000805160206127a38339815191528c6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611bd4578181015183820152602001611bbc565b50505050905090810190601f168015611c015780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019a9950505050505050505050565b6000611c2c33858561249b565b1515611c3757600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611cca578181015183820152602001611cb2565b50505050905090810190601f168015611cf75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611d1957600080fd5b505af1158015611d2d573d6000803e3d6000fd5b506001979650505050505050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611d7f5780518252601f199092019160209182019101611d60565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127a38339815191529589955093508392908301919085019080838360005b83811015611e05578181015183820152602001611ded565b50505050905090810190601f168015611e325780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611e6157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b505050506040513d6020811015611eef57600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b505050506040513d6020811015611f8f57600080fd5b5050505050565b60008060008084516041141515611fb05760009350612062565b50505060208201516040830151606084015160001a601b60ff82161015611fd557601b015b8060ff16601b14158015611fed57508060ff16601c14155b15611ffb5760009350612062565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af1158015612055573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825283516000928591859190600482019060208501908083835b602083106120c95780518252601f1990920191602091820191016120aa565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209695505050505050565b6000610c5133848461275b565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600061214e612148610c7b858561206b565b85611f96565b949350505050565b60008080610164368181101561216b57600080fd5b5a9350612179888888612136565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020886040518082805190602001908083835b602083106121d05780518252601f1990920191602091820191016121b1565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff1615915061220d905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106122645780518252601f199092019160209182019101612245565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a038816600090815260058252949094208b5160019591948d9450925082918401908083835b602083106122eb5780518252601f1990920191602091820191016122cc565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220805460ff19169315159390931790925550506000861115612368576123425a859063ffffffff61260116565b6188b801935061235d8333610e7a898863ffffffff61261316565b151561236857600080fd5b82600160a060020a03166000805160206127a3833981519152896040518080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5781810151838201526020016123a7565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001979650505050505050565b600054600160a060020a0316331461241e57600080fd5b600160a060020a038116151561243357600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561251d57600080fd5b600160a060020a03841660009081526002602052604090205482111561254257600080fd5b600160a060020a03841660009081526002602052604090205461256b908363ffffffff61260116565b600160a060020a0380861660009081526002602052604080822093909355908516815220546125a0908363ffffffff61279316565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282111561260d57fe5b50900390565b600082820283158061262f575082848281151561262c57fe5b04145b151561263757fe5b9392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054821061269957600160a060020a0380851660009081526003602090815260408083209387168352929052908120556126f6565b600160a060020a038085166000908152600360209081526040808320938716835292905220546126cf908363ffffffff61260116565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a0380841660009081526003602090815260408083209386168352929052908120546126cf908363ffffffff61279316565b60008282018381101561263757fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a723058202933c705790903eb7c3144d4f48c594e0ca9bc3602231e9c25f2c52a074a05af0029
Deployed Bytecode
0x6080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806309ea63e31461033d5780631296830d1461041e57806318160ddd1461049157806323b872dd146104b85780632d0335ab146104e2578063313ce56714610503578063617b390b1461052e57806366188463146105a157806370a08231146105c55780638be52783146105e65780638da5cb5b1461065957806395d89b411461066e5780639871894814610683578063a9059cbb146106c2578063a9a0b495146106e6578063adb8249e14610768578063b15aa5b7146107db578063c22f8250146107f3578063c8d4b3891461081b578063cae9ca51146108d1578063ccbfc6ed1461093a578063d035e45f14610993578063d4acaf6c146109b6578063d4d64f2b14610a14578063d73dd62314610a6f578063dd62ed3e14610a93578063e269f92914610aba578063e391a7c414610b53578063f2fde38b14610bec575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610c0d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610c44565b604080519115158252519081900360200190f35b34801561034957600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a919950975060809094019550919350918201918190840183828082843750949750508435955050506020909201359150610c659050565b60408051600160a060020a039092168252519081900360200190f35b34801561042a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135610c92565b34801561049d57600080fd5b506104a6610f2b565b60408051918252519081900360200190f35b3480156104c457600080fd5b50610329600160a060020a0360043581169060243516604435610f31565b3480156104ee57600080fd5b506104a6600160a060020a0360043516610fff565b34801561050f57600080fd5b5061051861101a565b6040805160ff9092168252519081900360200190f35b34801561053a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a031694505050602082013591604081013591506060013561101f565b3480156105ad57600080fd5b50610329600160a060020a03600435166024356111c7565b3480156105d157600080fd5b506104a6600160a060020a03600435166111d4565b3480156105f257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a03169450505060208201359160408101359150606001356111ef565b34801561066557600080fd5b50610402611397565b34801561067a57600080fd5b506102906113a6565b34801561068f57600080fd5b506106a5600160e060020a0319600435166113dd565b60408051600160e060020a03199092168252519081900360200190f35b3480156106ce57600080fd5b50610329600160a060020a03600435166024356113f5565b3480156106f257600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526104a694600160e060020a031981351694600160a060020a0360248035919091169560443595369560849493019181908401838280828437509497505084359550505060209092013591506114029050565b34801561077457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375094975050508335600160a060020a0316945050506020820135916040810135915060600135611514565b3480156107e757600080fd5b506104a66004356116bc565b3480156107ff57600080fd5b50610329600160e060020a0319600435811690602435166116fa565b34801561082757600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505084359550505060209092013591506118859050565b3480156108dd57600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611c1f9650505050505050565b34801561094657600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611d3b9650505050505050565b34801561099f57600080fd5b506109b4600160a060020a0360043516611e47565b005b3480156109c257600080fd5b5060408051602060046024803582810135601f8101859004850286018501909652858552610402958335953695604494919390910191908190840183828082843750949750611f969650505050505050565b348015610a2057600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526104a6943694929360249392840191908190840183828082843750949750509335945061206b9350505050565b348015610a7b57600080fd5b50610329600160a060020a03600435166024356120fe565b348015610a9f57600080fd5b506104a6600160a060020a036004358116906024351661210b565b348015610ac657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261040294369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121369350505050565b348015610b5f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506121569350505050565b348015610bf857600080fd5b506109b4600160a060020a0360043516612407565b60408051808201909152600b81527f47616d6520546573746572000000000000000000000000000000000000000000602082015281565b6000610c5133848461249b565b1515610c5c57600080fd5b50600192915050565b6000610c86610c80610c7b898989898989611402565b6116bc565b89611f96565b98975050505050505050565b600080806101243681811015610ca757600080fd5b5a9350610cd38a63a9059cbb60e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a0383161515610cea57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610d3f5780518252601f199092019160209182019101610d20565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610d7c905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b60208310610dd35780518252601f199092019160209182019101610db4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a612506565b1515610e4557600080fd5b6000871115610e8a57610e5f5a859063ffffffff61260116565b6188b8019350610e7f8333610e7a8a8863ffffffff61261316565b612506565b1515610e8a57600080fd5b82600160a060020a03166000805160206127a38339815191528b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ee1578181015183820152602001610ec9565b50505050905090810190601f168015610f0e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019998505050505050505050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610f7c5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610f8757600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610fbb908363ffffffff61260116565b600160a060020a0385166000908152600360209081526040808320338452909152902055610fea848484612506565b1515610ff557600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b60008080610124368181101561103457600080fd5b5a93506110608a63095ea7b360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561107757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106110cc5780518252601f1990920191602091820191016110ad565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611109905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106111605780518252601f199092019160209182019101611141565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61249b565b6000610c5133848461263e565b600160a060020a031660009081526002602052604090205490565b60008080610124368181101561120457600080fd5b5a93506112308a636618846360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561124757600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061129c5780518252601f19909201916020918201910161127d565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112d9905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106113305780518252601f199092019160209182019101611311565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61263e565b600054600160a060020a031681565b60408051808201909152600681527f4754434f494e0000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610c51338484612506565b6000308787878787876040518088600160a060020a0316600160a060020a03166c01000000000000000000000000028152601401877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260040186600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083106114d25780518252601f1990920191602091820191016114b3565b51815160209384036101000a60001901801990921691161790529201948552508301919091525060408051918290030190209c9b505050505050505050505050565b60008080610124368181101561152957600080fd5b5a93506115558a63d73dd62360e060020a028b8b60206040519081016040528060008152508c8c610c65565b9250600160a060020a038316151561156c57600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106115c15780518252601f1990920191602091820191016115a2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115fe905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106116555780518252601f199092019160209182019101611636565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055610e3a838a8a61275b565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b60008054600160a060020a0316331461171257600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061177357507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117a757507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806117db57507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061180f57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061184357507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b151561184e57600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b60008080610164368181101561189a57600080fd5b5a93506118cc8b7fcae9ca51000000000000000000000000000000000000000000000000000000008c8c8c8c8c610c65565b9250600160a060020a03831615156118e357600080fd5b6005600084600160a060020a0316600160a060020a031681526020019081526020016000208b6040518082805190602001908083835b602083106119385780518252601f199092019160209182019101611919565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611975905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208c6040518082805190602001908083835b602083106119cc5780518252601f1990920191602091820191016119ad565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611a33838b8b61249b565b1515611a3e57600080fd5b89600160a060020a0316638f4ffcb1848b308c6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ad6578181015183820152602001611abe565b50505050905090810190601f168015611b035780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b2557600080fd5b505af1158015611b39573d6000803e3d6000fd5b505050506000871115611b7d57611b575a859063ffffffff61260116565b6188b8019350611b728333610e7a8a8863ffffffff61261316565b1515611b7d57600080fd5b82600160a060020a03166000805160206127a38339815191528c6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611bd4578181015183820152602001611bbc565b50505050905090810190601f168015611c015780820380516001836020036101000a031916815260200191505b509250505060405180910390a25060019a9950505050505050505050565b6000611c2c33858561249b565b1515611c3757600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611cca578181015183820152602001611cb2565b50505050905090810190601f168015611cf75780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611d1957600080fd5b505af1158015611d2d573d6000803e3d6000fd5b506001979650505050505050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611d7f5780518252601f199092019160209182019101611d60565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127a38339815191529589955093508392908301919085019080838360005b83811015611e05578181015183820152602001611ded565b50505050905090810190601f168015611e325780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611e6157600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b505050506040513d6020811015611eef57600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611f6557600080fd5b505af1158015611f79573d6000803e3d6000fd5b505050506040513d6020811015611f8f57600080fd5b5050505050565b60008060008084516041141515611fb05760009350612062565b50505060208201516040830151606084015160001a601b60ff82161015611fd557601b015b8060ff16601b14158015611fed57508060ff16601c14155b15611ffb5760009350612062565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af1158015612055573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825283516000928591859190600482019060208501908083835b602083106120c95780518252601f1990920191602091820191016120aa565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209695505050505050565b6000610c5133848461275b565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600061214e612148610c7b858561206b565b85611f96565b949350505050565b60008080610164368181101561216b57600080fd5b5a9350612179888888612136565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020886040518082805190602001908083835b602083106121d05780518252601f1990920191602091820191016121b1565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff1615915061220d905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106122645780518252601f199092019160209182019101612245565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a038816600090815260058252949094208b5160019591948d9450925082918401908083835b602083106122eb5780518252601f1990920191602091820191016122cc565b51815160209384036101000a60001901801990921691161790529201948552506040519384900301909220805460ff19169315159390931790925550506000861115612368576123425a859063ffffffff61260116565b6188b801935061235d8333610e7a898863ffffffff61261316565b151561236857600080fd5b82600160a060020a03166000805160206127a3833981519152896040518080602001828103825283818151815260200191508051906020019080838360005b838110156123bf5781810151838201526020016123a7565b50505050905090810190601f1680156123ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001979650505050505050565b600054600160a060020a0316331461241e57600080fd5b600160a060020a038116151561243357600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000600160a060020a038316151561251d57600080fd5b600160a060020a03841660009081526002602052604090205482111561254257600080fd5b600160a060020a03841660009081526002602052604090205461256b908363ffffffff61260116565b600160a060020a0380861660009081526002602052604080822093909355908516815220546125a0908363ffffffff61279316565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008282111561260d57fe5b50900390565b600082820283158061262f575082848281151561262c57fe5b04145b151561263757fe5b9392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054821061269957600160a060020a0380851660009081526003602090815260408083209387168352929052908120556126f6565b600160a060020a038085166000908152600360209081526040808320938716835292905220546126cf908363ffffffff61260116565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a0380841660009081526003602090815260408083209386168352929052908120546126cf908363ffffffff61279316565b60008282018381101561263757fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a723058202933c705790903eb7c3144d4f48c594e0ca9bc3602231e9c25f2c52a074a05af0029
Swarm Source
bzzr://2933c705790903eb7c3144d4f48c594e0ca9bc3602231e9c25f2c52a074a05af
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.