Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

provable

What gno.land can and cannot prove about itself, demonstrated rather than asserted.

The log

An append-only Merkle mountain range. Appending costs O(log n) hashes and never rebuilds.

Field Value
Entries 3 / 512
Stored hashes 4
Peaks 2
Root c9d22dd237c668944fde619edb56cc1bee0e988b03ac08694f6d3aba440c0776

This root is also the Tendermint simple-tree root over the same entries, so any Tendermint verifier accepts it. Verify and VerifyFixed check the two proof encodings against it.

What the chain can prove

gno.land/pkg/gnoland/app.go mounts exactly two stores. One is IAVL and merkleized, the other is a plain dbadapter whose Commit is documented as "Always returns a zero commitID, as dbadapter store doesn't merkleize".

Data Store Provable against the app hash
Package source iavl yes
Account balances iavl yes
Escaped object hashes (cross-realm) iavl yes, the hash only
Realm objects, types, realm metadata base no
This log base no

What that means here

A proof from this realm says this entry is consistent with the root this realm published. It cannot say this root is the chain's own, for two independent reasons:

  1. Realm state is not merkleized, so there is no state proof to produce.
  2. chain/runtime exposes ChainID, ChainDomain, ChainHeight and GetSessionInfo and nothing else. No app hash, no block hash, no header. A realm has no trusted root to check anything against.

Anything built on Merkle proofs in a gno realm is trust-minimised relative to a committed root, never trustless. Saying otherwise would be the interesting-sounding half of a true story.

Entries

# Entry
0 genesis of this log
1 a second commitment
2 a third commitment