Cosmos Lab
A Cosmos signed header and two chained ICS-23 proofs, captured once and replayed offline.
The header, its validator set and both state proofs were captured from osmo-test-5 at height 68199363 on 2026-08-11T18:56:17Z and are frozen. Nothing on this page contacts a network while it serves you a request — the bytes are compiled into the binary and the verification is arithmetic over them.
This is not a light client. A light client follows a chain: it holds a trusted header, asks for new ones, and updates what it trusts within a trust period. There is none of that here. What there is, is a verifier that can be watched refusing things.
Where the data came from
- Network
- osmo-test-5
- Endpoint
- https://rpc.osmotest5.osmosis.zone
- CometBFT
- 0.38.17
- Captured (UTC)
- 2026-08-11T18:56:17Z
- Header height
- 68199363
- State read at
- 68199362
- Module store
- bank
The state is read at one height and committed by the header at the
next one: a Cosmos header's AppHash is the root of the state the previous block left
behind. Both heights are recorded in the capture, and the capture asserts the relationship rather than assuming it.
Voting power is not validator count
The commit needs more than two thirds of the voting power, which on this set is more than 57130044 of 85695066. It is a strict inequality: exactly two thirds is not enough. These are figures about the captured set, not measurements of a run.
| Validator | Voting power | Share |
|---|---|---|
6242446D6100FF27A850FD9DCED9512359C3A99A |
43980086 | 51.32% |
805AC0A38E0B08FA8E67E627E9781CE58897B734 |
41224130 | 48.11% |
459B656975751C86D2D3E9F597A979344F1D8CFD |
208362 | 0.24% |
2574AE37BFF07C473DCD36F46FF334F54E55D97C |
203101 | 0.24% |
51FD33F85A311FD27B36A620A7B9A40BF4839533 |
79387 | 0.09% |
The highlighted 2 of 5 validators carry more than the threshold between them. So a minority of validators can pass this commit, and a majority of them can fail it. Two scenarios below do exactly that.
What the proofs are about
Both proofs are checked against the header's AppHash, in two layers: the key inside the
bank module's own tree, and that tree's root inside the multistore.
- Present key
00 uosmo- Its value
480788050440442- Absent key
00 pf-s209a-no-such-denom
Run the verifier
Every scenario declares the verdict it expects before it runs, and the result panel prints that beside what actually happened. If the two ever disagree, this page says so.
The verifier is a separate, public Go module; this page is only
the menu in front of it. It has no cosmos-sdk dependency — two direct dependencies in total.
Nothing is deployed by this demo, on any chain. It reads bytes that osmo-test-5's validators published, and checks the signatures and proofs over them.