About

This site is a read-only explorer for Bitcoin's gettxoutsetinfo RPC call. It records one UTXO-set snapshot per block so you can verify it against your own node.

What is gettxoutsetinfo?

Every bitcoin that hasn't been spent lives in the UTXO set (unspent transaction outputs). It's the part of the chain state a node actually needs to validate new transactions. gettxoutsetinfo asks a node for statistics about that set at a given block: how many outputs exist (txouts), the total amount of coins in circulation (total_amount), how much disk the chain state takes, and a hash that fingerprints the whole set.

Those numbers are a compact summary of the ledger's current state. If two bitcoin nodes agree on them at the same block, they agree on which coins exist and who can spend them.

What is MuHash?

MuHash is a hash gettxoutsetinfo can produce, and it's the one this explorer stores. It's a rolling hash of the entire UTXO set that doesn't care about ordering. Each output gets hashed into a large number, and all of those numbers are multiplied together modulo a 3072-bit constant. Multiplication commutes, so the result is the same no matter what order the outputs come in (source code).

Verifying a node's chain state

Because the MuHash is a fingerprint of the full UTXO set, it's a quick way to check that a node's chain state is correct. Two nodes that independently validated the chain up to the same block should compute the exact same MuHash. If they don't, one of them has a different set of unspent outputs, which means corrupted data, a bug, or a different chain.

You can run the check yourself. Point a Bitcoin Core node at a block and run:

$ bitcoin-cli gettxoutsetinfo muhash <height>

Height is optional, if you enabled coinstatsindex. Compare the muhash field against the value shown here for that block height.