Orca is proud to introduce Dynamic Tick Arrays, a significant upgrade to our Whirlpools program that dramatically lowers the cost of creating liquidity pools and improves capital efficiency on Solana.Documentation Index
Fetch the complete documentation index at: https://docs.orca.so/llms.txt
Use this file to discover all available pages before exploring further.

Why This Matters
Back in November 2024, we took a major step in reducing liquidity provision costs by integrating TokenExtensions for fully refundable rent on position NFTs. Today, we’re pushing efficiency even further. This latest upgrade fundamentally redesigns how liquidity storage is handled, making it more affordable and scalable for everyone, from individual LPs to new token teams. This initiative is driven by our commitment to building a platform that can support Solana’s long-term growth. As our engineering team notes, the cost of on-chain rent is a critical factor for scalability:“If the price of SOL were to reach 1000, the rent burden would become extreme — and that’s been a key motivation behind our ongoing efforts to improve our infrastructure. That’s why Orca is taking the rent problem seriously; it is essential for building a system that can truly scale alongside Solana.”In this post, we’ll explore the challenge of on-chain liquidity storage, explain how Dynamic Tick Arrays provide a powerful solution, and detail what this means for users and developers.
The Challenge: Upfront Costs and On-Chain Rent
To understand the solution, let’s first look at the problem it solves. In a concentrated liquidity pool, the full price range of an asset (from zero to infinity) is divided into discrete price points called ticks. Each tick acts like a checkpoint, tracking how much liquidity should be added or removed as the pool’s price moves past it. This is what allows liquidity providers (LPs) to concentrate their capital in specific price ranges. Storing every single tick in its own on-chain account would be extremely inefficient and costly. To solve this, Orca groups consecutive ticks (88 in our case) into a single account called a Tick Array.
The Solution: Orca’s Dynamic Tick Arrays

- Initializes Tick Arrays as small as possible, covering only the necessary storage.
- Dynamically resizes the Tick Array as new positions are opened or closed.
- Makes the rent paid by LPs to expand an array fully refundable when their position is closed.
Key Details for Traders and Liquidity Providers
One important point to understand about how this upgrade affects you:- **Swapping is unaffected; this is an LP improvement.**Trading behavior remains unchanged. Thanks to Orca’s SparseSwap feature, swaps can seamlessly traverse any price range based on available liquidity, regardless of whether a Tick Array has been initialized. This upgrade specifically benefits liquidity providers by lowering their costs and removing friction.
- Understand the Rent: A small, one-time cost plus refundable deposits. This update changes how rent is handled, so it’s important to know the two scenarios:
- i) For a brand-new price range: If a Tick Array is completely uninitialized, the first user to provide liquidity pays a small, one-time, non-refundable rent to create it with a minimum size. This cost is exceptionally low — even smaller than the rent for a standard associated token account (ATA) and a fraction of the previous 0.07 SOL cost.
- ii) For existing price ranges: If a position requires an existing Tick Array to be expanded, the protocol collects a small, refundable rent deposit from the LP. This deposit is returned in full when the position is closed.
Key Details for Developers and Builders
This upgrade is already live and supported in the latest version of our Rust SDK. We highly recommend using the SDK to integrate this feature, as it automates serialization/deserialization and ensures future compatibility. The key technical changes are:- Tick Arrays are initialized with minimal size.
- The program dynamically resizes Tick Array accounts when positions are opened or closed.
- Rent paid by users to resize an array is refundable.
