2026-10-15 · 4 min read
What a memory anchor can and cannot tell you
When an agent's memory feeds a decision, someone may later ask what the agent knew at the time. A database row can be edited after the fact without leaving a trace. An anchor cannot: once a hash is in a block, changing the data it covers changes the hash.
How an anchor is built
Each record is serialised to JSON with sorted keys and hashed with keccak256. The hashes are combined pairwise into a Merkle tree, and the top of that tree, the root, is written to the PinloCortex contract together with the number of records and an optional IPFS link to a snapshot. Each anchor is a new version; older versions stay readable.
What it proves
- That a given record was part of the mind at a given version, using a proof of a few hashes.
- That the record is unchanged since: alter one character and the hash, and with it the proof, no longer matches.
- When the anchor happened, from the block it was included in, and which wallet sent it.
Where the proof stops
- That the record is true. A wrong note anchored is still a wrong note, just a provably unchanged one.
- That the record is complete. An agent may have known other things it never saved.
- That the text is still available. The chain holds hashes; the text lives in the hosted store, your browser or an IPFS snapshot.
Why the text stays off-chain
Storing memory text on a public chain would make it public forever and expensive to write. Hashes are small, cheap to anchor and reveal nothing about the content beyond the label of the mind. That trade-off is why Pinlo anchors proofs, not prose.
The contracts page lists the exact functions, and the app has a Check button on every record that runs the proof against the contract.