RaacToken has 2 types of fees: swapTaxRate and burnTaxRate.
Setting feeCollector to address(0) should disable the fees collection. As a sideffect, instead of burning entire amount, only amount - burnFee is destroyed. The burnFee amounts remains in caller's ballance.
RaacToken implements 2 types of fees: swapTaxRate and burnTaxRate. On each transfer, excluding minting and burning, the swap tax amount is transferred to feeCollector and burn amount is burned.
When feeCollector is set to address(0) it should act as a switch off and disable fee collection, as implemented in setFeeCollector:
When tokens are burn-ed, the burn tax is transferred to feeCollector.
The problem is that burn function burns only amount - taxAmount.
The taxAmount remains in msg.sender balance.
Admin could try to set burnTaxRate to 0. The taxRateIncrementLimit limits the maxChange between old tax rate and the new tax rate to 10%( eg. from 100bps to 90, then 81, etc).
Because of this change rate limit, it requires 28 _setTaxRate calls to set the swapTaxRate to 4pbs. It can't be set lower than that because percentMul(4, 1000) returns 0, disallowing setting the fee rate to 0.
raacToken.burn is called from FeeColector contract to burn the burnShare amount for each of the 8 fee types.
Admin can't disable the burnTaxRate. The tax remains in caller's balance.
If admin tries to reduce the burn tax, it can be set down to 4pbs but this incurs significant gas fee costs due to the 28 transactions required.
FeeCollector will accumulate unburned RAACToken amounts, diluting the value of existing tokens.
Update RaacToken::burn function and burn entire amount when feeCollector is set to `address(0).
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.