sol-parser-sdk-python 0.5.16__tar.gz → 0.5.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/PKG-INFO +25 -18
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/README.md +24 -17
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/README_CN.md +24 -17
- sol_parser_sdk_python-0.5.17/docs/releases/v0.5.17.md +15 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/pyproject.toml +1 -1
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc_types.py +3 -1
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_raw_instruction.py +3 -1
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/.env.example +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/.gitignore +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/docs/USAGE.md +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/docs/releases/v0.5.15.md +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/docs/releases/v0.5.16.md +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/block_meta_stream.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/amm_v4_grpc_refresh_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/batch2_cpmm_simulations_20261003.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/block_meta_grpc_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/cached_tip_routes_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/cpmm_lp_simulations_20261006.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pump_curve_instruction.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pump_shred_routes.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/raw_instructions.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/simulation_ata_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/fixtures/simulation_routes_live_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/hot_path_benchmark.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/hot_path_benchmark.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/meteora_damm_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/multi_protocol_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/README.md +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/config.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/expected.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/programs.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/snapshot.json.gz +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/parse_tx_by_signature.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pump_execution_replay.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pump_offline_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pump_shred_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpfun_quick_test.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpfun_trade_filter.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpfun_with_metrics.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpswap_low_latency.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpswap_with_metrics.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/raw_instruction_filter.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/rust_example_utils.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/simulation_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/stonkfun_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/stonkfun_snapshot_refresh.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/scripts/bench_parser.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/scripts/gen_golden_rust.sh +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_dispatcher.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/meteora.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/orca.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/pumpfun.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/pumpswap.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/raydium.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/raydium_launchlab.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/raydium_orca.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/rpc_wallet.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/utils.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/block_meta.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/check_migration.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/clock.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/common/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/dex_parsers.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/entries_decode.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/env_config.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/event_type_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/event_types.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/geyser_pb2.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/geyser_pb2_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/geyser_connect.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/subscribe_builder.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/transaction_meta.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc_client.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc_instruction_parser.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/inner_instruction_parser.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/instr/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/instr_account_utils.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/instructions.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/json_util.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/liquidity_snapshot.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/log_instr_dedup.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/logs/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/market.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/merger.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/order_buffer.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/parser.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/pump_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/pump_upgrade.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/pumpfun_fee_enrich.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/raw_instruction.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/rpc_parser.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/rust_api_inventory.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/rust_event_json.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/shredstream_client.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/shredstream_pb2.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/shredstream_pb2_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/shredstream_pumpfun.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/simulation_route.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/solana_storage_pb2.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/solana_storage_pb2_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/stonkfun_registry.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/transaction_route.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/u128_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/verify_discriminators.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/wire_transaction.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/account_lifecycle_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/cached_tip_routes_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/clmm_fee_rewards_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/clmm_liquidity_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/clmm_one_sided_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/cpmm_liquidity_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/cpmm_lp_simulations_20261006.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_borrow_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_cpi_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_dual_claims_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_reward_admin_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_reward_renewal_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_reward_withdraw_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_upstream_hook_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v1_config2_instruction_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v1_live_simulations_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v2_authority_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v2_fees_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v2_liquidity_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v2_rewards_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/damm_v2_vesting_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dbc_boundary_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dbc_live_simulations_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dbc_migration_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dbc_referral_live_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dbc_swap2.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dbc_v1_migration_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dlmm_fees_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dlmm_hook_rewards_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/dlmm_rewards_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/golden_parse_log.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/launchlab_migration_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/native_settlement_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_compact_simulations_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_depth2_20261014.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_execution_20261019.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_holder_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_routes_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_synthetic_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_upgrade/account_context.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_upgrade/boost_account_context.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_upgrade/events.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_upgrade/mainnet.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_upgrade/pump_trade_account_context.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pump_upgrade/simulation_events.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_concentrated_multihop_mainnet_simulations_20261005.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/2MfmZSU8mWEbskNHAxQGphAyB5x72SC2HYuAkLeSyH6MjttUHqUjm24wPMeH7zrCoQoYFwbLeiFE571mc8WvgZyL.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/2dabmQiykzC1tsNmgtRFbsRJjEKMfUySgScJc2J2uq8CQtoXWZ3YyT99p3nVuCXifEhLkyUe4Sf4nfe2UkFT8AJr.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/2eVpZNvQYPMBVNT5357Qt7HVAUSv9gdwqxKStvdwQ498rcJLLCHVcYPaGfFqVBz44ndYvkA1H4CwjBuDSviAj7jp.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3GufGVVRrnrH1Yuto57jDeTKXeki6ooE9w6h4qYRvNm5FcCpxwDHNvzHXdpAMbxRmukWJpSPHUKHEjnFTCC979ka.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3LQK2JHVbVSSfyCYwTwzoYTY9NEN4gZXzqw3TvAvMJHsvPsopCHtsa5ALhj4tFn8xWbmJ5DsYMMcnPukTBkSjtQf.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3MRWKDUcD5CGn5Xz4qWyGA8Y9udw4SsSr4gcxCjTUqCFt6Zc6uiwHF1wLZXKoqBcGEM2kruBS85ymYxmYk8FLGBk.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3NBSCgAXpNqg7JBUzp6RsfZYzf2QbbHi6r2wcoBF4Lpuzozae7ExUJUGoqpVCXXs8cbibr6aWySH1bsg86Enuhez.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3QVpcUq64D4DUV9empFr3G98pCEa1Cp2fAcFJKyiJGsQ2ir2S4yBLhHYXPNmLfCE8KVDgLApfBYTFM7pf9JVPbsb.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3REXMDkvZsWvgc8czYpfn24avz18APMuzbV2VgQBeymArdJvfQcfcpKr46f3j1H2bAiymFneaNocPH7KzPUPbR1S.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3ejAydePsZTUfeZaU9eiAM37gV5AYPG9hhyMtUobJLQtSMgroDeiE8njXu2JiwMyX5YJLp3vrfNPy89S7EDdUCAy.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/3zC4bw1osyebZ77KagXYP3b5rEBHvJCgcwCriCLc5gAUp9Ev6Bx5ZMbqnYpkKE2VgZgMFcZN5FYKQfcKL45MWpyu.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/5PgkFgTLSEZPZhxgWNToPzTZct95SycuaH9H3g82YwcKXudtiynEZmiaoQrhGv2gdZLrvsVZ5Wn88KGirbFYpLrt.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_create/661yA5s6uxUsggTcT4cZ6yyMfNmF4mCZzxLnCb1zBrSY3YhAiouYXBitiPvkngBEKxaeGcpXiek6qXDajiRr9wuY.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpswap_liquidity_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/review10_compiled_bounds.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/review10_prefunded_ata.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/review10_wire_bounds.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_alt_load_rejections_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_clmm_boundaries_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_cpmm_bank_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_dex_replay_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_identical_alt_bank_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_multileg_bank_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_nested_cpi_bank_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_replay_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/signed_wire_boundaries_20261009.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/simulation_alt_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/simulation_ata_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/simulation_routes_live_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/stonkfun_routes_0_7_7.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/whirlpool_fees_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/whirlpool_hook_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/whirlpool_liquidity_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/fixtures/whirlpool_one_sided_20261008.json +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_amm_v4_v2.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_block_meta.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_clmm_fee_rewards_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_clmm_liquidity_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_clmm_one_sided_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_cpmm_liquidity_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_borrow_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_cpi_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_dual_claims_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_reward_admin_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_reward_renewal_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_reward_withdraw_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_upstream_hook_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_v1_live_simulations.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_v2_authority_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_v2_fees_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_v2_liquidity_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_v2_rewards_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_damm_v2_vesting_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dbc_boundary_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dbc_migration_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dbc_upgrade.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dbc_v1_migration_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dex_retry_delay.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dlmm_fees_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dlmm_hook_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_dlmm_rewards_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_exact_metadata_json.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_filter_and_account_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_golden.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_grpc_unary_methods.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_hot_path_wire_decoder.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_imports_and_inner.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_launchlab_invocation_anchor.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_launchlab_migration_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_log_instr_dedup.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_market_helpers.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_native_grpc_server.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_native_plan_lifecycle.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_orca_whirlpool_instruction_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_order_buffer.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_ordered_late_regression.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_prefix_prefilter.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_protocol_current_fields.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_compact_simulation_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_depth2.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_execution.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_fees_instruction_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_holder_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_offline_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_routes_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_shred_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_synthetic_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_trade_account_context.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_trade_merge_identity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_upgrade_events.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pump_upgrade_mainnet.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpfun_account_fill.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpfun_create_regression.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpfun_trade_tail.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpfun_v2_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpswap_account_context.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpswap_instruction.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpswap_liquidity_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_pumpswap_upgrade.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_raydium_clmm_instruction_parity.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_raydium_current_logs.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_review10.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_review_batch2.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_shred_wire_sanitize.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_shredstream.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_signed_transaction_replay.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_simulation_route.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_snapshot_refresh_example.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_stonkfun_routes.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_whirlpool_fees_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_whirlpool_hook_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_whirlpool_liquidity_bank.py +0 -0
- {sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/tests/test_whirlpool_one_sided_bank.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sol-parser-sdk-python
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.17
|
|
4
4
|
Summary: Solana DEX program log parsing (pure Python, API aligned with sol-parser-sdk)
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Requires-Dist: base58>=2.0
|
|
@@ -22,12 +22,17 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
|
|
23
23
|
<div align="center">
|
|
24
24
|
|
|
25
|
-
## v0.5.
|
|
25
|
+
## v0.5.17 — Shred metadata passthrough and ordering scope
|
|
26
|
+
|
|
27
|
+
Preserve and verify transaction position and receive time through raw instruction callbacks. Entries indexes are message-local, unlike Yellowstone node indexes; use signatures for cross-message deduplication. This release clarifies API documentation and adds regression protection without changing metadata fields or numbering behavior.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
## v0.5.17 — DEX-scoped RawInstruction and typed DEX identifiers
|
|
26
31
|
|
|
27
32
|
Raw instructions now respect DEX subscriptions using programs referenced by each instruction. `RawInstructionDexType` provides typed identifiers with unchanged JSON strings. Unknown router layouts do not establish pool addresses, trade direction, or method versions.
|
|
28
33
|
|
|
29
34
|
|
|
30
|
-
## v0.5.
|
|
35
|
+
## v0.5.17 — Pump execution replay
|
|
31
36
|
|
|
32
37
|
Current Anchor TradeEvent CPI decoding is supported alongside the historical encoding. RPC/gRPC instruction budgets and minimum outputs remain in instruction fields. Execution fields `sol_amount`, `quote_amount`, and `token_amount` come from execution events; without logs or event CPIs they remain zero (unavailable, not a proven zero fill).
|
|
33
38
|
|
|
@@ -35,7 +40,7 @@ Run `.venv/bin/python examples/pump_execution_replay.py` from this repository to
|
|
|
35
40
|
|
|
36
41
|
The current Delta sell signature is `4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2` (slot 458542546). The dated fixture also includes Rapid create/buy, BuyV3, and PumpSwap buy with their full signatures and slots. Older five-combination multi-hop fixtures are retained as regression tests, not labeled as new mainnet captures.
|
|
37
42
|
|
|
38
|
-
## v0.5.
|
|
43
|
+
## v0.5.17 — raw Shred instructions
|
|
39
44
|
|
|
40
45
|
Default Shred parsing emits `RawInstruction` for unsupported third-party programs, including Rapid/Delta, without inferring direction, amounts, or internal buy methods. Infrastructure programs (System, Token, ATA, ComputeBudget, etc.) are omitted by default. Supported official DEX parsers are unchanged; official Pump/PumpSwap multi-hop instructions retain `PumpRouteIntent`.
|
|
41
46
|
|
|
@@ -43,6 +48,8 @@ The payload contains `program_id`, `instruction_index`, `accounts`, `account_ind
|
|
|
43
48
|
|
|
44
49
|
Run `uv run python examples/raw_instruction_filter.py` to compare PumpFun-only, Raydium CPMM-only, and all-raw subscriptions against signed offline transactions; the output includes `dexes`.
|
|
45
50
|
|
|
51
|
+
The raw event retains `metadata.tx_index` and `metadata.grpc_recv_us` from the parser arguments (streamer names the receive field `metadata.recv_us`). The default Entries client index is local to one received Entries message and restarts at zero for the next message; it is not a confirmed slot-wide transaction index. `instruction_index` orders outer instructions within a transaction. Receive time is a local microsecond timestamp, not an execution-order guarantee. Standalone replay APIs may default these values to zero; pass the upstream values when available.
|
|
52
|
+
|
|
46
53
|
Without a filter, unknown third-party instructions are returned. Broad trade/swap filters (for example `PumpFunTrade` or `RaydiumCpmmSwap`) also return raw instructions associated with that DEX; direction-specific filters do not infer a buy or sell. Explicit `RawInstruction` selects all outer instructions only when no protocol restriction is set; streamer protocol restrictions always apply. Excluding `RawInstruction` wins. `dex_type` uses the public `RawInstructionDexType` enum (typed string constants in Go); JSON values remain unchanged, such as `"pumpfun"` and `"raydium_cpmm"`. `dexes` contains `{ dex_type, program_id, pool }` for each recognized DEX program targeted or referenced by this instruction, not other instructions in the transaction. Multi-DEX wrappers retain every association. Unknown or unresolved ALT references cannot satisfy a DEX subscription. `pool` is currently null: an unknown wrapper layout cannot establish the pool account. A program reference is not proof of an executed CPI. Raw callbacks are not fills.
|
|
47
54
|
|
|
48
55
|
Wrapper adapter functions remain explicit compatibility helpers only; default Shred parsing does not call them. The released-version history below describes previous behavior.
|
|
@@ -86,11 +93,11 @@ Parser SDK language versions and related Rust SDKs:
|
|
|
86
93
|
|
|
87
94
|
| Language | Repository | Description | Version |
|
|
88
95
|
|----------|------------|-------------|---------|
|
|
89
|
-
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.
|
|
90
|
-
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.
|
|
91
|
-
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.
|
|
92
|
-
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.
|
|
93
|
-
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.
|
|
96
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.18` |
|
|
97
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.24` |
|
|
98
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.17` |
|
|
99
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.17` |
|
|
100
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.9` |
|
|
94
101
|
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
|
|
95
102
|
|
|
96
103
|
---
|
|
@@ -182,7 +189,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
|
|
|
182
189
|
**From PyPI**
|
|
183
190
|
|
|
184
191
|
```bash
|
|
185
|
-
pip install sol-parser-sdk-python==0.5.
|
|
192
|
+
pip install sol-parser-sdk-python==0.5.17
|
|
186
193
|
```
|
|
187
194
|
|
|
188
195
|
**From source**
|
|
@@ -298,18 +305,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
|
|
|
298
305
|
| Description | Run command | Source |
|
|
299
306
|
|-------------|-------------|--------|
|
|
300
307
|
| **PumpFun** | | |
|
|
301
|
-
| PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.
|
|
302
|
-
| PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.
|
|
303
|
-
| Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.
|
|
308
|
+
| PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.17` |
|
|
309
|
+
| PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.17` |
|
|
310
|
+
| Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.17` |
|
|
304
311
|
| **PumpSwap** | | |
|
|
305
|
-
| PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.
|
|
306
|
-
| PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.
|
|
312
|
+
| PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.17` |
|
|
313
|
+
| PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.17` |
|
|
307
314
|
| **Meteora DAMM** | | |
|
|
308
|
-
| Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.
|
|
315
|
+
| Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.17` |
|
|
309
316
|
| **Multi-protocol** | | |
|
|
310
|
-
| Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.
|
|
317
|
+
| Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.17` |
|
|
311
318
|
| **Utility** | | |
|
|
312
|
-
| Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.
|
|
319
|
+
| Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.17` |
|
|
313
320
|
|
|
314
321
|
**Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
|
|
315
322
|
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
## v0.5.
|
|
3
|
+
## v0.5.17 — Shred metadata passthrough and ordering scope
|
|
4
|
+
|
|
5
|
+
Preserve and verify transaction position and receive time through raw instruction callbacks. Entries indexes are message-local, unlike Yellowstone node indexes; use signatures for cross-message deduplication. This release clarifies API documentation and adds regression protection without changing metadata fields or numbering behavior.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## v0.5.17 — DEX-scoped RawInstruction and typed DEX identifiers
|
|
4
9
|
|
|
5
10
|
Raw instructions now respect DEX subscriptions using programs referenced by each instruction. `RawInstructionDexType` provides typed identifiers with unchanged JSON strings. Unknown router layouts do not establish pool addresses, trade direction, or method versions.
|
|
6
11
|
|
|
7
12
|
|
|
8
|
-
## v0.5.
|
|
13
|
+
## v0.5.17 — Pump execution replay
|
|
9
14
|
|
|
10
15
|
Current Anchor TradeEvent CPI decoding is supported alongside the historical encoding. RPC/gRPC instruction budgets and minimum outputs remain in instruction fields. Execution fields `sol_amount`, `quote_amount`, and `token_amount` come from execution events; without logs or event CPIs they remain zero (unavailable, not a proven zero fill).
|
|
11
16
|
|
|
@@ -13,7 +18,7 @@ Run `.venv/bin/python examples/pump_execution_replay.py` from this repository to
|
|
|
13
18
|
|
|
14
19
|
The current Delta sell signature is `4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2` (slot 458542546). The dated fixture also includes Rapid create/buy, BuyV3, and PumpSwap buy with their full signatures and slots. Older five-combination multi-hop fixtures are retained as regression tests, not labeled as new mainnet captures.
|
|
15
20
|
|
|
16
|
-
## v0.5.
|
|
21
|
+
## v0.5.17 — raw Shred instructions
|
|
17
22
|
|
|
18
23
|
Default Shred parsing emits `RawInstruction` for unsupported third-party programs, including Rapid/Delta, without inferring direction, amounts, or internal buy methods. Infrastructure programs (System, Token, ATA, ComputeBudget, etc.) are omitted by default. Supported official DEX parsers are unchanged; official Pump/PumpSwap multi-hop instructions retain `PumpRouteIntent`.
|
|
19
24
|
|
|
@@ -21,6 +26,8 @@ The payload contains `program_id`, `instruction_index`, `accounts`, `account_ind
|
|
|
21
26
|
|
|
22
27
|
Run `uv run python examples/raw_instruction_filter.py` to compare PumpFun-only, Raydium CPMM-only, and all-raw subscriptions against signed offline transactions; the output includes `dexes`.
|
|
23
28
|
|
|
29
|
+
The raw event retains `metadata.tx_index` and `metadata.grpc_recv_us` from the parser arguments (streamer names the receive field `metadata.recv_us`). The default Entries client index is local to one received Entries message and restarts at zero for the next message; it is not a confirmed slot-wide transaction index. `instruction_index` orders outer instructions within a transaction. Receive time is a local microsecond timestamp, not an execution-order guarantee. Standalone replay APIs may default these values to zero; pass the upstream values when available.
|
|
30
|
+
|
|
24
31
|
Without a filter, unknown third-party instructions are returned. Broad trade/swap filters (for example `PumpFunTrade` or `RaydiumCpmmSwap`) also return raw instructions associated with that DEX; direction-specific filters do not infer a buy or sell. Explicit `RawInstruction` selects all outer instructions only when no protocol restriction is set; streamer protocol restrictions always apply. Excluding `RawInstruction` wins. `dex_type` uses the public `RawInstructionDexType` enum (typed string constants in Go); JSON values remain unchanged, such as `"pumpfun"` and `"raydium_cpmm"`. `dexes` contains `{ dex_type, program_id, pool }` for each recognized DEX program targeted or referenced by this instruction, not other instructions in the transaction. Multi-DEX wrappers retain every association. Unknown or unresolved ALT references cannot satisfy a DEX subscription. `pool` is currently null: an unknown wrapper layout cannot establish the pool account. A program reference is not proof of an executed CPI. Raw callbacks are not fills.
|
|
25
32
|
|
|
26
33
|
Wrapper adapter functions remain explicit compatibility helpers only; default Shred parsing does not call them. The released-version history below describes previous behavior.
|
|
@@ -64,11 +71,11 @@ Parser SDK language versions and related Rust SDKs:
|
|
|
64
71
|
|
|
65
72
|
| Language | Repository | Description | Version |
|
|
66
73
|
|----------|------------|-------------|---------|
|
|
67
|
-
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.
|
|
68
|
-
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.
|
|
69
|
-
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.
|
|
70
|
-
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.
|
|
71
|
-
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.
|
|
74
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.18` |
|
|
75
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.24` |
|
|
76
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.17` |
|
|
77
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.17` |
|
|
78
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.9` |
|
|
72
79
|
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
|
|
73
80
|
|
|
74
81
|
---
|
|
@@ -160,7 +167,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
|
|
|
160
167
|
**From PyPI**
|
|
161
168
|
|
|
162
169
|
```bash
|
|
163
|
-
pip install sol-parser-sdk-python==0.5.
|
|
170
|
+
pip install sol-parser-sdk-python==0.5.17
|
|
164
171
|
```
|
|
165
172
|
|
|
166
173
|
**From source**
|
|
@@ -276,18 +283,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
|
|
|
276
283
|
| Description | Run command | Source |
|
|
277
284
|
|-------------|-------------|--------|
|
|
278
285
|
| **PumpFun** | | |
|
|
279
|
-
| PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.
|
|
280
|
-
| PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.
|
|
281
|
-
| Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.
|
|
286
|
+
| PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.17` |
|
|
287
|
+
| PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.17` |
|
|
288
|
+
| Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.17` |
|
|
282
289
|
| **PumpSwap** | | |
|
|
283
|
-
| PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.
|
|
284
|
-
| PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.
|
|
290
|
+
| PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.17` |
|
|
291
|
+
| PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.17` |
|
|
285
292
|
| **Meteora DAMM** | | |
|
|
286
|
-
| Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.
|
|
293
|
+
| Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.17` |
|
|
287
294
|
| **Multi-protocol** | | |
|
|
288
|
-
| Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.
|
|
295
|
+
| Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.17` |
|
|
289
296
|
| **Utility** | | |
|
|
290
|
-
| Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.
|
|
297
|
+
| Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.17` |
|
|
291
298
|
|
|
292
299
|
**Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
|
|
293
300
|
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
## v0.5.
|
|
3
|
+
## v0.5.17 — Shred 元数据透传与顺序范围
|
|
4
|
+
|
|
5
|
+
保留并验证 `tx_index`、接收时间从解析入口传到原始指令回调。明确 Entries 消息内序号与 Yellowstone 节点 index 的区别:本地序号不是全 slot 索引;跨消息去重使用交易签名。此版本完善文档和回归保护,不改变现有字段或编号规则。
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## v0.5.17 — RawInstruction 协议过滤与 DEX 枚举
|
|
4
9
|
|
|
5
10
|
修复原始指令绕过 DEX 订阅范围的问题。按单条指令引用的官方程序识别 DEX,使用 `RawInstructionDexType` 枚举;JSON 字符串保持不变。未知 router 不推断池子地址、买卖方向或方法版本。
|
|
6
11
|
|
|
7
12
|
|
|
8
|
-
## v0.5.
|
|
13
|
+
## v0.5.17 — Pump 执行事件与最新回放示例
|
|
9
14
|
|
|
10
15
|
修复官方 Anchor CPI TradeEvent 前缀识别,保留历史编码兼容。RPC/gRPC 的实际 `sol_amount`、`quote_amount`、`token_amount` 只从执行事件合并;预算和最小输出保留在指令参数字段。如果日志及事件 CPI 均缺失,实际金额字段为 0(表示无执行数据,不代表已确认零成交)。非 SOL 报价金额不能当作 SOL。
|
|
11
16
|
|
|
@@ -13,7 +18,7 @@
|
|
|
13
18
|
|
|
14
19
|
新 Delta 卖出样本:`4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2`,slot 458542546。日期样本文件还包含 Rapid 创建后买入、BuyV3 和 PumpSwap 买入的完整签名及 slot。旧的五种双跳组合仅作为回归样本,未冒充本次新抓取交易。
|
|
15
20
|
|
|
16
|
-
## v0.5.
|
|
21
|
+
## v0.5.17 — Shred 原始指令透传
|
|
17
22
|
|
|
18
23
|
默认 Shred 入口将未适配的第三方程序(包括 Rapid/Delta)作为 `RawInstruction` 返回,不再推断买卖方向、金额或内部 buy 版本。System、Token、ATA、ComputeBudget 等基础程序默认不透传;已支持的官方 DEX 指令继续正常解析,官方 Pump/PumpSwap 多跳仍返回 `PumpRouteIntent`。
|
|
19
24
|
|
|
@@ -21,6 +26,8 @@
|
|
|
21
26
|
|
|
22
27
|
运行 `uv run python examples/raw_instruction_filter.py` 对比同一组已签名交易的 PumpFun、Raydium CPMM 与全量原始指令订阅;输出包含 `dexes`。
|
|
23
28
|
|
|
29
|
+
原始事件保留调用方传入的 `metadata.tx_index` 和 `metadata.grpc_recv_us`(streamer 对应 `metadata.recv_us`)。默认 Entries 客户端的交易序号仅在单条接收消息内递增,下一条消息从 0 重新计数,不等于已确认的整个 slot 交易序号。`instruction_index` 表示交易内外层指令顺序;接收时间是本地微秒时间戳,不保证链上执行顺序。独立回放 API 可能默认填 0,调用时应传入上游已有的序号与接收时间。
|
|
30
|
+
|
|
24
31
|
无过滤器时返回未知第三方指令。宽泛交易/Swap 订阅(如 `PumpFunTrade`、`RaydiumCpmmSwap`)也返回关联该 DEX 的原始指令;买/卖方向订阅不推测方向。显式 `RawInstruction` 仅在未限制协议时返回全部外层指令,streamer 的协议限制始终生效;显式排除 `RawInstruction` 优先。`dex_type` 使用公开枚举 `RawInstructionDexType`(Go 为命名字符串类型与常量);JSON 仍为 `"pumpfun"`、`"raydium_cpmm"` 等原有字符串。`dexes` 数组包含各关联 DEX 的 `{ dex_type, program_id, pool }`,只识别本条指令直接调用或账户中引用的 DEX 程序,不借用同笔其他指令的账户;多 DEX 包装保留所有关联。未知或未解析 ALT 中的程序不能匹配 DEX 订阅。`pool` 当前为 null:未知包装布局无法确定池子账户。program 引用不证明执行了 CPI,原始回调不是成交。
|
|
25
32
|
|
|
26
33
|
已有 wrapper 适配函数仅作为显式调用的兼容接口保留,不参与默认 Shred 解码。以下已发布版本的历史说明描述旧行为。
|
|
@@ -64,11 +71,11 @@
|
|
|
64
71
|
|
|
65
72
|
| 语言 | 仓库 | 描述 | 版本 |
|
|
66
73
|
|------|------|------|
|
|
67
|
-
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.
|
|
68
|
-
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.
|
|
69
|
-
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.
|
|
70
|
-
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.
|
|
71
|
-
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.
|
|
74
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.18` |
|
|
75
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.24` |
|
|
76
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.17` |
|
|
77
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.17` |
|
|
78
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.9` |
|
|
72
79
|
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX 交易构建与交易执行 | `v6.0.2` |
|
|
73
80
|
|
|
74
81
|
---
|
|
@@ -160,7 +167,7 @@ Validation includes local CPU benchmarks and offline signed-bank scenarios. Meas
|
|
|
160
167
|
**PyPI**
|
|
161
168
|
|
|
162
169
|
```bash
|
|
163
|
-
pip install sol-parser-sdk-python==0.5.
|
|
170
|
+
pip install sol-parser-sdk-python==0.5.17
|
|
164
171
|
```
|
|
165
172
|
|
|
166
173
|
**源码**
|
|
@@ -276,18 +283,18 @@ Python ShredStream 热路径默认严格解析静态账户;V0 ALT 指令需传
|
|
|
276
283
|
| 描述 | 运行命令 | 源码 |
|
|
277
284
|
|------|----------|------|
|
|
278
285
|
| **PumpFun** | | |
|
|
279
|
-
| PumpFun 交易过滤 | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.
|
|
280
|
-
| PumpFun 事件 + 性能指标 | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.
|
|
281
|
-
| PumpFun 快速连接测试 | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.
|
|
286
|
+
| PumpFun 交易过滤 | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.17` |
|
|
287
|
+
| PumpFun 事件 + 性能指标 | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.17` |
|
|
288
|
+
| PumpFun 快速连接测试 | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.17` |
|
|
282
289
|
| **PumpSwap** | | |
|
|
283
|
-
| PumpSwap 超低延迟 | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.
|
|
284
|
-
| PumpSwap 事件 + 性能指标 | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.
|
|
290
|
+
| PumpSwap 超低延迟 | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.17` |
|
|
291
|
+
| PumpSwap 事件 + 性能指标 | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.17` |
|
|
285
292
|
| **Meteora DAMM** | | |
|
|
286
|
-
| Meteora DAMM V2 事件 | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.
|
|
293
|
+
| Meteora DAMM V2 事件 | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.17` |
|
|
287
294
|
| **多协议** | | |
|
|
288
|
-
| 订阅 Rust `Protocol` / `program_ids` 中的全部程序 | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.
|
|
295
|
+
| 订阅 Rust `Protocol` / `program_ids` 中的全部程序 | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.17` |
|
|
289
296
|
| **工具** | | |
|
|
290
|
-
| 按签名解析交易(HTTP RPC,非 gRPC)。`.env` 或环境中 `TX_SIGNATURE` / `RPC_URL` 或 `SOLANA_RPC_URL`,或 `--sig` / `--rpc`。 | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.
|
|
297
|
+
| 按签名解析交易(HTTP RPC,非 gRPC)。`.env` 或环境中 `TX_SIGNATURE` / `RPC_URL` 或 `SOLANA_RPC_URL`,或 `--sig` / `--rpc`。 | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.17` |
|
|
291
298
|
|
|
292
299
|
**环境变量:** gRPC 示例需要 **`GRPC_URL`** 或 **`GRPC_ENDPOINT`**,以及 **`GRPC_AUTH_TOKEN`** 或 **`GRPC_TOKEN`**(或旧名 `GEYSER_*`)。详见 **`.env.example`**。
|
|
293
300
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# v0.5.17 — Shred metadata passthrough and ordering scope
|
|
2
|
+
|
|
3
|
+
Released 2026-10-19.
|
|
4
|
+
|
|
5
|
+
RawInstruction and PumpRouteIntent retain the tx_index and receive timestamp supplied to the parser. Parser SDKs expose metadata.tx_index and metadata.grpc_recv_us; streamer exposes metadata.tx_index and metadata.recv_us. Regression assertions use nonzero values and cover the final streamer callback and JSON round trips.
|
|
6
|
+
|
|
7
|
+
The default Entries clients enumerate transactions within each received Entries message and reset to zero for the next message. This is a local position, not the final transaction index across a slot. Yellowstone supplies a node transaction index. Receive timestamps are local microsecond timestamps, not execution-order guarantees. Use signatures to deduplicate across Shred messages, and instruction_index to order outer instructions within a transaction.
|
|
8
|
+
|
|
9
|
+
## Compatibility
|
|
10
|
+
|
|
11
|
+
No metadata fields were removed or renamed. Existing values and numbering behavior are unchanged. Low-level/replay callers should provide upstream metadata when available rather than relying on zero defaults. This release adds documentation and regression protection; it does not synthesize a global chain ordering or add execution information to Shred data.
|
|
12
|
+
|
|
13
|
+
## Validation
|
|
14
|
+
|
|
15
|
+
Nonzero metadata propagation tests pass for Rust parser, sol-shred-sdk, streamer, TypeScript, Python and Go. Existing PumpRouteIntent metadata assertions continue to pass.
|
|
@@ -471,9 +471,11 @@ class EventMetadata:
|
|
|
471
471
|
|
|
472
472
|
signature: str = ""
|
|
473
473
|
slot: int = 0
|
|
474
|
-
#:
|
|
474
|
+
#: 调用方序号:Yellowstone 为节点 index;Entries 为单条消息内序号,下条消息从 0 开始。
|
|
475
|
+
#: Shred 跨消息去重使用交易签名,不能使用 (slot, tx_index)。
|
|
475
476
|
tx_index: int = 0
|
|
476
477
|
block_time_us: int = 0
|
|
478
|
+
#: 本地接收时间(微秒),不代表链上执行顺序。
|
|
477
479
|
grpc_recv_us: int = 0
|
|
478
480
|
recent_blockhash: str = ""
|
|
479
481
|
is_created_buy: bool = False
|
|
@@ -16,10 +16,12 @@ def test_signed_raw_payloads_and_json():
|
|
|
16
16
|
tx, _ = decode_wire_transaction(wire)
|
|
17
17
|
msg = tx['message']
|
|
18
18
|
keys = msg['accountKeys'] + f['loaded_writable'] + f['loaded_readonly']
|
|
19
|
-
events = parse_shred_transaction_with_loaded_addresses(wire,f['loaded_writable'],f['loaded_readonly'],filter=IncludeOnlyFilter([EventType.RAW_INSTRUCTION]))
|
|
19
|
+
events = parse_shred_transaction_with_loaded_addresses(wire,f['loaded_writable'],f['loaded_readonly'],tx_index=71,recv_us=123456,filter=IncludeOnlyFilter([EventType.RAW_INSTRUCTION]))
|
|
20
20
|
assert len(events) == len(msg['instructions'])
|
|
21
21
|
for event, ix in zip(events, msg['instructions']):
|
|
22
22
|
e=event.data
|
|
23
|
+
assert e.metadata.tx_index == 71
|
|
24
|
+
assert e.metadata.grpc_recv_us == 123456
|
|
23
25
|
assert e.program_id == keys[ix['programIdIndex']]
|
|
24
26
|
assert e.accounts == [keys[i] for i in ix['accounts']]
|
|
25
27
|
assert e.account_indices == ix['accounts']
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/hot_path_benchmark.json
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/hot_path_benchmark.py
RENAMED
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/multi_protocol_grpc.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/README.md
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/config.json
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/expected.json
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/programs.json
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/offline_bank/snapshot.json.gz
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/parse_tx_by_signature.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pump_execution_replay.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpfun_quick_test.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpfun_trade_filter.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpfun_with_metrics.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpswap_low_latency.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/pumpswap_with_metrics.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/raw_instruction_filter.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/rust_example_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/examples/stonkfun_snapshot_refresh.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_dispatcher.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/__init__.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/meteora.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/orca.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/pumpfun.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/pumpswap.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/account_fillers/raydium.py
RENAMED
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/__init__.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/raydium_orca.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/accounts/rpc_wallet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/event_type_parity.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/geyser_connect.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/subscribe_builder.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc/transaction_meta.py
RENAMED
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/grpc_instruction_parser.py
RENAMED
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/inner_instruction_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/instr_account_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sol_parser_sdk_python-0.5.16 → sol_parser_sdk_python-0.5.17}/sol_parser/liquidity_snapshot.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|