Signed/unsigned arithmetic confusion
Orca's assessment for RD-F-018 — scored green on the v1.7.0 rubric. The evidence below is the curator's reasoning for this score.
Evidence summary #
Rust's strong static type system distinguishes signed (i64/i128) from unsigned (u64/u128) integers and requires explicit casts. Whirlpools uses u128 for liquidity amounts and i128/i64 for tick indices (signed by design — ticks range from negative to positive). The Neodyme and OtterSec audits covered arithmetic correctness. No signed/unsigned confusion findings reported. Rust's type safety provides structural protection beyond what Slither detection offers for Solidity.
Sources #
- AuditNeodyme Orca Whirlpools Audit 2022-05-05https://dev.orca.so/.audits/2022-05-05.pdfretrieved 2026-05-16
- Whirlpool program lib.rs (Anchor/Rust — confirms non-EVM substrate)https://github.com/orca-so/whirlpools/blob/main/programs/whirlpool/src/lib.rsretrieved 2026-05-16
Methodology #
Determine whether signed-integer conversions or comparisons where unsigned was intended exist in the deployed bytecode/source.
See the full factor methodology and distribution across all protocols →