In matchRewards(), a new MultiSigWallet is deployed via new, and ETH
is immediately sent to it. If the constructor were to revert (e.g., due to
identical addresses from a bug), the entire match transaction would revert,
but the likes and matches state has already been modified. While the
revert would roll back state changes, the users' like ETH (if F-01 is fixed)
could be stuck if there's any edge case where the MultiSig deployment
succeeds but the ETH transfer fails.
More importantly, there is no record kept of the deployed MultiSig address.
Users have no on-chain way to discover their multisig wallet address.
Likelihood: Certain
Every match deploys a multisig with no on-chain reference
Impact: Medium
Users cannot discover their multisig wallet address on-chain
Must rely on off-chain event indexing or transaction tracing
Funds could be effectively lost if users can't find the multisig address
This test triggers a mutual match and then proves there is no on-chain
mechanism to retrieve the deployed MultiSig address — no mapping, no
getter, and the Matched event only logs the two user addresses without
the wallet. The only evidence of the wallet is buried in the internal
CREATE trace, inaccessible to regular contract calls.
Store the deployed multisig address in a bidirectional mapping and emit
a dedicated event so matched users can discover their shared wallet both
on-chain (via getter) and off-chain (via event indexing).
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.