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.

The 5 validators in force at height 68199363
ValidatorVoting powerShare
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.

Commit signatures and voting power
ICS-23 membership
ICS-23 non-membership

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.