Erc-721

ERC721合約怎麼會有餘額?

  • September 11, 2018

看看這個實現,我可以看到 ERC721 合約跟踪每個單個令牌(由其令牌 ID,一個 256 位數字標識)的所有者(由其地址標識):

mapping (uint256 => address) internal tokenOwner;

因此,當有轉移時,必須提供令牌 ID。到現在為止還挺好。

我不明白的是balance操作的語義。

 /**
  * @dev Returns the number of NFTs owned by `_owner`. NFTs assigned to the zero address are
  * considered invalid, and this function throws for queries about the     zero address.
  * @param _owner Address for whom to query the balance.
  */
 function balanceOf(
   address _owner
 )
   external
   view
   returns (uint256)
 {
   require(_owner != address(0));
   return ownerToNFTokenCount[_owner];
 }

如果每個代幣都是不可替代的,因此根據定義是唯一的,那麼每個代幣怎麼可能不止一個呢?即當 balance 函式返回大於 1 時是什麼意思?

balanceOf不返回特定令牌的編號。它返回特定使用者擁有的令牌數量。

例如,如果您想知道“Jane 擁有多少 CryptoKitties?”,您可以使用該balanceOf函式來回答這個問題。

balanceOf功能的存在有兩個主要原因。首先,它使 ERC721 向後兼容 ERC20,標準化非常有幫助。其次,它可用於迭代使用者擁有的所有代幣。

例如,如果您為 ERC721實現可列舉擴展balanceOf,您可以使用它來檢查您是否沒有為使用者請求索引之外的令牌。這將允許您創建一個頁面,您可以在其中輕鬆查看所有 NFT。

引用自:https://ethereum.stackexchange.com/questions/58490