當我們買「電子貓」的時候,我們到底在買什麼...代碼?(一)

雲吸貓使用發行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中用到,創建對應的拍賣訂單。

下一篇文章會從合約代碼方面做一個分析。


推薦閱讀:

淺談區塊鏈
進入幣圈之前,先看看這些吧

TAG:智能合约 | 以太坊 |