WARPNET ARCHITECTURE

This document outlines the architectural structure of Warpnet, including its core components and how they interact.

CORE COMPONENTS

1. NODE

Each Warpnet instance is a self-contained node responsible for:

  • Storing the user's data locally (using BadgerDB)

  • Connecting to other peers via libp2p

  • Exchanging encrypted messages

  • Enforcing local moderation policies: per-user blocks, mutes and keyword filters

  • Queueing outbound messages for peers that are currently offline and delivering them on reconnect

Nodes form the backbone of the network. There is no central server — only independent peers.

Node types:

Warpnet defines three node roles. All nodes are technically equal in protocol rights; these roles are defined by behavior and configuration, not by protocol-level enforcement.

1. Relay Node

  • Stable, publicly reachable entry point for peer discovery

  • Historically called the "bootstrap node"; on the wire it still reports the legacy owner marker bootstrap for backwards compatibility

  • Does not store user content or application-layer content

  • Provides circuit-relay v2 service for peers behind NAT

  • Fully in-memory: peerstore and routing table are discarded on shutdown

2. Member Node

  • Standard user node

  • Stores profile, timeline, chats, media and peer data locally

  • Fully participates in message exchange

  • Ships in three build flavours that differ only in how the user reaches it: the Wails desktop app, a headless remote build that serves the same UI over HTTP/WebSocket, and a headless echo service node

3. Moderator Node

  • Runs a local LLM (Llama Guard 3 1B via llama.cpp) and votes on reports

  • Never acts alone: every verdict is the outcome of a multi-moderator vote (see MODERATION)

  • Signs every verdict it announces, so results cannot be forged

There is no "business node" role.

2. IDENTITY

Each Warpnet node has a cryptographic identity defined by the libp2p stack. This identity is used to uniquely identify peers at the transport layer and establish encrypted channels.

  • Every node uses an Ed25519 keypair. No other key type is supported.

  • The key is not random. It is derived deterministically:

    • a member node derives it from the user's username, password and network name, hashed with SHA-256 and used as the Ed25519 seed

    • a relay or moderator node derives it from the operator-supplied --node.seed value

  • Because derivation is deterministic, the same credentials reproduce the same identity on any machine. This is how an account is recovered: there is no key file to back up, and no server that could reset it. It also means the password cannot be changed without changing the node's identity.

  • The Peer ID is the multihash of the marshalled public key. For Ed25519 the key is short enough that libp2p inlines it directly (identity multihash) instead of hashing it, so the public key can be recovered from the Peer ID itself.

  • The Peer ID is used for:

    • Stream routing

    • Peer discovery

    • Signature verification of message envelopes

    • Noise handshake

Warpnet does not expose Peer IDs as usernames or global handles. They are used strictly within the transport and trust layer.

Example:

12D3KooWMKZFrp1BDKg9amtkv5zWnLhuUXN32nhqMvbtMdV2hz7j ← libp2p Peer ID (Base58 of the inlined Ed25519 public key)

PSK and network access:

In addition to identity, Warpnet uses a Pre-Shared Key (PSK) to define network access boundaries.

  • The PSK is injected into the libp2p transport layer using libp2p/pnet (private networks)

  • Peers must prove possession of the same PSK to connect

  • Even valid Peer IDs are rejected if the PSK does not match

Peer identity does not equal network membership. Only peers with a valid PSK can participate in the Warpnet overlay.

3. NETWORKING

Warpnet uses libp2p for peer discovery and transport abstraction. Networking includes:

  • Direct peer-to-peer connections over TCP (IPv4 and IPv6)

  • Relay node discovery via a hardcoded, per-network list of static multiaddresses

  • Gossip-style broadcast (pubsub) for timeline and discovery propagation

  • Circuit-relay v2 routing for peers that cannot be reached directly

  • Peer prioritisation, so publicly reachable peers and relays are preferred over unreachable ones

NAT traversal uses libp2p's built-in mechanisms: AutoNAT v2 for reachability detection, DCUtR hole punching, a NAT service and UPnP/NAT-PMP port mapping. When a punch fails, the connection falls back to a relay circuit and keeps working.

Traffic camouflage:

All Warpnet transports are wrapped in a camouflage layer designed to survive Deep Packet Inspection:

  • The Noise handshake and all application data travel inside a real TLS tunnel, established with a genuine browser fingerprint (uTLS) on the client side and a plausible certificate chain on the server side. To a middlebox, a Warpnet connection looks like ordinary HTTPS.

  • The first bytes of the TLS ClientHello are split across very small TCP segments with randomised delays, so signature-based DPI that only inspects the first segment cannot match it.

  • Active probing is resisted through SNI/ALPN consistency validation and configurable handshake timeouts.

Peer discovery and topology:

  • Relay nodes provide the initial peer list via static multiaddresses compiled into the client, one list per network

  • After the first connection, peers exchange further addresses

  • Peers are cached locally and reconnected opportunistically

  • Warpnet ingests discovery from four independent sources: the DHT, gossip (pubsub), direct streams, and mDNS on the local network

  • mDNS runs on member nodes only; relay nodes use DHT and gossip

  • The DHT runs in server mode under a per-network protocol prefix, and nodes announce themselves under a per-network rendezvous namespace, so separate networks never see each other

Networks:

Warpnet runs two separate networks — warpnet (mainnet) and testnet — with separate relay lists, separate PSKs and separate local databases.

4. STORAGE LAYER

Storage is local by default. Each node keeps its data in an embedded BadgerDB store on the user's own machine, and private data — chats, drafts, bookmarks, settings — never leaves it.

Two things do converge across the network automatically, by design:

  • Engagement counters (views, reactions, retweets, replies, poll votes) are replicated as CRDT PN-counters over gossip, so a post's stats look the same everywhere. Each writer owns its own sub-counter, which makes the counters correct even after a node loses its local data entirely and re-syncs from peers.

  • Undelivered outbound messages are queued locally and re-sent when the destination peer comes back online.

Beyond that, nothing is replicated unless the user configures backup or export manually.

5. MODERATION

Warpnet has no moderation team and no admin. Moderation is decided by a vote among independent moderator nodes, and each user additionally controls what their own node shows.

Network-level moderation:

  • Anyone can run a moderator node. Each one runs Llama Guard 3 1B locally via llama.cpp.

  • Only public posts and public profiles can be reported. Direct messages are never moderated — there is no mechanism for it.

  • A report is broadcast to all moderators at once. Each computes its own place in an unpredictable order derived from the report itself, so nobody can arrange to judge a particular report; roughly three moderators pick it up and the rest stay out.

  • Each judge fetches the content, runs its own model and votes independently, without seeing the others' opinions.

  • After a ~30 second window the votes are tallied. Action requires a strict majority. The count is always made odd by a rule every node computes identically, so a tie cannot happen — and a tie or a failure to reach a majority always falls in favour of the content.

  • One moderator announces the outcome, chosen by the same deterministic ordering; if it goes offline, the next in line takes over.

  • Every verdict is Ed25519-signed by the announcing moderator and verified by receiving nodes against the key embedded in its Peer ID.

  • Enforcement is isolation, not deletion: the verdict is published to observers, not to the offender's node, so their local view is unchanged while everyone else hides the object.

  • Moderators spot-check each other with signed audit challenges drawn from already-decided content.

Local moderation:

Independently of the above, each node enforces its owner's own blocks, mutes and keyword filters locally.

6. SECURITY MODEL

Warpnet employs a layered security architecture spanning peer-to-peer transport, user interface communication, and message-level authenticity.

Peer-to-Peer Transport Security (Noise + PSK):

All connections between Warpnet nodes are secured using the Noise Protocol Framework via the libp2p transport layer.

  • The Noise XX handshake provides mutual authentication and forward secrecy

  • Session keys are derived using ephemeral key exchanges

  • All communication is encrypted and authenticated

  • The whole handshake is additionally wrapped in the camouflage TLS tunnel described under NETWORKING

Additionally, all nodes must present a valid Pre-Shared Key (PSK) to participate in the Warpnet overlay. The PSK acts as a cryptographic admission token.

Message-level authenticity:

Every protocol message carries an Ed25519 signature over its body and timestamp, verified against the public key recovered from the sender's Peer ID. Moderation verdicts are signed the same way and dropped if verification fails.

PSK Generation:

The PSK is deterministically derived from:

  • The network identifier (warpnet or testnet; the alias mainnet normalises to warpnet)

  • The major version number of the release

  • A fixed domain constant, iterated through SHA-256

The three inputs are concatenated and hashed with SHA-256.

This means a node can only join peers running the same network and the same major version. Note that the PSK does not attest to the node's source code — a codebase-integrity check is not part of PSK derivation.

7. CONSISTENCY MODEL

Warpnet implements a hybrid consistency model combining local transactional guarantees with eventual global consistency across the peer-to-peer network.

Local Consistency (ACID):

Each Warpnet node uses an embedded BadgerDB key-value store, which provides:

  • ACID properties for local operations

  • Strict write ordering for messages and state transitions

  • Deterministic merge behavior via sortable keys (prefixed by a reversed timestamp)

This ensures that within a single node:

  • Messages are stored and processed in a defined, conflict-free order

  • Timeline entries and chats are persisted reliably, even across crashes

  • Local views are fully consistent and fault-tolerant

Global Consistency (Eventual):

Between nodes, Warpnet relies on eventual consistency:

  • Messages may arrive in any order and with delay

  • Engagement counters converge through CRDT PN-counters replicated over gossip, so they need no coordination and survive total local data loss

  • There is no global clock, only logical timestamps and per-node counters

  • Timeline reconstruction is based on:

    • Origin node ID

    • Origin user ID

    • Local message timestamp

Each node independently merges remote updates into its local view. Apart from the CRDT counters, there is no centralized coordination or conflict resolution mechanism.

Summary:

Local state is strictly ordered and consistent. Global state is eventually convergent but unordered.

MEMBER NODE ARCHITECTURE

A Member Node is the core unit of Warpnet used by regular users. It consists of several internal components that handle message intake, routing, storage, and optional propagation to the network. The architecture is designed to separate responsibilities, enforce local privacy boundaries, and support modular extension.

INPUT LIFECYCLE (USER → NETWORK)

1. FRONTEND INPUT

A member node exposes exactly one canonical handler per route, and three different front ends reach it:

  • Desktop: a Vue 3 single-page app bundled into the binary and rendered by Wails as a Site Specific Browser (SSB) — a dedicated application window for a single source, without the menus, toolbars and browser chrome unrelated to that one site. UI calls reach the node in-process over a loopback stream, using the same protocol IDs as the network.

  • Remote: the same Vue app served over HTTP by a headless build of the member node, with calls carried over a WebSocket. Frames are encrypted with AES using a key derived from the node password, so the dashboard can be reached from a browser on another machine.

  • Mobile: the Android client (a Tusky fork) runs its own thin libp2p node, pairs with the user's member node over a dedicated stream route, and is then advertised as an alias of that node.

Whichever path a request takes, it is dispatched to the same handler and the same repository code.

2. BACKEND COMPONENT

  • The backend (or "core") handles persistence and network propagation

  • It receives the message from the frontend layer and:

    • Writes it to BadgerDB using a deterministic key

    • Optionally forwards it to other peer nodes via libp2p (using gossip broadcast or a direct stream)

3. NETWORK DISSEMINATION (OPTIONAL)

Based on node settings and message type, the message may be:

  • Published to the author's gossip topic (public posts)

  • Sent directly to specific recipients (private messages)

  • Withheld entirely (private or draft content)

WARPNET RELAY NODE ARCHITECTURE

A Relay Node (historically called a bootstrap node, and still identified that way on the wire for backwards compatibility) is a special-purpose libp2p node used to help new peers join the network. It performs peer discovery, propagates routing information, and relays traffic for peers that cannot be reached directly. It does not access or store user content or timelines.

RESPONSIBILITIES

  • Accept inbound peer connections using Noise + PSK

  • Act as an entry point for peer discovery

  • Provide circuit-relay v2 service for nodes behind NAT

  • Host a DHT server and participate in the discovery pubsub topic

  • Answer node metadata requests on a single public stream route

Relay nodes do not coordinate with each other and run no consensus protocol of their own.

INTERNAL COMPONENTS

1. CORE

The Relay Node is initialized with:

  • Noise protocol (encrypted and authenticated transport), wrapped in the camouflage TLS layer

  • PSK-gated access

  • Static public address, listening on both IPv4 and IPv6

  • Circuit-relay v2 service, with per-peer reservation and circuit limits

  • Full resource manager and connection limits

2. DISCOVERY

Handles:

  • Initial peer exchange

  • Maintenance of a known-node address book

  • Exposure to the gossip layer

  • Rate limiting of inbound discovery, so a burst of peers cannot exhaust the node

3. PUBSUB

  • Enables lightweight gossip-based dissemination of discovery announcements

4. DISTRIBUTED HASH TABLE (DHT)

  • Runs in server mode under a per-network protocol prefix

  • Provides routing for peer lookup and rendezvous-based discovery

  • State is ephemeral (in-memory only)

5. IN-MEMORY PEERSTORE

  • Stores peer information (Peer ID, addresses)

  • Does not persist to disk

  • Cleared on shutdown

STREAM BEHAVIOR

Relay Nodes do not respond to or emit user-level content streams (e.g. timeline, chat). They register exactly one stream handler:

  • Node metadata retrieval: /public/get/info/0.0.0

All Warpnet protocol IDs carry a version suffix; the bare path without it is not a valid protocol ID.

PSK AND ACCESS CONTROL

  • The PSK is derived and required at startup

  • If the connecting peer does not present a matching PSK, the connection is rejected before the Noise handshake can complete

  • This prevents unauthorized nodes from discovering or accessing the Relay Node

NETWORK BEHAVIOR

  • Relay Nodes force public reachability, overriding AutoNAT detection: they sit on a static public address by definition, and NATed peers need the relay before they can help confirm it

  • Circuit-relay v2 is enabled so NATed peers can communicate through them

  • Hole punching (DCUtR) and the NAT service are enabled to help connecting peers upgrade to a direct connection

Note that relay service, hole punching and the NAT service are enabled on every node role, not only on relays — a member node with a static public address can relay for others too. What is unique to a Relay Node is the forced public reachability and the absence of any application state.

PERSISTENCE AND MEMORY

  • All data is kept in memory

  • No filesystem writes occur

  • Relay nodes are stateless and disposable by design

MEMBER NODE ARCHITECTURE

A Member Node is the core unit of Warpnet used by regular users. It consists of several internal components that handle message intake, routing, storage, and optional propagation to the network. The architecture is designed to separate responsibilities, enforce local privacy boundaries, and support modular extension.

INPUT LIFECYCLE (USER → NETWORK)

Here is the simplified input flow through the internal architecture of a Member Node:

1.FRONTEND INPUT

- "Frontend" is implemented as a Site Specific Browser (SSB) application via Wails

- A Site Specific Browser (SSB) is a software application dedicated to accessing pages from a single source (site) on a computer network such as the Internet or a private intranet

- SSBs typically simplify the more complex functions of a web browser by excluding menus, toolbars, and graphical user interface elements that are unrelated to a single site

2.BACKEND COMPONENT

- The backend (or "core") handles persistence and network propagation

- It receives the message from the frontend layer and:

- Writes it to BadgerDB using a deterministic key

- Optionally forwards it to other peer nodes via libp2p (using broadcast or direct connection)

3.NETWORK DISSEMINATION (OPTIONAL)

Based on node settings and message type, the message may be:

- Broadcast to trusted peers (public posts)

- Sent directly to specific recipients (private messages)

- Withheld entirely (private or draft content)

WARPNET BOOTSTRAP NODE ARCHITECTURE

A Bootstrap Node in Warpnet is a special-purpose libp2p node used to help new peers join the network. It performs peer discovery, propagates routing information, and provides public stream endpoints for essential metadata and validation. It does not participate in accessing or storing user content or timelines.

RESPONSIBILITIES

- Accept inbound peer connections using Noise + PSK

- Act as an entry point for peer discovery

- Act as a relay for private node connections (nodes behind NAT)

- Host a public DHT and PubSub overlay

- Participate in public streams (e.g., verifynode, get info)

- Optionally coordinate with other bootstrap nodes via consensus

INTERNAL COMPONENTS

1.CORE

The Core Bootstrap Node is initialized with:

- Noise protocol (encrypted and authenticated transport)

- PSK-gated access

- Static public address

- Relay service (allowing NATed nodes to connect)

- Full resource manager and connection limits

2.DEPRECATED

3.DISCOVERY

Handles:

- Initial peer exchange

- Maintenance of known node address book

- Exposure to gossip layer

4.PUBSUB

- Enables lightweight gossip-based dissemination of verification and infrastructure-related announcements

5.DISTRIBUTED HASH TABLE (DHT)

- Provides optional routing for peer lookup and proximity queries

- State is ephemeral (in-memory only)

6.IN-MEMORY PEERSTORE

- Stores peer information (Peer ID, addresses)

- Does not persist to disk

- Cleared on shutdown

STREAM BEHAVIOR

Bootstrap Nodes do not respond to or emit user-level content streams (e.g., timeline, chat). They only respond to:

- Public stream routes for nodes integrity validation (/public/post/admin/verifynode)

- Node metadata retrieval (/public/get/info)

- Discovery and peer status tracking (internal use)

PSK AND ACCESS CONTROL

- The PSK is derived and required at startup

- If the connecting peer does not present a matching PSK, the Noise handshake fails

- This prevents unauthorized nodes from discovering or accessing the Bootstrap Node

NETWORK BEHAVIOR

- Bootstrap Nodes are marked as publicly reachable by default, overriding NAT detection

- Relay services are enabled to allow NATed peers to communicate through the Bootstrap Node

- Hole punching and NAT service are enabled to assist connecting peers

PERSISTENCE AND MEMORY

- All data is kept in memory

- No filesystem writes occur

- Bootstrap nodes are stateless and disposable by design

© 2026. All rights reserved. Legal information.

Donation

BTC: bc1quwwnec87tukn9j93spr4de7mctvexpftpwu09d

USDT (Tron): THXiCmfr6D4mqAfd4La9EQ5THCx7WsR143