9 matches found
TributeAccrual.availableTribute() & TributeAccrual.availableGovernanceTribute() Distributes Tributes Unfairly
Handle leastwood Vulnerability details Impact Conviction scores are calculating by taking the user's balance and multiplying it by the time elapsed. This score is updated upon each token transfer, or alternatively by directly calling ERC20ConvictionScore.updateConvictionScore. The availableTribut...
ERC20ConvictionScore._writeCheckpoint` does not write to storage on same block
Handle cmichel Vulnerability details In ERC20ConvictionScore.writeCheckpoint, when the checkpoint is overwritten checkpoint.fromBlock == blockNumber, the new value is set to the memory checkpoint structure and never written to storage. // @audit this is MEMORY, setting new convictionScore doesn't...
Users are charged twice the FDT tokens when tokenizing their convictions
Handle shw Vulnerability details Impact Users have to pay twice the FSD tokens when tokenizing their convictions if the locked variable is non-zero. Proof of Concept The first payment is made in the function tokenizeConviction of the contract ERC20ConvictionScore line 282, where a user transfer...
Changing ERC20ConvictionScore.governanceThreshold leads to temporarily broken state
Handle cmichel Vulnerability details Vulnerability Details Changing the governanceThreshold breaks the governance credit score accounting as users who currently qualify for being a governor may not qualify anymore and this influences the quorum threshold. It can be changed using...
ERC20ConvictionScore.tokenizeConviction transfers locked balance from user twice
Handle cmichel Vulnerability details Vulnerability Details In tokenizeConviction when locked 0 the amount is first transferred from the user using an internal call to transfermsg.sender, addressfairSideConviction, locked;. It is then transferred a second time from the user in the...
ERC20ConvictionScore's governanceDelta should be subtracted when user is not a governor anymore
Handle cmichel Vulnerability details Vulnerability Details The TOTALGOVERNANCESCORE is supposed to track the sum of the credit scores of all governors. In ERC20ConvictionScore.updateConvictionScore, when the user does not fulfill the governance criteria anymore and is therefore removed, the...
Conviction scoring fails to initialize and bootstrap
Handle 0xRajeev Vulnerability details Impact Conviction scores for new addresses/users fail to initialize+bootstrap in ERC20ConvictionScore’s updateConvictionScore because a new user’s numCheckpoints will be zero and never gets initialized. This effectively means that FairSide conviction scoring...
Conviction totals not updated during tokenization
Handle 0xRajeev Vulnerability details Impact updateConvictionScore function returns convictionDelta and governanceDelta which need to be used immediately in a call to updateConvictionTotalsconvictionDelta, governanceDelta for updating the conviction totals of conviction and governance-enabled...
ERC20ConvictionScore._updateConvictionScore uses stale credit score for governanceDelta
Handle cmichel Vulnerability details Vulnerability Details In ERC20ConvictionScore.updateConvictionScore, when the user does not fulfill the governance criteria anymore, the governanceDelta is the old conviction score of the previous block. isGovernanceuser = false; governanceDelta =...