Indexing
Monitoring, ingesting, and materializing the Fide Context Graph.
Indexing is the Ingestion Path of the Fide Context Protocol. This page covers how broadcast Signed Statements are discovered, validated, and materialized into a queryable graph. Indexing is optional infrastructure — applications can implement their own indexing, use shared indexers, or query statements directly.
SDK Support
The SDK provides verification utilities for indexers. See Indexing in the SDK documentation for available functions.
FCP specifies what must be validated (signatures, timestamps, strict violations) but not how to store or query the data. Storage technology is an implementation choice. This reference implementation uses a Pure Graph Architecture:
- 2 Core Tables:
fcp_raw_identifiers(fingerprint↔identifier mapping),fcp_statements(all graph edges) - All relationships are Statements via PROV-O and W3C Security patterns (
prov:wasGeneratedBy,prov:wasAssociatedWith,sec:controller) - Type-Safe Enums: PostgreSQL enum types for entity types, source types, and predicate types
The Ingestion Pipeline
Indexers discover Fide attestation registries through topic scanning or manual configuration (see Broadcasting: Discovery).
Indexing Metadata
Indexers often attach extra metadata that is not part of the core statement graph.
indexed_at: when this indexer first observed an attestation in a registryanchored_at(optional): when the attestation was first verifiably included in an anchored batch (external sequencing layer)
Discovery Flow
Scan: Query GitHub API for topic fide-attestation-registry
Register: Add discovered repo URLs to your sync list (or equivalent mechanism in your indexing pipeline)
Ingest: Start the indexing pipeline to begin validating and materializing attestations from discovered registries
Suggested Indexer Architecture
This reference implementation uses a relational database (PostgreSQL via Supabase) with two core tables and supporting views.
Tables
fcp_raw_identifiers
Prop
Type
Fingerprint ↔ identifier lookup table.
fcp_statements
Prop
Type
Core triple store: all facts as subject-predicate-object tuples.
Query Patterns
Query patterns extract specific patterns from fcp_statements to provide queryable subsets of the graph (see Querying for application-level query logic). These are implemented via the materialized view below and TypeScript service layers for complex patterns.
Identity Resolution
Fide IDs (did:fide:0x...) are deterministic but fragmented. A single person may have multiple Fide IDs (one for Twitter, one for GitHub, one for a wallet).
Indexers must resolve these fragments into a single, cohesive entity.
Implementation Guides
For detailed algorithms and SQL patterns, see the Identity Resolution Guides.
- Min Fide ID: The decentralized default.
- Genesis Statement Fide ID: For time-stable identity.
Materialized View: Statements with Resolved Identifiers
Pre-resolves identifier aliases to canonical primaries and materializes human-readable identifier strings. Excludes owl:sameAs statements to prevent circular resolution logic.
Prop
Type