Skip to content

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:

jsonc
{ "id": "civic", "json": { "spec": "civic/0.3", "graph": "trust", "action": "...", ... } }
  • One id, many graphs. graph selects the domain (trust, membership, … — six graphs); action is the verb within it. There is no per-action id.
  • Active-gated. Civic declarations are active-key custom_json; the acting account is read from required_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.tier and trust.* stay null at write time).
  • Schema-validated. Every payload is checked against its JSON Schema (draft 2020-12) before broadcast.

The pieces

PieceWhat it isRepo
Civicthe framework (constitution, specs, payloads, JSON Schemas) and the civic/<version> namespaceblurt/civlayer/civic
CivPortthe static, client-side, key-sovereign app (register/exit today; Trust Center + Explorer later)blurt/civlayer/civport
civic-indexerstandalone 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:

text
  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).

Learn more

  • Civic — the framework and the civic/0.3 contract.
  • CivPort — the app and its signing model.

Released under the MIT License.