Summary
We already fuzz the relay contract (soroban/tests/relay_contract_fuzz.rs), which is great — but the other critical contracts have no fuzz coverage. Extending fuzzing to escrow and threshold logic would surface edge cases (overflow, unexpected state transitions, boundary inputs) that unit tests miss.
What we'd like
- Add fuzz targets for at least
escrow_contract and threshold_window
- Focus on invariants: balances never go negative, state transitions are always valid, no panics on arbitrary input
- Wire the fuzz targets so they can run in CI for a bounded number of iterations
Where to look
soroban/tests/relay_contract_fuzz.rs — the existing pattern to follow
soroban/src/escrow_contract.rs, soroban/src/threshold_window.rs — targets
soroban/test_snapshots/ — how snapshots are used, so fuzz runs stay deterministic where needed
Acceptance criteria
Notes
Mirror the structure of the relay fuzz test so contributors have a consistent template.
Summary
We already fuzz the relay contract (
soroban/tests/relay_contract_fuzz.rs), which is great — but the other critical contracts have no fuzz coverage. Extending fuzzing to escrow and threshold logic would surface edge cases (overflow, unexpected state transitions, boundary inputs) that unit tests miss.What we'd like
escrow_contractandthreshold_windowWhere to look
soroban/tests/relay_contract_fuzz.rs— the existing pattern to followsoroban/src/escrow_contract.rs,soroban/src/threshold_window.rs— targetssoroban/test_snapshots/— how snapshots are used, so fuzz runs stay deterministic where neededAcceptance criteria
Notes
Mirror the structure of the relay fuzz test so contributors have a consistent template.