CivLayer — Overview
CivLayer — the "Digital Civilization Layer" — is civic infrastructure for voluntary digital association on Blurt. Accounts make cryptographically signed declarations about identity, trust, association, authority, endorsement, and civilization membership; applications derive trust, reputation, and standing from them. The principle throughout: the chain records the action, the explorer derives the status.
Work in progress
CivLayer is the newest layer of the ecosystem and is still evolving (namespace civic/0.3, Constitution v0.9.6; Civilization Year Zero, CY0, dated 4 July 2026). Specs are versioned and moving — this page describes the shape, not a frozen contract. Always check the repos for the current version.
Three names, three layers
- CivLayer — the project / brand (the whole thing).
- Civic — the framework (constitution + specs) and the on-chain namespace (
civic/<version>). See Civic. - CivPort — the application (Civic Registry · Trust Center · Civic Explorer). See CivPort.
Underneath sits a dedicated indexer that turns the on-chain declarations into a queryable trust/membership graph.
How it works on Blurt
Every civic act is a single kind of on-chain object — a custom_json with id: "civic" — and the payload's graph + action say what it is:
{ "id": "civic", "json": { "spec": "civic/0.3", "graph": "trust", "action": "...", ... } }- One id, many graphs.
graphselects the domain (trust,membership, … — six graphs);actionis the verb within it. There is no per-action id. - Active-gated. Civic declarations are active-key
custom_json; the acting account is read fromrequired_auths[0], never from a payload field. (Membership additionally publishes readable posts with the posting key.) - Action, not status. The chain stores what happened; recognition tiers and trust scores are derived by the explorer, never authored on-chain (
recognition.tierandtrust.*staynullat write time). - Schema-validated. Every payload is checked against its JSON Schema (draft 2020-12) before broadcast.
The pieces
| Piece | What it is | Repo |
|---|---|---|
| Civic | the framework (constitution, specs, payloads, JSON Schemas) and the civic/<version> namespace | blurt/civlayer/civic |
| CivPort | the static, client-side, key-sovereign app (register/exit today; Trust Center + Explorer later) | blurt/civlayer/civport |
| civic-indexer | standalone service that projects the trust/membership graph into Postgres and serves a read API (/trust/*) | civic-indexer |
Where it sits in the stack
CivLayer maps onto the same shape as the rest of the stack — declarations live on blurtd, an indexer derives a fast view, and clients read that view:
blurtd ──► civic-indexer ──► PostgreSQL ──► civic-readapi ──► CivPort / explorers
(id:"civic" (project the (trust graph) (/trust/*) (derive status)
declarations) graph, reorg-safe)The indexer's core (blockindex/) is extracted from nexus-go — the same proven fork/reorg machinery — so CivLayer reuses the ecosystem's hardest-won indexing logic instead of re-solving it. It is a net reduction on RPC load: one sequential pass over the chain replaces every client scanning history itself, and in steady state it is just tip-following (~one block every 3 s).
