The random function used by selectRamIfNotSelected
is deterministic and could therefore be manipulated by validators to set the selectedRam
variable to a desired value.
Assuming Ram has not been selected during the duration of the Dussehra event, the organizer can call the selectRamIfNotSelected
function to randomly select a Ram from the list of minted NFTs.
While the transaction is in the mempool, a validator could hold the transaction to be included in a block until certain conditions are met, allowing them to manipulate the function:
to return a desired tokenId. This manipulation could potentially create an NFT with desired characteristics when selected as the winner.
A validator could be incentivized to delay the transaction until a specific tokenId is selected, thereby gaining the ability to collect 50% of the fees collected by the protocol.
Manual review.
Implement Chainlink VRF to receive an off-chain randomly generated value, enhancing the randomness and reducing the risk of manipulation.
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.