Solidity:ERC721

落雷發表於2024-07-14

ERC-721 是以太坊區塊鏈上的一種智慧合約標準,專門用於建立和管理不可替代代幣(NFT)。這些代幣與ERC-20代幣不同,ERC-20代幣是同質化代幣,每個代幣都是相同的,可以互換。而ERC-721代幣則是獨一無二的,每個代幣都具有獨特的屬性和價值

1. 什麼是ERC-721?

ERC-721(Ethereum Request for Comments 721)是一種標準,用於在以太坊區塊鏈上建立和管理不可替代代幣(NFT)。ERC-721由Dieter Shirley等人在2017年提出,旨在提供一個標準介面,使得開發者可以輕鬆地建立、交易和管理獨特的數字資產。

2. 不可替代代幣(NFT)

NFT是一種特殊型別的加密資產,每個NFT都是獨一無二的。這意味著,每個NFT都有其獨特的屬性和識別符號,使其無法與其他NFT互換。這種不可替代性使得NFT非常適合用於代表數字藝術品、收藏品、虛擬物品、身份標識和其他獨特的數字資產。

3. ERC-721的主要特點

  1. 獨特性:每個ERC-721代幣都有一個唯一的ID,使其與其他代幣不同。這種獨特性保證了每個代幣的獨特價值。
  2. 所有權:ERC-721標準定義了代幣的所有權,允許代幣的建立者、擁有者和交易者明確地瞭解和控制每個代幣的所有權。
  3. 可轉讓性:ERC-721代幣可以在不同的地址之間轉移。這使得代幣的交易和流通成為可能,從而支援了NFT市場的發展。
  4. 後設資料:每個ERC-721代幣可以附加後設資料,這些後設資料可以描述代幣的具體屬性,例如名稱、描述、影像連結等。這使得每個代幣不僅僅是一個數字,還可以攜帶豐富的資訊。

4. ERC-721的技術實現

ERC-721標準定義了一組必須實現的介面和可選介面。這些介面包括:

  1. ERC721:這是核心介面,定義了必須實現的方法,包括balanceOfownerOfsafeTransferFromtransferFromapprovesetApprovalForAllisApprovedForAll
  2. ERC721Metadata:這是一個可選介面,用於提供代幣的名稱、符號和後設資料URL。
  3. ERC721Enumerable:這是另一個可選介面,用於列舉所有代幣以及某個地址擁有的代幣。

4.1 核心介面方法

  • balanceOf(address owner):返回指定地址擁有的代幣數量。
  • ownerOf(uint256 tokenId):返回指定代幣ID的所有者地址。
  • safeTransferFrom(address from, address to, uint256 tokenId):安全地將代幣從一個地址轉移到另一個地址。
  • transferFrom(address from, address to, uint256 tokenId):將代幣從一個地址轉移到另一個地址。
  • approve(address to, uint256 tokenId):批准另一個地址轉移特定代幣。
  • setApprovalForAll(address operator, bool approved):批准或撤銷操作員對所有代幣的操作許可權。
  • isApprovedForAll(address owner, address operator):查詢操作員是否被批准管理所有者的所有代幣。

4.2 擴充套件介面

ERC-721標準除了核心介面外,還有幾個重要的擴充套件介面,旨在提供更多功能和靈活性。這些擴充套件介面包括ERC721Metadata和ERC721Enumerable。以下是對這些擴充套件介面的詳細介紹:

ERC721Metadata

ERC721Metadata介面提供了關於代幣的附加資訊,比如代幣的名稱、符號和描述性後設資料。這使得每個代幣不僅僅是一個唯一的ID,還可以攜帶豐富的描述資訊:

  • name():返回代幣集合的名稱,例如“CryptoKitties”。
  • symbol():返回代幣集合的符號,例如“CK”。
  • tokenURI(uint256 tokenId):返回特定代幣的後設資料URI(統一資源識別符號)。這個URI通常指向一個包含代幣詳細資訊的JSON檔案,例如名稱、描述和影像連結。

ERC721Enumerable

ERC721Enumerable介面用於提供代幣的列舉功能,使得可以方便地獲取所有代幣的列表以及某個地址所擁有的所有代幣。這在需要列出所有代幣或某個使用者所有代幣時非常有用:

  • totalSupply():返回所有存在的代幣總數。
  • tokenByIndex(uint256 index):透過索引返回代幣ID。用於遍歷所有代幣。
  • tokenOfOwnerByIndex(address owner, uint256 index):透過所有者地址和索引返回代幣ID。用於遍歷某個所有者的所有代幣。

5. ERC-721的應用

  1. 數字藝術和收藏品:藝術家可以建立獨特的數字藝術品,並透過ERC-721標準將其轉化為NFT。這些NFT可以在區塊鏈上交易,確保了藝術品的真實性和稀缺性。
  2. 遊戲物品:在區塊鏈遊戲中,玩家可以擁有和交易獨特的虛擬物品,如武器、服裝和土地。ERC-721標準確保了這些物品的唯一性和所有權。
  3. 身份和證書:ERC-721代幣可以用於表示獨特的身份標識和證書,如學位證書、會員資格和門票。

孟斯特

宣告:本作品採用署名-非商業性使用-相同方式共享 4.0 國際 (CC BY-NC-SA 4.0)進行許可,使用時請註明出處。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 戀水無意
騰訊雲開發者社群:孟斯特


相關文章