40,000 USDC
View results
Submission Details
Severity: gas
Valid

Use assembly to check for `address(0)`

Summary

Using Ethereum's inline assembly can save gas when checking for the zero address.

Tools Used

Manual review

Recommendations

Use assembly for zero address checks

if (address(tokenContract) == address(0)) revert Escrow__TokenZeroAddress();
if (buyer == address(0)) revert Escrow__BuyerZeroAddress();
if (seller == address(0)) revert Escrow__SellerZeroAddress();
if (i_arbiter == address(0)) revert Escrow__DisputeRequiresArbiter();

Example of inline assembly check

assembly {
if iszero(seller) {
let ptr := mload(0x40)
mstore(ptr, 0x1122334400000000000000000000000000000000000000000000000000000000) // set selector for `Escrow__SellerZeroAddress()`
revert(ptr, 0x4) // Revert with the error selector
}
}

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.