The OrderBook contract supports selling multiple ERC20 tokens — wETH, wBTC, and wSOL — all priced in USDC. Under expected behavior, sellers list tokens (like 1 ETH or 1 BTC) for a fixed USDC price (e.g. $2,000), and buyers receive the correctly corresponding token amount.
However, the contract does not normalize token decimals. This means:
wBTC (8 decimals), wETH/wSOL (18 decimals), and USDC (6 decimals) are stored and processed as raw uint256 amounts.
No conversions are done to account for decimal mismatch.
This creates two major issues:
User Confusion: Different tokens appear equal in amountToSell but represent vastly different values.
Exploitable Underpayment/Overpayment: Malicious sellers can list dust-sized amounts using misaligned decimals, tricking buyers into paying full USDC price for tiny token amounts.
Likelihood:
Sellers can easily craft misleading listings with dust amounts.
Buyers have no on-chain way to verify price-per-token.
OrderBook assumes all tokens use 18 decimals, but wBTC only uses 8.
Impact:
Pricing confusion where identical raw amounts represent vastly different economic values (1e8 wBTC vs 1e18 wETH)
Cross-token pricing comparisons (e.g., ETH vs BTC) are meaningless without decimal normalization.
Protocol trust and user experience is harmed.
UIs must handle decimal scaling off-chain, increasing inconsistency risks.
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.