{
  "schema_version": "1.2",
  "url": "https://trustbutveri.fyi/explorer/?mechanisms=M-0004,M-0007&implementations=M-0004:I-0014",
  "data_generated": "2026-10-08",
  "definitions": {
    "methodology": "https://trustbutveri.fyi/about/methodology/",
    "readiness": "https://trustbutveri.fyi/about/readiness/",
    "filters": [
      {
        "id": "prover",
        "label": "Prover",
        "question": "How far can the party being checked be trusted?",
        "options": [
          {
            "value": "cooperative",
            "label": "Cooperative"
          },
          {
            "value": "semi-trusted",
            "label": "Semi-trusted"
          },
          {
            "value": "adversarial",
            "label": "Adversarial"
          }
        ],
        "rule": "Keeps mechanisms whose threat model holds against at least this prover. Adversarial is the strongest assumption.",
        "about": "The prover is the party being checked. Semi-trusted designs rely on part of its stack: usually the chip vendor's hardware root of trust, its firmware or counters, or its supply-chain records. Adversarial designs aim to hold even if it cheats wherever the checks allow, within their stated assumptions."
      },
      {
        "id": "onsite",
        "label": "Verifier devices on site",
        "question": "May the verifier install its own hardware at the prover's sites?",
        "options": [
          {
            "value": "no",
            "label": "Not allowed"
          }
        ],
        "rule": "\"Not allowed\" removes mechanisms that need a retrofit device, such as a network tap or a sealed sensor.",
        "about": "Some mechanisms need a device the verifier owns or trusts at the prover's facility, such as a network tap, a bandwidth limiter or a sealed sensor. Choose Not allowed when the setting rules that out. Inspectors are not covered."
      },
      {
        "id": "coop",
        "label": "Prover cooperation",
        "question": "How much must the prover take part?",
        "options": [
          {
            "value": "partial",
            "label": "Partial at most"
          },
          {
            "value": "none",
            "label": "Not required"
          }
        ],
        "rule": "\"Partial at most\" removes mechanisms that need the prover's active participation. \"Not required\" keeps only those that work without it.",
        "about": "Required: the prover takes part, for example by logging requests, producing proofs or opening records. Partial: some access, such as installing a device. Not required: works from outside, such as satellite imagery."
      },
      {
        "id": "chips",
        "label": "Chips",
        "question": "May the proposal depend on new chip designs?",
        "options": [
          {
            "value": "existing",
            "label": "Existing chips only"
          }
        ],
        "rule": "\"Existing chips only\" removes mechanisms that need changes to future chip designs.",
        "about": "New chip features take years to reach a deployed fleet and cover only chips made after they ship. Mechanisms that use shipping features, such as trusted execution environments or performance counters, stay."
      },
      {
        "id": "ready",
        "label": "Minimum readiness",
        "question": "How mature must each mechanism be?",
        "options": [
          {
            "value": "R1",
            "label": "R1 Proposed"
          },
          {
            "value": "R2",
            "label": "R2 Demonstrated"
          },
          {
            "value": "R3",
            "label": "R3 In production"
          },
          {
            "value": "R4",
            "label": "R4 Deployment-ready"
          }
        ],
        "rule": "Keeps mechanisms whose readiness level is at least this one.",
        "about": "A level describes the public evidence for a mechanism's stated use, not its cost or feasibility. R3 can still have open critical flaws."
      },
      {
        "id": "tested",
        "label": "Attack testing",
        "question": "How hard has each mechanism been attacked in public?",
        "options": [
          {
            "value": "analysis",
            "label": "Published analysis"
          },
          {
            "value": "red-teamed",
            "label": "Red-teamed"
          },
          {
            "value": "independent-red-team",
            "label": "Independent red-team"
          }
        ],
        "rule": "Keeps mechanisms whose strongest published attack testing is at least this.",
        "about": "The strongest published attempt to break the mechanism for its verification use: a security analysis, red-teaming by its developers or collaborators, or a red team independent of them."
      },
      {
        "id": "hide",
        "label": "Keep hidden from the verifier",
        "question": "What must the verifier never see?",
        "options": [
          {
            "value": "weights",
            "label": "Model weights"
          },
          {
            "value": "io",
            "label": "Inputs and outputs"
          },
          {
            "value": "training",
            "label": "Training data"
          }
        ],
        "rule": "Removes mechanisms that show the asset to the verifier. Conditional or unspecified exposure stays with a note and needs checking against the privacy requirement.",
        "about": "Model weights: the checked model's parameters. Inputs and outputs: the requests a deployed model serves and its responses. Training data: what a model was trained on. Each mechanism's exposure is the editors' reading of its record: shown, depends on the design (kept, with a note), hidden, not involved, or unspecified for a selected implementation. Code and configuration are not covered yet."
      }
    ],
    "exposure": "For model weights, inputs and outputs, and training data. This is the editors' reading of each mechanism's record (its threat model, how it works and its limitations), not a field of the record. Shown: the verifier sees it. Depends: on the design or variant, or the verifier sees only samples. Hidden: the verifier sees only commitments, hashes, proofs or results. Not involved: the record does not handle it. Unspecified: the selected implementation has no asset-specific assessment here.",
    "claim_status": {
      "addressed": "A mechanism in the proposal is aimed at this claim and is not excluded by the filters.",
      "partly-addressed": "Only supporting mechanisms, or mechanisms aimed at it that the filters exclude.",
      "unaddressed": "No mechanism in the proposal addresses this claim."
    },
    "finding_scope": "Evidence scope describes where a finding was demonstrated; it does not establish applicability to every implementation in the mechanism family.",
    "claim_finding_scope": "open_critical_findings names active findings on the assessed records; open_critical_context names conditional family findings whose implementation applicability is unassessed.",
    "legacy_status": "The status field retains covered/partial/none for compatibility. It names claim links, never successful verification. Use claim_status and status_label for presentation."
  },
  "filters": {
    "prover": "",
    "onsite": "",
    "coop": "",
    "chips": "",
    "ready": "",
    "tested": "",
    "hide": []
  },
  "mechanisms_passing_filters": 25,
  "claims": [],
  "mechanisms": [
    {
      "id": "M-0004",
      "title": "Zero-knowledge proofs of inference",
      "url": "https://trustbutveri.fyi/mechanisms/zk-proofs-of-inference/",
      "assessment_record": {
        "id": "I-0014",
        "title": "EZKL",
        "url": "https://trustbutveri.fyi/implementations/ezkl/"
      },
      "selected_implementation": {
        "id": "I-0014",
        "title": "EZKL",
        "url": "https://trustbutveri.fyi/implementations/ezkl/"
      },
      "readiness": {
        "level": "R2",
        "scope": "proving a language model's output follows from committed weights, against a cheating prover",
        "confidence": "medium",
        "evidence": [
          "S-1806",
          "S-0024",
          "S-0070"
        ]
      },
      "assessed_properties": {
        "threat_model": "adversarial",
        "hardware_requirement": "none",
        "prover_cooperation": "required",
        "adversarial_evaluation": "independent-red-team"
      },
      "claims": [],
      "exposure": {
        "weights": "unknown",
        "io": "unknown",
        "training": "unknown",
        "note": "This Explorer has no asset-specific exposure assessment for this implementation. Check its source and deployment assumptions.",
        "sources": []
      },
      "family_finding_context": [
        {
          "n": 1,
          "title": "The proof covers a fixed-point approximation, not the floating-point model",
          "kind": "open-question",
          "severity": "significant",
          "status": "open",
          "evidence_scope": null,
          "scope_note": null,
          "related_finding": null,
          "description": "Current ZK inference systems prove a quantised version of the network. zkLLM scales values by 2^16 and reports small perplexity changes. Attestable reports quantising matrix multiplications to 8-bit integers while proving other operations in floating point. A verifier therefore learns about the proof-friendly variant, and must separately accept that this variant is the declared model. Trail of Bits built a ResNet-18 backdoor that is dormant in the full-precision model and active after ezkl's quantisation; whether it persists through proving was left for further investigation. A verification system design calls floating-point emulation in ZKPs an open problem.",
          "response": null,
          "sources": [
            "S-0023",
            "S-1101",
            "S-0070",
            "S-0018"
          ],
          "record": "M-0004",
          "represented_by": []
        },
        {
          "n": 2,
          "title": "A proof speaks only for the computations that were proven",
          "kind": "theoretical-argument",
          "severity": "significant",
          "status": "open",
          "evidence_scope": null,
          "scope_note": null,
          "related_finding": null,
          "description": "Attestable writes that \"a proof of some computation is not a proof of all computation\", and that a proof cannot discover a datacenter that was never declared. Proofs of inference do not by themselves show that no other workload ran on the same or other hardware.",
          "response": null,
          "sources": [
            "S-1102"
          ],
          "helps": [
            {
              "by": "M-0007",
              "how": "The record names proof-of-work accounting as the kind of compute accounting needed to show that proven inference was the only work done."
            }
          ],
          "record": "M-0004",
          "represented_by": []
        },
        {
          "n": 3,
          "title": "The model architecture is disclosed",
          "kind": "theoretical-argument",
          "severity": "minor",
          "status": "open",
          "evidence_scope": null,
          "scope_note": null,
          "related_finding": null,
          "description": "ZKML \"requires that the model architecture (but not weights) is revealed\", and zkLLM assumes a publicly known model structure. Architecture can be commercially sensitive.",
          "response": null,
          "sources": [
            "S-0021",
            "S-0023"
          ],
          "record": "M-0004",
          "represented_by": []
        },
        {
          "n": 4,
          "title": "Proofs do not bind computational effort (Hollow-LLM)",
          "kind": "demonstrated-attack",
          "severity": "significant",
          "status": "open",
          "evidence_scope": null,
          "scope_note": null,
          "related_finding": null,
          "description": "Researchers at the University of Southern California show that a proof of inference certifies that an output is consistent with committed weights under the declared architecture, but not how much computation produced it. In their Hollow-LLM attack, a provider keeps the declared architecture and parameter count but commits to \"ghost weights\". Some layers pass their inputs through unchanged, and wide layers carry the signal in a small subspace, so a much smaller inner model does the real work. The ghost weights satisfy the verification circuit and yield valid proofs.\nThe authors ran the attack with the proof procedure of zkGPT, a separate ZK inference system, on a 6-layer, 512-dimensional transformer declared as up to 12 layers and 1,024 dimensions. Outputs were identical to the inner model's, and serving cost stayed at the inner model's level. An honest model of the declared size cost 2.4 times as much to prefill and 3.1 times as much to decode. Proving cost still grew with the declared architecture.\nThe authors note that results may be served before any proof, with the provider building the witness only when a call is selected for audit. They describe their constructions as \"compatible with state-of-the-art zkLLM pipelines\", and state that the attack does not imply a flaw in the proof system itself. They propose challenge-based audits and ablation tests, which raise the cost of cheating but give no guarantee.",
          "response": null,
          "sources": [
            "S-1112"
          ],
          "record": "M-0004",
          "represented_by": []
        }
      ],
      "filter_issues": []
    },
    {
      "id": "M-0007",
      "title": "Proofs of useful work for capacity accounting",
      "url": "https://trustbutveri.fyi/mechanisms/proofs-of-useful-work/",
      "assessment_record": {
        "id": "M-0007",
        "title": "Proofs of useful work for capacity accounting",
        "url": "https://trustbutveri.fyi/mechanisms/proofs-of-useful-work/"
      },
      "selected_implementation": null,
      "readiness": {
        "level": "R1",
        "scope": "bounding the spare capacity of declared hardware that could run training",
        "confidence": "low",
        "evidence": [
          "S-1102",
          "S-0005",
          "S-1609",
          "S-1105",
          "S-1107"
        ]
      },
      "assessed_properties": {
        "threat_model": "adversarial",
        "hardware_requirement": "none",
        "prover_cooperation": "required",
        "adversarial_evaluation": "analysis"
      },
      "claims": [],
      "exposure": {
        "weights": "partial",
        "io": "partial",
        "training": "none",
        "note": "Checking a sampled tile of a matrix multiplication reveals that tile, which may hold model or input data; the authors suggest a zero-knowledge proof when the matrices must stay private."
      },
      "family_finding_context": [],
      "filter_issues": []
    }
  ],
  "strengths": {
    "covered": [],
    "production": [],
    "adversarial": [
      "M-0004",
      "M-0007"
    ],
    "noNewHardware": [
      "M-0004",
      "M-0007"
    ],
    "mitigated": [
      {
        "mech": "M-0004",
        "n": 1,
        "title": "Circuit and contract bugs allowed forged proofs",
        "kind": "demonstrated-attack",
        "severity": "critical",
        "status": "mitigated",
        "evidence_scope": null,
        "scope_note": null,
        "related_finding": null,
        "description": "Trail of Bits found three high-severity soundness bugs in EZKL's circuits: an unsound shuffle argument for min, max and top-k, a decomposition that did not fix the sign of zero, and missing range checks for division and reciprocals. Each would let a malicious prover convince a verifier of incorrect calculations, for example that [1,1,1] is a valid permutation of [1,2,3]. It also found four ways to bypass the data attestation and KZG commitments in EZKL's smart contracts. All were resolved at the March 2025 fix review. Some fixes were first made in private repositories, to allow disclosure to projects using the contracts in production.",
        "response": null,
        "sources": [
          "S-0070"
        ],
        "record": "I-0014"
      }
    ],
    "notCounted": []
  },
  "properties": {
    "covered": [],
    "production": [],
    "adversarial": [
      "M-0004",
      "M-0007"
    ],
    "noNewHardware": [
      "M-0004",
      "M-0007"
    ],
    "mitigated": [
      {
        "mech": "M-0004",
        "n": 1,
        "title": "Circuit and contract bugs allowed forged proofs",
        "kind": "demonstrated-attack",
        "severity": "critical",
        "status": "mitigated",
        "evidence_scope": null,
        "scope_note": null,
        "related_finding": null,
        "description": "Trail of Bits found three high-severity soundness bugs in EZKL's circuits: an unsound shuffle argument for min, max and top-k, a decomposition that did not fix the sign of zero, and missing range checks for division and reciprocals. Each would let a malicious prover convince a verifier of incorrect calculations, for example that [1,1,1] is a valid permutation of [1,2,3]. It also found four ways to bypass the data attestation and KZG commitments in EZKL's smart contracts. All were resolved at the March 2025 fix review. Some fixes were first made in private repositories, to allow disclosure to projects using the contracts in production.",
        "response": null,
        "sources": [
          "S-0070"
        ],
        "record": "I-0014"
      }
    ],
    "notCounted": []
  },
  "attack_testing": [
    {
      "id": "M-0004",
      "record": "I-0014",
      "evaluation": "independent-red-team",
      "in_setting": true
    },
    {
      "id": "M-0007",
      "record": "M-0007",
      "evaluation": "analysis",
      "in_setting": true
    }
  ],
  "selected_implementations": {
    "M-0004": "I-0014"
  },
  "weaknesses": {
    "gaps": [],
    "excluded": [],
    "unlinked": [],
    "critical": [],
    "significant": [
      {
        "mech": "M-0004",
        "n": 2,
        "title": "Quantization can activate a backdoor dormant in the full-precision model",
        "kind": "demonstrated-attack",
        "severity": "significant",
        "status": "open",
        "evidence_scope": null,
        "scope_note": null,
        "related_finding": null,
        "description": "EZKL quantizes values to represent them in a finite field. Trail of Bits built a ResNet-18 whose backdoor is dormant at full precision and active after EZKL's quantization. Larger models and smaller quantization scales make the attack easier. Whether the backdoor persists through the witness and proof stages was left for further investigation. The fix was documentation of the risk.",
        "response": null,
        "sources": [
          "S-0070"
        ],
        "record": "I-0014"
      },
      {
        "mech": "M-0007",
        "n": 1,
        "title": "Proves that work was done, not that no capacity remains",
        "kind": "theoretical-argument",
        "severity": "significant",
        "status": "open",
        "evidence_scope": null,
        "scope_note": null,
        "related_finding": null,
        "description": "Proof-of-work accounting bounds unmonitored compute only relative to an estimate of what the actor has. Attestable states that the verifier \"needs a credible estimate of the compute available\" to the actor, and that a proof \"cannot discover a datacenter that was never declared\".",
        "response": null,
        "sources": [
          "S-1102"
        ],
        "helps": [
          {
            "by": "M-0019",
            "how": "A registry of chips is one basis for the estimate of available compute that the flaw's source says the verifier needs."
          },
          {
            "by": "M-0020",
            "how": "Looks for data centres that were never declared, which a proof cannot discover."
          }
        ]
      },
      {
        "mech": "M-0007",
        "n": 2,
        "title": "Security rests on new hardness assumptions",
        "kind": "open-question",
        "severity": "significant",
        "status": "open",
        "evidence_scope": null,
        "scope_note": null,
        "related_finding": null,
        "description": "Komargodski and Weinstein base security on hardness assumptions about batches of low-rank random linear equations, and list PoUW \"from more standard or well-studied assumptions\" as an open problem. Pearl's floating-point variant introduces a further \"quantized-subspace hardness\" assumption.",
        "response": null,
        "sources": [
          "S-1609",
          "S-1105"
        ]
      },
      {
        "mech": "M-0007",
        "n": 3,
        "title": "Known shortcuts let a miner claim somewhat more work than it did",
        "kind": "theoretical-argument",
        "severity": "significant",
        "status": "open",
        "evidence_scope": null,
        "scope_note": null,
        "related_finding": null,
        "description": "Pearl's specification lists known mining speedups: crafted inputs, precision shortcuts, seed grinding, work reuse, and faster kernels or hardware. A policy check caps the summands a miner may skip at one-sixteenth of those in a tile. For capacity bounding, any gap between work proven and work possible leaves spare capacity.",
        "response": null,
        "sources": [
          "S-1105"
        ]
      }
    ],
    "criticalMechanisms": [],
    "significantMechanisms": [
      "M-0004",
      "M-0007"
    ],
    "familyContext": [
      {
        "id": "M-0004",
        "implementation": "I-0014",
        "flaws": [
          {
            "n": 1,
            "title": "The proof covers a fixed-point approximation, not the floating-point model",
            "kind": "open-question",
            "severity": "significant",
            "status": "open",
            "evidence_scope": null,
            "scope_note": null,
            "related_finding": null,
            "description": "Current ZK inference systems prove a quantised version of the network. zkLLM scales values by 2^16 and reports small perplexity changes. Attestable reports quantising matrix multiplications to 8-bit integers while proving other operations in floating point. A verifier therefore learns about the proof-friendly variant, and must separately accept that this variant is the declared model. Trail of Bits built a ResNet-18 backdoor that is dormant in the full-precision model and active after ezkl's quantisation; whether it persists through proving was left for further investigation. A verification system design calls floating-point emulation in ZKPs an open problem.",
            "response": null,
            "sources": [
              "S-0023",
              "S-1101",
              "S-0070",
              "S-0018"
            ],
            "record": "M-0004",
            "represented_by": []
          },
          {
            "n": 2,
            "title": "A proof speaks only for the computations that were proven",
            "kind": "theoretical-argument",
            "severity": "significant",
            "status": "open",
            "evidence_scope": null,
            "scope_note": null,
            "related_finding": null,
            "description": "Attestable writes that \"a proof of some computation is not a proof of all computation\", and that a proof cannot discover a datacenter that was never declared. Proofs of inference do not by themselves show that no other workload ran on the same or other hardware.",
            "response": null,
            "sources": [
              "S-1102"
            ],
            "helps": [
              {
                "by": "M-0007",
                "how": "The record names proof-of-work accounting as the kind of compute accounting needed to show that proven inference was the only work done."
              }
            ],
            "record": "M-0004",
            "represented_by": []
          },
          {
            "n": 3,
            "title": "The model architecture is disclosed",
            "kind": "theoretical-argument",
            "severity": "minor",
            "status": "open",
            "evidence_scope": null,
            "scope_note": null,
            "related_finding": null,
            "description": "ZKML \"requires that the model architecture (but not weights) is revealed\", and zkLLM assumes a publicly known model structure. Architecture can be commercially sensitive.",
            "response": null,
            "sources": [
              "S-0021",
              "S-0023"
            ],
            "record": "M-0004",
            "represented_by": []
          },
          {
            "n": 4,
            "title": "Proofs do not bind computational effort (Hollow-LLM)",
            "kind": "demonstrated-attack",
            "severity": "significant",
            "status": "open",
            "evidence_scope": null,
            "scope_note": null,
            "related_finding": null,
            "description": "Researchers at the University of Southern California show that a proof of inference certifies that an output is consistent with committed weights under the declared architecture, but not how much computation produced it. In their Hollow-LLM attack, a provider keeps the declared architecture and parameter count but commits to \"ghost weights\". Some layers pass their inputs through unchanged, and wide layers carry the signal in a small subspace, so a much smaller inner model does the real work. The ghost weights satisfy the verification circuit and yield valid proofs.\nThe authors ran the attack with the proof procedure of zkGPT, a separate ZK inference system, on a 6-layer, 512-dimensional transformer declared as up to 12 layers and 1,024 dimensions. Outputs were identical to the inner model's, and serving cost stayed at the inner model's level. An honest model of the declared size cost 2.4 times as much to prefill and 3.1 times as much to decode. Proving cost still grew with the declared architecture.\nThe authors note that results may be served before any proof, with the provider building the witness only when a call is selected for audit. They describe their constructions as \"compatible with state-of-the-art zkLLM pipelines\", and state that the attack does not imply a flaw in the proof system itself. They propose challenge-based audits and ablation tests, which raise the cost of cheating but give no guarantee.",
            "response": null,
            "sources": [
              "S-1112"
            ],
            "record": "M-0004",
            "represented_by": []
          }
        ]
      }
    ],
    "minor": 0,
    "minorFindings": [],
    "minorBy": [],
    "notDemonstrated": [
      "M-0007"
    ],
    "newChip": []
  },
  "findings": [
    {
      "mech": "M-0004",
      "record": "I-0014",
      "n": 1,
      "title": "Circuit and contract bugs allowed forged proofs",
      "kind": "demonstrated-attack",
      "severity": "critical",
      "status": "mitigated",
      "evidence_scope": null,
      "scope_note": null,
      "related_finding": null,
      "description": "Trail of Bits found three high-severity soundness bugs in EZKL's circuits: an unsound shuffle argument for min, max and top-k, a decomposition that did not fix the sign of zero, and missing range checks for division and reciprocals. Each would let a malicious prover convince a verifier of incorrect calculations, for example that [1,1,1] is a valid permutation of [1,2,3]. It also found four ways to bypass the data attestation and KZG commitments in EZKL's smart contracts. All were resolved at the March 2025 fix review. Some fixes were first made in private repositories, to allow disclosure to projects using the contracts in production.",
      "response": null,
      "sources": [
        "S-0070"
      ]
    },
    {
      "mech": "M-0004",
      "record": "I-0014",
      "n": 2,
      "title": "Quantization can activate a backdoor dormant in the full-precision model",
      "kind": "demonstrated-attack",
      "severity": "significant",
      "status": "open",
      "evidence_scope": null,
      "scope_note": null,
      "related_finding": null,
      "description": "EZKL quantizes values to represent them in a finite field. Trail of Bits built a ResNet-18 whose backdoor is dormant at full precision and active after EZKL's quantization. Larger models and smaller quantization scales make the attack easier. Whether the backdoor persists through the witness and proof stages was left for further investigation. The fix was documentation of the risk.",
      "response": null,
      "sources": [
        "S-0070"
      ]
    },
    {
      "mech": "M-0007",
      "record": "M-0007",
      "n": 1,
      "title": "Proves that work was done, not that no capacity remains",
      "kind": "theoretical-argument",
      "severity": "significant",
      "status": "open",
      "evidence_scope": null,
      "scope_note": null,
      "related_finding": null,
      "description": "Proof-of-work accounting bounds unmonitored compute only relative to an estimate of what the actor has. Attestable states that the verifier \"needs a credible estimate of the compute available\" to the actor, and that a proof \"cannot discover a datacenter that was never declared\".",
      "response": null,
      "sources": [
        "S-1102"
      ],
      "helps": [
        {
          "by": "M-0019",
          "how": "A registry of chips is one basis for the estimate of available compute that the flaw's source says the verifier needs."
        },
        {
          "by": "M-0020",
          "how": "Looks for data centres that were never declared, which a proof cannot discover."
        }
      ]
    },
    {
      "mech": "M-0007",
      "record": "M-0007",
      "n": 2,
      "title": "Security rests on new hardness assumptions",
      "kind": "open-question",
      "severity": "significant",
      "status": "open",
      "evidence_scope": null,
      "scope_note": null,
      "related_finding": null,
      "description": "Komargodski and Weinstein base security on hardness assumptions about batches of low-rank random linear equations, and list PoUW \"from more standard or well-studied assumptions\" as an open problem. Pearl's floating-point variant introduces a further \"quantized-subspace hardness\" assumption.",
      "response": null,
      "sources": [
        "S-1609",
        "S-1105"
      ]
    },
    {
      "mech": "M-0007",
      "record": "M-0007",
      "n": 3,
      "title": "Known shortcuts let a miner claim somewhat more work than it did",
      "kind": "theoretical-argument",
      "severity": "significant",
      "status": "open",
      "evidence_scope": null,
      "scope_note": null,
      "related_finding": null,
      "description": "Pearl's specification lists known mining speedups: crafted inputs, precision shortcuts, seed grinding, work reuse, and faster kernels or hardware. A policy check caps the summands a miner may skip at one-sixteenth of those in a tile. For capacity bounding, any gap between work proven and work possible leaves spare capacity.",
      "response": null,
      "sources": [
        "S-1105"
      ]
    }
  ],
  "possible_additions": [
    {
      "id": "M-0019",
      "title": "Chip registries and manufacturing records",
      "url": "https://trustbutveri.fyi/mechanisms/chip-registries-and-manufacturing-records/",
      "readiness": "R1",
      "fits_filters": true,
      "filter_issues": [],
      "reasons": [
        {
          "kind": "flaw",
          "mech": "M-0007",
          "n": 1,
          "title": "Proves that work was done, not that no capacity remains",
          "severity": "significant",
          "how": "A registry of chips is one basis for the estimate of available compute that the flaw's source says the verifier needs."
        }
      ]
    },
    {
      "id": "M-0020",
      "title": "Remote detection of data centres",
      "url": "https://trustbutveri.fyi/mechanisms/remote-detection-of-data-centres/",
      "readiness": "R1",
      "fits_filters": true,
      "filter_issues": [],
      "reasons": [
        {
          "kind": "flaw",
          "mech": "M-0007",
          "n": 1,
          "title": "Proves that work was done, not that no capacity remains",
          "severity": "significant",
          "how": "Looks for data centres that were never declared, which a proof cannot discover."
        }
      ]
    }
  ],
  "goal": null,
  "design": null,
  "dependencies": {
    "prerequisites": [],
    "shared": [],
    "blockers": [
      {
        "mech": "M-0004",
        "n": 1,
        "text": "Proving cost grows steeply with model size: a 250,000-parameter nanoGPT took 2,781 s to prove and needed a 219 GB proving key, which South et al. name as the main limit on model size.",
        "theme": "performance-compatibility",
        "blocked_by": null,
        "sources": [
          "S-0024"
        ],
        "inProposal": null
      },
      {
        "mech": "M-0007",
        "n": 1,
        "text": "Bounding spare capacity needs a credible estimate of the compute available to the actor, including third-party access.",
        "theme": "capacity-bounds",
        "blocked_by": null,
        "sources": [
          "S-1102"
        ],
        "inProposal": null
      },
      {
        "mech": "M-0007",
        "n": 2,
        "text": "Proofs of work cannot find facilities that were never declared.",
        "theme": "coverage-hidden-compute",
        "blocked_by": null,
        "sources": [
          "S-1102"
        ],
        "inProposal": null
      },
      {
        "mech": "M-0007",
        "n": 3,
        "text": "As of September 2026 no implementation, demonstration or independent evaluation of proofs of work for capacity bounding has been published.",
        "theme": "adversarial-validation",
        "blocked_by": null,
        "sources": [],
        "inProposal": null
      }
    ]
  },
  "exposure": {
    "weights": {
      "shown": [],
      "partial": [
        "M-0007"
      ],
      "hidden": [],
      "none": [],
      "unknown": [
        "M-0004"
      ]
    },
    "io": {
      "shown": [],
      "partial": [
        "M-0007"
      ],
      "hidden": [],
      "none": [],
      "unknown": [
        "M-0004"
      ]
    },
    "training": {
      "shown": [],
      "partial": [],
      "hidden": [],
      "none": [
        "M-0007"
      ],
      "unknown": [
        "M-0004"
      ]
    }
  },
  "implementations": [
    {
      "mechanism": "M-0004",
      "selected": {
        "id": "I-0014",
        "title": "EZKL",
        "url": "https://trustbutveri.fyi/implementations/ezkl/"
      },
      "implementations": [
        {
          "id": "I-0005",
          "title": "Attestable zero-knowledge inference prover",
          "url": "https://trustbutveri.fyi/implementations/attestable-zk-inference/"
        },
        {
          "id": "I-0014",
          "title": "EZKL",
          "url": "https://trustbutveri.fyi/implementations/ezkl/"
        },
        {
          "id": "I-0012",
          "title": "Low-trust AI compute verification system overview",
          "url": "https://trustbutveri.fyi/implementations/low-trust-compute-verification-system-overview/"
        },
        {
          "id": "I-0003",
          "title": "zkLLM",
          "url": "https://trustbutveri.fyi/implementations/zkllm/"
        }
      ]
    },
    {
      "mechanism": "M-0007",
      "selected": null,
      "implementations": [
        {
          "id": "I-0004",
          "title": "Pearl proof-of-useful-work blockchain",
          "url": "https://trustbutveri.fyi/implementations/pearl-proof-of-useful-work/"
        }
      ]
    }
  ],
  "sources": [
    {
      "id": "S-1806",
      "title": "zkonduit/ezkl (GitHub repository)",
      "authors": "Zkonduit Inc.",
      "year": 2026,
      "url": "https://github.com/zkonduit/ezkl",
      "path": "/sources/zkonduit-ezkl-code/"
    },
    {
      "id": "S-0024",
      "title": "Verifiable evaluations of machine learning models using zkSNARKs",
      "authors": "T. South et al.",
      "year": 2024,
      "url": "https://arxiv.org/abs/2402.02675",
      "path": "/sources/south-verifiable-evaluations-zksnarks/"
    },
    {
      "id": "S-0070",
      "title": "Zkonduit EZKL Security Assessment",
      "authors": "F. Casal et al.",
      "year": 2025,
      "url": "https://github.com/trailofbits/publications/blob/master/reviews/2025-03-zkonduit-ezkl-securityreview.pdf",
      "path": "/sources/trailofbits-ezkl-security-assessment/"
    },
    {
      "id": "S-0023",
      "title": "zkLLM: Zero Knowledge Proofs for Large Language Models",
      "authors": "H. Sun et al.",
      "year": 2024,
      "url": "https://doi.org/10.1145/3658644.3670334",
      "path": "/sources/sun-zkllm/"
    },
    {
      "id": "S-1101",
      "title": "Proving LLMs at Scale",
      "authors": "Attestable",
      "year": 2026,
      "url": "https://attestable.com/blog/proving-llms-scale",
      "path": "/sources/attestable-proving-llms-at-scale/"
    },
    {
      "id": "S-0018",
      "title": "A System Overview for Near-Term, Low-Trust AI Compute Verification",
      "authors": "N. Cankaya",
      "year": 2026,
      "url": "https://intelligence.org/wp-content/uploads/2026/06/A-system-overview-for-near-term-low-trust-AI-compute-verification.pdf",
      "path": "/sources/cankaya-system-overview-low-trust-compute-verification/"
    },
    {
      "id": "S-1102",
      "title": "Pacing AI Requires Proof",
      "authors": "Attestable",
      "year": 2026,
      "url": "https://attestable.com/blog/pacing-ai-requires-proof",
      "path": "/sources/attestable-pacing-ai-requires-proof/"
    },
    {
      "id": "S-0021",
      "title": "ZKML: An Optimizing System for ML Inference in Zero-Knowledge Proofs",
      "authors": "B.-J. Chen et al.",
      "year": 2024,
      "url": "https://doi.org/10.1145/3627703.3650088",
      "path": "/sources/chen-zkml/"
    },
    {
      "id": "S-1112",
      "title": "Hollow-LLM Attack: Computationally Trivial Weights in Zero-Knowledge Verification of LLM Inference",
      "authors": "C. Gong et al.",
      "year": 2026,
      "url": "https://arxiv.org/abs/2607.28884",
      "path": "/sources/gong-hollow-llm-attack/"
    },
    {
      "id": "S-0005",
      "title": "Mechanisms to Verify International Agreements About AI Development",
      "authors": "A. Scher & L. Thiergart",
      "year": 2025,
      "url": "https://arxiv.org/abs/2506.15867",
      "path": "/sources/scher-mechanisms-verify-ai-agreements/"
    },
    {
      "id": "S-1609",
      "title": "Proofs of Useful Work from Arbitrary Matrix Multiplication",
      "authors": "I. Komargodski & O. Weinstein",
      "year": 2025,
      "url": "https://arxiv.org/abs/2504.09971",
      "path": "/sources/komargodski-proofs-useful-work-matrix-multiplication/"
    },
    {
      "id": "S-1105",
      "title": "Pearl Floating Point Scheme Specification",
      "authors": "Pearl Research Team",
      "year": 2026,
      "url": "https://pearlresearch.ai/Pearl_Whitepaper.pdf",
      "path": "/sources/pearl-floating-point-scheme-specification/"
    },
    {
      "id": "S-1107",
      "title": "pearl: Monorepo for the Pearl network",
      "authors": "Pearl Research Labs",
      "year": 2026,
      "url": "https://github.com/pearl-research-labs/pearl",
      "path": "/sources/pearl-network-monorepo/"
    }
  ]
}