The main Verae chain stores hash + time + block + certificate. A Zap that timestamps one document writes that document’s SHA-256 as its own seal.
A batch of many documents is different: middleware builds a Merkle tree of the item hashes, seals only the Merkle root on the chain, and writes each leaf proof to external tree-node NATS archives. A later lookup of a member hash will miss on the central chain unless the Zap also queries tree nodes.
Zapier HTTPS zappier-edge HTTPS middleware
|
Merkle root | verae.archive.put kind=tree
(chain seal) | (leaf proof, sharded)
v
tree-node-east/west/central
bloom miss = silence
^
hash lookup includeTree | verae.archive.query
| kinds=["tree"]
aggregator merges proof + root seal
| Search | Hits |
|---|---|
| Find Timestamp by SHA256 | Hash was registered as its own chain seal |
| Find Hash (tree nodes + central chain) | Chain first, then includeTree=true broadcast |
{
"sha256": "<leaf>",
"exists": true,
"itemizedOnMainChain": false,
"merkleRoot": "<root sealed on chain>",
"proofOk": true,
"receipts": [
{ "kind": "seal", "of": "merkleRoot", "sha256": "<root>", "certificate": "…" },
{ "kind": "tree-leaf", "archiveId": "tree-node-east", "proof": […], "leafIndex": 1 }
]
}Validate this path in the simulator
(packages/verae-zapier-simulator) before pushing the Zapier
app.