Skip to content

Proofs & the edge verifier

Pewter asks a machine to prove capacity rather than trusting what it reports.

Compute check

The machine multiplies two challenge matrices over the prime field p = 2³¹ − 1 and commits to a Merkle root of every result row before seeing the challenge. The verifier opens the rows, recomputes the result, and runs two independent Freivalds rounds. A wrong result slips through with probability below 2⁻⁴⁰ (less than one in a trillion). A list of sampled rows is not accepted as proof.

Memory check

A commit-then-open check: the machine commits to chunks filling the claimed memory (minus a 512 MiB reserve), then opens the chunks the verifier picks.

Edge verifier

sequenceDiagram
  participant A as Seller agent
  participant P as Pewter API
  participant E as Edge verifier
  A->>P: signed heartbeat
  P-->>A: signed grant naming the agent's certificate
  A->>E: connect (mutual TLS) + grant
  A->>E: commit (Merkle roots)
  E-->>A: challenge
  A->>E: openings
  E->>E: recompute rows, Freivalds x2, memory openings
  E->>P: signed one-use verdict
  P->>P: check signature, re-run transcript
  Note over P: Verified stays OFF

What this does not prove yet

Remote timing can't yet prove the memory sits on that GPU, the GPU proof workload hasn't been validated on real hardware, and timing calibration isn't done. Until then a passing verdict never sets Verified. A CPU test workload is the default and can never become a production verdict.