Repository navigation
Verified Compute R3-1: signed receipts with a verifier nonce (Ed25519) #7332
Copy link
Copy link
Closed
Description
Epic: #6655 (Verified Compute), Round 3, item R3-1. Owner decision 2026-10-07 (translated): "sign the receipts -- that is Round 3".
Problem
t27c silicon writes .trinity/receipts/*.json (R2-1, #7044) and t27c run-record judges them (R2-4, #7130). Nothing on a receipt proves who wrote it: any JSON with the six fields of specs/verified/receipt.t27 is judged exactly like a real one, and a genuine PASS receipt can be replayed for a later run because the receipt carries no verifier-chosen nonce.
Competitor comparison (research 2026-10-07)
| System | What the receipt binds | Authorship / freshness |
|---|---|---|
| Phala / NVIDIA CC (TEE) | request hash + response hash + attested workload | hardware-signed quote, fresh nonce per request |
| EigenAI | model id, container digest, GPU type, driver, decoding params | operator stake; challenge by re-execution |
| Gonka | stored completion + top-k logprobs, model version on chain | chain transaction from the host key |
| zkML (DeepProve, EZKL) | the proof itself | proof is unforgeable; ~1000-100000x overhead |
| t27 today | device, full IDCODE, verdict, seal hash, seeds, toolchain | none -- unsigned file, no nonce |
Every serious competitor binds its receipt to an identity and most to a fresh challenge. t27's receipt has the stronger content (bit-exact integer verdict, toolchain matched to the seal, multi-placement agreement) and the weakest envelope.
Requirement
- Contract half (this issue's first PR, pure
.t27):specs/verified/signed_receipt.t27-- signature scheme (Ed25519, RFC 8032), the canonical signed message (domain line + fields in fixed order + nonce), the judgment order (unsigned -> key not registered -> bad signature -> nonce missing -> nonce not the challenge), the authentication levels (NONE / AUTHOR / FRESH), the key-location rule (private key never inside the repository; public keys under.trinity/keys/), and the honest ceiling: a host signature proves authorship and integrity, never that a given die computed the result. - Tool half (foreign,
owner-approved-foreign):t27c siliconsigns every receipt when a key is configured (--nonceaccepted),t27c receipt-key initcreates the pair (private key outside the tree, public key committed),t27c run-recordreports the run's authentication level next to its citability.
Out of scope (named next items)
- R3-2: device-rooted identity -- read the 7-series 57-bit DNA_PORT live and bind it into the signed message (a host key cannot tell two dies apart; an IDCODE names the part, not the die).
- R3-3: independence across boards/operators -- three seeds on one board catch place-and-route faults, not a dishonest operator.
Acceptance
- contract spec on master: zig tests pass on the lab, hand mutants killed, sealed on the lab
- tool half on master: signed receipt verifies, a one-byte edit fails, a receipt replayed against a new nonce is judged NOT FRESH, a key path inside the repo is refused
- existing unsigned receipts (R2-5 capstone) stay citable and are reported at level NONE -- no retroactive claim
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
gHashTag commentedon Oct 7, 2026
Full verifiable-compute competitor comparison behind R3-1 (research 2026-10-07; star counts from the GitHub API that day; overhead figures are vendor claims unless marked).
Verifiable / decentralized AI compute: competitor scan for t27 Verified Compute (2026-10-07)
Scope: public sources only, read-only. Star counts are from the GitHub API on 2026-10-07. "Claimed" means the vendor's own number.
1. Competitors, one paragraph each
Gonka (gonka.ai, gonka-ai/gonka 641 stars, pushed today). Verifies LLM inference plus "Proof of Compute" sprints. PoC v2 went live in v0.2.9 (about Feb 2026), and multi-model PoC came in v0.2.12 (2026-04-27). How: the executor stores the output tokens and top-k logprobs. A validator picked by PoC weight replays the "enforced tokens" through its own model and compares logprobs (
CompareLogits). Only 1-10% of inferences are checked. Determinism: none, because a tolerance is used. The open PR #1448 (still open on 2026-09-24) adds a bit-exact replay of the sampling step only: a chain-bound SHA-256 seed and a 2^16 integer-weight pipeline. It does not recompute the forward pass, because "batch composition alone flips 0-8% of honest positions". Verdicts are honest/fraud/inconclusive. Receipt: a stored completion fixed by a hash, with the model pinned to hf_repo@hf_commit on chain. Slashing: 80% of weight must be backed by collateral; default slashes are 20% for INVALID and 10% for downtime, with SPRT downtime detection. Attestation: none. Live weaknesses: PR #1873 (a forged out-of-vocab token passed validation) and issue #1915 (a PoC "bait node" exploit, about 2026-10-05). Scale: about 14k H100-equivalents (Feb 2026). (docs, PR #1448, PR #1873, #1915, collateral)Gensyn: Verde + RepOps + Judge. Verifies ML training, fine-tuning and inference by refereed delegation. When two providers disagree, a two-level bisection game finds the first divergent operator, and the referee re-executes only that one operator. Determinism: RepOps fixes the reduction order in CUDA kernels to get bitwise reproducibility across GPUs. Claimed overhead: under 30% on large matmul, about 60% on Llama-3.1-1B (A100). Total cost is at least 2x because the work is replicated. Receipt: hash commitments over the computation graph. Security: sound if at least one provider is honest. Judge has been live since 2025-08-27. Mainnet (OP-stack L2) launched 2026-04-22 and $AI TGE was 2026-04-29. A third-party review (about Aug 2026) says Verde-secured training compute is not yet earning revenue. Attestation: none. (arXiv 2502.19405, blog, Judge)
Prime Intellect: TOPLOC. Verifies that a provider used the right model, prompt and precision. How: a locality-sensitive hash over the top-k last-hidden-state values, encoded as a polynomial (258 B per 32 tokens). The verifier re-runs a prefill, which is claimed to be up to 100x faster than generation. Determinism: tolerant by design; it checks exponent and mantissa differences, so it is robust across GPUs, tensor-parallel layouts and kernels. TOPLOC v2 (SYNTHETIC-2) adds pipeline-parallel stage replay and sampling checks, and ejects the first faulty node. It was used for INTELLECT-2 rollouts. The INTELLECT-3 report (Dec 2025) does not mention TOPLOC. No slashing or TEE is published. toploc has 61 stars; prime-rl has 2.1k. (arXiv 2501.16007, SYNTHETIC-2, INTELLECT-3)
Hyperbolic: PoSP. A game-theoretic sampled audit with a pure-strategy Nash equilibrium (arXiv 2405.00295 v3, 2025-05-31). Commitments are compared, and arbitration plus slashing follows a mismatch. Claimed: under 1% overhead, 100-1000x cheaper than zkML. Determinism: not addressed. Status: whether it runs in production is disputed in 2026 sources; Hyperbolic now mostly sells a GPU marketplace. (paper)
Nous Psyche. Decentralized training over DisTrO with a Solana coordinator. Each client commits a SHA-256 of its results, witnesses report liveness in Bloom filters, and a verifier role duplicates work. Nous says practical verification is "an open problem" and accepts results "within an expected range". Hermes 4.3 was trained fully on Psyche (Dec 2025). No TEE and no ZK. Repos: nousnet 971 stars, DisTrO 1.06k. (docs, Nous)
Bittensor. Validators score miners subjectively, and Yuma consensus is a stake-weighted, clipped aggregate of those scores. Commit-reveal v3 (drand time-lock) fights weight copying. Nothing checks that the computation itself was correct; Bittensor verifies agreement on quality. 129 subnets (Aug 2026). The opentensor/bittensor repo now redirects to RaoFoundation/bittensor and shows as archived (2026-07); I have not checked why. (weight copying)
zkML. Determinism comes from fixed-point quantization inside the circuit. The proof is the receipt: succinct, publicly verifiable, and needing no trust in the hardware.
(DeepProve, ZKTorch, Proof of Tech)
TEE (H100/B200 confidential computing).
x-receipt-id, then/v1/aci/receipts/{id}) that binds the request and response hashes to the attested workload keyset. A fresh nonce prevents replay. Overhead is under 5% by Phala's own figure, but independent studies measure 20-30% latency and up to 70% throughput loss when models are swapped. Dstack has 555 stars.(Phala verify, arXiv 2505.16501, nilAI)
EigenAI (EigenCloud): the closest competitor to t27's thesis. Bit-exact GPU inference: 100% reproducible over 10k runs on a single GPU SKU, 0% across A100 and H100, claimed overhead about 1.8%. It uses llama.cpp, custom fixed-order kernels and pinned drivers. Results are posted encrypted to EigenDA; any verifier can re-execute in a challenge window, and a byte mismatch slashes restaked ETH. The request carries the model id, container digest, GPU architecture tag, driver/toolkit version, decoding policy and prompt commitment. Disputes are re-run in a TEE. Mainnet alpha launched about Jan 2026. (arXiv 2602.00182, blog)
Ritual. Infernet is a set of oracles. The Symphony chain's "execute once, verify many" model has a staked executor return a TEE attestation and/or a ZK proof, and validators verify that proof instead of re-executing. Its docs say parts of Symphony are not yet released. (docs)
Academic work on determinism.
2. Comparison table
3. Gaps, phrased as candidate requirements (ranked)
4. Where t27 is genuinely ahead (with caveats)
verified: signed receipts with a verifier nonce -- the R3-1 contract …
verified: t27c signs receipts and run-record judges their level -- R3…
t27c: resolve .. under a missing directory before the inside-repo che…
verified: t27c signs receipts and run-record judges their level -- R3…
verified: the signed message, hex and key-id shape live in signed_rec…
seal: re-seal TriSha256 after the FIPS 180-4 rewrite (Refs #7332)
gHashTag commentedon Oct 7, 2026
Progress, 2026-10-07 09:30Z: moving R3-1 logic from hand Rust into .t27.
signed_receipt.t27as generated code:bootstrap/gen/rust/verified/signed_receipt.rs, checked by a drift test. Message assembly, key-id, the nonce check and hex now live in the spec, and the hand mirrors are deleted.run_record.t27the same way (+33/-31 hand lines).sha256.t27on master was not SHA-256 (single-rotation sigmas, non-wrapping sums). This PR ports the FIPS 180-4 rewrite from 90f0a81 and re-seals it.sha512.t27.final,[x] ** Nrepeat, slicing,&vs&mut), anded25519.t27with the RFC 8032 vectors.sha2anded25519-dalek.gen-rust: byte parameters only in a file that slices (Refs #7332)
seals: gen_hash_rust for the 119 specs whose Rust output the slice fi…
seals: gen_hash_rust for the 8 specs whose Rust output the keyword fi…
seals: gen_hash_rust for the 26 specs whose Rust output the repeat fi…
verified: t27c runs receipt decisions, message and hex generated from…
verified: SHA-512 (FIPS 180-4) as a t27 spec, step toward dropping ed…
1 remaining item
specs: sha256 computes SHA-256 -- FIPS 180-4 sigmas, wrapping sums (R…
verified: Ed25519 (RFC 8032) as a t27 spec, on the SHA-512 spec (Refs #…
gen-rust: escape reserved keywords and the callee name at a call (Refs …
seals: gen_hash_rust for the 8 specs whose Rust output the keyword fi…
gen-rust: escape reserved keywords and the callee name at a call (Refs …
seals: gen_hash_rust for the 8 specs whose Rust output the keyword fi…
gen-rust: lower the array repeat [v] ** n to [v; n] (Refs #7332)
seals: gen_hash_rust for the 36 seals whose Rust output the repeat fi…
gen-rust: lower the array repeat [v] ** n to [v; n] (Refs #7332) (#7468)
seals: gen_hash_rust for the 123 seals whose Rust output the slice fi…
gen-rust: slices, byte-slice parameters, and &mut for pointer paramet…
verified: receipts sign and verify with the .t27 crypto, not ed25519-…
t27c hashes with specs/tri/crypto/sha256.t27, and build.rs drops sha2…
verified: corpus receipts sign with the .t27 ed25519 too (Refs #7332)
verified: t27c signs, verifies and hashes with the .t27 crypto; ed255…