Skip to content

security(contracts): support verifier sets and quorum-based proof acceptance #126

Description

@enliven17

Summary

Reduce dependence on a single verifier implementation by supporting bounded, versioned verifier sets and configurable m-of-n acceptance.

Motivation

Harpocrates needs this capability to become a production-grade, interoperable evidence protocol while preserving privacy, deterministic verification, and safe failure behavior. The implementation must reuse existing metadata, manifest, ZK, backend, frontend, and Soroban boundaries instead of creating parallel truth sources.

Scope

  • Define verifier-set versions, members, compatible circuit/artifact versions, threshold, activation, retirement, and emergency disable.
  • Collect distinct verifier results and finalize atomically after quorum.
  • Represent disagreement, timeout, partial failure, and incompatible output deterministically.
  • Govern set changes through existing staged rotation/timelock controls.
  • Bound verifier count, calls, proof size, and Soroban resource use.

Acceptance criteria

  • Duplicate verifier votes and replayed results cannot satisfy quorum.
  • Tests cover split decisions, unavailable verifiers, version mismatch, rotation overlap, and emergency disable.
  • No partial result is misrepresented as final verification.
  • Benchmarks, migration, rollout, and rollback guidance are included.
  • Existing lint, type checks, tests, builds, contract checks, and privacy guarantees remain green.

Engineering expectations

Use versioned canonical encodings, explicit error/status types, bounded resource consumption, idempotent operations, and privacy-safe observability. Schema, contract, circuit, or artifact changes require migration and compatibility analysis. Cryptographic changes require stable vectors and a written threat model.

Out of scope

Live production deployment, real credentials or sensitive media, unrelated visual redesigns, and broad dependency upgrades not required by this objective.

Definition of done

A maintainer can reproduce success and adversarial failure paths locally, understand the trust and privacy boundaries, operate the feature safely, and roll it back without undocumented state repair.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions