# Protocol assumes 18 decimals collateral

Taurus hardcodes 1e18 precision in collateral ratio and reward math, so non-18-decimal collateral breaks ratios, borrow limits, and reward distribution.

- Payout: Contest reward
- Severity: high
- Program: Taurus
- Credited: 0x52
- Disclosed: 2023-02-08
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2023-03-taurus-judging/issues/35
- Library page: https://bugbountylibrary.com/r/sherlock%3A2023-03-taurus%3AH-1
- Tags: domain:web3 impact:funds-loss kind:contest platform:sherlock sev:high tech:evm tech:solidity technique:source-review vuln:accounting-error vuln:business-logic vuln:precision-loss

**Target:** Solidity lending vault collateral math (TauMath, TauDripFeed, BaseVault)
**Root cause:** TauMath.collRatio multiplies by Constants.precision (1e18) and divides by 10**priceDecimals, leaving result in collateral's own decimals, then compares to 1e18-scaled constants like MIN_COL_RATIO. TauDripFeed similarly assumes 18-decimal collateral.
**Steps:**
1. Add a collateral token with decimals != 18 (e.g. 6 or 24).
2. Call borrow/withdraw; observe collRatio computed in collateral decimals vs 1e18 constants.
3. With >18 decimals, _extraRewardPerCollateral rounds to 0 when _tokensToDisburse=100e18 and _currentCollateral=1_000_000e33, so no rewards distributed.
4. With <18 decimals, users appear under-collateralized and liquidatable prematurely; with >18, over-collateralized allowing excess TAU withdrawal.
**How found:** Manual review of TauMath.collRatio and TauDripFeed reward math, noticing Constants.precision=1e18 is applied to collateral amounts while MIN_COL_RATIO and other thresholds are 1e18-scaled, implying an 18-decimal collateral assumption.
**Exploitation:** Not a live exploit; requires protocol to onboard a non-18-decimal collateral token. Then borrowers could withdraw more TAU than allowed (over-collateralized appearance) or be wrongly liquidated, and reward distribution can silently zero out.
**Insight:** When auditing fixed-point math, trace the unit of every intermediate value: a ratio that multiplies by 1e18 but divides only by price decimals retains the collateral's decimals, so comparing it to 1e18 constants silently assumes 18-decimal collateral.
