Feature Tip: Add private address tag to any address under My Name Tag !
Token migration announcement. Opacity token contract has migrated to a new address.
ERC-20
Old Contract
Overview
Max Total Supply
130,000,000 OPQ
Holders
12,068 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
491.9114 OPQValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Opacity
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-10 */ pragma solidity ^0.4.25; interface tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData) public; } contract Opacity { // Public variables of OPQ string public name; string public symbol; uint8 public decimals; uint256 public totalSupply; uint256 public funds; address public director; bool public directorLock; uint256 public claimAmount; uint256 public payAmount; uint256 public feeAmount; uint256 public epoch; uint256 public retentionMax; // Array definitions mapping (address => uint256) public balances; mapping (address => mapping (address => uint256)) public allowance; mapping (address => bool) public buried; mapping (address => uint256) public claimed; // ERC20 event event Transfer(address indexed _from, address indexed _to, uint256 _value); // ERC20 event event Approval(address indexed _owner, address indexed _spender, uint256 _value); // This notifies clients about the amount burnt event Burn(address indexed _from, uint256 _value); // This notifies clients about an address getting buried event Bury(address indexed _target, uint256 _value); // This notifies clients about a claim being made on a buried address event Claim(address indexed _target, address indexed _payout, address indexed _fee); /** * Constructor function * * Initializes contract */ function Opacity() public payable { director = msg.sender; name = "Opacity"; symbol = "OPQ"; decimals = 18; directorLock = false; funds = 0; totalSupply = 130000000 * 10 ** uint256(decimals); // Assign reserved OPQ supply to the director balances[director] = totalSupply; // Define default values for Opacity functions claimAmount = 5 * 10 ** (uint256(decimals) - 1); payAmount = 4 * 10 ** (uint256(decimals) - 1); feeAmount = 1 * 10 ** (uint256(decimals) - 1); // Seconds in a year epoch = 31536000; // Maximum time for a sector to remain stored retentionMax = 40 * 10 ** uint256(decimals); } /** * ERC20 balance function */ function balanceOf(address _owner) public constant returns (uint256 balance) { return balances[_owner]; } modifier onlyDirector { // Director can lock themselves out to complete decentralization of Opacity // An alternative is that another smart contract could become the decentralized director require(!directorLock); // Only the director is permitted require(msg.sender == director); _; } modifier onlyDirectorForce { // Only the director is permitted require(msg.sender == director); _; } /** * Transfers the director to a new address */ function transferDirector(address newDirector) public onlyDirectorForce { director = newDirector; } /** * Withdraw funds from the contract */ function withdrawFunds() public onlyDirectorForce { director.transfer(this.balance); } /** * Permanently lock out the director to decentralize Opacity * Invocation is discretionary because Opacity might be better suited to * transition to an artificially intelligent smart contract director */ function selfLock() public payable onlyDirector { // Prevents accidental lockout require(msg.value == 10 ether); // Permanently lock out the director directorLock = true; } /** * Director can alter the storage-peg and broker fees */ function amendClaim(uint8 claimAmountSet, uint8 payAmountSet, uint8 feeAmountSet, uint8 accuracy) public onlyDirector returns (bool success) { require(claimAmountSet == (payAmountSet + feeAmountSet)); require(payAmountSet < claimAmountSet); require(feeAmountSet < claimAmountSet); require(claimAmountSet > 0); require(payAmountSet > 0); require(feeAmountSet > 0); claimAmount = claimAmountSet * 10 ** (uint256(decimals) - accuracy); payAmount = payAmountSet * 10 ** (uint256(decimals) - accuracy); feeAmount = feeAmountSet * 10 ** (uint256(decimals) - accuracy); return true; } /** * Director can alter the epoch time */ function amendEpoch(uint256 epochSet) public onlyDirector returns (bool success) { // Set the epoch epoch = epochSet; return true; } /** * Director can alter the maximum time of storage retention */ function amendRetention(uint8 retentionSet, uint8 accuracy) public onlyDirector returns (bool success) { // Set retentionMax retentionMax = retentionSet * 10 ** (uint256(decimals) - accuracy); return true; } /** * Bury an address * * When an address is buried; only claimAmount can be withdrawn once per epoch */ function bury() public returns (bool success) { // The address must be previously unburied require(!buried[msg.sender]); // An address must have at least claimAmount to be buried require(balances[msg.sender] >= claimAmount); // Prevent addresses with large balances from getting buried require(balances[msg.sender] <= retentionMax); // Set buried state to true buried[msg.sender] = true; // Set the initial claim clock to 1 claimed[msg.sender] = 1; // Execute an event reflecting the change emit Bury(msg.sender, balances[msg.sender]); return true; } /** * Claim OPQ from a buried address * * If a prior claim wasn't made during the current epoch, then claimAmount can be withdrawn * * @param _payout the address of the website owner * @param _fee the address of the broker node */ function claim(address _payout, address _fee) public returns (bool success) { // The claimed address must have already been buried require(buried[msg.sender]); // The payout and fee addresses must be different require(_payout != _fee); // The claimed address cannot pay itself require(msg.sender != _payout); // The claimed address cannot pay itself require(msg.sender != _fee); // It must be either the first time this address is being claimed or atleast epoch in time has passed require(claimed[msg.sender] == 1 || (block.timestamp - claimed[msg.sender]) >= epoch); // Check if the buried address has enough require(balances[msg.sender] >= claimAmount); // Reset the claim clock to the current block time claimed[msg.sender] = block.timestamp; // Save this for an assertion in the future uint256 previousBalances = balances[msg.sender] + balances[_payout] + balances[_fee]; // Remove claimAmount from the buried address balances[msg.sender] -= claimAmount; // Pay the website owner that invoked the web node that found the OPQ seed key balances[_payout] += payAmount; // Pay the broker node that unlocked the OPQ balances[_fee] += feeAmount; // Execute events to reflect the changes emit Claim(msg.sender, _payout, _fee); emit Transfer(msg.sender, _payout, payAmount); emit Transfer(msg.sender, _fee, feeAmount); // Failsafe logic that should never be false assert(balances[msg.sender] + balances[_payout] + balances[_fee] == previousBalances); return true; } /** * Internal transfer, can be called by this contract only */ function _transfer(address _from, address _to, uint _value) internal { // Sending addresses cannot be buried require(!buried[_from]); // If the receiving address is buried, it cannot exceed retentionMax if (buried[_to]) { require(balances[_to] + _value <= retentionMax); } // Prevent transfer to 0x0 address, use burn() instead require(_to != 0x0); // Check if the sender has enough require(balances[_from] >= _value); // Check for overflows require(balances[_to] + _value > balances[_to]); // Save this for an assertion in the future uint256 previousBalances = balances[_from] + balances[_to]; // Subtract from the sender balances[_from] -= _value; // Add the same to the recipient balances[_to] += _value; emit Transfer(_from, _to, _value); // Failsafe logic that should never be false assert(balances[_from] + balances[_to] == previousBalances); } /** * Transfer tokens * * Send `_value` tokens to `_to` from your account * * @param _to the address of the recipient * @param _value the amount to send */ function transfer(address _to, uint256 _value) public { _transfer(msg.sender, _to, _value); } /** * Transfer tokens from other address * * Send `_value` tokens to `_to` in behalf of `_from` * * @param _from the address of the sender * @param _to the address of the recipient * @param _value the amount to send */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { // Check allowance require(_value <= allowance[_from][msg.sender]); allowance[_from][msg.sender] -= _value; _transfer(_from, _to, _value); return true; } /** * Set allowance for other address * * Allows `_spender` to spend no more than `_value` tokens on your behalf * * @param _spender the address authorized to spend * @param _value the max amount they can spend */ function approve(address _spender, uint256 _value) public returns (bool success) { // Buried addresses cannot be approved require(!buried[msg.sender]); allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } /** * Set allowance for other address and notify * * Allows `_spender` to spend no more than `_value` tokens on your behalf, and then ping the contract about it * * @param _spender the address authorized to spend * @param _value the max amount they can spend * @param _extraData some extra information to send to the approved contract */ function approveAndCall(address _spender, uint256 _value, bytes _extraData) public returns (bool success) { tokenRecipient spender = tokenRecipient(_spender); if (approve(_spender, _value)) { spender.receiveApproval(msg.sender, _value, this, _extraData); return true; } } /** * Destroy tokens * * Remove `_value` tokens from the system irreversibly * * @param _value the amount of money to burn */ function burn(uint256 _value) public returns (bool success) { // Buried addresses cannot be burnt require(!buried[msg.sender]); // Check if the sender has enough require(balances[msg.sender] >= _value); // Subtract from the sender balances[msg.sender] -= _value; // Updates totalSupply totalSupply -= _value; emit Burn(msg.sender, _value); return true; } /** * Destroy tokens from other account * * Remove `_value` tokens from the system irreversibly on behalf of `_from`. * * @param _from the address of the sender * @param _value the amount of money to burn */ function burnFrom(address _from, uint256 _value) public returns (bool success) { // Buried addresses cannot be burnt require(!buried[_from]); // Check if the targeted balance is enough require(balances[_from] >= _value); // Check allowance require(_value <= allowance[_from][msg.sender]); // Subtract from the targeted balance balances[_from] -= _value; // Subtract from the sender's allowance allowance[_from][msg.sender] -= _value; // Update totalSupply totalSupply -= _value; emit Burn(_from, _value); return true; } }
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":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","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":"_payout","type":"address"},{"name":"_fee","type":"address"}],"name":"claim","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"retentionMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"buried","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"epochSet","type":"uint256"}],"name":"amendEpoch","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"director","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"retentionSet","type":"uint8"},{"name":"accuracy","type":"uint8"}],"name":"amendRetention","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"bury","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"burnFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"claimAmountSet","type":"uint8"},{"name":"payAmountSet","type":"uint8"},{"name":"feeAmountSet","type":"uint8"},{"name":"accuracy","type":"uint8"}],"name":"amendClaim","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"claimAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epoch","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"payAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"claimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"funds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"selfLock","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDirector","type":"address"}],"name":"transferDirector","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"directorLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":true,"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_target","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Bury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_target","type":"address"},{"indexed":true,"name":"_payout","type":"address"},{"indexed":true,"name":"_fee","type":"address"}],"name":"Claim","type":"event"}]
Contract Creation Code
60058054600160a060020a0319163317905560c0604052600760808190527f4f7061636974790000000000000000000000000000000000000000000000000060a090815262000052916000919062000122565b506040805180820190915260038082527f4f505100000000000000000000000000000000000000000000000000000000006020909201918252620000999160019162000122565b5060028054601260ff19909116178082556005805460a060020a60ff0219811682556000600481815560ff948516600a90810a6307bfa480026003819055600160a060020a039094168352600b60205260409092209290925593549092166000198101840a9182026006559181026007556008556301e13380600955810a6028029055620001c7565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200016557805160ff191683800117855562000195565b8280016001018555821562000195579182015b828111156200019557825182559160200191906001019062000178565b50620001a3929150620001a7565b5090565b620001c491905b80821115620001a35760008155600101620001ae565b90565b61120b80620001d76000396000f30060806040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461018f578063095ea7b31461021957806318160ddd1461025157806321c0b3421461027857806322bb4f531461029f57806323b872dd146102b457806324600fc3146102de57806327e235e3146102f5578063313ce567146103165780633f1199e61461034157806342966c6814610362578063549215a31461037a5780635af82abf146103925780635f5f2aef146103c357806361161aae146103e457806369e15404146103f957806370a082311461040e57806379cc67901461042f5780637dbc9fba14610453578063830953ab14610480578063900cf0cf1461049557806395d89b41146104aa578063a9059cbb146104bf578063c8705544146104e3578063c884ef83146104f8578063c89f2ce414610519578063cae9ca511461052e578063d1e7e81f14610597578063dd62ed3e1461059f578063ddd41ef6146105c6578063ffe2d77e146105e7575b600080fd5b34801561019b57600080fd5b506101a46105fc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101de5781810151838201526020016101c6565b50505050905090810190601f16801561020b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022557600080fd5b5061023d600160a060020a036004351660243561068a565b604080519115158252519081900360200190f35b34801561025d57600080fd5b5061026661070e565b60408051918252519081900360200190f35b34801561028457600080fd5b5061023d600160a060020a0360043581169060243516610714565b3480156102ab57600080fd5b50610266610926565b3480156102c057600080fd5b5061023d600160a060020a036004358116906024351660443561092c565b3480156102ea57600080fd5b506102f3610991565b005b34801561030157600080fd5b50610266600160a060020a03600435166109e5565b34801561032257600080fd5b5061032b6109f7565b6040805160ff9092168252519081900360200190f35b34801561034d57600080fd5b5061023d600160a060020a0360043516610a00565b34801561036e57600080fd5b5061023d600435610a15565b34801561038657600080fd5b5061023d600435610aaa565b34801561039e57600080fd5b506103a7610ae4565b60408051600160a060020a039092168252519081900360200190f35b3480156103cf57600080fd5b5061023d60ff60043581169060243516610af3565b3480156103f057600080fd5b5061023d610b45565b34801561040557600080fd5b50610266610c06565b34801561041a57600080fd5b50610266600160a060020a0360043516610c0c565b34801561043b57600080fd5b5061023d600160a060020a0360043516602435610c27565b34801561045f57600080fd5b5061023d60ff60043581169060243581169060443581169060643516610d1e565b34801561048c57600080fd5b50610266610de3565b3480156104a157600080fd5b50610266610de9565b3480156104b657600080fd5b506101a4610def565b3480156104cb57600080fd5b506102f3600160a060020a0360043516602435610e49565b3480156104ef57600080fd5b50610266610e58565b34801561050457600080fd5b50610266600160a060020a0360043516610e5e565b34801561052557600080fd5b50610266610e70565b34801561053a57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261023d948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610e769650505050505050565b6102f3610f8f565b3480156105ab57600080fd5b50610266600160a060020a0360043581169060243516610ff7565b3480156105d257600080fd5b506102f3600160a060020a0360043516611014565b3480156105f357600080fd5b5061023d61105a565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b505050505081565b336000908152600d602052604081205460ff16156106a757600080fd5b336000818152600c60209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60035481565b336000908152600d6020526040812054819060ff16151561073457600080fd5b600160a060020a03848116908416141561074d57600080fd5b33600160a060020a038516141561076357600080fd5b33600160a060020a038416141561077957600080fd5b336000908152600e6020526040902054600114806107aa5750600954336000908152600e6020526040902054420310155b15156107b557600080fd5b600654336000908152600b602052604090205410156107d357600080fd5b50336000818152600e60209081526040808320429055600160a060020a03868116808552600b90935281842080549189168086528386208054888852858820805460065481039091556007548354019092556008548789528454019093559351939091019091019492939092917fcac3ed26c9dd72a2c44999857298af9c72ba2d1ca9784f5dad48c933e2224c119190a46007546040805191825251600160a060020a0386169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a36008546040805191825251600160a060020a0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3600160a060020a038084166000908152600b6020526040808220549287168252808220543383529120540101811461091c57fe5b5060019392505050565b600a5481565b600160a060020a0383166000908152600c6020908152604080832033845290915281205482111561095c57600080fd5b600160a060020a0384166000908152600c6020908152604080832033845290915290208054839003905561091c84848461106a565b600554600160a060020a031633146109a857600080fd5b600554604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156109e2573d6000803e3d6000fd5b50565b600b6020526000908152604090205481565b60025460ff1681565b600d6020526000908152604090205460ff1681565b336000908152600d602052604081205460ff1615610a3257600080fd5b336000908152600b6020526040902054821115610a4e57600080fd5b336000818152600b602090815260409182902080548690039055600380548690039055815185815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a2506001919050565b60055460009060a060020a900460ff1615610ac457600080fd5b600554600160a060020a03163314610adb57600080fd5b50600955600190565b600554600160a060020a031681565b60055460009060a060020a900460ff1615610b0d57600080fd5b600554600160a060020a03163314610b2457600080fd5b5060025460ff91821690821603600a90810a92909116919091029055600190565b336000908152600d602052604081205460ff1615610b6257600080fd5b600654336000908152600b60205260409020541015610b8057600080fd5b600a54336000908152600b60205260409020541115610b9e57600080fd5b336000818152600d60209081526040808320805460ff19166001908117909155600e835281842055600b82529182902054825190815291517fc96e8fee6eb65975d592ca9a340f33200433df4c42b2f623dd9fc6d22984d4959281900390910190a250600190565b60085481565b600160a060020a03166000908152600b602052604090205490565b600160a060020a0382166000908152600d602052604081205460ff1615610c4d57600080fd5b600160a060020a0383166000908152600b6020526040902054821115610c7257600080fd5b600160a060020a0383166000908152600c60209081526040808320338452909152902054821115610ca257600080fd5b600160a060020a0383166000818152600b6020908152604080832080548790039055600c825280832033845282529182902080548690039055600380548690039055815185815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a250600192915050565b60055460009060a060020a900460ff1615610d3857600080fd5b600554600160a060020a03163314610d4f57600080fd5b82840160ff168560ff16141515610d6557600080fd5b60ff80861690851610610d7757600080fd5b60ff80861690841610610d8957600080fd5b600060ff861611610d9957600080fd5b600060ff851611610da957600080fd5b600060ff841611610db957600080fd5b5060025460ff91821690821603600a0a938116840260065591821683026007551602600855600190565b60065481565b60095481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106825780601f1061065757610100808354040283529160200191610682565b610e5433838361106a565b5050565b60075481565b600e6020526000908152604090205481565b60045481565b600083610e83818561068a565b15610f87576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018790523060448401819052608060648501908152875160848601528751600160a060020a03871695638f4ffcb195948b94938b939192909160a490910190602085019080838360005b83811015610f1b578181015183820152602001610f03565b50505050905090810190601f168015610f485780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50505050600191505b509392505050565b60055460a060020a900460ff1615610fa657600080fd5b600554600160a060020a03163314610fbd57600080fd5b678ac7230489e800003414610fd157600080fd5b6005805474ff0000000000000000000000000000000000000000191660a060020a179055565b600c60209081526000928352604080842090915290825290205481565b600554600160a060020a0316331461102b57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60055460a060020a900460ff1681565b600160a060020a0383166000908152600d602052604081205460ff161561109057600080fd5b600160a060020a0383166000908152600d602052604090205460ff16156110da57600a54600160a060020a0384166000908152600b6020526040902054830111156110da57600080fd5b600160a060020a03831615156110ef57600080fd5b600160a060020a0384166000908152600b602052604090205482111561111457600080fd5b600160a060020a0383166000908152600b60205260409020548281011161113a57600080fd5b50600160a060020a038083166000818152600b60209081526040808320805495891680855282852080548981039091559486905281548801909155815187815291519390950194927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3600160a060020a038084166000908152600b60205260408082205492871682529020540181146111d957fe5b505050505600a165627a7a72305820cfecf20d7c390211a42a13ea9c1d89c021333fd6a06220d527c063af7b5b90f40029
Deployed Bytecode
0x60806040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461018f578063095ea7b31461021957806318160ddd1461025157806321c0b3421461027857806322bb4f531461029f57806323b872dd146102b457806324600fc3146102de57806327e235e3146102f5578063313ce567146103165780633f1199e61461034157806342966c6814610362578063549215a31461037a5780635af82abf146103925780635f5f2aef146103c357806361161aae146103e457806369e15404146103f957806370a082311461040e57806379cc67901461042f5780637dbc9fba14610453578063830953ab14610480578063900cf0cf1461049557806395d89b41146104aa578063a9059cbb146104bf578063c8705544146104e3578063c884ef83146104f8578063c89f2ce414610519578063cae9ca511461052e578063d1e7e81f14610597578063dd62ed3e1461059f578063ddd41ef6146105c6578063ffe2d77e146105e7575b600080fd5b34801561019b57600080fd5b506101a46105fc565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101de5781810151838201526020016101c6565b50505050905090810190601f16801561020b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022557600080fd5b5061023d600160a060020a036004351660243561068a565b604080519115158252519081900360200190f35b34801561025d57600080fd5b5061026661070e565b60408051918252519081900360200190f35b34801561028457600080fd5b5061023d600160a060020a0360043581169060243516610714565b3480156102ab57600080fd5b50610266610926565b3480156102c057600080fd5b5061023d600160a060020a036004358116906024351660443561092c565b3480156102ea57600080fd5b506102f3610991565b005b34801561030157600080fd5b50610266600160a060020a03600435166109e5565b34801561032257600080fd5b5061032b6109f7565b6040805160ff9092168252519081900360200190f35b34801561034d57600080fd5b5061023d600160a060020a0360043516610a00565b34801561036e57600080fd5b5061023d600435610a15565b34801561038657600080fd5b5061023d600435610aaa565b34801561039e57600080fd5b506103a7610ae4565b60408051600160a060020a039092168252519081900360200190f35b3480156103cf57600080fd5b5061023d60ff60043581169060243516610af3565b3480156103f057600080fd5b5061023d610b45565b34801561040557600080fd5b50610266610c06565b34801561041a57600080fd5b50610266600160a060020a0360043516610c0c565b34801561043b57600080fd5b5061023d600160a060020a0360043516602435610c27565b34801561045f57600080fd5b5061023d60ff60043581169060243581169060443581169060643516610d1e565b34801561048c57600080fd5b50610266610de3565b3480156104a157600080fd5b50610266610de9565b3480156104b657600080fd5b506101a4610def565b3480156104cb57600080fd5b506102f3600160a060020a0360043516602435610e49565b3480156104ef57600080fd5b50610266610e58565b34801561050457600080fd5b50610266600160a060020a0360043516610e5e565b34801561052557600080fd5b50610266610e70565b34801561053a57600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261023d948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750610e769650505050505050565b6102f3610f8f565b3480156105ab57600080fd5b50610266600160a060020a0360043581169060243516610ff7565b3480156105d257600080fd5b506102f3600160a060020a0360043516611014565b3480156105f357600080fd5b5061023d61105a565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106825780601f1061065757610100808354040283529160200191610682565b820191906000526020600020905b81548152906001019060200180831161066557829003601f168201915b505050505081565b336000908152600d602052604081205460ff16156106a757600080fd5b336000818152600c60209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60035481565b336000908152600d6020526040812054819060ff16151561073457600080fd5b600160a060020a03848116908416141561074d57600080fd5b33600160a060020a038516141561076357600080fd5b33600160a060020a038416141561077957600080fd5b336000908152600e6020526040902054600114806107aa5750600954336000908152600e6020526040902054420310155b15156107b557600080fd5b600654336000908152600b602052604090205410156107d357600080fd5b50336000818152600e60209081526040808320429055600160a060020a03868116808552600b90935281842080549189168086528386208054888852858820805460065481039091556007548354019092556008548789528454019093559351939091019091019492939092917fcac3ed26c9dd72a2c44999857298af9c72ba2d1ca9784f5dad48c933e2224c119190a46007546040805191825251600160a060020a0386169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a36008546040805191825251600160a060020a0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3600160a060020a038084166000908152600b6020526040808220549287168252808220543383529120540101811461091c57fe5b5060019392505050565b600a5481565b600160a060020a0383166000908152600c6020908152604080832033845290915281205482111561095c57600080fd5b600160a060020a0384166000908152600c6020908152604080832033845290915290208054839003905561091c84848461106a565b600554600160a060020a031633146109a857600080fd5b600554604051600160a060020a0390911690303180156108fc02916000818181858888f193505050501580156109e2573d6000803e3d6000fd5b50565b600b6020526000908152604090205481565b60025460ff1681565b600d6020526000908152604090205460ff1681565b336000908152600d602052604081205460ff1615610a3257600080fd5b336000908152600b6020526040902054821115610a4e57600080fd5b336000818152600b602090815260409182902080548690039055600380548690039055815185815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a2506001919050565b60055460009060a060020a900460ff1615610ac457600080fd5b600554600160a060020a03163314610adb57600080fd5b50600955600190565b600554600160a060020a031681565b60055460009060a060020a900460ff1615610b0d57600080fd5b600554600160a060020a03163314610b2457600080fd5b5060025460ff91821690821603600a90810a92909116919091029055600190565b336000908152600d602052604081205460ff1615610b6257600080fd5b600654336000908152600b60205260409020541015610b8057600080fd5b600a54336000908152600b60205260409020541115610b9e57600080fd5b336000818152600d60209081526040808320805460ff19166001908117909155600e835281842055600b82529182902054825190815291517fc96e8fee6eb65975d592ca9a340f33200433df4c42b2f623dd9fc6d22984d4959281900390910190a250600190565b60085481565b600160a060020a03166000908152600b602052604090205490565b600160a060020a0382166000908152600d602052604081205460ff1615610c4d57600080fd5b600160a060020a0383166000908152600b6020526040902054821115610c7257600080fd5b600160a060020a0383166000908152600c60209081526040808320338452909152902054821115610ca257600080fd5b600160a060020a0383166000818152600b6020908152604080832080548790039055600c825280832033845282529182902080548690039055600380548690039055815185815291517fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59281900390910190a250600192915050565b60055460009060a060020a900460ff1615610d3857600080fd5b600554600160a060020a03163314610d4f57600080fd5b82840160ff168560ff16141515610d6557600080fd5b60ff80861690851610610d7757600080fd5b60ff80861690841610610d8957600080fd5b600060ff861611610d9957600080fd5b600060ff851611610da957600080fd5b600060ff841611610db957600080fd5b5060025460ff91821690821603600a0a938116840260065591821683026007551602600855600190565b60065481565b60095481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106825780601f1061065757610100808354040283529160200191610682565b610e5433838361106a565b5050565b60075481565b600e6020526000908152604090205481565b60045481565b600083610e83818561068a565b15610f87576040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018790523060448401819052608060648501908152875160848601528751600160a060020a03871695638f4ffcb195948b94938b939192909160a490910190602085019080838360005b83811015610f1b578181015183820152602001610f03565b50505050905090810190601f168015610f485780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b50505050600191505b509392505050565b60055460a060020a900460ff1615610fa657600080fd5b600554600160a060020a03163314610fbd57600080fd5b678ac7230489e800003414610fd157600080fd5b6005805474ff0000000000000000000000000000000000000000191660a060020a179055565b600c60209081526000928352604080842090915290825290205481565b600554600160a060020a0316331461102b57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60055460a060020a900460ff1681565b600160a060020a0383166000908152600d602052604081205460ff161561109057600080fd5b600160a060020a0383166000908152600d602052604090205460ff16156110da57600a54600160a060020a0384166000908152600b6020526040902054830111156110da57600080fd5b600160a060020a03831615156110ef57600080fd5b600160a060020a0384166000908152600b602052604090205482111561111457600080fd5b600160a060020a0383166000908152600b60205260409020548281011161113a57600080fd5b50600160a060020a038083166000818152600b60209081526040808320805495891680855282852080548981039091559486905281548801909155815187815291519390950194927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929181900390910190a3600160a060020a038084166000908152600b60205260408082205492871682529020540181146111d957fe5b505050505600a165627a7a72305820cfecf20d7c390211a42a13ea9c1d89c021333fd6a06220d527c063af7b5b90f40029
Swarm Source
bzzr://cfecf20d7c390211a42a13ea9c1d89c021333fd6a06220d527c063af7b5b90f4
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.