當我們買「電子貓」的時候,我們到底在買什麼...代碼?(一)
雲吸貓使用發行Token的方式來繁衍貓寶寶。這就需要每一個Token都具有唯一性。於是提出了新的ERC標準:ERC721
ERC721
ERC721標準定義了一套「不可互替」(non-fungible)代幣標準。提供了此種代幣跟蹤、轉移的介面定義。
首先第一部分是對ERC20標準的補充。
function name() constant returns (string name)nfunction symbol() constant returns (string symbol)nfunction totalSupply() constant returns (uint256 totalSupply)nfunction balanceOf(address _owner) constant returns (uint256 balance)n
在ERC20標準中,要讀取對應的四個變數需要使用底層callcode的方式,讀取合約中變數,然後對返回值進行解析。現在提供對應的方法後,只需調用方法便可方便查詢ERC20合約中的變數。
基本許可權系統
function ownerOf(uint256 _tokenId) constant returns (address owner)n
ownerOf定義了token的持有人地址。
function approve(address _to, uint256 _tokenId)n
Approve函數會把 sender(合約調用者/交易發起人)所擁有的指定代幣授權給 _to 使用。和ERC20標準不同的是,ERC20標準會授權對方一定的額度。此標準是針對某一個特定的token。
function takeOwnership(uint256 _tokenId)n
被授權人通過此方法可以接受授權的Token,此時Token的所有權已經轉移。
function transfer(address _to, uint256 _tokenId)n
Token所有者可以直接把token轉移給對方。
其他
function tokenOfOwnerByIndex(address _owner, uint256 _index) constant returns (uint tokenId)n
查詢某個地址所擁有的指定Token。
function tokenMetadata(uint256 _tokenId) constant returns (string infoUrl)n
返回指定Token對應的元信息。infoUrl是一個ipfs或者http(s)地址。需要實現multiaddress 標準。
總體來講ERC721的核心思想就是把以前傳統意義的Token變成了唯一的商品進行分發。
Contract
Etherscan代碼地址
整體的合約繼承關係,這個是kitty相關的合約。
Auction 相關合約
兩種不同的拍賣方式會在 KittyCore中用到,創建對應的拍賣訂單。
下一篇文章會從合約代碼方面做一個分析。
推薦閱讀: