RAACToken's tax mechanism has a potential conservation violation in its transfer logic. I expected that the sum of balance changes matches the transfer amount, ensuring no tokens are lost or created during transfers with tax application. The contract RAACToken.sol implements tax logic in its _update function
The tax distribution splits into
Regular transfer amount (amount - totalTax)
Fee collector portion (totalTax - burnAmount)
Burn amount (burnAmount)
This verification ensures the protocol's tax mechanism preserves token supply integrity.
Looking at the implementation in RAACToken.sol, we see the careful orchestration
The core mechanism splits transfers into three streams, direct transfer, fee collection, and token burning. This design supports protocol sustainability while maintaining market stability for real estate assets.
The vulnerability lies in ensuring these three separate updates maintain perfect token conservation across all possible scenarios, especially considering rounding in percentage calculations.
Notice how the tax calculation flows: When Alice transfers 1000 RAAC to Bob, the protocol calculates a base tax (let's say 2%). From this 20 RAAC tax:
15 RAAC might go to the fee collector for protocol operations
5 RAAC gets burned to create deflationary pressure
980 RAAC reaches Bob's wallet
The sum of all balance changes must exactly match the transfer amount. This means if Alice sends 1000 RAAC:
What makes this interesting is how it interacts with the protocol's real estate backing. Each RAAC token represents fractional real estate value, so maintaining precise accounting is essential for the protocol's economic model.
When Alice transfers RAAC tokens representing her tokenized property share, the protocol automatically handles three distinct flows. Think of it like a real estate transaction where closing costs get distributed to different parties automatically.
The core mistake emerges in the tax distribution logic. The protocol attempts to split each transfer into three streams:
This means that for a 1000 RAAC transfer with a 2% tax rate and 25% burn rate:
15 RAAC goes to protocol operations
5 RAAC gets burned
980 RAAC reaches the recipient
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.