Prototype docs. APIs may change while SDKs and verifier libraries harden.
Build on Char
Char is a Bitcoin-anchored coordination layer for validium-style rollups with precommitments. For short: rollups define domains, operators stake BTC, and Char emits proofs for domain outcomes.
These docs are intentionally short. They cover the concepts and commands needed to build without turning the site into internal notes.
Start here
- Build a rollup or app: /docs/tutorials/hello-char
- Run an operator node: /docs/quickstart, /docs/bonds, /docs/stake
- Understand the protocol: /docs/architecture, /docs/consensus
- Design a domain app: /docs/apps/architecture
Choose your role
| If you are... | Start with... | Your main job |
|---|---|---|
| Building a rollup or app | /docs/apps/architecture | define the domain, ballots, payloads, and consumer state |
| Running an operator | /docs/quickstart | run a node, maintain stake, publish attestations |
| Integrating a consumer | /docs/apps/zmq | react to notifications, verify rolls, persist outcomes |
Domain app pieces
A domain application has three separate jobs:
- Define: domain, ballots, payloads, finality, and recovery rules.
- Publish: submit payloads for operators to attest.
- Consume: read rolls from a local node, verify them, and update application state.
The simplest integration is ZMQ. Polling is still useful for backfill, recovery, and environments where notifications are not available.
Mental model
Char organizes outcomes by:
- Domain: the identifier for your rollup or application.
- Ballot: the per-domain sequence number for an outcome.
- Bitcoin block hash: the anchor used for leader selection and reorg context.
Operators publish signed attestations for domains. When enough active stake endorses the same ballot outcome, Char can produce a DecisionRoll proof.
What exists today
- BTC bonds and stake-weighted leader selection.
- Append-only attestation chains anchored to Bitcoin headers.
- Merkle payload commitments with inclusion proofs.
- Ballot reduction into
DecisionRollandImpossibleRollartifacts. - RPCs for domains, votes, attestations, and roll lookup.
What is still hardening
- External verifier libraries and SDKs.
- BitVM enforcement paths.
- Stable rollup-facing RPC ergonomics.
- Reward and operator incentive mechanics.
See /docs/roadmap for the current split between shipped and future work.
Common paths
- /docs/tutorials/hello-char: schedule a domain, submit a vote, attest, and fetch a roll.
- /docs/tutorials/verify-a-roll: what a roll proves and how consumers should treat it.
- /docs/apps/architecture: what a domain application needs to define.
- /docs/apps/checklist: the decisions to make before integration.
- /docs/apps/examples: common domain application shapes.
- /docs/apps/zmq: simplest notification-driven architecture.
- /docs/apps/polling: polling for backfill or other contexts.
- /docs/guides/domains: choosing and scheduling domain identifiers.
- /docs/guides/votes: vote payloads.
- /docs/guides/roll-consumption: polling, persistence, and reorg handling.
- /docs/rpc: generated RPC reference.