Nostr solved identity.
Gozzip solves storage.

96.9%

read success

18.69

mean pacts

925B

avg event

What's broken

The relay-dependent model has fundamental flaws.

Single point of failure

One relay goes down, your data goes dark. No redundancy, no fallback, no recourse.

No storage incentive

Relays store your data out of goodwill. There's no economic reason to keep it, and no penalty for deleting it.

Invisible lock-in

You can switch relays, but your followers can't find you. Discovery is still centralized around relay lists.

Metadata exposure

Relays see who you talk to, when, and how often. IP logging is trivial. Your social graph is transparent.

Star topology vs. mesh topology

From relay-dependent to peer-sovereign.

Nostr (Star)

Hub fails → everyone disconnects

Gozzip (Mesh)

Any node fails → network self-heals

Layered architecture

Extending Nostr, not replacing it

Transport LayerFIPS Mesh ProtocolGossip ProtocolPact SystemApplication

Event kinds

Seven new Nostr event kinds power the protocol. Each one maps to a real human behavior.

kind 10051

Checkpoint

What's inside

Per-device event heads, Merkle root, profile refs

In human terms

Writing in your diary — a personal record of where you left off

kind 10053

Pact Accept

What's inside

Mutual agreement, volume terms, pubkeys

In human terms

Shaking hands on a deal — both sides commit

kind 10054

Proof of Storage

What's inside

H(events[i..j] || nonce) challenge-response

In human terms

"Do you still have my stuff?" — spot-checking a friend

kind 10055

Pact Request

What's inside

Volume estimate, min pact count, TTL

In human terms

Putting up a "looking for storage partners" sign

kind 10056

Pact Offer

What's inside

WoT-qualified response, capacity terms

In human terms

Raising your hand to volunteer

kind 10057

Data Request

What's inside

Blinded pubkey target, TTL = 3 hops

In human terms

Asking friends "have you seen this?"

kind 10059

Cached Endpoint

What's inside

IP/port of online partners, TTL-scoped

In human terms

Sharing a friend's phone number — with permission

Pact formation

3-phase DVM negotiation

AB

kind 10055 — Pact Request

"I need storage partners. Here's my volume estimate."

kind 10056 — Pact Offer

"I can help. Here's what I can store."

kind 10053 — Pact Accept

"Deal. We're partners now."

Qualification Rules

WoT membership required

|V_p - V_q| / max(V_p, V_q) ≤ 0.30

Minimum 7-day account age

Keepers & Witnesses

Two node types, one resilient network

Keeper (Full Node)

storageComplete history
uptime95% expected
bandwidth11.68 MB/day
fractionf = 1.0

Witness (Light Node)

storage30-day window
uptime30% expected
bandwidth4.14 MB/day
fractionf = 0.3

10 pacts (<100 followers) → 20 → 30 → 40+ (10k+)

Retrieval cascade

Four tiers, fastest to slowest

Local Cache84.5% · 0 ms
Cached Endpoint0.0% · ~80 ms
WoT Gossip0.2% · ~160 ms
Relay Fallback12.2% · ~30 s

96.9% overall success rate

Blinded data requests

Privacy by design

bp = H(target_pubkey || YYYY-MM-DD)
pubkeyH( )blinded_pk

Daily rotating blinded pubkey — identity changes every 24 hours

Storage peers can't identify the original requester

Observers cannot link requests across days

Trust verification

Challenge-response protocol

ABH(events[i..j] || nonce)Request event, measure latency (>500ms suspicious)
score' = score × 0.95 + result × 0.05

≥ 90% → Healthy

70–90% → Degraded — increase frequency

50–70% → Unreliable — begin replacement

< 50% → Failed — drop, promote standby

5,000-node simulation

Validated at scale

Read Attempts

0

Success Rate

0

Pacts Formed

0

Pacts Dropped

0

Churn Rate

0

Mean Pacts

0

Build on Gozzip

The protocol is open. The code is open. You're next.