Uint8 Comparison#
Informational
In ERC721Wrapper.sol wrap
and unwrap
functions, the for
loop counter is a uint8
function wrapMany(uint256[] calldata tokenIds) external {
for (uint8 i; i < tokenIds.length; i++) {
_wrap(msg.sender, tokenIds[i]);
}
_onTokenWrap(msg.sender, uint16(tokenIds.length));
}
uint8
is more expensive than uint256
because it is implicitly upcast to uint256
for each comparison to tokenIds.length
.
Recommendation#
- Change
uint8
counters touint256
- If the intent is to cap the number of wrappable NFTs to 255 via overflow reverts, this intent should be documented accordingly with a comment.