DEX

Orca Whirlpool historical data as Parquet

Every Orca Whirlpool instruction and event in Solana history, decoded with an Anchor IDL that we checked against real transactions. Trawl gives you 6 event tables and 66 instruction tables, with a column for each account, argument and field. Calls from other programs (CPI) are in the result too.

Updated

The preset

Program
whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
Preset
orca-whirlpool
Tables
6 event tables and 66 instruction tables, and part-* with the raw bytes of each match
Price
$4 for one recent epoch, $8.68 for one week of chain

The price is the same for every program: you pay for the archive the scan reads, not for the rows. Pricing.

# ask for a price: a 402 with the quote, no payment yet
curl -X POST https://trawl.run/scan \
  -H 'Content-Type: application/json' \
  -d '{"preset":"orca-whirlpool","start_epoch":1058,"end_epoch":1058}'

-- then, in DuckDB, on the files of the job
SELECT slot, signature, whirlpool, a_to_b, pre_sqrt_price
FROM 'ev-traded-*.parquet'
ORDER BY slot
LIMIT 10;

Add "filter": {"accounts": ["<wallet>"]} to keep only the transactions that touch one wallet. How a filter changes a preset.

Event tables

One table for each event in the IDL. Each row also has log_index and the context columns. An event that the program writes two ways gives one row.

ev-liquidity_decreased
fields: whirlpool base58 string, position base58 string, tick_lower_index i32, tick_upper_index i32, liquidity decimal string, token_a_amount u64, token_b_amount u64, token_a_transfer_fee u64, token_b_transfer_fee u64
ev-liquidity_increased
fields: whirlpool base58 string, position base58 string, tick_lower_index i32, tick_upper_index i32, liquidity decimal string, token_a_amount u64, token_b_amount u64, token_a_transfer_fee u64, token_b_transfer_fee u64
ev-liquidity_repositioned
fields: whirlpool base58 string, position base58 string, existing_range_tick_lower_index i32, existing_range_tick_upper_index i32, new_range_tick_lower_index i32, new_range_tick_upper_index i32, existing_range_liquidity decimal string, new_range_liquidity decimal string, existing_range_token_a_amount u64, existing_range_token_b_amount u64, new_range_token_a_amount u64, new_range_token_b_amount u64, token_a_transfer_amount u64, token_a_transfer_fee u64, is_token_a_transfer_from_owner bool, token_b_transfer_amount u64, token_b_transfer_fee u64, is_token_b_transfer_from_owner bool
ev-pool_initialized
fields: whirlpool base58 string, whirlpools_config base58 string, token_mint_a base58 string, token_mint_b base58 string, tick_spacing u16, token_program_a base58 string, token_program_b base58 string, decimals_a u8, decimals_b u8, initial_sqrt_price decimal string
ev-position_opened
fields: whirlpool base58 string, position base58 string, tick_lower_index i32, tick_upper_index i32
ev-traded
fields: whirlpool base58 string, a_to_b bool, pre_sqrt_price decimal string, post_sqrt_price decimal string, input_amount u64, output_amount u64, input_transfer_fee u64, output_transfer_fee u64, lp_fee u64, protocol_fee u64

Instruction tables

One table for each instruction in the IDL: the named accounts, then the arguments. Each row also has the context columns: slot, tx_index, signature, success, fee, program_id, ix_index, is_inner, inner_index, stack_height, accounts. What each one holds.

ix-close_bundled_position
accounts: bundled_position, position_bundle, position_bundle_token_account, position_bundle_authority, receiver
args: bundle_index u16
ix-close_position
accounts: position_authority, receiver, position, position_mint, position_token_account, token_program
ix-close_position_with_token_extensions
accounts: position_authority, receiver, position, position_mint, position_token_account, token_2022_program
ix-collect_fees
accounts: whirlpool, position_authority, position, position_token_account, token_owner_account_a, token_vault_a, token_owner_account_b, token_vault_b, token_program
ix-collect_fees_v2
accounts: whirlpool, position_authority, position, position_token_account, token_mint_a, token_mint_b, token_owner_account_a, token_vault_a, token_owner_account_b, token_vault_b, token_program_a, token_program_b, memo_program
args: remaining_accounts_info JSON string
ix-collect_protocol_fees
accounts: whirlpools_config, whirlpool, collect_protocol_fees_authority, token_vault_a, token_vault_b, token_destination_a, token_destination_b, token_program
ix-collect_protocol_fees_v2
accounts: whirlpools_config, whirlpool, collect_protocol_fees_authority, token_mint_a, token_mint_b, token_vault_a, token_vault_b, token_destination_a, token_destination_b, token_program_a, token_program_b, memo_program
args: remaining_accounts_info JSON string
ix-collect_reward
accounts: whirlpool, position_authority, position, position_token_account, reward_owner_account, reward_vault, token_program
args: reward_index u8
ix-collect_reward_v2
accounts: whirlpool, position_authority, position, position_token_account, reward_owner_account, reward_mint, reward_vault, reward_token_program, memo_program
args: reward_index u8, remaining_accounts_info JSON string
ix-decrease_liquidity
accounts: whirlpool, token_program, position_authority, position, position_token_account, token_owner_account_a, token_owner_account_b, token_vault_a, token_vault_b, tick_array_lower, tick_array_upper
args: liquidity_amount decimal string, token_min_a u64, token_min_b u64
ix-decrease_liquidity_v2
accounts: whirlpool, token_program_a, token_program_b, memo_program, position_authority, position, position_token_account, token_mint_a, token_mint_b, token_owner_account_a, token_owner_account_b, token_vault_a, token_vault_b, tick_array_lower, tick_array_upper
args: liquidity_amount decimal string, token_min_a u64, token_min_b u64, remaining_accounts_info JSON string
ix-delete_position_bundle
accounts: position_bundle, position_bundle_mint, position_bundle_token_account, position_bundle_owner, receiver, token_program
ix-delete_token_badge
accounts: whirlpools_config, whirlpools_config_extension, token_badge_authority, token_mint, token_badge, receiver
ix-idl_include
accounts: tick_array, system_program
ix-increase_liquidity
accounts: whirlpool, token_program, position_authority, position, position_token_account, token_owner_account_a, token_owner_account_b, token_vault_a, token_vault_b, tick_array_lower, tick_array_upper
args: liquidity_amount decimal string, token_max_a u64, token_max_b u64
ix-increase_liquidity_by_token_amounts_v2
accounts: whirlpool, token_program_a, token_program_b, memo_program, position_authority, position, position_token_account, token_mint_a, token_mint_b, token_owner_account_a, token_owner_account_b, token_vault_a, token_vault_b, tick_array_lower, tick_array_upper
args: method JSON string, remaining_accounts_info JSON string
ix-increase_liquidity_v2
accounts: whirlpool, token_program_a, token_program_b, memo_program, position_authority, position, position_token_account, token_mint_a, token_mint_b, token_owner_account_a, token_owner_account_b, token_vault_a, token_vault_b, tick_array_lower, tick_array_upper
args: liquidity_amount decimal string, token_max_a u64, token_max_b u64, remaining_accounts_info JSON string
ix-initialize_adaptive_fee_tier
accounts: whirlpools_config, adaptive_fee_tier, funder, fee_authority, system_program
args: fee_tier_index u16, tick_spacing u16, initialize_pool_authority base58 string, delegated_fee_authority base58 string, default_base_fee_rate u16, filter_period u16, decay_period u16, reduction_factor u16, adaptive_fee_control_factor u32, max_volatility_accumulator u32, tick_group_size u16, major_swap_threshold_ticks u16
ix-initialize_config
accounts: config, funder, system_program
args: fee_authority base58 string, collect_protocol_fees_authority base58 string, reward_emissions_super_authority base58 string, default_protocol_fee_rate u16
ix-initialize_config_extension
accounts: config, config_extension, funder, fee_authority, system_program
ix-initialize_dynamic_tick_array
accounts: whirlpool, funder, tick_array, system_program
args: start_tick_index i32, idempotent bool
ix-initialize_fee_tier
accounts: config, fee_tier, funder, fee_authority, system_program
args: tick_spacing u16, default_fee_rate u16
ix-initialize_pool
accounts: whirlpools_config, token_mint_a, token_mint_b, funder, whirlpool, token_vault_a, token_vault_b, fee_tier, token_program, system_program, rent
args: bumps JSON string, tick_spacing u16, initial_sqrt_price decimal string
ix-initialize_pool_v2
accounts: whirlpools_config, token_mint_a, token_mint_b, token_badge_a, token_badge_b, funder, whirlpool, token_vault_a, token_vault_b, fee_tier, token_program_a, token_program_b, system_program, rent
args: tick_spacing u16, initial_sqrt_price decimal string
ix-initialize_pool_with_adaptive_fee
accounts: whirlpools_config, token_mint_a, token_mint_b, token_badge_a, token_badge_b, funder, initialize_pool_authority, whirlpool, oracle, token_vault_a, token_vault_b, adaptive_fee_tier, token_program_a, token_program_b, system_program, rent
args: initial_sqrt_price decimal string, trade_enable_timestamp u64
ix-initialize_position_bundle
accounts: position_bundle, position_bundle_mint, position_bundle_token_account, position_bundle_owner, funder, token_program, system_program, rent, associated_token_program
ix-initialize_position_bundle_with_metadata
accounts: position_bundle, position_bundle_mint, position_bundle_metadata, position_bundle_token_account, position_bundle_owner, funder, metadata_update_auth, token_program, system_program, rent, associated_token_program, metadata_program
ix-initialize_reward
accounts: reward_authority, funder, whirlpool, reward_mint, reward_vault, token_program, system_program, rent
args: reward_index u8
ix-initialize_reward_v2
accounts: reward_authority, funder, whirlpool, reward_mint, reward_token_badge, reward_vault, reward_token_program, system_program, rent
args: reward_index u8
ix-initialize_tick_array
accounts: whirlpool, funder, tick_array, system_program
args: start_tick_index i32
ix-initialize_token_badge
accounts: whirlpools_config, whirlpools_config_extension, token_badge_authority, token_mint, token_badge, funder, system_program
ix-lock_position
accounts: funder, position_authority, position, position_mint, position_token_account, lock_config, whirlpool, token_2022_program, system_program
args: lock_type variant name
ix-migrate_repurpose_reward_authority_space
accounts: whirlpool
ix-open_bundled_position
accounts: bundled_position, position_bundle, position_bundle_token_account, position_bundle_authority, whirlpool, funder, system_program, rent
args: bundle_index u16, tick_lower_index i32, tick_upper_index i32
ix-open_position
accounts: funder, owner, position, position_mint, position_token_account, whirlpool, token_program, system_program, rent, associated_token_program
args: bumps JSON string, tick_lower_index i32, tick_upper_index i32
ix-open_position_with_metadata
accounts: funder, owner, position, position_mint, position_metadata_account, position_token_account, whirlpool, token_program, system_program, rent, associated_token_program, metadata_program, metadata_update_auth
args: bumps JSON string, tick_lower_index i32, tick_upper_index i32
ix-open_position_with_token_extensions
accounts: funder, owner, position, position_mint, position_token_account, whirlpool, token_2022_program, system_program, associated_token_program, metadata_update_auth
args: tick_lower_index i32, tick_upper_index i32, with_token_metadata_extension bool
ix-reposition_liquidity_v2
accounts: whirlpool, token_program_a, token_program_b, memo_program, position_authority, funder, position, position_token_account, token_mint_a, token_mint_b, token_owner_account_a, token_owner_account_b, token_vault_a, token_vault_b, existing_tick_array_lower, existing_tick_array_upper, new_tick_array_lower, new_tick_array_upper, system_program
args: new_tick_lower_index i32, new_tick_upper_index i32, method JSON string, remaining_accounts_info JSON string
ix-reset_position_range
accounts: funder, position_authority, whirlpool, position, position_token_account, system_program
args: new_tick_lower_index i32, new_tick_upper_index i32
ix-set_adaptive_fee_constants
accounts: whirlpool, whirlpools_config, oracle, fee_authority
args: filter_period u16, decay_period u16, reduction_factor u16, adaptive_fee_control_factor u32, max_volatility_accumulator u32, tick_group_size u16, major_swap_threshold_ticks u16
ix-set_collect_protocol_fees_authority
accounts: whirlpools_config, collect_protocol_fees_authority, new_collect_protocol_fees_authority
ix-set_config_extension_authority
accounts: whirlpools_config, whirlpools_config_extension, config_extension_authority, new_config_extension_authority
ix-set_config_feature_flag
accounts: whirlpools_config, authority
args: feature_flag JSON string
ix-set_default_base_fee_rate
accounts: whirlpools_config, adaptive_fee_tier, fee_authority
args: default_base_fee_rate u16
ix-set_default_fee_rate
accounts: whirlpools_config, fee_tier, fee_authority
args: default_fee_rate u16
ix-set_default_protocol_fee_rate
accounts: whirlpools_config, fee_authority
args: default_protocol_fee_rate u16
ix-set_delegated_fee_authority
accounts: whirlpools_config, adaptive_fee_tier, fee_authority, new_delegated_fee_authority
ix-set_fee_authority
accounts: whirlpools_config, fee_authority, new_fee_authority
ix-set_fee_rate
accounts: whirlpools_config, whirlpool, fee_authority
args: fee_rate u16
ix-set_fee_rate_by_delegated_fee_authority
accounts: whirlpool, adaptive_fee_tier, delegated_fee_authority
args: fee_rate u16
ix-set_initialize_pool_authority
accounts: whirlpools_config, adaptive_fee_tier, fee_authority, new_initialize_pool_authority
ix-set_preset_adaptive_fee_constants
accounts: whirlpools_config, adaptive_fee_tier, fee_authority
args: filter_period u16, decay_period u16, reduction_factor u16, adaptive_fee_control_factor u32, max_volatility_accumulator u32, tick_group_size u16, major_swap_threshold_ticks u16
ix-set_protocol_fee_rate
accounts: whirlpools_config, whirlpool, fee_authority
args: protocol_fee_rate u16
ix-set_reward_authority
accounts: whirlpool, reward_authority, new_reward_authority
args: reward_index u8
ix-set_reward_authority_by_super_authority
accounts: whirlpools_config, whirlpool, reward_emissions_super_authority, new_reward_authority
args: reward_index u8
ix-set_reward_emissions
accounts: whirlpool, reward_authority, reward_vault
args: reward_index u8, emissions_per_second_x64 decimal string
ix-set_reward_emissions_super_authority
accounts: whirlpools_config, reward_emissions_super_authority, new_reward_emissions_super_authority
ix-set_reward_emissions_v2
accounts: whirlpool, reward_authority, reward_vault
args: reward_index u8, emissions_per_second_x64 decimal string
ix-set_token_badge_attribute
accounts: whirlpools_config, whirlpools_config_extension, token_badge_authority, token_mint, token_badge
args: attribute JSON string
ix-set_token_badge_authority
accounts: whirlpools_config, whirlpools_config_extension, config_extension_authority, new_token_badge_authority
ix-swap
accounts: token_program, token_authority, whirlpool, token_owner_account_a, token_vault_a, token_owner_account_b, token_vault_b, tick_array_0, tick_array_1, tick_array_2, oracle
args: amount u64, other_amount_threshold u64, sqrt_price_limit decimal string, amount_specified_is_input bool, a_to_b bool
ix-swap_v2
accounts: token_program_a, token_program_b, memo_program, token_authority, whirlpool, token_mint_a, token_mint_b, token_owner_account_a, token_vault_a, token_owner_account_b, token_vault_b, tick_array_0, tick_array_1, tick_array_2, oracle
args: amount u64, other_amount_threshold u64, sqrt_price_limit decimal string, amount_specified_is_input bool, a_to_b bool, remaining_accounts_info JSON string
ix-transfer_locked_position
accounts: position_authority, receiver, position, position_mint, position_token_account, destination_token_account, lock_config, token_2022_program
ix-two_hop_swap
accounts: token_program, token_authority, whirlpool_one, whirlpool_two, token_owner_account_one_a, token_vault_one_a, token_owner_account_one_b, token_vault_one_b, token_owner_account_two_a, token_vault_two_a, token_owner_account_two_b, token_vault_two_b, tick_array_one_0, tick_array_one_1, tick_array_one_2, tick_array_two_0, tick_array_two_1, tick_array_two_2, oracle_one, oracle_two
args: amount u64, other_amount_threshold u64, amount_specified_is_input bool, a_to_b_one bool, a_to_b_two bool, sqrt_price_limit_one decimal string, sqrt_price_limit_two decimal string
ix-two_hop_swap_v2
accounts: whirlpool_one, whirlpool_two, token_mint_input, token_mint_intermediate, token_mint_output, token_program_input, token_program_intermediate, token_program_output, token_owner_account_input, token_vault_one_input, token_vault_one_intermediate, token_vault_two_intermediate, token_vault_two_output, token_owner_account_output, token_authority, tick_array_one_0, tick_array_one_1, tick_array_one_2, tick_array_two_0, tick_array_two_1, tick_array_two_2, oracle_one, oracle_two, memo_program
args: amount u64, other_amount_threshold u64, amount_specified_is_input bool, a_to_b_one bool, a_to_b_two bool, sqrt_price_limit_one decimal string, sqrt_price_limit_two decimal string, remaining_accounts_info JSON string
ix-update_fees_and_rewards
accounts: whirlpool, position, tick_array_lower, tick_array_upper

Files are split at 2 GB: ix-<name>-tNN-SSSS.parquet. Large integers stay exact: u128 is a decimal string. All decoded types.

Get Orca Whirlpool data for your range.

Select an epoch range and get a firm price. You pay only when you send the job.

Get a price