A counterfactual pool address should commit to the economic parameters a funder relies on, especially stakeToken and recoveryAddress. The factory salt only commits to (agreement, index). A third party can prefund the predicted clone address, then the agreement owner can create the pool at that address with a different recovery configuration and sweep the prefund.
The deterministic salt excludes the token, expiry, minimum stake, recovery address, and scope:
The pool is then initialized with creator-controlled economic parameters:
If an integration or user transfers tokens to the predicted pool address before PoolCreated, the eventual creator can choose a recovery address that captures those unaccounted tokens after expiry.
Prefunded tokens can be captured by the creator-selected recoveryAddress.
Integrations relying on predicted pool addresses can lose funds without ever interacting with stake().
This also combines with balance-delta callback accounting: a prefunded source pool can be deployed with recoveryAddress = PoolA, swept during a callback, and credited as attacker stake in PoolA. The salt issue is the setup that allows the prefund to be captured through the chosen recovery path.
Prefund laundering composition:
Commit all economically relevant configuration into the deterministic salt.
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.
The contest is complete and the rewards are being distributed.