ERC721关于NFT的学习和理解
ERC-721協(xié)議發(fā)行的貨幣是非同質(zhì)化代幣,以前搞ICO發(fā)的貨幣,是使用ERC-20發(fā)的區(qū)塊鏈貨幣、同質(zhì)化貨幣。
2.
ERC-721只是NFT稚嫩合約必須實現(xiàn)的最小接口,它包括代幣管理、持有和交易功能。然而它并不包括代幣元數(shù)據(jù)的相關(guān)內(nèi)容,也缺少對一些實用的功能支持。也就是說,單純的ERC-721上面只記錄了一個TOKENID(NFT編號)的歸屬者,并不具體指明這個TOKENID所指向的物品是個什么東西,它的內(nèi)容是什么,元數(shù)據(jù)是什么。一般的NFT合約都要加上其它功能。
因此常用的組合為:
ERC721標準+ IERC721Enumerable + IERC721Metadata,再加上自定義的mintable。
IERC721標準的合約方法:
balanceOf(): 返回由_owner 持有的NFTs的數(shù)量。
approve()和 transferFrom()的意義是什么?
approve()是授權(quán)控制權(quán),比如A要賣它的NFT給C,他可以通過transferFrom(from:A,to:C)函數(shù)來執(zhí)行。但是A一般比較忙,他只負責(zé)創(chuàng)作NFT,不想?yún)⑴c銷售相關(guān),他就可以可以先把這個NFT的控制權(quán)使用approve()函數(shù)交給B,這樣B就可以轉(zhuǎn)給C了。
可選接口IERC721Enumerable的主要合約方法:
totalSupply(): 返回NFT總量 tokenByIndex(): 通過索引返回對應(yīng)的tokenId,比如獲取NFT列表中第五個位置的NFT編號,如果是順序編號,那tokenld也是5,但是tokenid得是一個uint265標識。 tokenOfOwnerByIndex(): 所有者可以一次擁有多個的NFT, 此函數(shù)返回_owner擁有的NFT列表中對應(yīng)索引的tokenId。可選接口ERC721Metadata的主要合約方法:
name(): 返回合約名字,盡管是可選,但強烈建議實現(xiàn),即便是返回空字符串。 symbol(): 返回合約代幣符號,盡管是可選,但強烈建議實現(xiàn),即便是返回空字符串。 tokenURI(): 返回_tokenId所對應(yīng)的外部資源文件的URI(通常是IPFS或HTTP(S)路徑)。外部資源文件需要包含名字、描述、圖片,其格式的要求如下:{
“title”: “Asset Metadata”,
“type”: “object”,
“properties”: {
“name”: {
“type”: “string”,
“description”: “Identifies the asset to which this NFT represents”,
},
“description”: {
“type”: “string”,
“description”: “Describes the asset to which this NFT represents”,
},
“image”: {
“type”: “string”,
“description”: “A URI pointing to a resource with mime type image/* representing the asset to which this NFT represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive.”,
}
}
}
奇怪的是,ERC-721里面并沒有給出鑄幣的函數(shù)!,鑄幣方法難道不是必須的嗎?必須的為什么不寫到接口里邊呢?搞不懂了。IERC-720也沒有鑄幣的方法,可能是太簡單了。
那么該如何鑄幣呢?
好像需要自己實現(xiàn)。
一個簡單的鑄幣函數(shù):如何創(chuàng)建 ERC-721 NFT?
openzepplin是以太坊開發(fā)者的寶庫,OpenZeppelin代碼庫包含了經(jīng)過社區(qū)審查的ERC代幣標準、安全協(xié)議以及很多的輔助工具庫,這些代碼可以幫助開發(fā)者專注業(yè)務(wù)邏輯的,而無需重新發(fā)明輪子。它提供了 ERC20 和 ERC721 等ERC標準的實現(xiàn)。
一個完整合約的實現(xiàn),基于openzepplin的。來自于崔棉大師,講得非常好。bilibili無敵!
花式發(fā)幣法21-發(fā)行NFT非同質(zhì)化虛擬貨幣
openzepplin提供了IERC(I指的是接口),ERC721Metadata,IERC721Enumerable。
在21:50,可以看到,鑄幣的方法。
這個鑄幣并沒有涉及到NFT的URL?
答:在27:12處有設(shè)置URI的。
參考:剖析非同質(zhì)化代幣ERC721-全面解析ERC721標準
全面理解ERC721的實現(xiàn)機制
總結(jié)
以上是生活随笔為你收集整理的ERC721关于NFT的学习和理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fabric 简单理解
- 下一篇: eID是个什么东西