Scope: src/LikeRegistry.sol
The contract does not track or expose the address of the MultiSigWallet
created when two users mutually like each other. Users have no way to retrieve the address of their multisig wallet, making it impossible to interact with their locked funds.
Affected Function:
matchRewards()
: Deploys a MultiSigWallet
but does not store or emit its address.
Root Cause:
The MultiSigWallet
address is generated dynamically during deployment but not recorded in the contract’s state or emitted in an event.
Users cannot programmatically determine where their rewards are sent, leading to a lack of transparency and usability.
Lost Funds: Users cannot access their rewards in the multisig wallet because they don’t know its address.
Poor User Experience: Users must manually track transaction logs or deployments to find the wallet address, which is impractical.
Manual code review.
Emit an Event with the Wallet Address:
Add an event to log the multisig wallet address when it’s deployed:
Store the Address in a Mapping:
Track the multisig wallet for each user pair to prevent redundant deployments and allow lookups:
Update matchRewards()
:
Modify the function to store and emit the wallet address:
Add a helper function to fetch the multisig address for a given pair:
Please read the CodeHawks documentation to know which submissions are valid. If you disagree, provide a coded PoC and explain the real likelyhood and the detailed impact on the mainnet without any supposition (if, it could, etc) to prove your point.
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.