Competitive Audits
First Flights
Leaderboard
Docs
Toggle theme
Sign up
Log in
All First Flights
DatingDapp
Submissions
AI First Flight
DatingDapp
AI First Flight #6
Beginner Friendly
Foundry
Solidity
NFT
EXP
AI First Flight
EXP
Oct 10th, 2026 → Oct 12th, 2026
View repo
View results
9 / 9
Submissions
Severity
Validity
Tags
Author
#1
LikeRegistry::likeUser never credits msg.value to userBalances, so every like payment is locked in LikeRegistry forever, every match multisig is funded with 0 ETH, and withdrawFees always reverts
High
Valid
[H-01] After the user calls...
friedsocks233
#2
SoulboundProfileNFT::blockProfile records no block, so a blocked address re-mints a profile in the next transaction, regains full LikeRegistry access, and its pre-block likes still produce instant matches
Medium
Valid
[M-01] `SoulboundProfileNFT...
friedsocks233
#3
SoulboundProfileNFT::mintProfile writes profileToToken only after the _safeMint callback, so a contract re-enters and mints several soulbound profiles to one address; the extra tokens can never be burned by the holder or blocked by the owner
Medium
Valid
[M-04] Reentrancy in `Soulb...
friedsocks233
#4
SoulboundProfileNFT::tokenURI prefixes the empty default _baseURI() instead of "data:application/json;base64,", so every profile's tokenURI is a schemeless base64 string that standard ERC721 metadata consumers cannot resolve
Low
Invalid
friedsocks233
#5
LikeRegistry likes and matches are keyed by address and never cleared when a profile is burned or blocked, so likes given from or to a deleted profile complete matches for the address's later re-minted profile
Low
Invalid
friedsocks233
#6
SoulboundProfileNFT::tokenURI splices user-supplied name and profileImage into JSON without escaping, so a profile owner can override the protocol description and inject keys, and a quote or backslash in a name makes the metadata invalid
Low
Invalid
friedsocks233
#7
LikeRegistry::receive accepts plain ETH transfers that are credited to neither userBalances nor totalFees and that no function can withdraw, so ETH sent directly to the registry is locked forever, even after the userBalances fix
Low
Invalid
friedsocks233
#8
SoulboundProfileNFT::mintProfile validates none of the profile fields, so profiles with an under-age, 0 or 255 age and an empty name and image are minted and admitted by LikeRegistry as full participants in paid matching
Low
Invalid
friedsocks233
#9
MultiSigWallet approvals cannot be revoked and transactions never expire or get cancelled, so after one owner approves, the other can approve and execute that transaction at any later time on consent that may no longer be current
Low
Invalid
friedsocks233
Previous
1
Next
Support
FAQs
Can't find an answer? Chat with us on Discord, Twitter or Linkedin.
What is Cyfrin CodeHawks?
What is a competitive audit?
How can I host a competition on CodeHawks?
How is a contest prize pool determined?
How do I get rewarded?
What is a First Flight?
Give us feedback!