# Round-trip payout decoupled from deposit rate

Burn or redeem pays out at a fixed ratio that ignores the deposit or share rate, so mint-then-burn nets a profit

_Area: DeFi accounting and math bugs. Seen in 2 disclosed reports; latest 2026-03-15. Updated 2026-10-29._

## How it works
A contract takes a deposit and later pays it back, but the two legs use different rates. Deposit converts at the live share/exchange rate; burn or redeem pays a fixed ratio (1:1, or a stored value) that no longer matches what was paid in. The invariant "value out on burn <= value in on mint" is broken, so a round trip leaves the caller with more than they started with. The per-cycle delta can be tiny; loops and flash loans amplify it.

## Where it shows up
- Burn/redeem/withdraw paths that return a paired asset at a hardcoded 1:1 or fixed ratio, separate from the deposit conversion [E2](https://bugbountylibrary.com/r/dhl%3A20250716-vds.md).
- Owner-callable mint/burn on a wrapper contract whose burn payout is computed from a value larger than raw mint cost [E1](https://bugbountylibrary.com/r/dhl%3A20260315-unverified-237d.md).
- Reward-sell functions converting token to reward with division before multiplication or low-precision math [E3](https://bugbountylibrary.com/r/dhl%3A20240410-bigbangswap.md).
- Token contracts where sending tokens to the contract address itself triggers a burn-and-return [E2](https://bugbountylibrary.com/r/dhl%3A20250716-vds.md).
- Any place deposit rate and payout rate are computed by different code paths.

## How to review
Trace one full round trip: deposit X, immediately burn/redeem, compare assets returned to assets spent. The property that must hold: payout on exit is derived from the same rate used on entry, and payout <= entry value for every path, including owner-only and transfer-triggered burns. Check that burn math uses the current share price, not a constant. For reward functions, confirm multiplication precedes division and precision is sufficient for small repeated trades [E3](https://bugbountylibrary.com/r/dhl%3A20240410-bigbangswap.md). Confirm the owner wrapper's burn value cannot exceed mint cost [E1](https://bugbountylibrary.com/r/dhl%3A20260315-unverified-237d.md).

## Variants seen
- Fixed 1:1 burn-to-contract return decoupled from deposit exchange rate [E2](https://bugbountylibrary.com/r/dhl%3A20250716-vds.md).
- Owner-wrapper mint/burn cycle where burn payout exceeds mint cost [E1](https://bugbountylibrary.com/r/dhl%3A20260315-unverified-237d.md).
- Precision loss in reward-selling enabling repeated buy/sell profit [E3](https://bugbountylibrary.com/r/dhl%3A20240410-bigbangswap.md).

## Impact and severity
Direct reserve or pool drain: 0.28 ETH via 80 cycles [E1](https://bugbountylibrary.com/r/dhl%3A20260315-unverified-237d.md), full flash-loan-funded drain [E2](https://bugbountylibrary.com/r/dhl%3A20250716-vds.md), ~$5K BUSD [E3](https://bugbountylibrary.com/r/dhl%3A20240410-bigbangswap.md). Severity is high when the delta is loopable or flash-loanable; small per-cycle deltas are not a mitigation because loops amplify them [E1](https://bugbountylibrary.com/r/dhl%3A20260315-unverified-237d.md).

## Evidence
- E1: https://bugbountylibrary.com/r/dhl%3A20260315-unverified-237d.md
- E2: https://bugbountylibrary.com/r/dhl%3A20250716-vds.md
- E3: https://bugbountylibrary.com/r/dhl%3A20240410-bigbangswap.md
