ERC721关于NFT的学习和理解
ERC-721協議發行的貨幣是非同質化代幣,以前搞ICO發的貨幣,是使用ERC-20發的區塊鏈貨幣、同質化貨幣。
2.
ERC-721只是NFT稚嫩合約必須實現的最小接口,它包括代幣管理、持有和交易功能。然而它并不包括代幣元數據的相關內容,也缺少對一些實用的功能支持。也就是說,單純的ERC-721上面只記錄了一個TOKENID(NFT編號)的歸屬者,并不具體指明這個TOKENID所指向的物品是個什么東西,它的內容是什么,元數據是什么。一般的NFT合約都要加上其它功能。
因此常用的組合為:
ERC721標準+ IERC721Enumerable + IERC721Metadata,再加上自定義的mintable。
IERC721標準的合約方法:
balanceOf(): 返回由_owner 持有的NFTs的數量。
approve()和 transferFrom()的意義是什么?
approve()是授權控制權,比如A要賣它的NFT給C,他可以通過transferFrom(from:A,to:C)函數來執行。但是A一般比較忙,他只負責創作NFT,不想參與銷售相關,他就可以可以先把這個NFT的控制權使用approve()函數交給B,這樣B就可以轉給C了。
可選接口IERC721Enumerable的主要合約方法:
totalSupply(): 返回NFT總量 tokenByIndex(): 通過索引返回對應的tokenId,比如獲取NFT列表中第五個位置的NFT編號,如果是順序編號,那tokenld也是5,但是tokenid得是一個uint265標識。 tokenOfOwnerByIndex(): 所有者可以一次擁有多個的NFT, 此函數返回_owner擁有的NFT列表中對應索引的tokenId。可選接口ERC721Metadata的主要合約方法:
name(): 返回合約名字,盡管是可選,但強烈建議實現,即便是返回空字符串。 symbol(): 返回合約代幣符號,盡管是可選,但強烈建議實現,即便是返回空字符串。 tokenURI(): 返回_tokenId所對應的外部資源文件的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里面并沒有給出鑄幣的函數!,鑄幣方法難道不是必須的嗎?必須的為什么不寫到接口里邊呢?搞不懂了。IERC-720也沒有鑄幣的方法,可能是太簡單了。
那么該如何鑄幣呢?
好像需要自己實現。
一個簡單的鑄幣函數:如何創建 ERC-721 NFT?
openzepplin是以太坊開發者的寶庫,OpenZeppelin代碼庫包含了經過社區審查的ERC代幣標準、安全協議以及很多的輔助工具庫,這些代碼可以幫助開發者專注業務邏輯的,而無需重新發明輪子。它提供了 ERC20 和 ERC721 等ERC標準的實現。
一個完整合約的實現,基于openzepplin的。來自于崔棉大師,講得非常好。bilibili無敵!
花式發幣法21-發行NFT非同質化虛擬貨幣
openzepplin提供了IERC(I指的是接口),ERC721Metadata,IERC721Enumerable。
在21:50,可以看到,鑄幣的方法。
這個鑄幣并沒有涉及到NFT的URL?
答:在27:12處有設置URI的。
參考:剖析非同質化代幣ERC721-全面解析ERC721標準
全面理解ERC721的實現機制
總結
以上是生活随笔為你收集整理的ERC721关于NFT的学习和理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: fabric 简单理解
- 下一篇: eID是个什么东西