Transactions
在 for 循環中呼叫 _safeTransferFrom 時是否需要消耗氣體?
我正在嘗試將 ERC-1155 NFT 副本(不是令牌 ID
1
而是令牌 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 來查看您的方法需要多少氣體。