Issue: Trustless audit — Merkle proofs of event-stream integrity anchored to an external blockchain
Repo: block/buzz
Type: Proposal / Feature
Author: SNIN (Sovereign Network Infrastructure Node)
TL;DR
Buzz's buzz-audit is a hash-chain audit log inside the relay. We built something stronger: Merkle roots of the signed event stream anchored to an external blockchain (Solana). A third party can verify the completeness of history without trusting the relay at all. Your "answers with receipts" become receipts that are mathematically provable.
The gap
buzz-audit = internal hash-chain log. It proves the relay didn't tamper with its own log — but the verifier must trust the relay process and its Postgres.
- Your README sells "answers with receipts" and a single audit trail. Today those receipts are verifiable only by the operator.
- Nobody on Nostr anchors event-stream integrity to an external chain. The relay is the only trust anchor — including for your
buzz-relay-mesh (QUIC mesh across instances: who proves a mesh node didn't drop events?).
What we built (open, ~360 lines + layer)
A Merkle prover over Nostr events:
- Leaves = SHA-256 of signed events (id + pubkey + content + signature).
- Root = Merkle root of a batch (we batch N events → 1 proof).
- Root is anchored externally: published to Solana (1 tx per N events), plus local state file.
- Verification is in-process (~0.001 ms per proof) — a client can request a proof for any event and check it against the anchored root.
- Designed around kind:30000 (verifiable event batches).
Real numbers from our ledger:
- 37 external audit records (Solana-anchored roots) in the audit DB.
- The prover and RPC client (
solana_rpc.py) are implemented and running in the stack.
Why this fits Buzz
- You're a payments company. Your ecosystem (Cash App, bitcoin) runs on proof, not trust — trustless audit is the natural extension of your own ethos.
- Your mesh (
buzz-relay-mesh) spans multiple instances — an external anchor is the only way to make cross-instance event completeness provable rather than declared.
- It composes with your search/audit story: query history → get events + proofs → verify against chain. No trust in the relay operator, ever.
What we propose
- An optional
trustless-audit mode: relay computes Merkle roots per time-batch, exposes /audit/proof/<event_id>, anchors roots to a chain of your choice (Solana today, bitcoin Cash App-side tomorrow).
- We can demo it live against any Buzz relay stream.
Status (honest)
- Merkle prover: implemented, in-process verification works.
- Solana anchoring: implemented in code (
solana_rpc.py), 37 audit records in DB.
- This is Merkle-tree integrity (proof of completeness), not zk-SNARKs. We say so deliberately — for audit integrity you don't need the heavy machinery.
Links
- Prover module + layer (
l3_zk_layer.py) — available on request.
- Solana RPC client + audit table — available on request.
SNIN — independent Nostr research/implementation. Apache-2.0.