Commit Graph
156 Commits
Author SHA1 Message Date
WoodandGitHub ba709b36b8 Merge pull request #77: fix LaunchLab USD1 context and verify Meteora DLMM
Fix LaunchLab USD1 context and verify Meteora DLMM
2026-08-13 08:51:35 +08:00
0xfnzero 543fe78e2c chore: use sol-parser-sdk 0.6.3 2026-08-13 08:45:05 +08:00
0xfnzero 8c5eb7c214 fix: expose LaunchLab USD1 account context 2026-08-13 08:13:44 +08:00
0xfnzero 8972a9ddb0 feat: expose opt-in transaction cost events 2026-08-13 08:04:34 +08:00
0xfnzero c28b05aa66 fix(pumpswap): preserve complete trade event tails 2026-07-29 21:57:08 +08:00
0xfnzero f1c6aecb3d fix(pumpswap): preserve upgraded event fields 2026-07-17 03:04:10 +08:00
0xfnzero aab0a3a143 feat(pumpswap): forward virtual quote reserve upgrade 2026-07-17 01:59:54 +08:00
moondev 94cd09b0e5 fix events being dropped in streaming ordered mode for multi event transactions
in StreamingOrdered mode the slot buffer is fed one event at a time, but every
event parsed from the same transaction carries that transaction's tx_index.
push_streaming bumps the streaming watermark to tx_index + 1 as soon as it
releases the first event, so the rest of that transaction's events have
tx_index < watermark, fall into the "already delivered" branch and get dropped
without any trace.

so any transaction that parses into more than one dex event (a swap route that
touches several pools, a create + buy, and so on) only ever delivered its first
event when order_mode was StreamingOrdered. Unordered, Ordered and MicroBatch
were not affected.

fix:
- push_streaming now takes all events of one (slot, tx_index) as a group so the
  watermark advances once per transaction instead of once per event
- the buffered drain advances the watermark per distinct tx_index, since a slot
  can now hold several events under the same index
- the ordered buffers use a stable sort so events inside one transaction keep
  the order the parser produced them in, sort_unstable could shuffle equal keys

added tests for the multi event transaction case and for releasing buffered out
of order multi event transactions.
2026-06-16 00:28:15 +09:00
0xfnzero ad166ae62e fix: expose PumpFun create quote accounts 2026-06-12 01:08:33 +08:00
0xfnzero 7131fb3aa1 Release solana-streamer-sdk 1.5.13 2026-06-09 18:57:08 +08:00
0xfnzero e263caa75d fix pumpfun wsol quote normalization 2026-06-08 03:13:04 +08:00
0xfnzero aa065e7cae Release solana-streamer-sdk 1.5.11 2026-06-07 02:30:28 +08:00
0xfnzero 89bf36148f Release solana-streamer-sdk 1.5.10 2026-06-07 02:00:14 +08:00
0xfnzero 6582b310c3 Release solana-streamer-sdk 1.5.8 2026-06-03 02:38:10 +08:00
0xfnzero 590801db7c Add PumpFun trade filter and create ix_name support 2026-06-03 01:07:45 +08:00
0xfnzero 83c5476ff3 Release v1.5.5 parser SDK sync 2026-06-01 20:20:01 +08:00
0xfnzero 5a282bd84d Release solana-streamer-sdk v1.5.4 2026-05-28 04:58:18 +08:00
0xfnzero 4cb22592e8 Release solana-streamer-sdk v1.5.3 2026-05-28 03:44:42 +08:00
0xfnzero 02c8a6d168 Release solana-streamer 1.5.2 2026-05-26 21:23:27 +08:00
0xfnzero 8972d83492 Release streamer with parser SDK 0.5 2026-05-26 00:19:07 +08:00
0xfnzero 6149ae2987 Integrate CLMM accounts and optimize ordered buffers 2026-05-26 00:03:22 +08:00
0xfnzero 983aedf27c Integrate Raydium CLMM upgraded parser events 2026-05-25 23:06:44 +08:00
0xfnzero 0875ec1a9d Use sol-parser-sdk 0.4.17 2026-05-25 19:18:54 +08:00
0xfnzero 108b9a616f Release solana-streamer-sdk v1.4.11 2026-05-25 03:38:28 +08:00
0xfnzero aaa10a69f7 Release parser SDK bridge updates 2026-05-25 01:48:41 +08:00
0xfnzero 45ab6eb061 Fix grpc subscription cleanup and API compatibility 2026-05-25 00:41:25 +08:00
mooncitydev 3c7bf52e01 fix grpc reconnect after stream death and skip bad protobuf updates
clear active_subscription when the yellowstone stream task exits or subscribe fails, so callers are not stuck on "already subscribed" after a disconnect.

replace unwrap/expect in grpc pool parsing with validation and skip malformed account or transaction updates instead of panicking the whole stream.
2026-05-19 04:26:51 -07:00
0xfnzero 5494fd5fb3 Release solana-streamer-sdk v1.4.7 2026-05-19 00:27:06 +08:00
0xfnzero ea0f9b9145 Release solana-streamer-sdk v1.4.6 2026-05-18 01:53:25 +08:00
0xfnzero b60838a840 Propagate PumpFun instruction amount fields 2026-05-17 21:32:48 +08:00
0xfnzero 92bac16fd4 Release solana-streamer-sdk v1.4.3
Route gRPC, ShredStream, and account parsing through sol-parser-sdk.

Remove local protocol parsing implementations.

Depend on sol-parser-sdk v0.4.8 from crates.io.
2026-05-16 06:45:35 +08:00
0xfnzero 55e6bc6459 fix: route streamer grpc parsing through sol-parser-sdk 2026-05-16 02:09:16 +08:00
0xfnzero d2630d4980 fix: support yellowstone grpc proto 12.4 account filters 2026-05-16 01:56:17 +08:00
0xfnzero ab84249f4a feat: bridge streamer to sol-parser-sdk 2026-05-15 05:09:29 +08:00
mooncitydev 01701e97fc simplify grpc subscription option checks and add github ci workflow
Made-with: Cursor
2026-04-04 04:25:17 +09:00
0xfnzero 7f505f0da5 feat(pumpswap): align pool account and events with cashback IDL
- Extend on-chain Pool layout (is_cashback_coin, 7-byte reserved, 244 bytes)
  with backward-compatible decode for 236-byte legacy accounts
- Decode Buy/Sell program logs manually: min_base_amount_out, ix_name,
  cashback fields; optional sell cashback when payload >= 368 bytes
- Set ix_name on buy / buy_exact_quote_in instructions; merge new fields
  in CPI log merger
- Add read_i64_le helper and pool layout unit test

Made-with: Cursor
2026-04-03 14:38:06 +08:00
Wood 3fe529ea3b fix: clamp inner_index (i64) to i32 range when computing current_inner_idx
Avoid overflow/truncation when inner_index is outside i32 range in both
gRPC and standard instruction parsing paths.

Made-with: Cursor
2026-03-09 10:31:16 +08:00
Wood 6e5e378247 fix: post-merge robustness - global_state cleanup count, swap bounds, blockhash & i32 index
- global_state: only decrement signature_count when remove() actually removed entry
- types: bounds-check program_id_index and account indices in swap extraction
- types: require data.len() >= 9/12 before slicing token instruction data
- types: use i32 for current_index and safe skip count to avoid i8 truncation/UB
- event_parser: encode recent_blockhash only when len() == 32; pass i32 to swap parsers

Made-with: Cursor
2026-03-09 10:23:33 +08:00
Wood adb4cfc52d Merge PR #65: refactor streaming core cleanup and dependency simplification 2026-03-09 10:10:24 +08:00
Estereg dad231a26b refactor: remove bs58 dependency and use solana_sdk program ID constants
- Remove standalone bs58 dependency and rely on the solana_sdk re-export
- Switch system and token program IDs to the idiomatic spl_token / solana_sdk constants
- Use pubkey! and LazyLock for cleaner program ID initialization
- Alias solana_entry::Entry as SolanaEntry to avoid a naming conflict with gRPC types
- Remove unused FromStr imports and some redundant logic
2026-03-08 16:47:09 +00:00
Wood bdf984f2c1 chore: release v1.3.0
Made-with: Cursor
2026-03-09 00:41:28 +08:00
EsteregandGitHub 8469b7eec5 Merge branch '0xfnzero:main' into dev-work 2026-03-08 03:41:13 -03:00
EsteregandGitHub 8d8a79d2e4 Merge branch '0xfnzero:main' into main 2026-03-08 03:41:05 -03:00
Wood 20a1048020 feat(pumpfun): parse 17th instruction account (account field)
- Add PumpFunTradeEvent.account: Option<Pubkey> for the 17th instruction
  account (index 16), labeled as 'Account' on block explorers.
- Fill account in parse_buy_instruction, parse_buy_exact_sol_in_instruction,
  and parse_sell_instruction when accounts.get(16) is present.
- Merge account from CPI log event into instruction event when merging.

Made-with: Cursor
2026-03-08 11:08:46 +08:00
EsteregandGitHub 1a225870a9 Merge branch '0xfnzero:main' into dev-work 2026-03-07 14:43:25 -03:00
EsteregandGitHub 6ac36664b2 Merge branch '0xfnzero:main' into main 2026-03-07 14:43:18 -03:00
Wood 2da2b06e1f refactor(events): recent_blockhash as base58 string (same as signature)
- EventMetadata.recent_blockhash: Option<Vec<u8>> -> Option<String>
- Add bs58 dependency; gRPC path: bs58::encode message bytes
- VersionedTransaction path: use Hash::to_string() (base58)
- parse_events_from_grpc_instruction/parse_events_from_instruction: accept Option<&str>

Made-with: Cursor
2026-03-07 20:24:46 +08:00
Wood 63af06edd3 feat(events): add recent_blockhash to EventMetadata
- EventMetadata: add recent_blockhash (Option<Vec<u8>>)
- gRPC path: extract from message.recent_blockhash, thread through parse_instruction_events_from_grpc_transaction and parse_events_from_grpc_instruction
- VersionedTransaction path: get from message.recent_blockhash(), pass into parse_events_from_instruction
- BlockMeta event: pass None for recent_blockhash

Made-with: Cursor
2026-03-07 16:59:07 +08:00
Estereg 6493f9d922 refactor: streaming core optimization and code deduplication
- Remove 'wide' and 'simd_utils.rs', rely on compiler auto-vectorization.
- Deduplicate swap parsing in 'types.rs' and 'merger_event.rs' using generic traits and local macros.
- Improve signature cleanup in 'global_state.rs' to avoid large heap allocations.
- Replace manual metadata accessors in 'traits.rs' with a macro for all variants.
- Remove unused types (ParseResult, ProtocolInfo) and legacy commented code.
- Fix Clippy lints (is_empty, copied) and restore missing trait imports.
2026-03-07 07:16:30 +00:00
Estereg 0c369e23a8 refactor: modernize dependency stack and minimize footprint
- Migrate to native 'std::sync' primitives (LazyLock, OnceLock, RwLock).
- Replace 'parking_lot' with std library synchronization types.
- Switch from 'chrono' to 'std::time::SystemTime' for lightweight timestamps.
- Bump core dependencies: tokio (1.50.0) and rustls (0.23.37).
- Decouple 'solana-program' by utilizing 'solana-sdk' re-exports.
- Prune redundant crates: lazy_static, once_cell, chrono, maplit, and parking_lot.
- Remove unused dev-dependencies (criterion) and example-only utils (env_logger).
- Improve compile times and reduce supply chain attack surface.
2026-03-07 06:44:42 +00:00