MettaChain/PropChain-contract

Replace manual `unwrap`/`expect` in production contracts with graceful error propagation

Chiusa

#742 aperta il 23 lug 2026

 (4 commenti) (0 reazioni) (1 assegnatario)Rust (151 fork)auto 404
High ComplexityRustStellar Waveenhancementhelp wanted

Metriche repository

Star
 (1 stella)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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

  1. Production unwraps removed.
  2. Tests unchanged in count.
  3. Kani harness prove_no_panic_in_storage_round_trip.
  4. 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).

Guida contributor