DFlow historical data as Parquet
Every DFlow instruction and event in Solana history, decoded with an Anchor IDL that we checked against real transactions. Trawl gives you 3 event tables and 18 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
- DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH
- Preset
dflow- Tables
- 3 event tables and 18 instruction tables, and
part-*with the raw bytes of each match - Transactions
- Successful only. Failed transactions changed nothing on the chain, and they are about 6% of the output.
"include_failed": truekeeps them. - Price
- $4 for one recent epoch, $4.62 for one week of chain
- Sample
- Free, 1.1 MB
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":"dflow","start_epoch":1058,"end_epoch":1058}' -- then, in DuckDB, on the files of the job SELECT slot, signature, amm, input_mint, input_amount FROM 'ev-swap_event-*.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.
Free sample
1,000 slots of epoch 1079, 6 November 2026, 13:41 to 13:45 UTC: every row the preset gives for them. 2,458 decoded instructions, 4,029 events and 0 raw rows, in 11 Parquet files. The zip also holds the IDL that decoded them, the schema, the provenance and a SHA-256 list. The samples of all presets cover the same slots, so they join on signature.
# check the zip, then each file in it
echo '50330ec280da6e109f085ac0a4634a3cb8e6acf1380fc5ff7dc9b37021610173 trawl-sample-dflow-e1079.zip' | sha256sum -c
unzip trawl-sample-dflow-e1079.zip && cd trawl-sample-dflow-e1079
sha256sum -c SHA256SUMS
Slots 466,130,000 to 466,130,999. PROVENANCE.txt names the scan build and the SHA-256 of the IDL, which is the same as in the provenance of a paid job with this 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-fee_eventaccount base58 string, mint base58 string, amount u64ev-fee_withdrawal_eventfee_vault base58 string, destination base58 string, mint base58 string, amount u64ev-swap_eventamm base58 string, input_mint base58 string, input_amount u64, output_mint base58 string, output_amount u64Instruction 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_empty_token_accounttoken_account, authority, destination, token_programix-close_orderorder, order_vault, return_input_token_account, return_rent_to, closer, token_program, system_programix-create_referral_token_account_idempotentpayer, project, referral_account, referral_token_account, mint, system_program, token_program, referral_programix-fill_orderorder, order_vault, output_token_account, return_input_token_account, return_rent_to, filler_input_token_account, input_mint, filler_output_token_account, output_mint, filler, token_program, associated_token_program, system_program, event_authority, programargs:
params JSON stringix-init_market_ledger_idempotentpredictions_program, market_ledger, market_ledger_redemption_vault, market_ledger_order_vault, market_ledger_reduce_yes_vault, market_ledger_reduce_no_vault, settlement_escrow, escrow_mint, market_yes_outcome_mint, market_no_outcome_mint, payer, outcome_token_program, escrow_token_program, system_programargs:
market_id binaryix-open_orderorder, order_vault, input_token_account, output_token_account, return_input_token_account, input_mint, user_token_authority, fee_payer, fee_receiver, rent_depositor, token_program, system_program, rentargs:
params JSON stringix-swaptoken_program, associated_token_program, system_program, user_token_authority, event_authority, programargs:
params JSON stringix-swap2token_program, associated_token_program, system_program, user_token_authority, event_authority, programargs:
params JSON stringix-swap2_with_destinationtoken_program, associated_token_program, system_program, user_token_authority, destination_token_account, destination_token_authority, destination_mint, event_authority, programargs:
params JSON stringix-swap2_with_destination_nativetoken_program, associated_token_program, system_program, user_token_authority, destination_account, event_authority, programargs:
params JSON stringix-swap_with_destinationtoken_program, associated_token_program, system_program, user_token_authority, destination_token_account, destination_token_authority, destination_mint, event_authority, programargs:
params JSON stringix-swap_with_destination_nativetoken_program, associated_token_program, system_program, user_token_authority, destination_account, event_authority, programargs:
params JSON stringix-transfer_feefrom, to, authority, token_program, event_authority, programargs:
amount u64ix-transfer_solfrom, to, system_programargs:
lamports u64ix-transfer_to_sponsoruser_token_authority, user_token_account, sponsor, sponsor_token_account, mint, token_program, associated_token_program, system_programargs:
amount u64ix-unwrap_solowner, wrapped_sol_associated_token_account, token_programix-withdraw_feeswithdrawer, fee_vault, destination, mint, program_authority, token_program, event_authority, programargs:
amount u64ix-wrap_solfrom, wrapped_sol_associated_token_account, native_mint, token_program, associated_token_program, system_programargs:
lamports u64Files are split by epoch and at 2 GB: eEEEE-ix-<name>-tNN-SSSS.parquet. Large integers stay
exact: u128 is a decimal string. All decoded types.
Get DFlow data for your range.
Select an epoch range and get a firm price. You pay only when you send the job.