Current implementation deploys whole Escrow contract, which costs 591900 gas according to gas report. This amount can be reduced via ERC1167 Minimal proxy to near 100k.
ERC1167 reduces deployment cost on deploying contracts with similar logic, you can check standard for detailed explanation
Reduces gas cost of Escrow deploy from 591k gas to ~100k. 100k is because initialize function must perform at least 5 SLOAD to set Escrow variables, each SLOAD costs 20k.
Manual Review, Foundry
Replace constructor in Escrow with function initialize
Make variables in Escrow non-immutable, because immutable is stored in bytecode which will be cloned otherwise
Create storage variable address implementation
in EscrowFactory.sol. This contract will be cloned
Deploy Escrow in EscrowFactory.sol via OpenZeppelin's Clones.cloneDeterministic
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.