MettaChain/PropChain-contract

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

已關閉

#742 建立於 2026年7月23日

 (4 則留言) (0 個反應) (1 位負責人)Rust (151 個分叉)auto 404
High ComplexityRustStellar Waveenhancementhelp wanted

倉庫指標

星標
 (1 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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).

貢獻者指南