Normal behavior: executeTransaction() should let two matched users jointly manage the ETH reward pooled into their shared wallet.
The issue: quorum is a strict 2-of-2 with no owner-replacement, timeout, or fallback path. MultiSigWallet instances are auto-deployed per matched pair by LikeRegistry.matchRewards(), so the owners are ordinary end users, not cooperating operators.
Likelihood:
Reason 1: Matches going unanswered or ghosted is normal user behavior for a dating app, not an edge case.
Reason 2: Wallet loss, key loss, or the other party abandoning the app all produce the same unrecoverable outcome.
Impact:
Impact 1: The cooperating user's share of the pooled reward becomes permanently inaccessible.
Impact 2: Affects every matched pair where either party stops participating — a common occurrence, not a rare one.
test/PoC2.sol. Two tests: one confirms the bug, one confirms the wallet works normally when both owners cooperate.
Both [PASS]. The second test is a control: it shows the wallet works fine when both owners cooperate, isolating the bug to the single-approval case.
Add a time-boxed escape hatch: if only one owner approved but enough time has passed since submission, that approval alone becomes sufficient.
submittedAt[_txId] must be set inside submitTransaction() for this to work.
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.