40,000 USDC
View results
Submission Details
Severity: gas

Unnecessary Balance Check

Summary

In this smart contract, an escrow functionality is implemented to facilitate secure transactions between a buyer and a seller using a specific ERC20 token. The contract follows a standard escrow pattern, where a trusted arbiter is involved in resolving disputes if they arise.

Vulnerability Details

Redundant Balance Check: In the escrow contract's constructor, there is a balance check to ensure that the contract is deployed with sufficient token balance. However, this check is redundant since the safeTransferFrom function from OpenZeppelin's safeERC20 is used in the newEscrow function, which already guarantees the secure transfer of the exact "price" amount of tokens to the contract. Therefore, the balance check inside the constructor can be safely removed to optimize gas usage.

Impact

The impact of the redundant balance check is primarily related to increased gas consumption during contract deployment. By removing the unnecessary balance check, the contract's deployment gas cost can be reduced, resulting in more efficient transactions and lower costs for users.

Tools Used

No specific security tools were used for this analysis, as the identified issue is related to gas optimization rather than security vulnerabilities.

Recommendations

To optimize gas consumption and improve the contract's efficiency:

Remove the redundant balance check: Since the safeTransferFrom function ensures the contract receives the exact "price" amount of tokens before deployment, the balance check inside the constructor can be safely removed. This will reduce gas costs during contract deployment.
By implementing the recommendation, the contract's gas efficiency will be enhanced, providing cost benefits for users interacting with the escrow functionality. It's important to conduct thorough testing after making any changes to the contract to ensure its proper functionality.

Support

FAQs

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