Transfers are not allowed in the protocol. Only MartenitsaMarketplace can provide MartenitsaTokens, and only this contract and the MartenitsaVoting can provide HealthTokens. However, all transfer functions are available due to inheritance. Without overriding them, any user can transfer their tokens and break the protocol:
MartenitsaToken::updateCountMartenitsaTokensOwner are not called in any transfer function.
Have HealthToken without winning them.
A listed token can be sent to anyone and being sell without the consent of the new owner. Money goes to the first owner.
Likelyhood: High
Anyone, Anytime
Impact: High
countMartenitsaTokensOwner won't be updated, breaking the reward mechanism.
MartenitsaToken can be transfered and sell without the consent of the new owner.
HealthToken can be owned by anyone without winning them.
Override all transfer function to revert in both tokens, except:
HealthToken::transferFrom which has to work only if the MartenitsaEvent is the msg.sender
MartenitsaToken::safeTransferFrom which has to work only if the MartenitsaMarketplace is the msg.sender
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.