Add named function call where possible.
function newEscrow(
uint256 price,
IERC20 tokenContract,
address seller,
address arbiter,
uint256 arbiterFee,
bytes32 salt
) external returns (IEscrow) {
address computedAddress = computeEscrowAddress(
{
byteCode: type(Escrow).creationCode,
deployer: address(this),
salt: uint256(salt),
price: price,
tokenContract: tokenContract,
buyer: msg.sender,
seller: seller,
arbiter: arbiter,
arbiterFee: arbiterFee
}
);
tokenContract.safeTransferFrom(msg.sender, computedAddress, price);
Escrow escrow = new Escrow{salt: salt}(
{
price: price,
tokenContract: tokenContract,
buyer: msg.sender,
seller: seller,
arbiter: arbiter,
arbiterFee: arbiterFee
}
);
if (address(escrow) != computedAddress) {
revert EscrowFactory__AddressesDiffer();
}
emit EscrowCreated(
{
escrowAddress: address(escrow),
buyer: msg.sender,
seller: seller,
arbiter: arbiter
}
);
return escrow;
}