The burn
function in the contract allows users to burn tokens while applying a burn tax. However, if the amount
is small, the calculated taxAmount
may round down to 0
, allowing users to repeatedly burn small amounts without paying the burn tax. This could lead to tax evasion and disrupt the intended tokenomics.
The function calculates the tax using amount.percentMul(burnTaxRate)
, which follows this formula:
taxAmount = (amount * burnTaxRate) / 10000
Since Solidity performs integer division, any fractional result is rounded down. If amount
is too small, the division may round taxAmount
to 0
, effectively allowing the user to bypass the burn tax by repeatedly calling burn()
with small amounts.
RAACToken.sol burn()
Users can burn tokens without paying tax, breaking the intended deflationary mechanism. The tax mechanism becomes ineffective unless users burn in large amounts.
Manual Review
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.