The protocol is not compatible with tokens that charge fee on transfers. There are several ERC-20 tokens that take a small fee on transfer and transferFrom. Most notably, USDT is an ERC-20 token that implements functionality of transfer fees, but for now the fee is set to 0. Attempt to use tokenContract with the address of token that charge fee on transfer results in revert and inability to deploy Escrow contract.
The EscrowFactory contract requires transferring a price amount of tokens to the computedAddress, and subsequently, it creates a new Escrow contract by passing the value of price to its constructor. However, because the token in use imposes fees on transfers, this results in a situation where the quantity of tokens actually received by the Escrow contract is less than the specified price, leading to a revert of the transaction in Escrow constructor:
It is not possible to deploy Escrow contract with token that charges fee on transfer.
Manual Review
It is recommended to set the value of i_price to the actual balance of token in the contract rather than accepting its value from the constructor parameter:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.