Skip to main content

The Core Constraint

Every architectural decision flows from one principle: the protocol must not appear - or actually be - controlled by any company. Domain separation, service isolation, and the API gateway pattern all exist to preserve decentralization posture as the network matures.

Domain Separation

presschain.io - Protocol Namespace

Everything protocol-critical: RPC, canonical dApps, court, explorer, docs, bridge. Neutral, permanent, canonical. Over time, RPC load-balances across community operators without changing URLs.

presslabs.io - Steward Org

Legal, disclosures, grants, validator node sales, careers. PressLabs does not host RPC or canonical dApps - this keeps the chain from looking corporate-controlled.

Full Request Chain

WordPress and outlet apps sit at the very top. They see a controlled web API and never touch RPC directly. This is a hard security boundary - not a best practice, a rule.

Service Components

Geth-compatible execution layer. Produces blocks, enforces EVM execution, hosts JSON-RPC on internal ports 8545/8546 (mainnet) and 9545/9546 (testnet). Validators secure consensus. They do not decide what news is true.
Direct chain reader and state manager. Returns full Capsule objects including policy, outlet, content, evidence, contributors, and revision lineage. Policy objects are currently bridge-backed pending direct Rust getter finalization.
Node.js middleware at bridge.presschain.io. Requires Bearer auth for all write routes. Exposes normalized REST endpoints for outlet workflows, capsule submission, voting, and metadata. The stable integration surface for all non-validator development.
Indexes chain events into PostgreSQL. Powers fast queries for capsule state, vote history, court cases, and distribution events. The Bridge reads from here for all normalized data - not directly from RPC.
Customized so the first-class object is the Capsule, not the transaction. Shows acceptance ratios, vote breakdowns, integrity labels, and revision lineage on each Capsule page.
Separate service on internal port 46103. Handles case lifecycle, summons issuance, juror selection, deliberation windows, verdict execution, and integrity label application. Interacts with BondManager for automatic penalty enforcement.
Runs on port 46105. Executes the 90-day burn cycle automatically, accumulating from publish fees, rights fees, ad fees, slashed bonds, and brand separation fees. Execution is on-chain and visible in explorer.

Protocol Namespace - All Surfaces

Decentralization Roadmap

The URL structure is designed so phase transitions happen under the hood without breaking integrations.