SPORE — Seed Sheet

A cold-start capsule. This side teaches the wire format by hand; the reverse side carries the full reimplementation guide as fountain-coded QR codes. Scan any ~23 of the 39 codes to rebuild it — a torn or partly-scanned sheet still recovers.

Primitives

PurposeAlgorithmReference
Signatures / identityEd25519RFC 8032
Key agreementX25519RFC 7748
Sealed-box AEADXSalsa20-Poly1305 (NaCl crypto_box)NaCl
Symmetric AEADChaCha20-Poly1305 / XChaCha20RFC 8439
Hashing (IDs, addresses)SHA-256FIPS 180-4
Ratchet KDFBLAKE2bRFC 7693

The envelope (all integers big-endian)

OffSizeFieldNotes
01ver0x01
11typ0 DATA · 1 INV · 2 WANT · 3 ANNOUNCE
21flags0x01 ENC · 0x02 SIGNED · 0x04 FRAG · 0x08 ACKREQ · 0x10 FLOOD · 0x20 SRC8
31hopsTTL, decremented by relays
44expiryunix seconds
88destaddress; all-zero = public
1632/8/0srcif SIGNED: 32-byte key (or 8-byte addr if SRC8)
2plenpayload length
plenpayload
64/0sigif SIGNED

Four rules

This seed

payload: REBUILD.md · original 6533 B, gzip 3435 B · fragments K=23, N=39, block 150 B ·
SHA-256(payload): 711118efe0d112f092374d3234cf6f9e40b42060f52b2723125d0c57ad6edcd9

Decode: each QR is base64 of a binary fragment "SP" · ver(1) · origLen(4) · K(2) · B(2) · seed(4) · block(B). Any ~K independent fragments solve a K×K linear system over GF(256) (primitive poly 0x11d): derive each fragment's K coefficients from its seed (splitmix32), Gauss-Jordan eliminate, concatenate the K blocks, trim to origLen, gunzip, and check the SHA-256 above. The reference decoder is site/seed/decode-seedsheet.mjs.

Reverse — REBUILD.md as 39 fountain QR codes (any ~23 rebuild it)

#0
#1
#2
#3
#4
#5
#6
#7
#8
#9
#10
#11
#12
#13
#14
#15
#16
#17
#18
#19
#20
#21
#22
#23
#24
#25
#26
#27
#28
#29
#30
#31
#32
#33
#34
#35
#36
#37
#38