By design,the veTokens can't be transferred to prevent liquid markets, which would allow governance manipulation and boost farming.
Protocol doesn't enforce RaacTokens lockers to be EoA addresses. This allow users to lock tokens using a smartContract with tokenisation capabilities, bypassing the intended protocol design.
Users can call veRaacToken::lock to create a new lock position with the desired amount and duration.
The amount of RaacToken is transferred, creates the lock and mints the veRaac amount based on input amount and duration.
The msg.sender is not enforced to be an EoA address.
A malicious user can call the lock function from a wrapper ERC20 contract, creating a transferrable version of veRaac token.
The veToken non-transferable design is bypassed.
Anyone can create a tokenized wrapper of veRaac token. Users can manipulate governance and get involved in boost farming activities.
Ensure that only EoA addresses can call lock, increase and extend functions.
To mitigate the fact multisig wallets (used by a DAO, protocol treasury, etc) can't be used, the protocol can implement a whitelist.
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.