Token
Overview [ERC-20]
Max Total Supply:
2
Holders:
2
Profile Summary
Contract:
Decimals:
0
Balance
1
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AppToken
Compiler Version
v0.5.7+commit.6da8b019
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-03-28 */ /// @author robinjoo1015 & njw1204 pragma solidity ^0.5.0; /** * @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 internal _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 () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. * @notice Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @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) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } contract BaseTokenInterface { event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); function balanceOf(address _owner) public view returns (uint256 _balance); function ownerOf(uint256 _tokenId) public view returns (address _owner); function transfer(address _to, uint256 _tokenId) public; } contract ExtraTokenInterface is BaseTokenInterface { struct App { uint256 tokenId; string name; string comment; string url; uint256 validTime; address seller; } uint256 public totalSupply = 0; // total app count mapping (uint256 => App) public app; // store all apps based on tokenId mapping (uint256 => address) internal ownerOfApp; // store the app's owner mapping (address => uint256) internal ownerAppCount; // store the number of the owner's apps mapping (address => uint256[]) public appsOfOwner; // store the owner's apps mapping (address => mapping (uint256 => uint256)) internal appsOfOwnerIndex; mapping (address => uint256) public sellerAppCount; mapping (address => uint256[]) public appsOfSeller; // store the seller's apps mapping (address => mapping (uint256 => uint256)) internal appsOfSellerIndex; function transferToMarket(address _from, uint256 _tokenId) public; function sellerOf(uint256 _tokenId) public view returns (address _seller); function createApp(string memory _name, string memory _comment, string memory _url, uint256 _validTime) public; function changeSeller(address _to, uint256 _tokenId) public; function changeValidTime(uint256 _tokenId, uint256 _newValidTime) public; function changeName(uint256 _tokenId, string memory _newName) public; function changeComment(uint256 _tokenId, string memory _newComment) public; function changeUrl(uint256 _tokenId, string memory _newUrl) public; } contract AppToken is ExtraTokenInterface, Ownable { using SafeMath for uint256; address public marketAddress = address(0); event ChangeSeller(uint256 indexed tokenId, address from, address to); event ChangeValidTime(uint256 indexed tokenId, uint256 newValidTime); function balanceOf(address _owner) public view returns (uint256 _balance) { return ownerAppCount[_owner]; } function ownerOf(uint256 _tokenId) public view returns (address _owner) { return ownerOfApp[_tokenId]; } function sellerOf(uint256 _tokenId) public view returns (address _seller) { return app[_tokenId].seller; } function createApp(string memory _name, string memory _comment, string memory _url, uint256 _validTime) public { uint256 _tokenId = totalSupply.add(1); app[_tokenId] = App(_tokenId, _name, _comment, _url, _validTime, msg.sender); // create new app sellerAppCount[msg.sender] = sellerAppCount[msg.sender].add(1); // push to array of seller's apps appsOfSellerIndex[msg.sender][_tokenId] = appsOfSeller[msg.sender].length; appsOfSeller[msg.sender].push(_tokenId); _transfer(address(0), msg.sender, _tokenId); // transfer created app from 0 to msg.sender } function _transfer(address _from, address _to, uint256 _tokenId) private { require(_from != _to && _to != address(0)); if (_from != address(0)) { ownerAppCount[_from] = ownerAppCount[_from].sub(1); // remove element (set 0) at array of owner's apps delete appsOfOwner[_from][appsOfOwnerIndex[_from][_tokenId]]; delete appsOfOwnerIndex[_from][_tokenId]; } else { // create new app totalSupply = totalSupply.add(1); } ownerOfApp[_tokenId] = _to; ownerAppCount[_to] = ownerAppCount[_to].add(1); // push to array of owner's apps appsOfOwnerIndex[_to][_tokenId] = appsOfOwner[_to].length; appsOfOwner[_to].push(_tokenId); emit Transfer(_from, _to, _tokenId); } function transfer(address _to, uint256 _tokenId) public { require(msg.sender == ownerOf(_tokenId)); _transfer(msg.sender, _to, _tokenId); } function transferToMarket(address _from, uint256 _tokenId) public { require(_from == ownerOf(_tokenId) && msg.sender == marketAddress); _transfer(_from, marketAddress, _tokenId); } function changeSeller(address _to, uint256 _tokenId) public { require(msg.sender == sellerOf(_tokenId) && _to != address(0)); sellerAppCount[msg.sender] = sellerAppCount[msg.sender].sub(1); // remove element (set 0) at array of seller's apps delete appsOfSeller[msg.sender][appsOfSellerIndex[msg.sender][_tokenId]]; delete appsOfSellerIndex[msg.sender][_tokenId]; app[_tokenId].seller = _to; sellerAppCount[_to] = sellerAppCount[_to].add(1); // push to array of seller's apps appsOfSellerIndex[_to][_tokenId] = appsOfSeller[_to].length; appsOfSeller[_to].push(_tokenId); emit ChangeSeller(_tokenId, msg.sender, _to); } function changeValidTime(uint256 _tokenId, uint256 _newValidTime) public { require(msg.sender == sellerOf(_tokenId)); app[_tokenId].validTime = _newValidTime; emit ChangeValidTime(_tokenId, _newValidTime); } function changeName(uint256 _tokenId, string memory _newName) public { require(msg.sender == sellerOf(_tokenId)); app[_tokenId].name = _newName; } function changeComment(uint256 _tokenId, string memory _newComment) public { require(msg.sender == sellerOf(_tokenId)); app[_tokenId].comment = _newComment; } function changeUrl(uint256 _tokenId, string memory _newUrl) public { require(msg.sender == sellerOf(_tokenId)); app[_tokenId].url = _newUrl; } function changeMarketAddress(address _market) external onlyOwner { marketAddress = _market; } }
[{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"appsOfSeller","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"app","outputs":[{"name":"tokenId","type":"uint256"},{"name":"name","type":"string"},{"name":"comment","type":"string"},{"name":"url","type":"string"},{"name":"validTime","type":"uint256"},{"name":"seller","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_market","type":"address"}],"name":"changeMarketAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newComment","type":"string"}],"name":"changeComment","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_comment","type":"string"},{"name":"_url","type":"string"},{"name":"_validTime","type":"uint256"}],"name":"createApp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"_owner","type":"address"}],"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":"renounceOwnership","outputs":[],"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":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newUrl","type":"string"}],"name":"changeUrl","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"marketAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newValidTime","type":"uint256"}],"name":"changeValidTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_newName","type":"string"}],"name":"changeName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"sellerAppCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferToMarket","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"sellerOf","outputs":[{"name":"_seller","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"changeSeller","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"appsOfOwner","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"}],"name":"ChangeSeller","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"newValidTime","type":"uint256"}],"name":"ChangeValidTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
608060408190526000808055600a80546001600160a01b0319908116909155600980549091163317908190556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3611409806100696000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806391132d8b116100b8578063c8883daf1161007c578063c8883daf146107d0578063e03e2d02146107f6578063e05c5a8314610822578063e107a2691461083f578063e90cbf9e1461086b578063f2fde38b1461089757610142565b806391132d8b1461062357806395623641146106ce578063a9059cbb146106d6578063bf86c7d314610702578063c39cbef11461072557610142565b80634b0ec5ae1161010a5780634b0ec5ae146103e85780636352211e1461059857806370a08231146105d1578063715018a6146105f75780638da5cb5b146105ff5780638f32d59b1461060757610142565b806310231b361461014757806318160ddd1461018557806333e466ae1461018d57806335aed778146103155780633e8a23e71461033d575b600080fd5b6101736004803603604081101561015d57600080fd5b506001600160a01b0381351690602001356108bd565b60408051918252519081900360200190f35b6101736108eb565b6101aa600480360360208110156101a357600080fd5b50356108f1565b60405180878152602001806020018060200180602001868152602001856001600160a01b03166001600160a01b03168152602001848103845289818151815260200191508051906020019080838360005b838110156102135781810151838201526020016101fb565b50505050905090810190601f1680156102405780820380516001836020036101000a031916815260200191505b5084810383528851815288516020918201918a019080838360005b8381101561027357818101518382015260200161025b565b50505050905090810190601f1680156102a05780820380516001836020036101000a031916815260200191505b50848103825287518152875160209182019189019080838360005b838110156102d35781810151838201526020016102bb565b50505050905090810190601f1680156103005780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b61033b6004803603602081101561032b57600080fd5b50356001600160a01b0316610acf565b005b61033b6004803603604081101561035357600080fd5b81359190810190604081016020820135600160201b81111561037457600080fd5b82018360208201111561038657600080fd5b803590602001918460018302840111600160201b831117156103a757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b02945050505050565b61033b600480360360808110156103fe57600080fd5b810190602081018135600160201b81111561041857600080fd5b82018360208201111561042a57600080fd5b803590602001918460018302840111600160201b8311171561044b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561049d57600080fd5b8201836020820111156104af57600080fd5b803590602001918460018302840111600160201b831117156104d057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561052257600080fd5b82018360208201111561053457600080fd5b803590602001918460018302840111600160201b8311171561055557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610b52915050565b6105b5600480360360208110156105ae57600080fd5b5035610c9e565b604080516001600160a01b039092168252519081900360200190f35b610173600480360360208110156105e757600080fd5b50356001600160a01b0316610cb9565b61033b610cd4565b6105b5610d2f565b61060f610d3f565b604080519115158252519081900360200190f35b61033b6004803603604081101561063957600080fd5b81359190810190604081016020820135600160201b81111561065a57600080fd5b82018360208201111561066c57600080fd5b803590602001918460018302840111600160201b8311171561068d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d50945050505050565b6105b5610d9b565b61033b600480360360408110156106ec57600080fd5b506001600160a01b038135169060200135610daa565b61033b6004803603604081101561071857600080fd5b5080359060200135610ddf565b61033b6004803603604081101561073b57600080fd5b81359190810190604081016020820135600160201b81111561075c57600080fd5b82018360208201111561076e57600080fd5b803590602001918460018302840111600160201b8311171561078f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e53945050505050565b610173600480360360208110156107e657600080fd5b50356001600160a01b0316610e9e565b61033b6004803603604081101561080c57600080fd5b506001600160a01b038135169060200135610eb0565b6105b56004803603602081101561083857600080fd5b5035610f04565b61033b6004803603604081101561085557600080fd5b506001600160a01b038135169060200135610f22565b6101736004803603604081101561088157600080fd5b506001600160a01b0381351690602001356110aa565b61033b600480360360208110156108ad57600080fd5b50356001600160a01b03166110c3565b600760205281600052604060002081815481106108d657fe5b90600052602060002001600091509150505481565b60005481565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f8101859004850286018501909652858552909491939290919083018282801561098d5780601f106109625761010080835404028352916020019161098d565b820191906000526020600020905b81548152906001019060200180831161097057829003601f168201915b50505060028085018054604080516020601f6000196101006001871615020190941695909504928301859004850281018501909152818152959695945090925090830182828015610a1f5780601f106109f457610100808354040283529160200191610a1f565b820191906000526020600020905b815481529060010190602001808311610a0257829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152949594935090830182828015610aaf5780601f10610a8457610100808354040283529160200191610aaf565b820191906000526020600020905b815481529060010190602001808311610a9257829003601f168201915b5050505060048301546005909301549192916001600160a01b0316905086565b610ad7610d3f565b610ae057600080fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b610b0b82610f04565b6001600160a01b0316336001600160a01b031614610b2857600080fd5b60008281526001602090815260409091208251610b4d92600290920191840190611345565b505050565b60008054610b6790600163ffffffff6110e016565b6040805160c081018252828152602080820189815282840189905260608301889052608083018790523360a084015260008581526001808452949020835181559051805195965092949093610bc193908501920190611345565b5060408201518051610bdd916002840191602090910190611345565b5060608201518051610bf9916003840191602090910190611345565b506080820151600482015560a090910151600590910180546001600160a01b0319166001600160a01b0390921691909117905533600090815260066020526040902054610c479060016110e0565b336000818152600660209081526040808320949094556007808252848320805460088452868520888652845295842086905590825260018501815582528120909201839055610c979190836110f9565b5050505050565b6000908152600260205260409020546001600160a01b031690565b6001600160a01b031660009081526003602052604090205490565b610cdc610d3f565b610ce557600080fd5b6009546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600980546001600160a01b0319169055565b6009546001600160a01b03165b90565b6009546001600160a01b0316331490565b610d5982610f04565b6001600160a01b0316336001600160a01b031614610d7657600080fd5b60008281526001602090815260409091208251610b4d92600390920191840190611345565b600a546001600160a01b031681565b610db381610c9e565b6001600160a01b0316336001600160a01b031614610dd057600080fd5b610ddb3383836110f9565b5050565b610de882610f04565b6001600160a01b0316336001600160a01b031614610e0557600080fd5b6000828152600160209081526040918290206004018390558151838152915184927fed7117feabace762d5982514bcc2b4b3acc83a34a5f5fc79904e0f4af61fbb7992908290030190a25050565b610e5c82610f04565b6001600160a01b0316336001600160a01b031614610e7957600080fd5b60008281526001602081815260409092208351610b4d93919092019190840190611345565b60066020526000908152604090205481565b610eb981610c9e565b6001600160a01b0316826001600160a01b0316148015610ee35750600a546001600160a01b031633145b610eec57600080fd5b600a54610ddb9083906001600160a01b0316836110f9565b6000908152600160205260409020600501546001600160a01b031690565b610f2b81610f04565b6001600160a01b0316336001600160a01b0316148015610f5357506001600160a01b03821615155b610f5c57600080fd5b33600090815260066020526040902054610f7d90600163ffffffff6112c116565b3360009081526006602090815260408083209390935560078152828220600882528383208584529091529190205481548110610fb557fe5b600091825260208083209091018290553382526008815260408083208484528252808320839055600180835281842060050180546001600160a01b0388166001600160a01b03199091168117909155845260069092529091205461101e9163ffffffff6110e016565b6001600160a01b03831660008181526006602090815260408083209490945560078082528483208054600884528685208886528452868520819055918352600182018155835291819020909101849055825133815290810191909152815183927f30fe29133a49d9926a5406d2e4f464336e0da4eb265b6a9a30dffc91758e6bfa928290030190a25050565b600460205281600052604060002081815481106108d657fe5b6110cb610d3f565b6110d457600080fd5b6110dd816112d6565b50565b6000828201838110156110f257600080fd5b9392505050565b816001600160a01b0316836001600160a01b03161415801561112357506001600160a01b03821615155b61112c57600080fd5b6001600160a01b038316156111d9576001600160a01b03831660009081526003602052604090205461116590600163ffffffff6112c116565b6001600160a01b038416600090815260036020908152604080832093909355600481528282206005825283832085845290915291902054815481106111a657fe5b600091825260208083209091018290556001600160a01b03851682526005815260408083208484529091528120556111f1565b6000546111ed90600163ffffffff6110e016565b6000555b600081815260026020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020546112339060016110e0565b6001600160a01b0380841660008181526003602090815260408083209590955560048082528583208054600584528785208986528452878520819055918352600182018155835291819020909101859055835185815293519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3505050565b6000828211156112d057600080fd5b50900390565b6001600160a01b0381166112e957600080fd5b6009546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061138657805160ff19168380011785556113b3565b828001600101855582156113b3579182015b828111156113b3578251825591602001919060010190611398565b506113bf9291506113c3565b5090565b610d3c91905b808211156113bf57600081556001016113c956fea165627a7a72305820a3bf806061a685b86c0738c4aa49be0beaf6170430873bea7dab0f15f58b276a0029
Swarm Source
bzzr://a3bf806061a685b86c0738c4aa49be0beaf6170430873bea7dab0f15f58b276a
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.