feat(vendor): add The Graph + pattern: Reproducible Audit Extraction - #186
feat(vendor): add The Graph + pattern: Reproducible Audit Extraction#186p-diogo wants to merge 1 commit into
Conversation
56de416 to
cde2eb9
Compare
rymnc
left a comment
There was a problem hiding this comment.
hello! thank you for your PR, attached some comments in-line
| last_reviewed: 2026-07-16 | ||
|
|
||
| works-best-when: | ||
| - An auditor, regulator, or counterparty must verify that disclosed or reported figures reflect the complete set of on-chain emissions, not a curated subset. |
There was a problem hiding this comment.
| - An auditor, regulator, or counterparty must verify that disclosed or reported figures reflect the complete set of on-chain emissions, not a curated subset. | |
| - An auditor, regulator, or counterparty must verify that disclosed or reported figures reflect the complete set of on-chain events, not a curated subset. |
| open_source_implementations: | ||
| - url: https://github.com/streamingfast/firehose-core | ||
| description: "Firehose: deterministic, content-addressed flat-file extraction of chain history (The Graph / StreamingFast, Apache 2.0)" | ||
| language: "Go" | ||
| - url: https://github.com/streamingfast/substreams | ||
| description: "Substreams: deterministic WASM transform modules over Firehose files (Apache 2.0)" | ||
| language: "Rust" | ||
| - url: https://github.com/TrueBlocks/trueblocks-core | ||
| description: "TrueBlocks: local, reproducible index of Ethereum address appearances (GPL-3.0)" | ||
| language: "Go" | ||
| - url: https://github.com/paradigmxyz/cryo | ||
| description: "cryo: deterministic extraction of chain data to Parquet/CSV datasets (Apache 2.0)" | ||
| language: "Rust" | ||
| - url: https://github.com/graphprotocol/graph-node | ||
| description: "graph-node: deterministic indexing of extracted data into a queryable entity store, with proofs of indexing over the result (Apache 2.0)" | ||
| language: "Rust" | ||
| - url: https://github.com/subsquid/squid-sdk | ||
| description: "Subsquid: independent indexing framework serving queryable indexes over extracted chain data (Apache 2.0)" | ||
| language: "TypeScript" |
There was a problem hiding this comment.
do all of these implement reproducible audit extraction?
| maturity: production | ||
| --- | ||
|
|
||
| # The Graph – Firehose, Substreams, Subgraphs (decentralized indexing and query infrastructure) |
There was a problem hiding this comment.
| # The Graph – Firehose, Substreams, Subgraphs (decentralized indexing and query infrastructure) | |
| # The Graph (decentralized indexing and query infrastructure) |
|
|
||
| ## What it is | ||
|
|
||
| An open source indexing stack. 76 networks are supported for subgraph indexing; on 23 of them (18 mainnets, including Ethereum) subgraphs are served by a decentralized network of independent, GRT-staked indexers. The Graph indexes public chain state and is not a privacy technology. Its role in privacy architectures is the read and audit path: deterministic, re-executable extraction and serving of the public artifacts confidential systems emit (commitments, nullifiers, anchored roots, attestation logs), so auditors and regulators can check disclosures against an independently recomputable record of on-chain emissions. |
There was a problem hiding this comment.
| An open source indexing stack. 76 networks are supported for subgraph indexing; on 23 of them (18 mainnets, including Ethereum) subgraphs are served by a decentralized network of independent, GRT-staked indexers. The Graph indexes public chain state and is not a privacy technology. Its role in privacy architectures is the read and audit path: deterministic, re-executable extraction and serving of the public artifacts confidential systems emit (commitments, nullifiers, anchored roots, attestation logs), so auditors and regulators can check disclosures against an independently recomputable record of on-chain emissions. | |
| An open source indexing stack. 76 networks are supported for subgraph indexing; on 23 of them (18 mainnets, including Ethereum) subgraphs are served by a decentralized network of independent indexers. The Graph indexes public chain state and is not a privacy technology. Its role in privacy architectures is the read and audit path: deterministic, re-executable extraction and serving of the public artifacts confidential systems emit (commitments, nullifiers, anchored roots, attestation logs), so auditors and regulators can check disclosures against an independently recomputable record of on-chain emissions. |
| - **Subgraphs** are the indexing data service: mappings turn contract events into a typed entity store queried over GraphQL. On the decentralized network since 2020: independent indexers serve each deployment with proofs of indexing and signed response attestations. | ||
| - **Substreams** is the streaming transform engine: deterministic, composable Rust modules over raw block data with high-throughput parallel backfill, feeding SQL, file, and custom sinks. In production since 2023, run self-hosted or bought from a hosted operator. It is not yet a data service on the decentralized network, so a Substreams result carries no indexer attestation and no dispute path. Determinism is its trust mechanism: anyone can re-run it and compare. The network supplies a different one, attributability, where an indexer stakes collateral against the answer it signs. Subgraphs on the network have both. | ||
| - **Firehose** is the extraction layer beneath Substreams, also usable by other indexing systems: full chain history captured as deterministic, content-addressed flat files surviving execution-layer history pruning (EIP-4444); open source tooling recomputes receipt and transaction roots from extracted data and proves pre-Merge block inclusion against Ethereum's canonical header accumulator. | ||
| - **Decentralized network:** publishing is permissionless; indexers stake GRT and serve queries for fees. Paid responses carry EIP-712 signed attestations binding request and response hashes to the indexer's staked allocation; conflicting attestations ground an on-chain dispute settled by arbitration with slashing. Attestations are signatures, not validity proofs: responses become non-repudiable and slashable. | ||
| - **Gateways:** optional open source routing; anyone can operate one; clients can query indexers directly or pin one to cross-check. | ||
| - **Hosted delivery** is the common enterprise path: a single operator runs Firehose, Substreams, or subgraph APIs under contract. Open source core, but deployment, billing and API layers are proprietary; one operator can exclude a customer and attestations become contractual terms. The self-hosting exit stays open but is operationally heavy. |
There was a problem hiding this comment.
can we make this more concise, please?
|
Landed in #193 as 6cb1527. Thank you @p-diogo. This PR could not be updated in place. Its head branch lives on Your five review comments from @rymnc are all addressed. On the implementations list, each entry now names the leg of the pattern it covers. Subsquid was dropped, since it publishes no determinism, reproducibility, content-addressing or proof-of-indexing guarantee. Closing as superseded. |
What are you adding?
Description
Adds
vendors/the-graph.mdandpatterns/pattern-reproducible-audit-extraction.md.The gap
Several cards assume a read leg without naming it.
pattern-l2-encrypted-offchain-audit,pattern-regulatory-disclosure-keys-proofsandpattern-commit-and-proveall depend on someone serving the anchors an auditor checks a disclosure against, without saying who does that or what makes it trustworthy.The pattern
Reproducible Audit Extraction fills that in: deterministic extraction to content-addressed inputs, a versioned transform, and a re-execution manifest, so a verifier can re-derive the figure byte-identically and pin any disagreement to a specific input or code version.
No implementation is named in the body,
composes_withpoints at four of your cards, andopen_source_implementationslists six tools, three of which aren't ours.The limits are stated rather than implied: re-execution is the trust mechanism, a serving layer never replaces it, completeness covers on-chain emissions rather than off-chain reality, and attestations are signatures rather than validity proofs.
The vendor entry
We build one implementation of it. The card grades itself down where that's accurate: query privacy is absent, there is no SLA, and hosted delivery reintroduces single-operator trust.
On CROPS
I left the per-card table out because it looks like you've moved away from it. #130 added
QA-AUDIT.md, whose item 6 settled on 2026-06-24 to treat CROPS as a selection guideline rather than per-card scoring, and the same PR stripped the inline profile fromvendors/peer.md.Also, the vendor
_template.mdstill shows the table, though it hasn't changed since March. Either way the four dimensions are covered in the card's prose. Happy to add the table if you would rather have it.Checklist