MettaChain/PropChain-contract
Replace manual `unwrap`/`expect` in production contracts with graceful error propagation
已關閉
#742 建立於 2026年7月23日
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
- 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).