Multi-sig dispute resolution fields exist on EscrowEntry, and vote/resolve functions are implemented, but normal deposit APIs only accept a single optional arbiter. Tests appear to rely on manual entry construction, which means production users cannot safely create multi-sig escrows.
Affected areas: app/contract/contracts/src/lib.rs, app/contract/contracts/src/escrow.rs, app/contract/contracts/src/types.rs, app/contract/contracts/src/events.rs, app/contract/contracts/src/test.rs, backend/mobile contract clients/docs.
Implementation scope:
- Add
deposit_with_arbiters or extend deposit parameter structs to include arbiters and threshold.
- Validate threshold, duplicate arbiters, max arbiter count, and non-empty arbiter list.
- Emit events with multi-sig arbitration metadata.
- Update privacy-aware escrow details to reveal/hide arbiters consistently.
Acceptance criteria:
- Users can create M-of-N arbitration escrows through public contract APIs.
- Invalid thresholds and duplicate arbiters are rejected.
- Multi-sig dispute lifecycle is covered end-to-end without manual storage writes.
Multi-sig dispute resolution fields exist on
EscrowEntry, and vote/resolve functions are implemented, but normal deposit APIs only accept a single optional arbiter. Tests appear to rely on manual entry construction, which means production users cannot safely create multi-sig escrows.Affected areas:
app/contract/contracts/src/lib.rs,app/contract/contracts/src/escrow.rs,app/contract/contracts/src/types.rs,app/contract/contracts/src/events.rs,app/contract/contracts/src/test.rs, backend/mobile contract clients/docs.Implementation scope:
deposit_with_arbitersor extend deposit parameter structs to include arbiters and threshold.Acceptance criteria: