ERC721官方簡要解釋是Non-Fungible Tokens,簡寫為 NFTs ,多翻譯為 不可互換的Token 。ERC721 是由Dieter Shirley 在2017年9月提出。Dieter Shirley 正是加密貓CryptoKitties背後的公司Axiom Zen的技術總監。加密貓也是第壹個實現了ERC721 標準的去中心化應用。
NFTs(Non-Fungible Tokens) ,翻譯過來是不可互換的Token。以加密貓為例,每只加密貓實質上都是 ERC-721 的Token,每只加密的基因是不壹樣的(實質上是擁有不同屬性的Token),貓之間是不能置換的。這種獨特性使得某些 稀有貓 具有收藏價值,也因此受到追捧。
ERC20代幣是可置換的,也就是說所有的 ERC-20Token 都是壹樣的。我手中的 ERC-20Token 和妳手中的 ERC-20Token 本質上是壹樣的,是可以互相轉換的,在使用的時候,我們只關心余額,而不關心Token之間的區別。而 ERC-721 的Token是不可置換的。仍然以加密貓為例子,加密貓這個遊戲中的Token就是加密貓,每個人的加密貓是不壹樣的。 ERC721的Token或虛擬物品具有收藏價值的屬性
ERC-721 Token 是不可互換的,比如上面講的加密貓。所以它適用於那些具有 稀缺性或者不可替換的資源 的場景,比如創造壹些稀缺的虛擬物品(這些物品和現實世界中的那些古玩收藏品壹樣),尤其在加密貨幣收藏和網絡遊戲領域擁有巨大的潛力。 ERC-721 Token 雖然不可互換,但是它可以通過交易,去置換 ERC-20 Token ,比如壹個加密貓可以價值幾百個ETH。
此外,將來它還能實現 物理資產 ,如:房屋、土地等上鏈,用 ERC-721 對這些資產確權。
ERC721最為壹個合約標準,提供了在實現ERC721代幣時必須要遵守的協議,要求每個ERC721標準合約需要實現ERC721及ERC165接口,接口定義如下:
註解說明
1、調用者msg.sender應該是當前tokenId的所有者或被授權的地址
2、_from 必須是 _tokenId的所有者
3、_tokenId 應該是當前合約正在監測的NFTs 中的任何壹個
4、_to 地址不應該為 0
5、如果_to 是壹個合約應該調用其onERC721Received方法, 並且檢查其返回值,如果返回值不為bytes4(keccak256("onERC721Received(address,uint256,bytes)"))拋出異常。
壹個可接收NFT的合約必須實現ERC721TokenReceiver接口:
參考:
/ethereum/EIPs/blob/master/EIPS/eip-721.md
/p/47457d149f9d