Pruned Cell
TON cell whose children are replaced by their hashes only. Used in Merkle proofs and lite-server responses to keep payloads small.
Aliases: pruned branch, exotic cell
Pruned Cell is a special “exotic” cell type in TON that stores only the hash of its children instead of the children themselves. It’s a compact way to reference a cell tree without shipping the whole thing. Pruned cells are the foundation of Merkle proofs on TON.
Why they exist
Lite-servers and lite-clients can’t ship the full state cell-tree on every query — it’s enormous. Instead they send a partial tree: the cells actually needed to answer the question, plus pruned cells in place of every other branch. The client checks the root hash and is convinced the data really comes from the network state.
It’s the same idea as Merkle proofs in Bitcoin / Ethereum, applied to the cell tree.
Structure
A pruned cell is a cell with a special exotic type and a fixed body:
- Pruning level (a few bytes).
- Hash of the child cell that was pruned (32 bytes).
- Height in the original tree.
When TVM computes the tree hash it substitutes the hash carried by the pruned cell in place of the actual sub-tree’s hash — and the resulting root hash matches the real one.
Where you meet them
- Lite-server proofs. When a lite-client asks for a jetton wallet’s balance, the server returns only the relevant cell path plus pruned cells for sibling branches.
- Block proofs. Proofs that a transaction belongs to a specific block.
- Cross-chain bridges. Pruned cells let you compactly attest one chain’s state to another.
Ordinary dApps never deal with pruned cells directly — they’re plumbing for lite-clients, indexers, and bridges. But the mechanism is worth understanding: pruned cells are why a TON client can verify data without downloading the entire state.