A wide integer is cast to a narrower type (uint128/uint64/uint32) without SafeCast. Values above the target range are silently truncated, corrupting accounting — a large deposit can wrap to a tiny stored amount, or a timestamp can overflow a uint32.
// uint128 stored = uint128(amount); // amount = 2**128 + 5 // stored becomes 5. Contract thinks you deposited 5 wei // but pool math elsewhere used the full amount -> imbalance.
uint128 x = SafeCast.toUint128(amount); // reverts on overflow
Largest recorded losses in the same failure class — related, not the same bug:
The SaferICO scanner runs 201 detectors over your Solidity source, SAFE-0122 among them. Paste an address or the source itself — a small per-scan fee, shown before you sign, or unlimited on any plan.