Some records are entries. One or two are testimony.
Maya scrolls the crate late on a Friday — ten thousand songs and counting, enrichment still humming — and her cursor keeps returning to the same place. Heard Live at The Fillmore. Eleven songs, one April night, a curatedBy with her name on it. Every platform that ever held this list is dead. The list outlived them all, and now it lives in something she built.
And Maya notices she wants a thing she hasn't wanted in fifteen years — not since before the first shutdown taught her not to. She doesn't want it backed up. She wants it published. On the record, in public, permanent, with her name attached. She wants it to be true somewhere that doesn't need her laptop to exist.
What onchain actually buys#
Eight chapters were free, and that was the point: identity costs nothing. Nothing about the crate required a wallet, a token, or anyone's permission — and the graph never nagged. Onchain was never the price of admission.
It's a signal. Publishing a record onchain is the moment someone stakes this one is worth keeping — and it buys the record three things the offchain crate can't:
- A market. The record gets a vault where anyone can stake $TRUST on it. Conviction stops being a vibe and becomes a number the whole graph can read. (The pricing math has its own package and its own story — one chapter more.)
- Its own Ethereum address. Every thing in the graph is also an account. The Fillmore list can hold value. Kerala can act onchain. Records stop being about things and start being addressable things.
- A permanent, shared home. Anyone, in any app, can find it and build on it — no API keys, no permission, no Maya.
The promotion, not the migration#
Here's where the very first chapter comes due. When Maya publishes, the MultiVault contract derives the record's ID from the same bytes — the same salted keccak256 the crate has run since the first calculateAtomId("hello"). Onchain Kerala is 0x6fa0…5b08. Offchain Kerala is 0x6fa0…5b08. There is no mapping table, because there is nothing to map.
Nothing migrates. Nothing re-indexes. Eight chapters of offchain work — the shapes, the claims, the lists, the sameAs repairs — none of it was throwaway, because every record has been carrying its onchain name since the moment it was born. The atom isn't re-created. It's promoted.
import { multiVaultCreateAtoms, multiVaultCreateTriples } from "@0xintuition/protocol";
import { getDeployment } from "@0xintuition/deployments"; // typed chain config + addresses
// the list, its members, its curator — same bytes the crate has held all along
await multiVaultCreateAtoms(config, { args: [[heardLiveBytes, ...memberBytes]], value: cost });
// then the claims: listedIn, curatedBy — published as the same triples
await multiVaultCreateTriples(config, { args: [tripleArgs], value: cost });
The protocol package simulates before it writes — the transaction is checked against the contract before a single unit moves. Maya watches the confirmation, then does the thing every developer does and nobody admits: she derives the ID locally one more time and compares it to the explorer, character by character.
Same bytes. Same ID. Chapter one kept its promise.
Where this is going#
Heard Live at The Fillmore is public now. It has an address. It has a market. It doesn't need Maya's laptop, her backups, or her.
Which means — and Maya realizes this somewhere around 2 a.m. — for the first time in fifteen years of collecting, other people can touch her collection. Stake on it. Argue with it. Add to it.
Fifteen years of instinct says that's the disaster. The last chapter is about why it's the payoff.