日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ERC721关于NFT的学习和理解

發布時間:2025/4/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的數量。

    ownerOf(): 返回tokenId代幣持有者的地址。approve(): 授予地址_to具有_tokenId的控制權,方法成功后需觸發Approval 事件。setApprovalForAll(): 授予地址_operator具有所有NFTs的控制權,成功后需觸發ApprovalForAll事件。getApproved()、isApprovedForAll(): 用來查詢授權。safeTransferFrom(): 安全轉移NFT所有權,一次成功的轉移操作必須發起 Transer 事件。transferFrom(): 用來轉移NFTs, 方法成功后需觸發Transfer事件。調用者自己確認_to地址能正常接收NFT,否則將丟失此NFT。此函數實現時需要檢查上面條件的前4條。

    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的学习和理解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。