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.