sol-parser-sdk-python 0.5.10__tar.gz → 0.5.12__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.12/.gitignore +19 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/PKG-INFO +39 -23
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/README.md +36 -21
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/README_CN.md +35 -20
- sol_parser_sdk_python-0.5.12/docs/USAGE.md +161 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/pyproject.toml +2 -1
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/__init__.py +21 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_dispatcher.py +93 -5
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/pumpfun.py +19 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/pumpswap.py +45 -2
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/raydium.py +25 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/accounts/__init__.py +19 -1
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/dex_parsers.py +238 -5
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/event_type_parity.py +8 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/event_types.py +232 -2
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc_client.py +4 -2
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc_instruction_parser.py +70 -8
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc_types.py +38 -1
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/inner_instruction_parser.py +14 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/instructions.py +197 -28
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/log_instr_dedup.py +65 -7
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/merger.py +18 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/order_buffer.py +37 -12
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/parser.py +22 -5
- sol_parser_sdk_python-0.5.12/sol_parser/pump_upgrade.py +194 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/rpc_parser.py +4 -2
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/shredstream_client.py +4 -1
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/simulation_route.py +18 -6
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/transaction_route.py +10 -1
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/wire_transaction.py +8 -14
- sol_parser_sdk_python-0.5.12/tests/fixtures/account_lifecycle_20261008.json +4825 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/clmm_fee_rewards_20261008.json +20734 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/clmm_liquidity_20261008.json +14005 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/clmm_one_sided_20261008.json +28917 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/cpmm_liquidity_20261008.json +7552 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_borrow_20261009.json +46480 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_cpi_20261009.json +18862 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_dual_claims_20261009.json +10987 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_reward_admin_20261009.json +12310 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_reward_renewal_20261009.json +6350 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_reward_withdraw_20261009.json +20815 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_upstream_hook_20261009.json +3793 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v1_config2_instruction_20261008.json +39 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v1_live_simulations_20261008.json +78 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v2_authority_20261008.json +18092 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v2_fees_20261008.json +6449 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v2_liquidity_20261008.json +11262 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v2_rewards_20261008.json +4608 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/damm_v2_vesting_20261008.json +17467 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dbc_boundary_20261008.json +3612 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dbc_live_simulations_20261008.json +857 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dbc_migration_20261008.json +1776 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dbc_referral_live_20261008.json +105 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dbc_swap2.json +575 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dbc_v1_migration_20261008.json +1462 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dlmm_fees_20261008.json +1098 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dlmm_hook_rewards_20261009.json +2576 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/dlmm_rewards_20261008.json +1779 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/launchlab_migration_20261009.json +4533 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/native_settlement_20261008.json +25831 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_compact_simulations_20261008.json +2113 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_depth2_20261014.json +5513 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_holder_20261009.json +1762 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_routes_20261009.json +2695 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_synthetic_20261009.json +1275 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_upgrade/account_context.json +239 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_upgrade/boost_account_context.json +59 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_upgrade/events.json +57 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_upgrade/mainnet.json +6305 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_upgrade/pump_trade_account_context.json +1050 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pump_upgrade/simulation_events.json +3132 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/pumpswap_liquidity_20261008.json +11649 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_alt_load_rejections_20261009.json +46 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_clmm_boundaries_20261009.json +469 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_cpmm_bank_20261009.json +628 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_dex_replay_20261009.json +2172 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_identical_alt_bank_20261009.json +881 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_multileg_bank_20261009.json +1098 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_nested_cpi_bank_20261009.json +667 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_replay_20261009.json +1081 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/signed_wire_boundaries_20261009.json +236 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/simulation_alt_20261008.json +561 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/whirlpool_fees_20261008.json +15651 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/whirlpool_hook_20261008.json +1735 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/whirlpool_liquidity_20261008.json +19618 -0
- sol_parser_sdk_python-0.5.12/tests/fixtures/whirlpool_one_sided_20261008.json +25171 -0
- sol_parser_sdk_python-0.5.12/tests/test_clmm_fee_rewards_bank.py +20 -0
- sol_parser_sdk_python-0.5.12/tests/test_clmm_liquidity_bank.py +40 -0
- sol_parser_sdk_python-0.5.12/tests/test_clmm_one_sided_bank.py +20 -0
- sol_parser_sdk_python-0.5.12/tests/test_cpmm_liquidity_bank.py +24 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_borrow_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_cpi_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_dual_claims_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_reward_admin_bank.py +32 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_reward_renewal_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_reward_withdraw_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_upstream_hook_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_v1_live_simulations.py +22 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_v2_authority_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_v2_fees_bank.py +34 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_v2_liquidity_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_v2_rewards_bank.py +31 -0
- sol_parser_sdk_python-0.5.12/tests/test_damm_v2_vesting_bank.py +20 -0
- sol_parser_sdk_python-0.5.12/tests/test_dbc_boundary_bank.py +27 -0
- sol_parser_sdk_python-0.5.12/tests/test_dbc_migration_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_dbc_upgrade.py +58 -0
- sol_parser_sdk_python-0.5.12/tests/test_dbc_v1_migration_bank.py +35 -0
- sol_parser_sdk_python-0.5.12/tests/test_dex_retry_delay.py +34 -0
- sol_parser_sdk_python-0.5.12/tests/test_dlmm_fees_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_dlmm_hook_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_dlmm_rewards_bank.py +32 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_filter_and_account_parity.py +46 -3
- sol_parser_sdk_python-0.5.12/tests/test_launchlab_migration_bank.py +19 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_orca_whirlpool_instruction_parity.py +2 -2
- sol_parser_sdk_python-0.5.12/tests/test_order_buffer.py +79 -0
- sol_parser_sdk_python-0.5.12/tests/test_ordered_late_regression.py +40 -0
- sol_parser_sdk_python-0.5.12/tests/test_prefix_prefilter.py +27 -0
- sol_parser_sdk_python-0.5.12/tests/test_protocol_current_fields.py +24 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_compact_simulation_routes.py +18 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_depth2.py +16 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_holder_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_routes_bank.py +19 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_synthetic_bank.py +21 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_trade_account_context.py +53 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_trade_merge_identity.py +92 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_upgrade_events.py +41 -0
- sol_parser_sdk_python-0.5.12/tests/test_pump_upgrade_mainnet.py +57 -0
- sol_parser_sdk_python-0.5.12/tests/test_pumpswap_account_context.py +70 -0
- sol_parser_sdk_python-0.5.12/tests/test_pumpswap_liquidity_bank.py +26 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pumpswap_upgrade.py +1 -1
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_raydium_clmm_instruction_parity.py +28 -13
- sol_parser_sdk_python-0.5.12/tests/test_shred_wire_sanitize.py +40 -0
- sol_parser_sdk_python-0.5.12/tests/test_signed_transaction_replay.py +274 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_simulation_route.py +68 -12
- sol_parser_sdk_python-0.5.12/tests/test_whirlpool_fees_bank.py +20 -0
- sol_parser_sdk_python-0.5.12/tests/test_whirlpool_hook_bank.py +20 -0
- sol_parser_sdk_python-0.5.12/tests/test_whirlpool_liquidity_bank.py +37 -0
- sol_parser_sdk_python-0.5.12/tests/test_whirlpool_one_sided_bank.py +20 -0
- sol_parser_sdk_python-0.5.10/.gitignore +0 -10
- sol_parser_sdk_python-0.5.10/NATIVE_ALIGNMENT.md +0 -312
- sol_parser_sdk_python-0.5.10/NATIVE_DAMM_FACTORY_ALIGNMENT_20261004.md +0 -16
- sol_parser_sdk_python-0.5.10/NATIVE_DAMM_FACTORY_EVIDENCE_20261004.json +0 -55
- sol_parser_sdk_python-0.5.10/NATIVE_MIGRATION.md +0 -38
- sol_parser_sdk_python-0.5.10/NATIVE_PUMPFUN_NATIVE_DEBIT_ALIGNMENT_20261004.md +0 -18
- sol_parser_sdk_python-0.5.10/NATIVE_PUMPFUN_NATIVE_DEBIT_EVIDENCE_20261004.json +0 -57
- sol_parser_sdk_python-0.5.10/NATIVE_PUMPFUN_SETTLEMENT_ALIGNMENT_20261004.md +0 -11
- sol_parser_sdk_python-0.5.10/NATIVE_PUMPFUN_SETTLEMENT_EVIDENCE_20261004.json +0 -70
- sol_parser_sdk_python-0.5.10/docs/FAILED_TRANSACTION_AUDIT_20261007.md +0 -42
- sol_parser_sdk_python-0.5.10/docs/PUMPFUN_CREATE_REGRESSION_20261007.md +0 -41
- sol_parser_sdk_python-0.5.10/examples/GRPC_CACHE.md +0 -38
- sol_parser_sdk_python-0.5.10/examples/SIMULATION_ROUTES.md +0 -62
- sol_parser_sdk_python-0.5.10/tests/test_order_buffer.py +0 -38
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/.env.example +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/block_meta_stream.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/amm_v4_grpc_refresh_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/batch2_cpmm_simulations_20261003.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/block_meta_grpc_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/cached_tip_routes_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/cpmm_lp_simulations_20261006.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/simulation_ata_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/fixtures/simulation_routes_live_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/meteora_damm_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/multi_protocol_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/parse_tx_by_signature.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/pumpfun_quick_test.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/pumpfun_trade_filter.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/pumpfun_with_metrics.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/pumpswap_low_latency.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/pumpswap_with_metrics.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/rust_example_utils.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/simulation_routes.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/stonkfun_routes.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/examples/stonkfun_snapshot_refresh.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/scripts/bench_parser.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/scripts/gen_golden_rust.sh +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/meteora.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/orca.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/account_fillers/raydium_launchlab.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/accounts/raydium_orca.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/accounts/rpc_wallet.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/accounts/utils.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/block_meta.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/check_migration.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/clock.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/common/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/entries_decode.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/env_config.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/geyser_pb2.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/geyser_pb2_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc/geyser_connect.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc/subscribe_builder.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/grpc/transaction_meta.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/instr/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/instr_account_utils.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/json_util.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/liquidity_snapshot.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/logs/__init__.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/market.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/pumpfun_fee_enrich.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/rust_api_inventory.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/rust_event_json.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/shredstream_pb2.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/shredstream_pb2_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/shredstream_pumpfun.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/solana_storage_pb2.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/solana_storage_pb2_grpc.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/stonkfun_registry.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/u128_parity.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/sol_parser/verify_discriminators.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/cached_tip_routes_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/cpmm_lp_simulations_20261006.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/golden_parse_log.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_concentrated_multihop_mainnet_simulations_20261005.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/2MfmZSU8mWEbskNHAxQGphAyB5x72SC2HYuAkLeSyH6MjttUHqUjm24wPMeH7zrCoQoYFwbLeiFE571mc8WvgZyL.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/2dabmQiykzC1tsNmgtRFbsRJjEKMfUySgScJc2J2uq8CQtoXWZ3YyT99p3nVuCXifEhLkyUe4Sf4nfe2UkFT8AJr.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/2eVpZNvQYPMBVNT5357Qt7HVAUSv9gdwqxKStvdwQ498rcJLLCHVcYPaGfFqVBz44ndYvkA1H4CwjBuDSviAj7jp.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3GufGVVRrnrH1Yuto57jDeTKXeki6ooE9w6h4qYRvNm5FcCpxwDHNvzHXdpAMbxRmukWJpSPHUKHEjnFTCC979ka.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3LQK2JHVbVSSfyCYwTwzoYTY9NEN4gZXzqw3TvAvMJHsvPsopCHtsa5ALhj4tFn8xWbmJ5DsYMMcnPukTBkSjtQf.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3MRWKDUcD5CGn5Xz4qWyGA8Y9udw4SsSr4gcxCjTUqCFt6Zc6uiwHF1wLZXKoqBcGEM2kruBS85ymYxmYk8FLGBk.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3NBSCgAXpNqg7JBUzp6RsfZYzf2QbbHi6r2wcoBF4Lpuzozae7ExUJUGoqpVCXXs8cbibr6aWySH1bsg86Enuhez.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3QVpcUq64D4DUV9empFr3G98pCEa1Cp2fAcFJKyiJGsQ2ir2S4yBLhHYXPNmLfCE8KVDgLApfBYTFM7pf9JVPbsb.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3REXMDkvZsWvgc8czYpfn24avz18APMuzbV2VgQBeymArdJvfQcfcpKr46f3j1H2bAiymFneaNocPH7KzPUPbR1S.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3ejAydePsZTUfeZaU9eiAM37gV5AYPG9hhyMtUobJLQtSMgroDeiE8njXu2JiwMyX5YJLp3vrfNPy89S7EDdUCAy.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/3zC4bw1osyebZ77KagXYP3b5rEBHvJCgcwCriCLc5gAUp9Ev6Bx5ZMbqnYpkKE2VgZgMFcZN5FYKQfcKL45MWpyu.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/5PgkFgTLSEZPZhxgWNToPzTZct95SycuaH9H3g82YwcKXudtiynEZmiaoQrhGv2gdZLrvsVZ5Wn88KGirbFYpLrt.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_create/661yA5s6uxUsggTcT4cZ6yyMfNmF4mCZzxLnCb1zBrSY3YhAiouYXBitiPvkngBEKxaeGcpXiek6qXDajiRr9wuY.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/review10_compiled_bounds.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/review10_prefunded_ata.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/review10_wire_bounds.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/simulation_ata_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/simulation_routes_live_20261002.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/fixtures/stonkfun_routes_0_7_7.json +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_amm_v4_v2.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_block_meta.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_exact_metadata_json.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_golden.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_grpc_unary_methods.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_imports_and_inner.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_launchlab_invocation_anchor.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_log_instr_dedup.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_market_helpers.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_native_grpc_server.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_native_plan_lifecycle.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pump_fees_instruction_parity.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pumpfun_account_fill.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pumpfun_create_regression.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pumpfun_trade_tail.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pumpfun_v2_parity.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_pumpswap_instruction.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_raydium_current_logs.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_review10.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_review_batch2.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_shredstream.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_snapshot_refresh_example.py +0 -0
- {sol_parser_sdk_python-0.5.10 → sol_parser_sdk_python-0.5.12}/tests/test_stonkfun_routes.py +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.pyc
|
|
3
|
+
*.pyo
|
|
4
|
+
*.egg-info/
|
|
5
|
+
dist/
|
|
6
|
+
build/
|
|
7
|
+
.venv/
|
|
8
|
+
venv/
|
|
9
|
+
.DS_Store
|
|
10
|
+
.env
|
|
11
|
+
|
|
12
|
+
# Generated reports and local tooling outputs
|
|
13
|
+
/NATIVE_*EVIDENCE*.json
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
.mypy_cache/
|
|
16
|
+
.ruff_cache/
|
|
17
|
+
.benchmarks/
|
|
18
|
+
.coverage
|
|
19
|
+
htmlcov/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: sol-parser-sdk-python
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.12
|
|
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
|
|
@@ -8,6 +8,7 @@ Requires-Dist: grpcio-tools>=1.64.0
|
|
|
8
8
|
Requires-Dist: grpcio>=1.64.0
|
|
9
9
|
Requires-Dist: python-dotenv>=1.0.0
|
|
10
10
|
Provides-Extra: dev
|
|
11
|
+
Requires-Dist: cryptography>=44.0; extra == 'dev'
|
|
11
12
|
Requires-Dist: pytest-asyncio>=0.21; extra == 'dev'
|
|
12
13
|
Requires-Dist: pytest-benchmark>=4.0; extra == 'dev'
|
|
13
14
|
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
@@ -50,17 +51,33 @@ Description-Content-Type: text/markdown
|
|
|
50
51
|
|
|
51
52
|
---
|
|
52
53
|
|
|
53
|
-
##
|
|
54
|
+
## 📦 SDK Versions and Related SDKs
|
|
54
55
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
|
58
|
-
|
|
59
|
-
|
|
|
60
|
-
|
|
|
56
|
+
Parser SDK language versions and related Rust SDKs:
|
|
57
|
+
|
|
58
|
+
| Language | Repository | Description | Version |
|
|
59
|
+
|----------|------------|-------------|---------|
|
|
60
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.13` |
|
|
61
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.19` |
|
|
62
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.12` |
|
|
63
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.12` |
|
|
64
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.4` |
|
|
65
|
+
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.1` |
|
|
61
66
|
|
|
62
67
|
---
|
|
63
68
|
|
|
69
|
+
## v0.5.12 — Pump depth-2 compatibility
|
|
70
|
+
|
|
71
|
+
Adds signed Pump depth-2 create-event replay coverage, including ALT-loaded accounts and executed logs. Existing event layouts and public parsing interfaces remain unchanged.
|
|
72
|
+
|
|
73
|
+
Validation includes official Pump SDK 4.1.0 instruction comparisons, signed local LiteSVM simulations and SDK regressions. Local simulation state/config is synthetic; no funded transactions were broadcast and production latency was not measured.
|
|
74
|
+
|
|
75
|
+
## v0.5.11 — Signed transaction and hot-path hardening
|
|
76
|
+
|
|
77
|
+
Hardens signed transaction sanitization, loaded-address boundaries, ordered stream filtering and parser lifecycle. Aligns CLMM and DEX instruction/event layouts, nested CPI route attribution and liquidity/reward accounting. Adds independently signed wire fixtures, ALT failure cases and offline bank regressions.
|
|
78
|
+
|
|
79
|
+
Validation includes local CPU benchmarks and offline signed-bank scenarios. Measured hot paths use cached inputs without RPC. Benchmarks do not establish production network or transaction-landing latency. No funded mainnet transactions were broadcast.
|
|
80
|
+
|
|
64
81
|
## What This SDK Is For
|
|
65
82
|
|
|
66
83
|
This is the Python implementation of the FnZero Solana DEX parser SDK for asyncio services, research scripts, indexers, copy-trading systems, sniper pipelines, and backend jobs that need normalized real-time DEX events.
|
|
@@ -124,7 +141,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
|
|
|
124
141
|
**From PyPI**
|
|
125
142
|
|
|
126
143
|
```bash
|
|
127
|
-
pip install sol-parser-sdk-python==0.5.
|
|
144
|
+
pip install sol-parser-sdk-python==0.5.12
|
|
128
145
|
```
|
|
129
146
|
|
|
130
147
|
**From source**
|
|
@@ -240,18 +257,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
|
|
|
240
257
|
| Description | Run command | Source |
|
|
241
258
|
|-------------|-------------|--------|
|
|
242
259
|
| **PumpFun** | | |
|
|
243
|
-
| 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) |
|
|
244
|
-
| 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) |
|
|
245
|
-
| 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) |
|
|
260
|
+
| 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.12` |
|
|
261
|
+
| 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.12` |
|
|
262
|
+
| 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.12` |
|
|
246
263
|
| **PumpSwap** | | |
|
|
247
|
-
| 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) |
|
|
248
|
-
| 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) |
|
|
264
|
+
| 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.12` |
|
|
265
|
+
| 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.12` |
|
|
249
266
|
| **Meteora DAMM** | | |
|
|
250
|
-
| 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) |
|
|
267
|
+
| 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.12` |
|
|
251
268
|
| **Multi-protocol** | | |
|
|
252
|
-
| 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) |
|
|
269
|
+
| 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.12` |
|
|
253
270
|
| **Utility** | | |
|
|
254
|
-
| 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) |
|
|
271
|
+
| 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.12` |
|
|
255
272
|
|
|
256
273
|
**Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
|
|
257
274
|
|
|
@@ -346,12 +363,11 @@ MIT — https://github.com/0xfnzero/sol-parser-sdk-python
|
|
|
346
363
|
- **Telegram**: https://t.me/fnzero_group
|
|
347
364
|
- **Discord**: https://discord.gg/vuazbGkqQE
|
|
348
365
|
|
|
349
|
-
##
|
|
350
|
-
|
|
351
|
-
See [NATIVE_ALIGNMENT.md](NATIVE_ALIGNMENT.md) for implemented native APIs, Rust golden tests, mainnet simulation evidence, examples, and remaining parity gaps. Full cross-language parity is still in progress.
|
|
366
|
+
## API compatibility
|
|
352
367
|
|
|
368
|
+
Full cross-language API parity is still in progress. See the [API migration guide](docs/USAGE.md#api-compatibility) for public behavior and support boundaries, and the examples directory for usage.
|
|
353
369
|
|
|
354
|
-
实时 parser → trade 接入使用 Yellowstone **gRPC**;见 [gRPC 缓存接入与三语言示例](examples/GRPC_CACHE.md)。此路径不使用 WebSocket,报价和构建热路径不调用 RPC。
|
|
355
370
|
|
|
371
|
+
实时 parser → trade 接入使用 Yellowstone **gRPC**;见 [gRPC 缓存接入与三语言示例](docs/USAGE.md#grpc-cache)。此路径不使用 WebSocket,报价和构建热路径不调用 RPC。
|
|
356
372
|
|
|
357
|
-
[
|
|
373
|
+
Shared PumpFun create/create_v2 mainnet fixtures, replay instructions and verification limits are documented in the [validation guide](https://github.com/0xfnzero/sol-parser-sdk-golang/tree/main/validation/pumpfun_create_20261007).
|
|
@@ -32,17 +32,33 @@
|
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## 📦 SDK Versions and Related SDKs
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
|
40
|
-
|
|
41
|
-
|
|
|
42
|
-
|
|
|
37
|
+
Parser SDK language versions and related Rust SDKs:
|
|
38
|
+
|
|
39
|
+
| Language | Repository | Description | Version |
|
|
40
|
+
|----------|------------|-------------|---------|
|
|
41
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.13` |
|
|
42
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.19` |
|
|
43
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.12` |
|
|
44
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.12` |
|
|
45
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.4` |
|
|
46
|
+
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.1` |
|
|
43
47
|
|
|
44
48
|
---
|
|
45
49
|
|
|
50
|
+
## v0.5.12 — Pump depth-2 compatibility
|
|
51
|
+
|
|
52
|
+
Adds signed Pump depth-2 create-event replay coverage, including ALT-loaded accounts and executed logs. Existing event layouts and public parsing interfaces remain unchanged.
|
|
53
|
+
|
|
54
|
+
Validation includes official Pump SDK 4.1.0 instruction comparisons, signed local LiteSVM simulations and SDK regressions. Local simulation state/config is synthetic; no funded transactions were broadcast and production latency was not measured.
|
|
55
|
+
|
|
56
|
+
## v0.5.11 — Signed transaction and hot-path hardening
|
|
57
|
+
|
|
58
|
+
Hardens signed transaction sanitization, loaded-address boundaries, ordered stream filtering and parser lifecycle. Aligns CLMM and DEX instruction/event layouts, nested CPI route attribution and liquidity/reward accounting. Adds independently signed wire fixtures, ALT failure cases and offline bank regressions.
|
|
59
|
+
|
|
60
|
+
Validation includes local CPU benchmarks and offline signed-bank scenarios. Measured hot paths use cached inputs without RPC. Benchmarks do not establish production network or transaction-landing latency. No funded mainnet transactions were broadcast.
|
|
61
|
+
|
|
46
62
|
## What This SDK Is For
|
|
47
63
|
|
|
48
64
|
This is the Python implementation of the FnZero Solana DEX parser SDK for asyncio services, research scripts, indexers, copy-trading systems, sniper pipelines, and backend jobs that need normalized real-time DEX events.
|
|
@@ -106,7 +122,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
|
|
|
106
122
|
**From PyPI**
|
|
107
123
|
|
|
108
124
|
```bash
|
|
109
|
-
pip install sol-parser-sdk-python==0.5.
|
|
125
|
+
pip install sol-parser-sdk-python==0.5.12
|
|
110
126
|
```
|
|
111
127
|
|
|
112
128
|
**From source**
|
|
@@ -222,18 +238,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
|
|
|
222
238
|
| Description | Run command | Source |
|
|
223
239
|
|-------------|-------------|--------|
|
|
224
240
|
| **PumpFun** | | |
|
|
225
|
-
| 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) |
|
|
226
|
-
| 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) |
|
|
227
|
-
| 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) |
|
|
241
|
+
| 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.12` |
|
|
242
|
+
| 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.12` |
|
|
243
|
+
| 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.12` |
|
|
228
244
|
| **PumpSwap** | | |
|
|
229
|
-
| 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) |
|
|
230
|
-
| 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) |
|
|
245
|
+
| 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.12` |
|
|
246
|
+
| 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.12` |
|
|
231
247
|
| **Meteora DAMM** | | |
|
|
232
|
-
| 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) |
|
|
248
|
+
| 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.12` |
|
|
233
249
|
| **Multi-protocol** | | |
|
|
234
|
-
| 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) |
|
|
250
|
+
| 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.12` |
|
|
235
251
|
| **Utility** | | |
|
|
236
|
-
| 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) |
|
|
252
|
+
| 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.12` |
|
|
237
253
|
|
|
238
254
|
**Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
|
|
239
255
|
|
|
@@ -328,12 +344,11 @@ MIT — https://github.com/0xfnzero/sol-parser-sdk-python
|
|
|
328
344
|
- **Telegram**: https://t.me/fnzero_group
|
|
329
345
|
- **Discord**: https://discord.gg/vuazbGkqQE
|
|
330
346
|
|
|
331
|
-
##
|
|
332
|
-
|
|
333
|
-
See [NATIVE_ALIGNMENT.md](NATIVE_ALIGNMENT.md) for implemented native APIs, Rust golden tests, mainnet simulation evidence, examples, and remaining parity gaps. Full cross-language parity is still in progress.
|
|
347
|
+
## API compatibility
|
|
334
348
|
|
|
349
|
+
Full cross-language API parity is still in progress. See the [API migration guide](docs/USAGE.md#api-compatibility) for public behavior and support boundaries, and the examples directory for usage.
|
|
335
350
|
|
|
336
|
-
实时 parser → trade 接入使用 Yellowstone **gRPC**;见 [gRPC 缓存接入与三语言示例](examples/GRPC_CACHE.md)。此路径不使用 WebSocket,报价和构建热路径不调用 RPC。
|
|
337
351
|
|
|
352
|
+
实时 parser → trade 接入使用 Yellowstone **gRPC**;见 [gRPC 缓存接入与三语言示例](docs/USAGE.md#grpc-cache)。此路径不使用 WebSocket,报价和构建热路径不调用 RPC。
|
|
338
353
|
|
|
339
|
-
[
|
|
354
|
+
Shared PumpFun create/create_v2 mainnet fixtures, replay instructions and verification limits are documented in the [validation guide](https://github.com/0xfnzero/sol-parser-sdk-golang/tree/main/validation/pumpfun_create_20261007).
|
|
@@ -32,14 +32,18 @@
|
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## 📦 SDK 版本与相关项目
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
|
40
|
-
|
|
41
|
-
|
|
|
42
|
-
|
|
|
37
|
+
解析 SDK 的各语言版本及相关 Rust SDK:
|
|
38
|
+
|
|
39
|
+
| 语言 | 仓库 | 描述 | 版本 |
|
|
40
|
+
|------|------|------|
|
|
41
|
+
| Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.13` |
|
|
42
|
+
| Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.19` |
|
|
43
|
+
| Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.12` |
|
|
44
|
+
| Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.12` |
|
|
45
|
+
| **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.4` |
|
|
46
|
+
| **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX 交易构建与交易执行 | `v6.0.1` |
|
|
43
47
|
|
|
44
48
|
---
|
|
45
49
|
|
|
@@ -58,6 +62,18 @@
|
|
|
58
62
|
|
|
59
63
|
## 发布说明
|
|
60
64
|
|
|
65
|
+
## v0.5.12 — Pump depth-2 compatibility
|
|
66
|
+
|
|
67
|
+
Adds signed Pump depth-2 create-event replay coverage, including ALT-loaded accounts and executed logs. Existing event layouts and public parsing interfaces remain unchanged.
|
|
68
|
+
|
|
69
|
+
Validation includes official Pump SDK 4.1.0 instruction comparisons, signed local LiteSVM simulations and SDK regressions. Local simulation state/config is synthetic; no funded transactions were broadcast and production latency was not measured.
|
|
70
|
+
|
|
71
|
+
## v0.5.11 — Signed transaction and hot-path hardening
|
|
72
|
+
|
|
73
|
+
Hardens signed transaction sanitization, loaded-address boundaries, ordered stream filtering and parser lifecycle. Aligns CLMM and DEX instruction/event layouts, nested CPI route attribution and liquidity/reward accounting. Adds independently signed wire fixtures, ALT failure cases and offline bank regressions.
|
|
74
|
+
|
|
75
|
+
Validation includes local CPU benchmarks and offline signed-bank scenarios. Measured hot paths use cached inputs without RPC. Benchmarks do not establish production network or transaction-landing latency. No funded mainnet transactions were broadcast.
|
|
76
|
+
|
|
61
77
|
### v0.5.10
|
|
62
78
|
|
|
63
79
|
- 按实际指令 discriminator 和事件 mint 匹配 PumpFun create/create_v2 账户,支持 CPI,并拒绝猜测有歧义的匹配。
|
|
@@ -106,7 +122,7 @@
|
|
|
106
122
|
**PyPI**
|
|
107
123
|
|
|
108
124
|
```bash
|
|
109
|
-
pip install sol-parser-sdk-python==0.5.
|
|
125
|
+
pip install sol-parser-sdk-python==0.5.12
|
|
110
126
|
```
|
|
111
127
|
|
|
112
128
|
**源码**
|
|
@@ -222,18 +238,18 @@ Python ShredStream 热路径只使用静态账户表。V0 ALT-loaded 指令账
|
|
|
222
238
|
| 描述 | 运行命令 | 源码 |
|
|
223
239
|
|------|----------|------|
|
|
224
240
|
| **PumpFun** | | |
|
|
225
|
-
| 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) |
|
|
226
|
-
| 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) |
|
|
227
|
-
| 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) |
|
|
241
|
+
| 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.12` |
|
|
242
|
+
| 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.12` |
|
|
243
|
+
| 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.12` |
|
|
228
244
|
| **PumpSwap** | | |
|
|
229
|
-
| 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) |
|
|
230
|
-
| 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) |
|
|
245
|
+
| 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.12` |
|
|
246
|
+
| 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.12` |
|
|
231
247
|
| **Meteora DAMM** | | |
|
|
232
|
-
| 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) |
|
|
248
|
+
| 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.12` |
|
|
233
249
|
| **多协议** | | |
|
|
234
|
-
| 订阅 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) |
|
|
250
|
+
| 订阅 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.12` |
|
|
235
251
|
| **工具** | | |
|
|
236
|
-
| 按签名解析交易(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) |
|
|
252
|
+
| 按签名解析交易(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.12` |
|
|
237
253
|
|
|
238
254
|
**环境变量:** gRPC 示例需要 **`GRPC_URL`** 或 **`GRPC_ENDPOINT`**,以及 **`GRPC_AUTH_TOKEN`** 或 **`GRPC_TOKEN`**(或旧名 `GEYSER_*`)。详见 **`.env.example`**。
|
|
239
255
|
|
|
@@ -300,9 +316,8 @@ MIT — https://github.com/0xfnzero/sol-parser-sdk-python
|
|
|
300
316
|
- **Telegram**: https://t.me/fnzero_group
|
|
301
317
|
- **Discord**: https://discord.gg/vuazbGkqQE
|
|
302
318
|
|
|
303
|
-
##
|
|
304
|
-
|
|
305
|
-
See [NATIVE_ALIGNMENT.md](NATIVE_ALIGNMENT.md) for implemented native APIs, Rust golden tests, mainnet simulation evidence, examples, and remaining parity gaps. Full cross-language parity is still in progress.
|
|
319
|
+
## API 兼容性
|
|
306
320
|
|
|
321
|
+
完整跨语言 API 对齐仍在进行;公开行为和支持边界见 [API 迁移说明](docs/USAGE.md#api-compatibility),使用方法见 examples 目录。
|
|
307
322
|
|
|
308
|
-
|
|
323
|
+
PumpFun create/create_v2 的共享主网样本、重放方法和验证边界见 [验证说明](https://github.com/0xfnzero/sol-parser-sdk-golang/tree/main/validation/pumpfun_create_20261007)。
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Sol Parser SDK python usage
|
|
2
|
+
|
|
3
|
+
[English](../README.md) · [中文](../README_CN.md)
|
|
4
|
+
|
|
5
|
+
- [API compatibility](#api-compatibility)
|
|
6
|
+
- [gRPC account cache](#grpc-cache)
|
|
7
|
+
- [Simulation routes](#simulation-routes)
|
|
8
|
+
|
|
9
|
+
## API compatibility
|
|
10
|
+
|
|
11
|
+
以下说明当前公开行为和仍需调用方处理的边界;完整跨语言功能对齐仍在审核。
|
|
12
|
+
|
|
13
|
+
### 元数据精度
|
|
14
|
+
|
|
15
|
+
Node 的 `EventMetadata.slot`、`tx_index`、`block_time_us`、`grpc_recv_us` 现在是 `bigint`。输入支持 bigint、十进制字符串及安全整数 Number;超出安全整数范围的 Number、浮点数、越界 u64/i64 拒绝。根入口导出 `exactU64`、`exactI64`、`exactInteger`。使用 `dexEventToJsonString` 或 `bigintToJsonReplacer` 输出 JSON;直接 JSON.stringify(bigint) 会失败。
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
const slot = exactU64("18446744073709551615");
|
|
19
|
+
const latency = Number(BigInt(nowUs()) - event.metadata.grpc_recv_us);
|
|
20
|
+
console.log(JSON.stringify(event, bigintToJsonReplacer));
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
只在计算显示用延迟时将差值转为 Number。slot、index、时间及金额参与解析和排序时保留精确整数。
|
|
24
|
+
|
|
25
|
+
Go `EventMetadata` 保持 uint64/int64,JSON 输出上述四个字段为十进制字符串;Unmarshal 接受整数文本或十进制字符串,并检查范围,不接受 null/float/bool。Python `EventMetadata` 将十进制字符串归一为 int,拒绝 bool/float/越界;公开 JSON 工具输出上述元数据字段为字符串。各语言省略元数据整数时仍默认 0。未知实际净到账继续使用明确未知值,不能用 0 代替。
|
|
26
|
+
|
|
27
|
+
其余全部事件整数/JSON 字段的行为审核尚未完成。
|
|
28
|
+
|
|
29
|
+
### 事件别名
|
|
30
|
+
|
|
31
|
+
三语言提供 `LaunchLabPoolCreateEvent`、`StonkFunPoolCreateEvent`、`LaunchLabTradeEvent`、`StonkFunTradeEvent`。它们复用已有 RaydiumLaunchlab 结构。平台归属仍需池配置或迁移记录,不能仅凭共享 program ID 断言 StonkFun。
|
|
32
|
+
|
|
33
|
+
### gRPC 生命周期
|
|
34
|
+
|
|
35
|
+
一个 client 同时管理一个 DEX 订阅。再次订阅会停止并等待原订阅;动态更新和停止串行进行。Node `sub.join()` / Go `sub.Join()` 等待全部 worker;Python `await client.stop()` 等待任务。Node 使用 grpc-js + proto-loader,安装 SDK 不再包含 Yellowstone Rust N-API 客户端依赖。
|
|
36
|
+
|
|
37
|
+
Node `sub.states` / `sub.status()`、Go `sub.States` / `sub.Status()`、Python `queue.states` / `queue.status()` 提供连接、重连、连续性中断、丢弃及停止状态;保留原事件和错误消费方式。状态通知有界,状态快照可读取当前累计信息。重连成功不会自动清除连续性中断。调用方需中止交易准备,在选定 fork 下重新验证缓存,再恢复 readiness。
|
|
38
|
+
|
|
39
|
+
节点停止可能使事件消费结束或队列停止产出;Python 队列消费者同时观察状态以终止 get 等待。完整实时缓存恢复、新 array 发现和 commitment/fork 自动关联仍在实现。
|
|
40
|
+
|
|
41
|
+
示例见 [gRPC 缓存接入](#grpc-cache);PublicNode 接入读取 GRPC_URL/GRPC_TOKEN,不打印凭据。
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### DAMM route 解析
|
|
45
|
+
|
|
46
|
+
新增 legacy swap/swap2 route;mode 0/1 exact-in,mode 2 第一个金额为期望输出、第二个为最大输入,其它 mode unknown。失败保留意图、实际成交未知;Token-2022 缺净到账证据不填零。历史模拟 expected 新增 DAMM leg,调用方不可依赖旧的空 legs。
|
|
47
|
+
|
|
48
|
+
<a id="grpc-cache"></a>
|
|
49
|
+
|
|
50
|
+
## gRPC account cache
|
|
51
|
+
|
|
52
|
+
实时交易数据以 Rust sol-parser-sdk 的 Yellowstone gRPC 接口为准。三个原生 parser 使用相同来源:交易事件提供 pool/mint/方向线索,原始账户事件提供当前字节、owner、slot、write_version,Clock 提供 epoch/时间,BlockMeta 或显式 gRPC unary 提供 blockhash。
|
|
53
|
+
|
|
54
|
+
此流程不使用 WebSocket。parser 没有 WebSocket 订阅接口;parser 的 SubscriptionHandle/Subscription 管理 gRPC 流。trade-sdk 中另有通用 WebSocket 兼容模块,其实现与测试不是 parser gRPC 能力的证明。
|
|
55
|
+
|
|
56
|
+
| 语言 | parser 实时入口 | 原始账户写入 trade cache |
|
|
57
|
+
| --- | --- | --- |
|
|
58
|
+
| Node.js | YellowstoneGrpc.subscribeDexEvents | SubscriptionAccountCache.updateFromParser(raw) |
|
|
59
|
+
| Python | YellowstoneGrpc.subscribe_dex_events | SubscriptionAccountCache.update_from_parser(raw) |
|
|
60
|
+
| Go | YellowstoneGrpc.SubscribeDexEvents | SubscriptionAccountCache.UpdateRaw(pubkey, owner, data, lamports, slot, writeVersion) |
|
|
61
|
+
|
|
62
|
+
Node/Python 传原始账户事件的 payload,而非最外层 DexEvent wrapper。Go 将事件公钥解析为 solana.PublicKey;解析失败必须返回错误。账户关闭(lamports=0)保留为 tombstone,不复用旧字节。不要从 swap 事件伪造账户完整状态、当前手续费或 slot。
|
|
63
|
+
|
|
64
|
+
推荐接入顺序:
|
|
65
|
+
|
|
66
|
+
1. 在 parser 订阅交易与 AccountRawSnapshot;raw snapshot 需要显式开启事件过滤。按已知 pool/config/vault/mint/tick/bin/Clock 地址订阅。路由候选是线索,用户可选择 SOL、WSOL、USDC 或股票作为支付/收款资产。
|
|
67
|
+
2. 原始账户更新写入选定 fork 的本地 cache,保留真实版本。缺失配置/新 array 必须在交易前通过订阅或冷启动补齐;不会用 WebSocket 或热路径 RPC 自动兜底。
|
|
68
|
+
3. 冻结 cache.snapshot(),替换为用户的钱包、金额与资产,使用 cached prepare/route。本地校验 owner、pool/mint 连通性、状态、费率、Token-2022 费用及 freshness 后报价和构建。本次买入或卖出是独立交易。
|
|
69
|
+
4. 模拟可显式调用 simulateTransaction;这是验证步骤。读取模拟结果用 parser 的 simulation_routes 示例,不等于真实发送。
|
|
70
|
+
|
|
71
|
+
gRPC 流不保证首次提供所有静态账户。pool 已更新不等于 mint/config 已新鲜;不得把其它账户 slot 改成 Clock slot。重连后须确认缺失更新和 fork,缓存就绪前暂停构建。缺失数据或过期状态明确失败。
|
|
72
|
+
|
|
73
|
+
### 完整示例
|
|
74
|
+
|
|
75
|
+
两个 SDK 安装在各自环境中即可运行,也可分别在对应仓库运行。快照文件是两个示例间的明确接口,安装和运行不需要 Rust。
|
|
76
|
+
|
|
77
|
+
| 语言 | parser 仓库:gRPC 刷新 | trade 仓库:本地构建 |
|
|
78
|
+
| --- | --- | --- |
|
|
79
|
+
| Node.js | npx tsx examples/stonkfun_snapshot_refresh.ts /absolute/snapshot.json --require-pool-update | npx tsx examples/cached_trade.ts /absolute/snapshot.json |
|
|
80
|
+
| Python | python examples/stonkfun_snapshot_refresh.py /absolute/snapshot.json --require-pool-update | python examples/cached_trade.py /absolute/snapshot.json |
|
|
81
|
+
| Go | go run ./examples/stonkfun_snapshot_refresh /absolute/snapshot.json --require-pool-update | go run ./examples/cached_trade /absolute/snapshot.json |
|
|
82
|
+
|
|
83
|
+
使用与 cached_trade 匹配的 accounts[]、legs[] 完整快照,例如现有 cached_tip_route_* 样本;更换自己的钱包、金额和本次方向。CPMM 的 named snapshot 应交给 cached_cpmm 示例。不要直接用历史快照实时交易。
|
|
84
|
+
|
|
85
|
+
parser 刷新读取 GRPC_URL / GRPC_TOKEN,保留没更新账户的原 slot,可能因 provider 没有发送 pool 更新而超时;trade 默认不联网。需要模拟时为 trade 示例增加 --simulate,并配置 RPC_URL。冷启动与显式模拟允许 RPC,交易报价和构建热路径禁止 RPC。
|
|
86
|
+
|
|
87
|
+
本文件描述已实现的接入接口;完整自动重连恢复、fork 一致性策略、新 array 发现和全部协议缓存仍须逐项验证。之前十轮报告中的 WebSocket 修复仅属于 trade-sdk 通用模块,不计入这些 gRPC 对齐能力。
|
|
88
|
+
|
|
89
|
+
<a id="simulation-routes"></a>
|
|
90
|
+
|
|
91
|
+
## Simulation routes
|
|
92
|
+
|
|
93
|
+
运行trade侧cached_trade示例时,--simulate返回包含innerInstructions的模拟结果。内部SPL转账可能是jsonParsed,原来的compiled route入口仍会拒绝它。专用入口需要**原始交易wire和对应完整simulateTransaction响应**,仅离线处理证据,不查询RPC或重新构建签名交易。
|
|
94
|
+
|
|
95
|
+
```sh
|
|
96
|
+
# Go
|
|
97
|
+
go run ./examples/simulation_routes solparser/testdata/cached_tip_routes_20261002.json route-buy
|
|
98
|
+
# Node
|
|
99
|
+
npx tsx examples/simulation_routes.ts examples/fixtures/cached_tip_routes_20261002.json route-buy
|
|
100
|
+
# Python
|
|
101
|
+
PYTHONPATH=. python examples/simulation_routes.py examples/fixtures/cached_tip_routes_20261002.json route-buy
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import { analyzeSimulationRoutes } from "sol-parser-sdk";
|
|
106
|
+
const route = analyzeSimulationRoutes(wire, simulationResponse);
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from sol_parser import analyze_simulation_routes
|
|
111
|
+
route = analyze_simulation_routes(wire, simulation_response)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
SPL普通/checked/明确fee转账,以及首次ATA的getAccountDataSize/createAccount/initializeImmutableOwner/initializeAccount3的parsed表示被还原为分析证据;raw/compiled CPI原样保留位置和stack height。其它parsed指令明确报错。金额使用最小单位amount字段,不用uiAmount浮点值。缺失Token-2022手续费的净到账保持未知;失败交易实际成交字段为空。tip不会被当成WSOL充值。含ALT的V0需要原有compiled route入口与显式loadedAddresses;此入口不查询lookup table。调用方必须提供与wire对应的可信模拟响应。
|
|
115
|
+
|
|
116
|
+
保存快照与模拟仅用于复现,不是实时状态。Go parser 已补齐 AnalyzeSimulationRoutes,接受 wire、完整模拟响应的 []byte 和可选 graduatedPools;安装和使用不依赖 Rust。
|
|
117
|
+
|
|
118
|
+
```go
|
|
119
|
+
route, err := solparser.AnalyzeSimulationRoutes(wire, simulationResponseJSON, nil)
|
|
120
|
+
if err != nil { return err }
|
|
121
|
+
// route.Legs 的 ActualOutputAmount == nil 表示净到账未知,不能当作零。
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
当前银行模拟复现:`examples/fixtures/simulation_routes_live_20261002.json`。包括因旧保护价格触发滑点错误的买入和成功卖出;失败时只保留意图,actual amount为空。Go可以用相同文件路径运行上述示例。保存wire用replaceRecentBlockhash重新模拟并不等于当前状态重新报价。
|
|
125
|
+
|
|
126
|
+
首次 ATA 模拟:`examples/fixtures/simulation_ata_20261002.json`,含 classic SPL、Token-2022 股票和带建账户的单池/三跳卖出。setup指令用于mint推断,不计入成交转账;getAccountDataSize仅支持空列表或immutableOwner扩展,其它扩展明确报错。compiled route入口现在也要求meta.err显式存在,缺失状态不再默认为成功。
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
2026-10-03: Prefunded ATA creation is also supported: System transfer, allocate and assign CPI are reconstructed and validated. getAccountDataSize accepts empty/immutableOwner extension lists only; unknown parsed instructions remain errors. Wire and compiled-route indexes, duplicate CPI groups and token-balance indexes are validated before event reconstruction. No RPC is used by the parser. Mainnet prefunded-ATA evidence is covered by the review10 fixture tests.
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
#### 第二批审查证据(2026-10-03)
|
|
133
|
+
|
|
134
|
+
`fixtures/batch2_cpmm_simulations_20261003.json` 含独立买入/卖出的真实主网模拟响应与原 wire,两个模拟均成功,三语言解析结果一致。买入实际输入 1000000、输出 13486034;卖出实际输入 1000000,但响应未明确 Token-2022 转账费,净到账保持未知。不要用快照报价填充实际成交字段。根目录第二批十轮审查证据同时保留触发滑点保护的延迟快照与历史三跳重放。
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
### CPMM LP 模拟中的铸造/销毁 CPI(2026-10-06)
|
|
138
|
+
|
|
139
|
+
三语言支持 parsed SPL/Token-2022 的 mintTo、burn、mintToChecked、burnChecked,校验精确 u64 金额、u8 decimals、多签账户与原始指令位置。它们保留为供分析的指令,不计入转账或 swap 成交;LP 顶层操作仍可能出现在 unknown_invocations,不意味着已新增 LP 事件 API。首次 ATA、资金准备 swap、LP 操作可在同笔模拟中解析。未知 Token-2022 净到账仍为 null。
|
|
140
|
+
|
|
141
|
+
真实主网模拟样例:examples/fixtures/cpmm_lp_simulations_20261006.json,包含 LP 存入与取出。在各语言仓库运行:
|
|
142
|
+
|
|
143
|
+
```sh
|
|
144
|
+
# Go
|
|
145
|
+
go run ./examples/simulation_routes examples/fixtures/cpmm_lp_simulations_20261006.json
|
|
146
|
+
# Node
|
|
147
|
+
npx tsx examples/simulation_routes.ts examples/fixtures/cpmm_lp_simulations_20261006.json
|
|
148
|
+
# Python
|
|
149
|
+
PYTHONPATH=. python examples/simulation_routes.py examples/fixtures/cpmm_lp_simulations_20261006.json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
该样例包含 sigVerify=false 的资金准备前缀,仅作执行验证,不可广播。新交易的完整原始响应可由 Rust CPMM_SIMULATION_DIR 保存后,用相同示例解析。
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
## Pump upgrade (October 2026)
|
|
156
|
+
|
|
157
|
+
Compact Pump v3 and PumpSwap v2 trades use their new 17-account layouts. New typed events cover `PumpFunPostCompleteBuy`, `PumpFunComplete`, `PumpFunSweepBondingCurveFee` and `PumpSwapSweepPoolFee`, with program-scoped log and CPI parsing. Historical SOL CompleteEvent payloads remain supported. Curve/pool retained fees and synthetic counters are exposed; optional historical tails default to zero.
|
|
158
|
+
|
|
159
|
+
For a synthetic completing buy, retain TradeEvent **and** PostCompleteBuyEvent and aggregate execution amounts within the same invocation. CompleteEvent is the completion notification. For `multi_hop_swap`, retain each venue's trade events; different venues are not merged into one fill. The multi-hop intent decoder exposes the fixed user accounts, input/minimum limits and 5 roles per hop; these limits are not actual executed amounts. Streamer forwards the typed events and account fields through its parser bridge (its re-exported `parser_sdk` also provides the intent decoder).
|
|
160
|
+
|
|
161
|
+
Reference: [pump-public-docs](https://github.com/pump-fun/pump-public-docs/tree/8cda1fa30ea658b20909d8aedf002047119388d2). Validation uses offline official IDL fixtures; no live trade is sent by the tests.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sol-parser-sdk-python"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.12"
|
|
4
4
|
description = "Solana DEX program log parsing (pure Python, API aligned with sol-parser-sdk)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -16,6 +16,7 @@ shredstream = [
|
|
|
16
16
|
"solders>=0.21.0",
|
|
17
17
|
]
|
|
18
18
|
dev = [
|
|
19
|
+
"cryptography>=44.0", # Independent Ed25519 verification in signed wire regressions.
|
|
19
20
|
"pytest>=8.0",
|
|
20
21
|
"pytest-asyncio>=0.21",
|
|
21
22
|
"requests>=2.31",
|
|
@@ -148,6 +148,9 @@ from .event_types import (
|
|
|
148
148
|
# Meteora DAMM v2 events
|
|
149
149
|
MeteoraDammV2SwapEvent,
|
|
150
150
|
MeteoraDammV2CreatePositionEvent,
|
|
151
|
+
MeteoraDammV2ClaimPositionFeeEvent,
|
|
152
|
+
MeteoraDammV2ClaimRewardEvent,
|
|
153
|
+
MeteoraDlmmClaimRewardEvent,
|
|
151
154
|
MeteoraDammV2ClosePositionEvent,
|
|
152
155
|
MeteoraDammV2AddLiquidityEvent,
|
|
153
156
|
MeteoraDammV2RemoveLiquidityEvent,
|
|
@@ -155,6 +158,11 @@ from .event_types import (
|
|
|
155
158
|
MeteoraDammV2DynamicFeeParameters,
|
|
156
159
|
MeteoraDammV2UpdateDelegatePermissionEvent,
|
|
157
160
|
MeteoraDammV2WithdrawDeadLiquidityRewardEvent,
|
|
161
|
+
MeteoraDammV2WithdrawIneligibleRewardEvent,
|
|
162
|
+
MeteoraDammV2UpdateRewardFunderEvent,
|
|
163
|
+
MeteoraDammV2UpdateRewardDurationEvent,
|
|
164
|
+
MeteoraDammV2InitializeRewardEvent,
|
|
165
|
+
MeteoraDammV2FundRewardEvent,
|
|
158
166
|
MeteoraDammV2CreateConfigEvent,
|
|
159
167
|
MeteoraDammV2CreateDynamicConfigEvent,
|
|
160
168
|
MeteoraDbcCurveCompleteEvent,
|
|
@@ -433,6 +441,9 @@ __all__ = [
|
|
|
433
441
|
"MeteoraPoolsPoolCreatedEvent",
|
|
434
442
|
"MeteoraDammV2SwapEvent",
|
|
435
443
|
"MeteoraDammV2CreatePositionEvent",
|
|
444
|
+
"MeteoraDammV2ClaimPositionFeeEvent",
|
|
445
|
+
"MeteoraDammV2ClaimRewardEvent",
|
|
446
|
+
"MeteoraDlmmClaimRewardEvent",
|
|
436
447
|
"MeteoraDammV2ClosePositionEvent",
|
|
437
448
|
"MeteoraDammV2AddLiquidityEvent",
|
|
438
449
|
"MeteoraDammV2RemoveLiquidityEvent",
|
|
@@ -440,6 +451,11 @@ __all__ = [
|
|
|
440
451
|
"MeteoraDammV2DynamicFeeParameters",
|
|
441
452
|
"MeteoraDammV2UpdateDelegatePermissionEvent",
|
|
442
453
|
"MeteoraDammV2WithdrawDeadLiquidityRewardEvent",
|
|
454
|
+
"MeteoraDammV2WithdrawIneligibleRewardEvent",
|
|
455
|
+
"MeteoraDammV2UpdateRewardFunderEvent",
|
|
456
|
+
"MeteoraDammV2UpdateRewardDurationEvent",
|
|
457
|
+
"MeteoraDammV2InitializeRewardEvent",
|
|
458
|
+
"MeteoraDammV2FundRewardEvent",
|
|
443
459
|
"MeteoraDammV2CreateConfigEvent",
|
|
444
460
|
"MeteoraDammV2CreateDynamicConfigEvent",
|
|
445
461
|
"MeteoraDbcCurveCompleteEvent",
|
|
@@ -490,3 +506,8 @@ __all__ += ["LaunchLabPoolCreateEvent", "StonkFunPoolCreateEvent", "LaunchLabTra
|
|
|
490
506
|
|
|
491
507
|
from .grpc_client import DexEventQueue, GrpcStreamStatus
|
|
492
508
|
__all__ += ["DexEventQueue", "GrpcStreamStatus"]
|
|
509
|
+
|
|
510
|
+
from .pump_upgrade import decode_pump_multi_hop_intent
|
|
511
|
+
|
|
512
|
+
from .pump_upgrade import PumpFunPostCompleteBuyEvent, PumpFunSweepBondingCurveFeeEvent, PumpFunCompleteEvent, PumpSwapSweepPoolFeeEvent
|
|
513
|
+
__all__ += ['decode_pump_multi_hop_intent','PumpFunPostCompleteBuyEvent','PumpFunSweepBondingCurveFeeEvent','PumpFunCompleteEvent','PumpSwapSweepPoolFeeEvent']
|