Planisphere · Mirror Chain

Genesis Block #0

The first seal. Block zero of an attestation ledger — the moment a document, a mark, and a signer were committed to one another, EVM-canonically, for good.

Block hash 0x5d4f8afa58b45062f6ba5b1066256a09395859b635fb6fcecd2e3f441d2fa97f
Chainplanisphere-mirror Number0 · genesis Sealed2026-06-01 Atoms6 committed

Content atoms

What this block commits

A content atom is an indivisible input the seal binds. Two atoms are large enough to carry their own hash; four are typed fields signed directly. Flip a single bit of any one and the genesis hash moves. As above, so below.

The Documentthesis.pdf · 895 pp
Title
Shadow & Mirror — Treewidth as the Universal Meter of Computation, Physics, and Consciousness
sha-256
c6529c07…fc87b20e

→ committed as documentHash = keccak256(bytes)

Open the volume
The Markseal.svg · collaboration seal
Form
The Planisphere × Shadow-and-Mirror seal — limb, mater, cardinal cross, two brass arcs.
sha-256
f1409464…22019f70

→ committed as sealHash = keccak256(bytes)

Open the mark
Signer
Logan Christopher Ross
string
Room
137
string
Pages
895
uint256
Timestamp
2026-06-01
uint256 · 1780272000
Document hash
0x4d5d0766…99e243c5
bytes32
Seal hash
0x52bc2a06…13608d6a
bytes32

The attestation

EIP-712 typed structured data

The six atoms are assembled into one typed message, hashed under a Planisphere domain, and signed with a secp256k1 key. The resulting digest is the block's payload root; the signature recovers the signer by ecrecover.

// domain { name: "Planisphere", version: "1", chainId: 1, salt: 0xb925df4ab950ebc4629e89906422a0ba1282d08cafb284b7daf46e3d97e6a4d6 } // primaryType: Attestation struct Attestation { string document; // "Shadow & Mirror: …" string signer; // "Logan Christopher Ross" string room; // "137" uint256 pages; // 895 bytes32 documentHash; // keccak256(thesis.pdf) bytes32 sealHash; // keccak256(seal.svg) uint256 timestamp; // 1780272000 } // digest = keccak256(0x19 0x01 ‖ domainSeparator ‖ hashStruct(message)) digest = 0xc014dea72199155f8c1f1bd0aca633a32508946e9c3e3556e7dde905660a5e8f
Signature
0x391ab37e99d87d22fe7f236b0ec410cab90d77daebb69a5d6ca422d213232dee3fabb4d2bd0a9c5f0fa2b59ae17a5df4189ff36430ade4b51089202a168881af1c
Recovers to
0x3B0d7A009aae049828796a28b86230f6c46C1328
Key origin
derived-dev — deterministic from the committed hashes; set an operator key for a production address

The block

Genesis header

The block wraps the attestation digest as its payload root and commits to the block before it. Genesis has no parent — its parentHash is zero. The next attestation will point its parent at this block's hash.

Parent hash
0x0000000000000000000000000000000000000000000000000000000000000000 (genesis)
Number
0
Timestamp
1780272000 · 2026-06-01T00:00:00Z
Sealer
0x3B0d7A009aae049828796a28b86230f6c46C1328
Payload root
0xc014dea72199155f8c1f1bd0aca633a32508946e9c3e3556e7dde905660a5e8f (EIP-712 digest)
Block hash
0x5d4f8afa58b45062f6ba5b1066256a09395859b635fb6fcecd2e3f441d2fa97f
blockHash = keccak256( rlp([ parentHash, number, timestamp, sealer, payloadRoot, signature ]) )

Recursive-length prefix, EVM-canonical. The same encoding Ethereum uses for its own block headers. Change any committed field — a page, the timestamp, one byte of the PDF — and the digest moves, the block hash moves, and every block that ever chains onto this one moves with it.


Lineage

The chain begins here


Trust nothing

Verify it yourself

No server, no API, no trust. Your browser fetches the bytes this page serves and recomputes every hash, in front of you, using the same EVM primitives an Ethereum node would.

Recomputes the EIP-712 digest, recovers the signer, rehashes the block header, and re-keccaks the 7.8 MB volume and the seal — live.