Commit Graph
39 Commits
Author SHA1 Message Date
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 83c5476ff3 Release v1.5.5 parser SDK sync 2026-06-01 20:20:01 +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 ab84249f4a feat: bridge streamer to sol-parser-sdk 2026-05-15 05:09:29 +08: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
ysq fd180935f8 refactor: rename UnifiedEvent to DexEvent 2025-10-12 22:00:15 +08:00
ysq e21f2cfd17 refactor: convert EventParser to static methods and optimize caching
- Replace instance-based EventParser with static method design
  - Introduce ParserCache module for protocol config caching
  - Simplify EventProcessor to pure functional handlers
  - Optimize metrics: remove min/max tracking, keep last + avg only
  - Reduce atomic operations in hot path for better performance
2025-10-12 17:20:50 +08:00
ysq 312a675a40 refactor: restructure event handling from trait objects to enum pattern
- Convert UnifiedEvent from trait object (Box<dyn UnifiedEvent>) to concrete enum type
  - Remove match_event! macro in favor of native match expressions
  - Simplify event metadata access: event.event_type() -> event.metadata().event_type
  - Unify event callback signatures: Fn(Box<dyn UnifiedEvent>) -> Fn(UnifiedEvent)
  - Update all example code to use the new enum-based event system
  - Optimize type system to reduce runtime overhead and improve type safety

  Affected scope:
  - Core event parser and processor
  - All protocol event definitions (PumpFun, PumpSwap, Bonk, Raydium series, etc.)
  - gRPC and Shred streaming modules
  - All example code
2025-10-10 18:19:44 +08:00
Wood 77caa39f0c fix warns 2025-10-04 08:44:07 +08:00
ysq 5acf69714d feat: add EventSource enum and optimize event processing threads
- Introduce EventSource enum (Grpc, Shred) for better event source management
- Refactor start_block_processing_thread to conditionally spawn threads based on source type
- Update callers to specify event source type
2025-09-19 23:17:50 +08:00
ysq 5ea536bef6 feat: refactor subscription API with multi-filter support
- Support multiple transaction/account filters as vectors
- Add Token2022 extended state parsing
- Add pumpswap pool monitoring example
- Enhance AccountFilter with memcmp filters

BREAKING CHANGE: API signature changes for subscription methods
2025-09-10 23:21:08 +08:00
ysq b71a83bf66 perf: add object pooling and enhanced metrics for streaming optimization
- Implement gRPC/shred connection pools for memory efficiency
- Add atomic processing time stats with auto-calibration clock
- Optimize event parsers and protocol handlers
- Refactor metrics system for advanced performance monitoring
2025-09-02 17:27:27 +08:00
ysq 74781e5cbe perf: implement SIMD-accelerated event processing and optimize streaming performance
- Add SIMD utilities for fast byte array comparison and discriminator matching
- Optimize event processor with batch processing and memory pool
- Refactor global state management with concurrent data structures
- Remove deprecated batch processing module
- Enhance metrics collection with reduced overhead
- Improve parser efficiency across all protocol implementations
- Add performance benchmarking dependencies (criterion, wide)
- Update documentation and examples for new architecture

Performance improvements:
- SIMD-accelerated byte operations for instruction parsing
- Concurrent HashMap (DashMap) for better multi-threading
- Optimized memory allocation patterns
- Reduced lock contention in event processing pipeline

Breaking changes: Removed batch.rs module, updated parser interfaces
2025-08-31 22:18:18 +08:00
ysq 52a489ae80 Merge commit 'ab0200c2ec7e7ed76afafc5cfa8440f61052d0fb' into perf/improve 2025-08-29 16:45:22 +08:00
ysq b535bdf052 perf: Major event processing system refactor for improved performance 2025-08-29 14:59:16 +08:00
ysq 9ea4dab4df perf: Major event processing system refactor for improved performance 2025-08-27 21:31:31 +08:00
ioxde 1e6841149d feat: add dynamic subscription management with runtime filter updates
- Add update_subscription() for runtime filter updates without reconnection
  - BREAKING: Return subscription request from subscribe_with_request()
  - Implement Default trait for EventTypeFilter
  - Add comprehensive dynamic_subscription example
2025-08-26 19:07:13 -07:00
ysq dee683396d perf: Refactor event processing system for better performance 2025-08-26 17:57:39 +08:00
ysq 9ec7194d2a feat: add subscription management and graceful shutdown support (v0.3.6)
- Add SubscriptionHandle for managing stream lifecycle
- Implement graceful shutdown with stop() methods
- Update documentation with new features
- Bump version to 0.3.6
2025-08-21 15:47:31 +08:00
ysq ea7ecd1d0c feat: enhance event filtering and monitoring system
- Add EventTypeFilter for precise event type filtering
- Refactor metrics to track events by type (tx/account/block)
- Add parser caching for improved performance
- Enhance gRPC subscription management
- Update examples and type definitions
2025-08-16 14:48:51 +08:00
ysq aee8921ad5 feat: Add account event parser and protocol type definitions
- Add account event parser (account_event_parser.rs) for account-level event handling
- Introduce type definitions for pumpfun, pumpswap, raydium_amm_v4, raydium_clmm, raydium_cpmm protocols
- Enhance event processor to support account event processing alongside transactions
- Improve subscription system with separate transaction and account filters
- Optimize parser configuration using Option types for cleaner code structure
- Update examples and documentation to reflect new capabilities

Changes include:
- 6 new types.rs files for protocol-specific data structures
- Updated event processor for account, transaction, and block meta events
- Refactored subscription manager with account filtering support
- Enhanced metrics and batch processing logic
2025-08-13 23:30:59 +08:00
ysq c753c8418d feat: upgrade to v0.2.4 2025-08-12 11:34:26 +08:00
ysq 97faba9406 feat: Major refactor with batch processing and performance optimization
- Refactor streaming architecture with modular grpc components
- Add batch processing system with backpressure strategies
- Implement performance monitoring and metrics collection
- Add multi-protocol parser with block metadata support
- Enhance configuration system with preset profiles
- Add parse_tx_events example and update documentation
- Optimize yellowstone_grpc client complexity
2025-08-11 01:04:16 +08:00
ysq 87465cbfdb feat: upgrade to Solana 2.3.x and fix event parsing
- Bump version to 0.1.11
- Upgrade Solana deps to 2.3.x, yellowstone-grpc to 8.0.0
- Fix inner instruction indexing and timestamp handling
- Improve PumpFun/PumpSwap parser program ID support
2025-08-05 18:23:01 +08:00
wood c0af0bf738 delete not used code 2025-08-05 01:34:32 +08:00
wood d68bdc1d76 fix channel is full 2025-08-04 21:30:55 +08:00
wood 4c90931e28 events optimization 2025-08-03 05:37:04 +08:00
ysq 0a4be48b99 feat: add event processing time tracking (v0.1.6)
- Add processing duration monitoring
- Update all protocol parser interfaces
- Improve PumpFun dev address detection
- Bump version to 0.1.6
2025-07-29 14:48:43 +08:00
ysq 2e864dd14e feat(api): Upgrade to v0.1.5 with improved event subscription API
This update includes the following improvements:
- Version upgraded to 0.1.5
- Added subscribe_events_v2 API with more granular account filtering
- Marked original subscribe_events API as deprecated
- Fixed bug
2025-07-26 17:11:28 +08:00
wood 961864a39e Merge branch 'main' of github.com:0xfnzero/solana-streamer into main 2025-07-26 02:47:20 +08:00
wood 99bb6d56f0 optimize EventParserFactory::create_parser 2025-07-26 02:47:03 +08:00
ysq cef54e7373 feat: Upgrade SDK to version 0.1.4 and optimize event handling mechanism
1. Version upgrade: SDK version updated from 0.1.3 to 0.1.4
2. Remove BlockMetaEvent: Delete unnecessary block metadata event type and related code
3. Optimize event handling: Add block_time and block_time_ms fields to each event
4. Code optimization: Improve code formatting and structure
5. Example updates: Update example code and usage instructions in README
2025-07-25 16:43:06 +08:00
wood fc90b99909 delete some code 2025-07-25 15:53:25 +08:00
wood 3b89ca381c add block_time and block_time_ms 2025-07-25 15:32:05 +08:00
ysq a4987b9a3e feat: Add block metadata event support
- Implement BlockMetaEvent and SDKSystemEventParser
- Support block metadata subscription and processing
- Optimize event handling with separate tokio tasks
- Add commitment parameter support
- Upgrade version to 0.1.3
2025-07-24 19:37:34 +08:00
Chris DaviesandGitHub 690b9751c3 Update yellowstone_grpc.rs 2025-07-23 15:24:13 -04:00
ysq 9e34a01874 feat: refactor to multi-protocol event streaming system
Major architectural refactor, upgrading from simple logging system to comprehensive multi-protocol Solana DEX event streaming system:

 New Features:
- Support for 5 DEX protocols: PumpFun, PumpSwap, Bonk, Raydium CPMM, Raydium CLMM
- Implement unified event interface (UnifiedEvent trait) and event factory pattern
- Add dual streaming support: Yellowstone gRPC and ShredStream
- Add Chinese documentation (README_CN.md)

🏗️ Architectural Improvements:
- Refactor event parsing system with modular design
- Implement protocol-specific parsers and event types
- Optimize dependency management, update Cargo.toml
- Remove legacy logging modules, clean up redundant code

📊 Statistics:
- Added 46 files, 4511 lines of code
- Removed 1381 lines of legacy code
- Net addition of 3130 lines of code

Tech Stack:
- Rust async/await for asynchronous processing
- Protocol Buffers support
- Multi-protocol event parsing
- High-performance event stream subscription
2025-07-19 23:46:42 +08:00