Skip to content

[ZK] ZK dispute evidence #38

Description

@Gbangbolaoluwagbemiga

User story

In a dispute, a freelancer may need to prove to the arbiter that the agreed conditions were met
(e.g. "the delivered file hashes to the value committed at milestone creation", "the deploy is live
at the agreed endpoint") without publishing the private deliverable on-chain.

What needs to be done

  • At milestone creation, store a commitment (hash) to the expected deliverable/condition
  • Freelancer generates a proof that their private deliverable satisfies the commitment
  • Contract entrypoint: submit_dispute_proof(escrow_id, milestone_index, proof) → arbiter/auto can
    use the verified result in resolution (ties into arbiter voting [Contract] Implement arbiter voting mechanism for dispute resolution #3)
  • Frontend: upload deliverable locally → generate proof → submit; arbiter sees "condition proven"

Acceptance criteria

  • Valid proof verifies against the stored commitment; tampered deliverable fails
  • The deliverable itself never appears on-chain
  • Result is consumable by the dispute-resolution flow

Relevant files

contracts/secureflow/src/work_lifecycle.rs (dispute paths), refund_system.rs

Depends on #35; complements #3 (arbiter voting).

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew product capabilityzkZero-knowledge / privacy

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions