There is a business logic vulnerability that revolves around the contest organization process. It pertains to the actions of the Organizer who has the ability to initiate prize distribution using a smart contract function. This vulnerability potentially allows the Organizer to IGNORE the contest results and unfairly allocate prize funds to themselves, thereby compromising the integrity of the contest and/or stealing sponsor funds.
Consider the following scenario:
In my opinion the statement We may build a reputation system in the future to handle the issue of the system being maliciously used, e.g., sybil attack.
is insufficient. Alice will be the most exemplary participant, she will organize 5-10 small contests to farm that reputation, engage the community, a true saint. The moment the amount sent in by possible sponsors will reach her turning point amount, she will run with the money, causing reputational damage to the platform and loss of funds to the sponsors.
KYC won't necessarily prevent this, a reputation system will definitely not solve this, this can be fixed on-chain
The organizer can:
Manual review
The web2 side of things is aware of the contest conditions, list of participants and their addresses, list of winners and their respective percentages. Create a new mapping that ties contestId to winners data:
and a function callable only by the owner or other owner controllable role that updates this mapping:
after this any other function that can be called by the organizer to distribute prizes either reads that mapping automatically or accepts the input of the organizer but checks it against the data in the mapping to ensure that the actual winners are the ones who receive the prizes.
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.