The Streets::stake and Streets::unstake functions accept and transfer OneShot NFTs, posing a risk of reentrancy in Streets.sol. However, there are checks in place to defend against reentrancy attacks.
Streets::stake function: (Not using safeTransferFrom function).
Streets:unstake function: (Not using safeTransferFrom function) and contains a misleading Natspec comment.
Streets.sol Misleading Natspec comment.
Unsafe Transfers: Both functions are susceptible to reentrancy attacks, although unstake has some protection against it (with minimal impact).
Misleading NatSpecs:
The top first misleading NatSpec comment can confuse auditors, researchers, or other developers. It suggests that the ERC721 Token contract variables are declared there, but in reality, it's an ERC721 Token contract Interface. Adjacent to it, an ERC20 Token contract is declared. Auditors, researchers, or other developers, after seeing that NatSpec, may think both are ERC721 Token Contracts variables.
The provided NatSpec can mislead researchers, auditors, or other developers. It suggests the need for a RapBattle function to update OneShot NFT metadata. However, as Streets.sol already has privileges to update OneShot NFT metadata, invoking any RapBattle functions here is unnecessary.
Manual Review, Foundry.
Utilize the safeTransferFrom function provided by OpenZeppelin::ERC721 instead of transferFrom.
Remove or update the misleading NatSpec comments.
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.