CoolFace
Datasetpublic

DataStore/meteora-dlmm-historical-data

Meteora DLMM Historical Data Decoded Solana mainnet instructions and events from Meteora DLMM (Dynamic Liquidity Market Maker), a concentrated-liquidity DEX where liquidity sits in discrete price bins and the fee rate rises with volatility. 74 tables, 59,575 rows, one row per decoded instruction or event. Program ID LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo. This is a free sample from datastore.sh, which publishes the complete history as versioned Parquet. Read… See the full description on the dataset page: https://huggingface.co/datasets/DataStore/meteora-dlmm-historical-data.

sourceHugging Facecc-by-sa-4.0updated 7d agoView on Hugging Face
0likes182downloads
Dataset Card

Meteora DLMM Historical Data

Decoded Solana mainnet instructions and events from Meteora DLMM (Dynamic Liquidity Market Maker), a concentrated-liquidity DEX where liquidity sits in discrete price bins and the fee rate rises with volatility.

74 tables, 59,575 rows, one row per decoded instruction or event. Program ID LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.

This is a free sample from datastore.sh, which publishes the complete history as versioned Parquet.

Read this before you analyse it

The sample is capped per table, not per time window. 56 of the 74 tables stop at exactly 1,000 rows. The cap binds hardest on the busiest instructions, so each table covers however long it took to accumulate 1,000 rows — swap_event spans 17 seconds of blocks (2026-06-10 09:38:33 to 09:38:50), while rare instructions like close_bin_array (11 rows) or initialize_preset_parameter (4 rows) are complete over months. Row counts across tables are therefore not comparable as activity measures, and nothing here supports volume trends or backtests. Use it to learn the schema and build a parser.

Swaps appear in two places. The swap* tables are decoded instructions; swap_event is the self-CPI event the program logs. They are different row sets — don't union them. There are also versioned variants (swap / swap2, swap_exact_out / swap_exact_out2), which are separate on-chain instructions, not duplicates.

One transaction can log several swap events. In swap_event, 1,000 rows come from 943 transactions: 891 logged one event, 47 logged two, 5 logged three. Group by sig before summing amounts or you will double-count routed trades.

Amounts are raw base units. Divide by 10^decimals of the mint (9 for SOL, 6 for USDC). No field is decimal-adjusted.

`fee_bps` is scaled, not literal basis points. Values start at 100,000 and run up through 152,018 in this sample — treat it as a fixed-point field and calibrate against fee / amount_in before quoting a percentage.

What the sample actually contains

From swap_event (1,000 rows, 114 distinct lb_pair pools):

  • Direction is lopsided: 752 swaps are X→Y, 248 are Y→X.
  • Most swaps barely move price: 36.2% cross zero bins (start_bin_id == end_bin_id), the mean is 0.85 bins and the maximum is 6. Concentrated liquidity is doing its job at this size.
  • Fees: every row charges a fee, 98.1% also pay a protocol_fee, but only 12.0% carry a host_fee — integrator referral fees are the exception, not the rule.

Columns shared by every table

ColumnMeaning
tsBlock time, UTC
slotSolana slot
tx_indexPosition of the transaction in the block
ix_pathInstruction position; more than one index means an inner (CPI) instruction
sigTransaction signature, base58 — the join key across tables
remainingRemaining accounts, JSON, pubkeys as byte arrays (convert to base58 to match explorers)

Order events within a transaction by slot, tx_index, then ix_path.

Loading

python
from datasets import load_dataset

ds = load_dataset("DataStore/meteora-dlmm-historical-data", "meteora_dlmm_swap_event")

Each table is a separate config named after its file. With pandas:

python
import pandas as pd

url = "https://huggingface.co/datasets/DataStore/meteora-dlmm-historical-data/resolve/main/meteora_dlmm_swap_event.csv"
df = pd.read_csv(url)

Worth trying

Measure realised fee rate per pool as fee / amount_in and check how it tracks bins crossed — the dynamic fee should rise with volatility. Compare liquidity added through add_liquidity_by_strategy against add_liquidity_by_weight to see which shaping LPs prefer. Join place_limit_order to cancel_limit_order on lb_pair to see how much resting DLMM liquidity is ever filled.

Tables

TableRowsColumns
meteora_dlmm_add_liquidity21,00023
meteora_dlmm_add_liquidity_by_strategy1,00024
meteora_dlmm_add_liquidity_by_strategy21,00023
meteora_dlmm_add_liquidity_by_strategy_one_side1,00024
meteora_dlmm_add_liquidity_by_weight1,00029
meteora_dlmm_add_liquidity_by_weight21,00025
meteora_dlmm_add_liquidity_event1,00011
meteora_dlmm_add_liquidity_one_side1,00024
meteora_dlmm_add_liquidity_one_side_precise21,00022
meteora_dlmm_cancel_limit_order1,00026
meteora_dlmm_claim_fee1,00021
meteora_dlmm_claim_fee21,00024
meteora_dlmm_claim_fee2_event1,00012
meteora_dlmm_claim_fee_event1,00011
meteora_dlmm_claim_reward1,00019
meteora_dlmm_claim_reward21,00021
meteora_dlmm_claim_reward2_event1,00012
meteora_dlmm_claim_reward_event1,00011
meteora_dlmm_close_limit_order_if_empty1,00014
meteora_dlmm_close_position1,00015
meteora_dlmm_close_position21,00012
meteora_dlmm_close_position_if_empty1,00012
meteora_dlmm_composition_fee_event1,00012
meteora_dlmm_cpi_event1,00012
meteora_dlmm_decrease_position_length1,00015
meteora_dlmm_decrease_position_length_event1,00011
meteora_dlmm_go_to_a_bin1,00014
meteora_dlmm_go_to_a_bin_event1,0009
meteora_dlmm_increase_position_length1,00016
meteora_dlmm_increase_position_length21,00015
meteora_dlmm_increase_position_length_event1,00011
meteora_dlmm_initialize_bin_array1,00012
meteora_dlmm_initialize_bin_array_bitmap_extension1,00012
meteora_dlmm_initialize_lb_pair21,00026
meteora_dlmm_initialize_position1,00017
meteora_dlmm_initialize_position21,00016
meteora_dlmm_initialize_position_pda1,00018
meteora_dlmm_lb_pair_create_event1,00010
meteora_dlmm_place_limit_order1,00024
meteora_dlmm_position_close_event1,0008
meteora_dlmm_position_create_event1,0009
meteora_dlmm_rebalance_liquidity1,00038
meteora_dlmm_rebalancing_event1,00021
meteora_dlmm_remove_liquidity1,00024
meteora_dlmm_remove_liquidity21,00024
meteora_dlmm_remove_liquidity_by_range21,00026
meteora_dlmm_remove_liquidity_event1,00011
meteora_dlmm_swap1,00024
meteora_dlmm_swap21,00026
meteora_dlmm_swap_event1,00017
meteora_dlmm_swap_exact_out1,00024
meteora_dlmm_swap_exact_out21,00026
meteora_dlmm_swap_with_price_impact21,00027
meteora_dlmm_update_fees_and_rewards1,00012
meteora_dlmm_withdraw_protocol_fee1,00021
meteora_dlmm_zap_protocol_fee1,00017
meteora_dlmm_initialize_token_badge95613
meteora_dlmm_remove_liquidity_by_range95526
meteora_dlmm_initialize_customizable_permissionless_lb_pair266625
meteora_dlmm_add_liquidity30924
meteora_dlmm_initialize_customizable_permissionless_lb_pair24622
meteora_dlmm_initialize_position_by_operator19422
meteora_dlmm_set_permissionless_operation_bits10814
meteora_dlmm_remove_all_liquidity5823
meteora_dlmm_update_position_operator2012
meteora_dlmm_update_position_operator_event209
meteora_dlmm_close_bin_array1113
meteora_dlmm_set_pair_status_permissionless1110
meteora_dlmm_swap_with_price_impact725
meteora_dlmm_increase_observation_event48
meteora_dlmm_increase_oracle_length413
meteora_dlmm_initialize_preset_parameter424
meteora_dlmm_add_liquidity_one_side_precise122
meteora_dlmm_close_token_badge111

License & citation

CC BY-SA 4.0 — share and adapt, including commercially, with attribution and alike licensing.

datastore.sh (2026). Meteora DLMM Historical Data (Sample). https://datastore.sh/datasets/meteora-dlmm