OpenViSTAI · Agents · Blockchain · Crypto
Menu
Infrastructure

IAVL+ Tree

IAVL is an open-source Go library implementing a persistent, versioned AVL+ tree for key-value data. Its immutable, hash-indexed nodes support snapshots and rollback, and the tree produces deterministic Merkle root hashes.

Independent OpenViST project profile, based on linked sources.

IAVL+ Tree — OpenViST project profile in Infrastructure.
OpenViST project illustration. See the linked sources for product details.
Understand the project

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.
Before you choose

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.

Source-based practical guide

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

  1. Find the application’s Cosmos SDK version in the compatibility table.

  2. Select the IAVL release and database interface shown on that row.

  3. 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.
Evidence and transparency

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