MettaChain/PropChain-contract
Replace manual `unwrap`/`expect` in production contracts with graceful error propagation
Fechada
#742 aberto em 23 de jul. de 2026
High ComplexityRustStellar Waveenhancementhelp wanted
Métricas do repositório
- Stars
- (1 estrela)
- Métricas de merge de PR
- (Métricas PR pendentes)
Description
Problem Statement
60+ instances of .unwrap()/.expect() in production code paths across governance, property-management, sanctions, prediction-market, etc.
Why it matters
An unwrap in a paid user path is a denial-of-service vector and a gas bomb on bug-fix deployments.
Technical Context
Replace each unwrap() with ? or a typed error variant. Reserve unwraps for #[cfg(test)].
Expected Outcome
grep -rE '\.unwrap\(\)|\.expect\(' contracts/*/src/lib.rs returns 0 lines outside #[cfg(test)].
Acceptance Criteria
- Production unwraps removed.
- Tests unchanged in count.
- Kani harness
prove_no_panic_in_storage_round_trip. - Stack-overflow review: deep recursion removed.
Implementation Notes
Branch-by-branch, smallest to largest. Add safe_unwrap! macro in propchain-traits.
Files or modules likely to be affected
Every contracts/**/src/lib.rs.
Dependencies
None.
Difficulty level
MEDIUM.
Estimated effort
L (~1–2 engineer-weeks).