Practical overview
When it fits
Use IAVL when a Go application needs persistent key-value state with versioned snapshots and Merkle roots, especially when its Cosmos SDK and database-interface versions match a listed release combination.
Who it is for
- Blockchain application developers building persistent key-value state.
- Cosmos SDK teams selecting a Merkleized storage library for a specific SDK and database-interface version.
Documented uses
- Store application state such as account balances in a persistent key-value structure.
- Compute a deterministic Merkle root for stored state.
- Keep immutable state snapshots, stage uncommitted changes and roll back to a committed state.
- Select an IAVL release that matches a documented Cosmos SDK and database-interface combination.
Requirements & limits
The project is an open-source Go library under the Apache-2.0 license. The README requires Go 1.18 or later.
- The deterministic Merkle root depends on transaction order.
- The repository maps IAVL releases to particular Cosmos SDK and database-interface versions; choose a matching row.
- IAVL’s AVL+ layout keeps values on leaf nodes and keys in branch nodes.
- The README describes all operations as O(log(n)).
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Choose a compatible IAVL release for Cosmos SDK
Select a documented IAVL and database-interface pairing for a Cosmos SDK application.
Before you start
- A Cosmos SDK application version to match against the repository compatibility table.
- Go 1.18 or later.
- The repository’s IAVL, database-interface and Cosmos SDK compatibility table.
Steps
Find the application’s Cosmos SDK version in the compatibility table.
Select the IAVL release and database interface shown on that row.
Use the selected IAVL release for the integration.
Expected outcome
A release and database-interface pairing corresponding to the application’s listed Cosmos SDK version.
Guide limitations
- The compatibility table identifies version pairings but does not provide integration or execution steps.
- The repository notes that v0.21.x was retracted and was never used in production.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 10 October 2026
- Original website title
- cosmos/iavl · Official homepage title · retained in its source language
Related options
Ethereum-style Patricia tries — The README presents Patricia tries as an analogous structure and contrasts them with IAVL: IAVL keys need not be hashed before insertion, which may benefit key-space iteration, whi

