Hashing block.timestamp and block.prevrandao together creates a predictable number, and a predictable number is not a good random number.
A malicious organiser could use the function ChoosingRam::selectRamIfNotSelected to choose which RamNFT becomes ChoosingRam::selectedRam.
This would make the game rigged, allowing the organiser to choose a player of its own to be Ram and withdraw the prize.
Manual review
Implement Chainlink VRF for true randomness
The organizer is trusted, but the function `ChoosingRam::selectRamIfNotSelected` uses a way to generate a random number that is not completely random.
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.