Limit order and DCA

Jupiter DCA historical data as Parquet

Every Jupiter DCA instruction and event in Solana history, decoded with an Anchor IDL that we checked against real transactions. Trawl gives you 6 event tables and 12 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
DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M
Preset
jupiter-dca
Tables
6 event tables and 12 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":"jupiter-dca","start_epoch":1058,"end_epoch":1058}'

-- then, in DuckDB, on the files of the job
SELECT slot, signature, userKey, dcaKey, mint
FROM 'ev-collected_fee-*.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-collected_fee
fields: userKey base58 string, dcaKey base58 string, mint base58 string, amount u64
ev-filled
fields: userKey base58 string, dcaKey base58 string, inputMint base58 string, outputMint base58 string, inAmount u64, outAmount u64, feeMint base58 string, field_fee u64
ev-opened
fields: userKey base58 string, dcaKey base58 string, inDeposited u64, inputMint base58 string, outputMint base58 string, cycleFrequency i64, inAmountPerCycle u64, createdAt i64
ev-closed
fields: userKey base58 string, dcaKey base58 string, inDeposited u64, inputMint base58 string, outputMint base58 string, cycleFrequency i64, inAmountPerCycle u64, createdAt i64, totalInWithdrawn u64, totalOutWithdrawn u64, unfilledAmount u64, userClosed bool
ev-withdraw
fields: dcaKey base58 string, inAmount u64, outAmount u64, userWithdraw bool
ev-deposit
fields: dcaKey base58 string, amount 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-open_dca
accounts: dca, user, inputMint, outputMint, userAta, inAta, outAta, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
args: applicationIdx u64, inAmount u64, inAmountPerCycle u64, cycleFrequency i64, minOutAmount u64, maxOutAmount u64, startAt i64, closeWsolInAta bool
ix-open_dca_v2
accounts: dca, user, payer, inputMint, outputMint, userAta, inAta, outAta, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
args: applicationIdx u64, inAmount u64, inAmountPerCycle u64, cycleFrequency i64, minOutAmount u64, maxOutAmount u64, startAt i64
ix-close_dca
accounts: user, dca, inputMint, outputMint, inAta, outAta, userInAta, userOutAta, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
ix-withdraw
accounts: user, dca, inputMint, outputMint, dcaAta, userInAta, userOutAta, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
args: withdrawParams JSON string
ix-deposit
accounts: user, dca, inAta, userInAta, tokenProgram, eventAuthority, program
args: depositIn u64
ix-withdraw_fees
accounts: admin, mint, feeAuthority, programFeeAta, adminFeeAta, systemProgram, tokenProgram, associatedTokenProgram
args: amount u64
ix-initiate_flash_fill
accounts: keeper, dca, inputMint, keeperInAta, inAta, outAta, instructionsSysvar, systemProgram, tokenProgram, associatedTokenProgram
ix-fulfill_flash_fill
accounts: keeper, dca, inputMint, outputMint, keeperInAta, inAta, outAta, feeAuthority, feeAta, instructionsSysvar, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
args: repayAmount u64
ix-initiate_dlmm_fill
accounts: keeper, dca, inputMint, keeperInAta, inAta, outAta, instructionsSysvar, systemProgram, tokenProgram, associatedTokenProgram
ix-fulfill_dlmm_fill
accounts: keeper, dca, inputMint, outputMint, keeperInAta, inAta, outAta, feeAuthority, feeAta, instructionsSysvar, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
args: repayAmount u64
ix-transfer
accounts: keeper, dca, user, outputMint, dcaOutAta, userOutAta, intermediateAccount, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program
ix-end_and_close
accounts: keeper, dca, inputMint, outputMint, inAta, outAta, user, userOutAta, initUserOutAta, intermediateAccount, systemProgram, tokenProgram, associatedTokenProgram, eventAuthority, program

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

Get Jupiter DCA data for your range.

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

Get a price