Trust, and verify.
Check a block, its transactions and the state it wrote against the chain itself. No trust in secondlayer, or in any node that served the bytes.
Check a block in your browser.
One command walks every link, from Bitcoin to your row.
A lying source can make a link fail. It can never make one pass.
Every answer we can prove ships with its proof.
A hash, a merkle path, a signature, or a replay you run yourself. Each one names what you still trust.
Any height, with its transactions and state
secondlayer verify block <height>Still trusted: the checkpoint in the release
It's in the block, and the signers signed it
GET /v1/index/transactions/:id/proofStill trusted: the signer set, unless you pass your node's
Every key a block wrote, named and proven
GET /v1/proofs/writes/:heightStill trusted: the checkpoint
Your history against the signed manifest
secondlayer verify raw --against latest.jsonStill trusted: the archive signing key. Checking is free; repair is paid.
Recompute a state subgraph and compare
secondlayer verify subgraph <name> --replayStill trusted: the checkpoint. State subgraphs only.
Streams frames and webhooks are signed
verifyWebhookSignature(body, headers)Still trusted: the key. Proves who sent it, not that the chain agrees.
A check that passes leaves you trusting a smaller, named thing.
A check that can't run says so, and is never a pass.
Each step trusts less than the one before.
Decoded
Every Stacks block, from genesis, delivered at tip.
Signed
Archive manifests, Streams frames and webhooks carry ed25519 signatures.
Checkable
Blocks, state writes, state-subgraph rows and Bitcoin transactions prove against the chain.
Every write, named
Inner contract calls and writes that never print, with the transaction that made them.
The same check, as a library.
Gate a payout, a bridge release or an alert on a block you proved yourself.
- Never throws on bad data. Returns ok: false and the first broken link.
- Bring your own node. Blocks and MARF proofs come from its RPC; the rest is checked the same way.
- Runs anywhere. fetch and pure-JS crypto, no Node built-ins.
- Proofs are never billed. No key needed; add one for higher rate limits.
6proofs are never billed
11proven on your machine
13fails with the first broken link
The raw material, free.
What verify block reads. Fetch it yourself and check it however you like.
| Route | Returns |
|---|---|
| /v1/proofs/block/height/:height | Signed block by height |
| /v1/proofs/witness/:index_block_hash | State witness the header's state root must hash to |
| /v1/proofs/writes/:height | Every leaf the block wrote, named |
| /v1/proofs/marf/:path | MARF inclusion proof for a key at a block |
| /v1/proofs/burn/:consensus_hash | Burn block a consensus hash commits to |
| /v1/proofs/bitcoin-headers | Raw Bitcoin headers from a height |
| /v1/proofs/bitcoin-tx/:txid | Bitcoin transaction, merkle branch and header |