Transactions

在 for 循環中呼叫 _safeTransferFrom 時是否需要消耗氣體?

  • February 12, 2022

我正在嘗試將 ERC-1155 NFT 副本(不是令牌 ID1而是令牌 ID 的副本1)分發到多個錢包。我_safeTransferFrom在 for 循環中呼叫。由於我在單個事務中的另一個函式中呼叫它,它會在每個 for 循環中花費氣體還是只花費一次?程式碼如下。在這裡_safeTransferFrom _

 function distributeNFTs(
   address _from,
   address[] calldata _recipients,
   uint256 _tokenId
 ) external {
   require(_from == _msgSender() || isApprovedForAll(_from, _msgSender()), "CryptoStamp: caller is not owner nor approved");
   for (uint256 i = 0; i < _recipients.length; i++) {
     _safeTransferFrom(_from, _recipients[i], _tokenId, 1, "");
   }
 }

您可以將 gas 理解為一定數量的計算單位。您要執行的方法越複雜,您將花費的 gas 越多。但是,在多次呼叫一次呼叫方法之間,比多次呼叫同一個方法,最好只呼叫一次方法。無論哪種方式,您都可以使用 Remix 來查看您的方法需要多少氣體。

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