sol-parser-sdk-python 0.5.14__tar.gz → 0.5.15__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.
Files changed (279) hide show
  1. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/PKG-INFO +34 -15
  2. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/README.md +33 -14
  3. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/README_CN.md +33 -14
  4. sol_parser_sdk_python-0.5.15/docs/releases/v0.5.15.md +20 -0
  5. sol_parser_sdk_python-0.5.15/examples/fixtures/raw_instructions.json +111 -0
  6. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/parse_tx_by_signature.py +2 -2
  7. sol_parser_sdk_python-0.5.15/examples/pump_execution_replay.py +29 -0
  8. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pump_shred_routes.py +17 -0
  9. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/pyproject.toml +1 -1
  10. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/__init__.py +2 -0
  11. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/event_type_parity.py +1 -0
  12. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/event_types.py +5 -0
  13. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc_instruction_parser.py +4 -2
  14. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc_types.py +3 -2
  15. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/inner_instruction_parser.py +3 -3
  16. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/instructions.py +9 -0
  17. sol_parser_sdk_python-0.5.15/sol_parser/raw_instruction.py +15 -0
  18. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/rpc_parser.py +4 -3
  19. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/shredstream_client.py +12 -0
  20. sol_parser_sdk_python-0.5.15/tests/fixtures/pump_execution_20261019.json +5179 -0
  21. sol_parser_sdk_python-0.5.15/tests/test_pump_execution.py +46 -0
  22. sol_parser_sdk_python-0.5.15/tests/test_raw_instruction.py +47 -0
  23. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/.env.example +0 -0
  24. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/.gitignore +0 -0
  25. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/docs/USAGE.md +0 -0
  26. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/block_meta_stream.py +0 -0
  27. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/amm_v4_grpc_refresh_20261002.json +0 -0
  28. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/batch2_cpmm_simulations_20261003.json +0 -0
  29. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/block_meta_grpc_20261002.json +0 -0
  30. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
  31. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/cached_tip_routes_20261002.json +0 -0
  32. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/cpmm_lp_simulations_20261006.json +0 -0
  33. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
  34. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pump_curve_instruction.json +0 -0
  35. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pump_shred_routes.json +0 -0
  36. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
  37. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
  38. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
  39. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
  40. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
  41. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/simulation_ata_20261002.json +0 -0
  42. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/fixtures/simulation_routes_live_20261002.json +0 -0
  43. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/hot_path_benchmark.json +0 -0
  44. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/hot_path_benchmark.py +0 -0
  45. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/meteora_damm_grpc.py +0 -0
  46. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/multi_protocol_grpc.py +0 -0
  47. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/offline_bank/README.md +0 -0
  48. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/offline_bank/config.json +0 -0
  49. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/offline_bank/expected.json +0 -0
  50. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/offline_bank/programs.json +0 -0
  51. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/offline_bank/snapshot.json.gz +0 -0
  52. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pump_offline_bank.py +0 -0
  53. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pumpfun_quick_test.py +0 -0
  54. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pumpfun_trade_filter.py +0 -0
  55. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pumpfun_with_metrics.py +0 -0
  56. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pumpswap_low_latency.py +0 -0
  57. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/pumpswap_with_metrics.py +0 -0
  58. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/rust_example_utils.py +0 -0
  59. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/simulation_routes.py +0 -0
  60. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/stonkfun_routes.py +0 -0
  61. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/examples/stonkfun_snapshot_refresh.py +0 -0
  62. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/scripts/bench_parser.py +0 -0
  63. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/scripts/gen_golden_rust.sh +0 -0
  64. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_dispatcher.py +0 -0
  65. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/__init__.py +0 -0
  66. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/meteora.py +0 -0
  67. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/orca.py +0 -0
  68. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/pumpfun.py +0 -0
  69. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/pumpswap.py +0 -0
  70. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/raydium.py +0 -0
  71. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/account_fillers/raydium_launchlab.py +0 -0
  72. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/accounts/__init__.py +0 -0
  73. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/accounts/raydium_orca.py +0 -0
  74. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/accounts/rpc_wallet.py +0 -0
  75. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/accounts/utils.py +0 -0
  76. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/block_meta.py +0 -0
  77. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/check_migration.py +0 -0
  78. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/clock.py +0 -0
  79. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/common/__init__.py +0 -0
  80. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/dex_parsers.py +0 -0
  81. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/entries_decode.py +0 -0
  82. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/env_config.py +0 -0
  83. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/geyser_pb2.py +0 -0
  84. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/geyser_pb2_grpc.py +0 -0
  85. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc/__init__.py +0 -0
  86. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc/geyser_connect.py +0 -0
  87. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc/subscribe_builder.py +0 -0
  88. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc/transaction_meta.py +0 -0
  89. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/grpc_client.py +0 -0
  90. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/instr/__init__.py +0 -0
  91. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/instr_account_utils.py +0 -0
  92. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/json_util.py +0 -0
  93. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/liquidity_snapshot.py +0 -0
  94. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/log_instr_dedup.py +0 -0
  95. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/logs/__init__.py +0 -0
  96. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/market.py +0 -0
  97. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/merger.py +0 -0
  98. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/order_buffer.py +0 -0
  99. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/parser.py +0 -0
  100. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/pump_routes.py +0 -0
  101. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/pump_upgrade.py +0 -0
  102. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/pumpfun_fee_enrich.py +0 -0
  103. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/rust_api_inventory.py +0 -0
  104. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/rust_event_json.py +0 -0
  105. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/shredstream_pb2.py +0 -0
  106. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/shredstream_pb2_grpc.py +0 -0
  107. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/shredstream_pumpfun.py +0 -0
  108. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/simulation_route.py +0 -0
  109. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/solana_storage_pb2.py +0 -0
  110. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/solana_storage_pb2_grpc.py +0 -0
  111. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/stonkfun_registry.py +0 -0
  112. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/transaction_route.py +0 -0
  113. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/u128_parity.py +0 -0
  114. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/verify_discriminators.py +0 -0
  115. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/sol_parser/wire_transaction.py +0 -0
  116. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/account_lifecycle_20261008.json +0 -0
  117. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
  118. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/cached_tip_routes_20261002.json +0 -0
  119. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/clmm_fee_rewards_20261008.json +0 -0
  120. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/clmm_liquidity_20261008.json +0 -0
  121. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/clmm_one_sided_20261008.json +0 -0
  122. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/cpmm_liquidity_20261008.json +0 -0
  123. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/cpmm_lp_simulations_20261006.json +0 -0
  124. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_borrow_20261009.json +0 -0
  125. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_cpi_20261009.json +0 -0
  126. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_dual_claims_20261009.json +0 -0
  127. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_reward_admin_20261009.json +0 -0
  128. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_reward_renewal_20261009.json +0 -0
  129. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_reward_withdraw_20261009.json +0 -0
  130. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_upstream_hook_20261009.json +0 -0
  131. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v1_config2_instruction_20261008.json +0 -0
  132. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v1_live_simulations_20261008.json +0 -0
  133. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v2_authority_20261008.json +0 -0
  134. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v2_fees_20261008.json +0 -0
  135. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v2_liquidity_20261008.json +0 -0
  136. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
  137. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v2_rewards_20261008.json +0 -0
  138. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/damm_v2_vesting_20261008.json +0 -0
  139. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dbc_boundary_20261008.json +0 -0
  140. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dbc_live_simulations_20261008.json +0 -0
  141. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dbc_migration_20261008.json +0 -0
  142. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dbc_referral_live_20261008.json +0 -0
  143. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dbc_swap2.json +0 -0
  144. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dbc_v1_migration_20261008.json +0 -0
  145. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dlmm_fees_20261008.json +0 -0
  146. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dlmm_hook_rewards_20261009.json +0 -0
  147. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/dlmm_rewards_20261008.json +0 -0
  148. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/golden_parse_log.json +0 -0
  149. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/launchlab_migration_20261009.json +0 -0
  150. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/native_settlement_20261008.json +0 -0
  151. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_compact_simulations_20261008.json +0 -0
  152. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_depth2_20261014.json +0 -0
  153. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_holder_20261009.json +0 -0
  154. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_routes_20261009.json +0 -0
  155. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_synthetic_20261009.json +0 -0
  156. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_upgrade/account_context.json +0 -0
  157. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_upgrade/boost_account_context.json +0 -0
  158. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_upgrade/events.json +0 -0
  159. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_upgrade/mainnet.json +0 -0
  160. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_upgrade/pump_trade_account_context.json +0 -0
  161. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pump_upgrade/simulation_events.json +0 -0
  162. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_concentrated_multihop_mainnet_simulations_20261005.json +0 -0
  163. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/2MfmZSU8mWEbskNHAxQGphAyB5x72SC2HYuAkLeSyH6MjttUHqUjm24wPMeH7zrCoQoYFwbLeiFE571mc8WvgZyL.json +0 -0
  164. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/2dabmQiykzC1tsNmgtRFbsRJjEKMfUySgScJc2J2uq8CQtoXWZ3YyT99p3nVuCXifEhLkyUe4Sf4nfe2UkFT8AJr.json +0 -0
  165. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/2eVpZNvQYPMBVNT5357Qt7HVAUSv9gdwqxKStvdwQ498rcJLLCHVcYPaGfFqVBz44ndYvkA1H4CwjBuDSviAj7jp.json +0 -0
  166. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3GufGVVRrnrH1Yuto57jDeTKXeki6ooE9w6h4qYRvNm5FcCpxwDHNvzHXdpAMbxRmukWJpSPHUKHEjnFTCC979ka.json +0 -0
  167. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3LQK2JHVbVSSfyCYwTwzoYTY9NEN4gZXzqw3TvAvMJHsvPsopCHtsa5ALhj4tFn8xWbmJ5DsYMMcnPukTBkSjtQf.json +0 -0
  168. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3MRWKDUcD5CGn5Xz4qWyGA8Y9udw4SsSr4gcxCjTUqCFt6Zc6uiwHF1wLZXKoqBcGEM2kruBS85ymYxmYk8FLGBk.json +0 -0
  169. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3NBSCgAXpNqg7JBUzp6RsfZYzf2QbbHi6r2wcoBF4Lpuzozae7ExUJUGoqpVCXXs8cbibr6aWySH1bsg86Enuhez.json +0 -0
  170. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3QVpcUq64D4DUV9empFr3G98pCEa1Cp2fAcFJKyiJGsQ2ir2S4yBLhHYXPNmLfCE8KVDgLApfBYTFM7pf9JVPbsb.json +0 -0
  171. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3REXMDkvZsWvgc8czYpfn24avz18APMuzbV2VgQBeymArdJvfQcfcpKr46f3j1H2bAiymFneaNocPH7KzPUPbR1S.json +0 -0
  172. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3ejAydePsZTUfeZaU9eiAM37gV5AYPG9hhyMtUobJLQtSMgroDeiE8njXu2JiwMyX5YJLp3vrfNPy89S7EDdUCAy.json +0 -0
  173. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/3zC4bw1osyebZ77KagXYP3b5rEBHvJCgcwCriCLc5gAUp9Ev6Bx5ZMbqnYpkKE2VgZgMFcZN5FYKQfcKL45MWpyu.json +0 -0
  174. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/5PgkFgTLSEZPZhxgWNToPzTZct95SycuaH9H3g82YwcKXudtiynEZmiaoQrhGv2gdZLrvsVZ5Wn88KGirbFYpLrt.json +0 -0
  175. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_create/661yA5s6uxUsggTcT4cZ6yyMfNmF4mCZzxLnCb1zBrSY3YhAiouYXBitiPvkngBEKxaeGcpXiek6qXDajiRr9wuY.json +0 -0
  176. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
  177. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
  178. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
  179. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
  180. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpswap_liquidity_20261008.json +0 -0
  181. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
  182. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/review10_compiled_bounds.json +0 -0
  183. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/review10_prefunded_ata.json +0 -0
  184. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/review10_wire_bounds.json +0 -0
  185. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_alt_load_rejections_20261009.json +0 -0
  186. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_clmm_boundaries_20261009.json +0 -0
  187. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_cpmm_bank_20261009.json +0 -0
  188. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_dex_replay_20261009.json +0 -0
  189. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_identical_alt_bank_20261009.json +0 -0
  190. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_multileg_bank_20261009.json +0 -0
  191. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_nested_cpi_bank_20261009.json +0 -0
  192. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_replay_20261009.json +0 -0
  193. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/signed_wire_boundaries_20261009.json +0 -0
  194. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/simulation_alt_20261008.json +0 -0
  195. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/simulation_ata_20261002.json +0 -0
  196. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/simulation_routes_live_20261002.json +0 -0
  197. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/stonkfun_routes_0_7_7.json +0 -0
  198. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/whirlpool_fees_20261008.json +0 -0
  199. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/whirlpool_hook_20261008.json +0 -0
  200. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/whirlpool_liquidity_20261008.json +0 -0
  201. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/fixtures/whirlpool_one_sided_20261008.json +0 -0
  202. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_amm_v4_v2.py +0 -0
  203. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_block_meta.py +0 -0
  204. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_clmm_fee_rewards_bank.py +0 -0
  205. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_clmm_liquidity_bank.py +0 -0
  206. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_clmm_one_sided_bank.py +0 -0
  207. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_cpmm_liquidity_bank.py +0 -0
  208. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_borrow_bank.py +0 -0
  209. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_cpi_bank.py +0 -0
  210. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_dual_claims_bank.py +0 -0
  211. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_reward_admin_bank.py +0 -0
  212. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_reward_renewal_bank.py +0 -0
  213. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_reward_withdraw_bank.py +0 -0
  214. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_upstream_hook_bank.py +0 -0
  215. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_v1_live_simulations.py +0 -0
  216. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_v2_authority_bank.py +0 -0
  217. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_v2_fees_bank.py +0 -0
  218. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_v2_liquidity_bank.py +0 -0
  219. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_v2_rewards_bank.py +0 -0
  220. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_damm_v2_vesting_bank.py +0 -0
  221. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dbc_boundary_bank.py +0 -0
  222. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dbc_migration_bank.py +0 -0
  223. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dbc_upgrade.py +0 -0
  224. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dbc_v1_migration_bank.py +0 -0
  225. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dex_retry_delay.py +0 -0
  226. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dlmm_fees_bank.py +0 -0
  227. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dlmm_hook_bank.py +0 -0
  228. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_dlmm_rewards_bank.py +0 -0
  229. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_exact_metadata_json.py +0 -0
  230. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_filter_and_account_parity.py +0 -0
  231. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_golden.py +0 -0
  232. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_grpc_unary_methods.py +0 -0
  233. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_hot_path_wire_decoder.py +0 -0
  234. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_imports_and_inner.py +0 -0
  235. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_launchlab_invocation_anchor.py +0 -0
  236. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_launchlab_migration_bank.py +0 -0
  237. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_log_instr_dedup.py +0 -0
  238. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_market_helpers.py +0 -0
  239. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_native_grpc_server.py +0 -0
  240. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_native_plan_lifecycle.py +0 -0
  241. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_orca_whirlpool_instruction_parity.py +0 -0
  242. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_order_buffer.py +0 -0
  243. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_ordered_late_regression.py +0 -0
  244. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_prefix_prefilter.py +0 -0
  245. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_protocol_current_fields.py +0 -0
  246. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_compact_simulation_routes.py +0 -0
  247. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_depth2.py +0 -0
  248. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_fees_instruction_parity.py +0 -0
  249. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_holder_bank.py +0 -0
  250. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_offline_bank.py +0 -0
  251. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_routes_bank.py +0 -0
  252. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_shred_routes.py +0 -0
  253. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_synthetic_bank.py +0 -0
  254. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_trade_account_context.py +0 -0
  255. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_trade_merge_identity.py +0 -0
  256. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_upgrade_events.py +0 -0
  257. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pump_upgrade_mainnet.py +0 -0
  258. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpfun_account_fill.py +0 -0
  259. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpfun_create_regression.py +0 -0
  260. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpfun_trade_tail.py +0 -0
  261. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpfun_v2_parity.py +0 -0
  262. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpswap_account_context.py +0 -0
  263. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpswap_instruction.py +0 -0
  264. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpswap_liquidity_bank.py +0 -0
  265. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_pumpswap_upgrade.py +0 -0
  266. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_raydium_clmm_instruction_parity.py +0 -0
  267. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_raydium_current_logs.py +0 -0
  268. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_review10.py +0 -0
  269. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_review_batch2.py +0 -0
  270. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_shred_wire_sanitize.py +0 -0
  271. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_shredstream.py +0 -0
  272. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_signed_transaction_replay.py +0 -0
  273. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_simulation_route.py +0 -0
  274. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_snapshot_refresh_example.py +0 -0
  275. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_stonkfun_routes.py +0 -0
  276. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_whirlpool_fees_bank.py +0 -0
  277. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_whirlpool_hook_bank.py +0 -0
  278. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/tests/test_whirlpool_liquidity_bank.py +0 -0
  279. {sol_parser_sdk_python-0.5.14 → sol_parser_sdk_python-0.5.15}/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.14
3
+ Version: 0.5.15
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
@@ -21,6 +21,25 @@ Requires-Dist: solders==0.26.0; extra == 'simulation'
21
21
  Description-Content-Type: text/markdown
22
22
 
23
23
  <div align="center">
24
+
25
+ ## v0.5.15 — Pump execution replay
26
+
27
+ 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).
28
+
29
+ Run `.venv/bin/python examples/pump_execution_replay.py` from this repository to replay real transactions fetched on 2026-10-19 offline. The example prints full/no-log/truncated-log results. Append a recent signature for online replay. Set `SOLANA_RPC_URL` for your RPC; transaction v1 is supported.
30
+
31
+ 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.
32
+
33
+ ## v0.5.15 — raw Shred instructions
34
+
35
+ 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`.
36
+
37
+ The payload contains `program_id`, `instruction_index`, `accounts`, `account_indices`, `instruction_data`, and transaction metadata. Account order and duplicates are preserved. Unresolved ALT addresses are null/None, with original indices retained; supply cached loaded addresses or a resolver. No hot-path RPC is performed. Data is copied verbatim without requiring a known layout.
38
+
39
+ No filter returns unknown third-party instructions. Explicitly including `RawInstruction` returns every outer instruction, including infrastructure. A `PumpFunTrade`-only filter does not include raw events: subscribe to both types when needed. Streamer forwards `DexEvent::RawInstructionEvent` as Common. A Pump address in accounts does not prove a CPI or a particular buy method. Event count is not fill count.
40
+
41
+ Wrapper adapter functions remain explicit compatibility helpers only; default Shred parsing does not call them. The released-version history below describes previous behavior.
42
+
24
43
  <h1>⚡ Sol Parser SDK - Python</h1>
25
44
  <h3><em>High-performance Solana DEX event parser for Python</em></h3>
26
45
  </div>
@@ -60,11 +79,11 @@ Parser SDK language versions and related Rust SDKs:
60
79
 
61
80
  | Language | Repository | Description | Version |
62
81
  |----------|------------|-------------|---------|
63
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.15` |
64
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.21` |
65
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.14` |
66
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.14` |
67
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.6` |
82
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.16` |
83
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.22` |
84
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.15` |
85
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.15` |
86
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.7` |
68
87
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
69
88
 
70
89
  ---
@@ -156,7 +175,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
156
175
  **From PyPI**
157
176
 
158
177
  ```bash
159
- pip install sol-parser-sdk-python==0.5.14
178
+ pip install sol-parser-sdk-python==0.5.15
160
179
  ```
161
180
 
162
181
  **From source**
@@ -272,18 +291,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
272
291
  | Description | Run command | Source |
273
292
  |-------------|-------------|--------|
274
293
  | **PumpFun** | | |
275
- | 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.14` |
276
- | 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.14` |
277
- | 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.14` |
294
+ | 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.15` |
295
+ | 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.15` |
296
+ | 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.15` |
278
297
  | **PumpSwap** | | |
279
- | 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.14` |
280
- | 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.14` |
298
+ | 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.15` |
299
+ | 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.15` |
281
300
  | **Meteora DAMM** | | |
282
- | 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.14` |
301
+ | 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.15` |
283
302
  | **Multi-protocol** | | |
284
- | 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.14` |
303
+ | 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.15` |
285
304
  | **Utility** | | |
286
- | 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.14` |
305
+ | 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.15` |
287
306
 
288
307
  **Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
289
308
 
@@ -1,4 +1,23 @@
1
1
  <div align="center">
2
+
3
+ ## v0.5.15 — Pump execution replay
4
+
5
+ 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).
6
+
7
+ Run `.venv/bin/python examples/pump_execution_replay.py` from this repository to replay real transactions fetched on 2026-10-19 offline. The example prints full/no-log/truncated-log results. Append a recent signature for online replay. Set `SOLANA_RPC_URL` for your RPC; transaction v1 is supported.
8
+
9
+ 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.
10
+
11
+ ## v0.5.15 — raw Shred instructions
12
+
13
+ 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`.
14
+
15
+ The payload contains `program_id`, `instruction_index`, `accounts`, `account_indices`, `instruction_data`, and transaction metadata. Account order and duplicates are preserved. Unresolved ALT addresses are null/None, with original indices retained; supply cached loaded addresses or a resolver. No hot-path RPC is performed. Data is copied verbatim without requiring a known layout.
16
+
17
+ No filter returns unknown third-party instructions. Explicitly including `RawInstruction` returns every outer instruction, including infrastructure. A `PumpFunTrade`-only filter does not include raw events: subscribe to both types when needed. Streamer forwards `DexEvent::RawInstructionEvent` as Common. A Pump address in accounts does not prove a CPI or a particular buy method. Event count is not fill count.
18
+
19
+ Wrapper adapter functions remain explicit compatibility helpers only; default Shred parsing does not call them. The released-version history below describes previous behavior.
20
+
2
21
  <h1>⚡ Sol Parser SDK - Python</h1>
3
22
  <h3><em>High-performance Solana DEX event parser for Python</em></h3>
4
23
  </div>
@@ -38,11 +57,11 @@ Parser SDK language versions and related Rust SDKs:
38
57
 
39
58
  | Language | Repository | Description | Version |
40
59
  |----------|------------|-------------|---------|
41
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.15` |
42
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.21` |
43
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.14` |
44
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.14` |
45
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.6` |
60
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.16` |
61
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.22` |
62
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.15` |
63
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.15` |
64
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.7` |
46
65
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
47
66
 
48
67
  ---
@@ -134,7 +153,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
134
153
  **From PyPI**
135
154
 
136
155
  ```bash
137
- pip install sol-parser-sdk-python==0.5.14
156
+ pip install sol-parser-sdk-python==0.5.15
138
157
  ```
139
158
 
140
159
  **From source**
@@ -250,18 +269,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
250
269
  | Description | Run command | Source |
251
270
  |-------------|-------------|--------|
252
271
  | **PumpFun** | | |
253
- | 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.14` |
254
- | 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.14` |
255
- | 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.14` |
272
+ | 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.15` |
273
+ | 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.15` |
274
+ | 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.15` |
256
275
  | **PumpSwap** | | |
257
- | 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.14` |
258
- | 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.14` |
276
+ | 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.15` |
277
+ | 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.15` |
259
278
  | **Meteora DAMM** | | |
260
- | 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.14` |
279
+ | 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.15` |
261
280
  | **Multi-protocol** | | |
262
- | 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.14` |
281
+ | 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.15` |
263
282
  | **Utility** | | |
264
- | 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.14` |
283
+ | 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.15` |
265
284
 
266
285
  **Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
267
286
 
@@ -1,4 +1,23 @@
1
1
  <div align="center">
2
+
3
+ ## v0.5.15 — Pump 执行事件与最新回放示例
4
+
5
+ 修复官方 Anchor CPI TradeEvent 前缀识别,保留历史编码兼容。RPC/gRPC 的实际 `sol_amount`、`quote_amount`、`token_amount` 只从执行事件合并;预算和最小输出保留在指令参数字段。如果日志及事件 CPI 均缺失,实际金额字段为 0(表示无执行数据,不代表已确认零成交)。非 SOL 报价金额不能当作 SOL。
6
+
7
+ 在本仓库运行 `.venv/bin/python examples/pump_execution_replay.py`,离线回放 2026-10-19 重新抓取的真实交易。示例输出完整日志、无日志、截断日志三种结果;命令末尾追加最新签名可在线验证。通过 `SOLANA_RPC_URL` 选择 RPC,支持 transaction v1。
8
+
9
+ 新 Delta 卖出样本:`4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2`,slot 458542546。日期样本文件还包含 Rapid 创建后买入、BuyV3 和 PumpSwap 买入的完整签名及 slot。旧的五种双跳组合仅作为回归样本,未冒充本次新抓取交易。
10
+
11
+ ## v0.5.15 — Shred 原始指令透传
12
+
13
+ 默认 Shred 入口将未适配的第三方程序(包括 Rapid/Delta)作为 `RawInstruction` 返回,不再推断买卖方向、金额或内部 buy 版本。System、Token、ATA、ComputeBudget 等基础程序默认不透传;已支持的官方 DEX 指令继续正常解析,官方 Pump/PumpSwap 多跳仍返回 `PumpRouteIntent`。
14
+
15
+ 事件包含 `program_id`、`instruction_index`、`accounts`、`account_indices`、`instruction_data` 和交易 metadata。账户保留原顺序与重复项;未解析 ALT 地址为 null/None,原始索引仍保留。使用缓存 loaded-addresses/resolver 补齐,热路径不请求 RPC。data 是完整原始字节,不要求已知布局。
16
+
17
+ 无过滤器时返回未知第三方指令;显式订阅 `RawInstruction` 时返回所有外层指令(含基础程序)。仅订阅 `PumpFunTrade` 不包含原始事件,需要同时订阅 `RawInstruction`。Streamer 对应 `DexEvent::RawInstructionEvent`,协议为 Common。账户包含 Pump 不证明发生 CPI,更不证明具体 buy 方法;事件数量也不是成交数量。
18
+
19
+ 已有 wrapper 适配函数仅作为显式调用的兼容接口保留,不参与默认 Shred 解码。以下已发布版本的历史说明描述旧行为。
20
+
2
21
  <h1>⚡ Sol Parser SDK - Python</h1>
3
22
  <h3><em>高性能 Solana DEX 事件解析(Python / asyncio)</em></h3>
4
23
  </div>
@@ -38,11 +57,11 @@
38
57
 
39
58
  | 语言 | 仓库 | 描述 | 版本 |
40
59
  |------|------|------|
41
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.15` |
42
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.21` |
43
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.14` |
44
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.14` |
45
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.6` |
60
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.16` |
61
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.22` |
62
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.15` |
63
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.15` |
64
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.7` |
46
65
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX 交易构建与交易执行 | `v6.0.2` |
47
66
 
48
67
  ---
@@ -134,7 +153,7 @@ Validation includes local CPU benchmarks and offline signed-bank scenarios. Meas
134
153
  **PyPI**
135
154
 
136
155
  ```bash
137
- pip install sol-parser-sdk-python==0.5.14
156
+ pip install sol-parser-sdk-python==0.5.15
138
157
  ```
139
158
 
140
159
  **源码**
@@ -250,18 +269,18 @@ Python ShredStream 热路径默认严格解析静态账户;V0 ALT 指令需传
250
269
  | 描述 | 运行命令 | 源码 |
251
270
  |------|----------|------|
252
271
  | **PumpFun** | | |
253
- | 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.14` |
254
- | 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.14` |
255
- | 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.14` |
272
+ | 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.15` |
273
+ | 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.15` |
274
+ | 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.15` |
256
275
  | **PumpSwap** | | |
257
- | 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.14` |
258
- | 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.14` |
276
+ | 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.15` |
277
+ | 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.15` |
259
278
  | **Meteora DAMM** | | |
260
- | 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.14` |
279
+ | 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.15` |
261
280
  | **多协议** | | |
262
- | 订阅 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.14` |
281
+ | 订阅 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.15` |
263
282
  | **工具** | | |
264
- | 按签名解析交易(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.14` |
283
+ | 按签名解析交易(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.15` |
265
284
 
266
285
  **环境变量:** gRPC 示例需要 **`GRPC_URL`** 或 **`GRPC_ENDPOINT`**,以及 **`GRPC_AUTH_TOKEN`** 或 **`GRPC_TOKEN`**(或旧名 `GEYSER_*`)。详见 **`.env.example`**。
267
286
 
@@ -0,0 +1,20 @@
1
+ # v0.5.15 — Raw Shred instructions and Pump execution fixes
2
+
3
+ Released 2026-10-19.
4
+
5
+ Unknown third-party Shred instructions emit RawInstruction rather than inferred Pump trades. Payloads preserve the program ID, instruction index, ordered accounts including duplicates/unresolved ALT entries, account indices, original data, and metadata. Default parsing omits infrastructure programs; explicit RawInstruction subscriptions return all outer instructions.
6
+
7
+ Pump CPI TradeEvent decoding accepts both current Anchor and historical encodings. RPC/Yellowstone parsing separates budgets/minimum outputs from actual execution amounts. Event CPIs recover execution data when logs are missing or truncated; without execution evidence, Pump execution amount fields remain zero (unavailable, not a confirmed zero fill).
8
+
9
+ Examples include real transactions captured on 2026-10-19. Historical multi-hop fixtures remain regression cases, not new mainnet captures.
10
+
11
+ ## Compatibility
12
+
13
+ - Default third-party Shred callbacks change to RawInstruction; explicit wrapper adapters remain available.
14
+ - Trade-only filters do not include raw instructions.
15
+ - ShredStream gRPC carries pre-execution data, not Yellowstone execution metadata.
16
+ - Existing event/method names are retained; third-party internal buy/sell methods are not guessed.
17
+
18
+ ## Validation
19
+
20
+ Raw payload/order and current signed transaction regressions passed. Execution regressions cover full/missing/truncated logs, five two-hop combinations, per-leg identities and amounts, and failed transaction suppression.
@@ -0,0 +1,111 @@
1
+ [
2
+ {
3
+ "signature": "3nMXPjA7xRFmCeq3jypeWaXe9bmP5Fkwkvy6u74bBZHe316qMXNaE5aDQwDB1HRVLSkmk3BjgRCKBNcPEMeXrGWj",
4
+ "wire": "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",
5
+ "slot": 458521381,
6
+ "loaded_writable": [],
7
+ "loaded_readonly": []
8
+ },
9
+ {
10
+ "signature": "2r4uXUJtSsphTBuJHJm2T5kKe9c215MCVL4bZ1mUZEZ6cT5698s3xFUfHb4TfU4ZfJ6cuFppQfYZUpMP5QL9pZ1Q",
11
+ "wire": "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",
12
+ "slot": 458122633,
13
+ "loaded_writable": [],
14
+ "loaded_readonly": []
15
+ },
16
+ {
17
+ "signature": "4UwVUyHp9PK17ZpT82onx2x8bH5xZNhaHi7qcSsbrMme4b7pLbgL72mDXcp6ZHs4MqdsS3UJPY8oq2sxo88QPKoF",
18
+ "wire": "Aa4lHCFqsUD/rw2lblPFMwa42hP8IkdumZ8PWha/ygMXxFGcvwMUPll+DY42f/lVJYHyQq1SUOCT9W1xwlS9uAKAAQAKFSrgL9or0NMqBS4vxX0Syj1pUFj7GgB4qMR4k8q8TbhAC3p6445EUi2dvNXHL6LZZAcauDmHJqGAjgjnfsEuWiMUXq9Hqt2VErFvwoM8mrWYpqmGZG6eWe0nnh3WIBeOm0p0D+BtV3zFKtXAlmBI0tEYyAn/XpLuWnj8CcijEgYVYEc3micLA6oRnAnRW/bps7Sz91Wx/RiUcejia3GLzgCNZto/avUr1pvCv1vUnuo5T1X+HbXQTd7nNAwrkBpDOboGpQrZxCzeHy9Tj/lQSgfjTQLEIHk03qtRmbH4U0b3v5qSIR+5VQF2icUnkwY8GKuMsPx11a5UlanW1BfM2Yzj1TSQjmh5lZ36hXoPFLSGJLpsa9vk43vzQ1oGsoxqpvgLkbZ0VFHWIXXoGvxfVd+FPNNW7o3U6/dXygK3rG1S/S43jnXBAtSJYfkqYkBeZ8AnwCc4Hh1I7sZyrzAxhxcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkMFN78gl7GdpQlCBi7ZUBl9CmNMVbVcbTU+AkMGOmoY0Ekbsx9eP6B5BdzpGllQZk3kjoHZEeX328+tRRCYBDLWGVlR91uZ6OSYUe0TNPanNPkjYOxp0k8yhltzKMJMl+JC6ZE/h9VqhnxHNLS7BTTIztuCkvq7vcraYWOIeFw1oyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZz44mPS1yVURBpmkdTTbZV4KQ88dlstnuaLIdxnzHJM/lSnCVKIOfYcC5uGB5iRwTkhbkenG2L7c77HIWlFh0XlqIDNoZgrIne5dIWVZ6dYaCnaCyfL8wSidh9e7tX8ZoCgwABQIgoQcADAAJA0ANAwAAAAAAEgcABQATCxoZAQESBwAJABgLDRkBAQsCAAkMAgAAAAAvaFkAAAAADQEJAREOGgAJBREPChYNGgsUDhcbHB0QGAgDBhMQBAcCGCtkSRPp9m+UAC9oWQAAAAABAAAAAAAAAA0DCQAAAQkLAgAVDAIAAACcEdgBAAAAAAsCAAEMAgAAAKAlJgAAAAAAAQoH91x2BwgszoIZyZt8wiqhKEPv07mcVbllAcKrbibGAi0iBwBAEQsBEwI=",
19
+ "slot": 458109119,
20
+ "loaded_writable": [
21
+ "nozz1yoi1nyjy9Yr4HphDWe9NoJzx1acG25RBYpKhhx",
22
+ "CA7v8gHfbquYXyDnDx6QxWW8hmL1H7X6Y2RYDrGLnuck"
23
+ ],
24
+ "loaded_readonly": [
25
+ "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
26
+ "So11111111111111111111111111111111111111112",
27
+ "SysvarRent111111111111111111111111111111111",
28
+ "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
29
+ "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf",
30
+ "8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt",
31
+ "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
32
+ ]
33
+ },
34
+ {
35
+ "signature": "5Nx37a9gnsxjMCAtFKgCcEFG6GfT1WE9FmTaXnWtxMk8cphWAdzruhsusTurgQbYFmLCPQUGMPGt4WsZ9RcRz2WB",
36
+ "wire": "Adr+8v2+c+EUA8icFkfQb3SjiMRiaPnAzpy/h0AZ0NQg0Uh32SG8Y8oMe8PukFtBq0Ez9VB5WWH71bBNWfmbTwiAAQAKFbO9vrbmxAW87GB8CIOSxix6yHmZUh0XoSxSsOZLfB5nABZhzx0lHHYYHnWvqDJcGuZ8ob3+LWeA80+Et0f/jqALenrjjkRSLZ281ccvotlkBxq4OYcmoYCOCOd+wS5aIxRer0eq3ZUSsW/CgzyatZimqYZkbp5Z7SeeHdYgF46bSnQP4G1XfMUq1cCWYEjS0RjICf9eku5aePwJyKMSBhVgRzeaJwsDqhGcCdFb9umztLP3VbH9GJRx6OJrcYvOAJwkrLHgw7xiyZf9A+htzDybNf06i2Puq89BG8//iRaGugalCtnELN4fL1OP+VBKB+NNAsQgeTTeq1GZsfhTRve/mpIhH7lVAXaJxSeTBjwYq4yw/HXVrlSVqdbUF8zZjOPVNJCOaHmVnfqFeg8UtIYkumxr2+Tje/NDWgayjGqm6anRNfuF+p1aHLNYObmfcXs4ZeWGawjPw5eaYbKvrWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkMFN78gl7GdpQlCBi7ZUBl9CmNMVbVcbTU+AkMGOmoY0Ekbsx9eP6B5BdzpGllQZk3kjoHZEeX328+tRRCYBDLWGVlR91uZ6OSYUe0TNPanNPkjYOxp0k8yhltzKMJMl+JC6ZE/h9VqhnxHNLS7BTTIztuCkvq7vcraYWOIeFw1oyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZz44mPS1yVURBpmkdTTbZV4KQ88dlstnuaLIdxnzHJM/lSnCVKIOfYcC5uGB5iRwTkhbkenG2L7c77HIWlFh0XlqIDNoZgrIne5dIWVZ6dYaCnaCyfL8wSidh9e7tX8ZoCgwABQIgoQcADAAJA0ANAwAAAAAAEgcAAQATCxoZAQESBwAKABgLDRkBAQsCAAoMAgAAAAAvaFkAAAAADQEKAREOGgAKAREPBhYNGgsUDhcbHB0QGAkEBxMQBQgDGCtkSRPp9m+UAC9oWQAAAAABAAAAAAAAAA0DCgAAAQkLAgAVDAIAAAA0W50AAAAAAAsCAAIMAgAAAKAlJgAAAAAAAQoH91x2BwgszoIZyZt8wiqhKEPv07mcVbllAcKrbibGAi0jBwBAEQsBEwI=",
37
+ "slot": 458109119,
38
+ "loaded_writable": [
39
+ "nozz1yoi1nyjy9Yr4HphDWe9NoJzx1acG25RBYpKhhx",
40
+ "CASRL2zkwDnppxEFQ4LgdwgR9pdz5Q8R8nEMKVZ9QoLp"
41
+ ],
42
+ "loaded_readonly": [
43
+ "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
44
+ "So11111111111111111111111111111111111111112",
45
+ "SysvarRent111111111111111111111111111111111",
46
+ "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
47
+ "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf",
48
+ "8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt",
49
+ "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
50
+ ]
51
+ },
52
+ {
53
+ "signature": "5t1WNzX14pEBRYH4uS5bY3sFGs8woJUqxbPzEU7mk9o7a1AtTXREaKhyUTuHsgrFPgGdxWJraUL1gMZXqSeZm8Wy",
54
+ "wire": "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",
55
+ "slot": 458123028,
56
+ "loaded_writable": [],
57
+ "loaded_readonly": []
58
+ },
59
+ {
60
+ "signature": "6sDY3A6nmA6GVp2hbN5RvgcZqTtp2NiT4nMZL4GYTyuHBRQGi6o5bL7UDrgrVu3hjZUrhshB5ybE3WFhrrFjZnE",
61
+ "wire": "AQUO9d4RQYgYSI2KrOJh5hrMuvTp4V+V+Lj5CyPFFizEvjwSJDzQTaeKRjpSQ7LaXUpX4/trpst445INXyZJeg+AAQAKFYogw7w4ZixDEgda3/LpKWOtjA2OJvELRGEfPmRH46nWC3p62Dful96pNejFYRR3SlBir+1PZn8hUJ2YFDxs4CVKdA/gbVd8xSrVwJZgSNLRGMgJ/16S7lp4/AnIoxIGFWbz66eDPwKJnH0/MEhNk4H6knUO9NMnEu4K37Wnra8XiEVplnyOHZ5PIRxYhsLKmbp/1gNHu96bOFFuWejN2Iu6BqUK2cQs3h8vU4/5UEoH400CxCB5NN6rUZmx+FNG989uIl/D6qpT6r2nSmcn7CwgWN8g7WxsWMvhnUp1nkGA054L8khBPq+kuyY+oz3XWVXtzOF3CdBW5bF38fmKhAHj1TSQjmh5lZ36hXoPFLSGJLpsa9vk43vzQ1oGsoxqpu0J3vsmnzOJO5Hx48A+8PT/nLpvTVJWy7UJK0i3eyTd+X28wjfnjRIqT3s9BfP2qNclycnmwUyRQLd4S6lhAF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkMFN78gl7GdpQlCBi7ZUBl9CmNMVbVcbTU+AkMGOmoY0Ekbsx9eP6B5BdzpGllQZk3kjoHZEeX328+tRRCYBDLTxT7Fyo0GkLLcw8rJt4M0TZawEBYD3zlUbUuroF4uP9YZWVH3W5no5JhR7RM09qc0+SNg7GnSTzKGW3MowkyX4kLpkT+H1WqGfEc0tLsFNMjO24KS+ru9ytphY4h4XDWjJclj04kifG7PRApFI4NgwtaE5na/xCEBI572Nvp+FnlSnCVKIOfYcC5uGB5iRwTkhbkenG2L7c77HIWlFh0XmbbYqIPN6D0cxMS0xfucOVfgzEeW5Lj3z9sl7aP66C7CgwABQIgoQcADAAJA0ANAwAAAAAAEwcABAAQCxoZAQETBwADABgLDRkBAQsCAAMMAgAAAABWIYMAAAAADQEDAREOGgADBBIPCRYNGgsUDhcbHB0RGAgCBRARBgcKGCtkSRPp9m+UAFYhgwAAAAABAAAAAAAAAA0DAwAAAQkLAgAVDAIAAAAYOsABAAAAAAsCAAEMAgAAAKAlJgAAAAAAAQoH91x2BwgszoIZyZt8wiqhKEPv07mcVbllAcKrbibGAjAkBwBAEQsBEwI=",
62
+ "slot": 458109122,
63
+ "loaded_writable": [
64
+ "nozHiMDNDHfuvj31jZN917a3mk2KSR9M8L3K13447eG",
65
+ "qkYdTGRPHbWTWuBMz45bCiU6a23axRqf6sBHm9295WY"
66
+ ],
67
+ "loaded_readonly": [
68
+ "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
69
+ "So11111111111111111111111111111111111111112",
70
+ "SysvarRent111111111111111111111111111111111",
71
+ "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
72
+ "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf",
73
+ "8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt",
74
+ "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
75
+ ]
76
+ },
77
+ {
78
+ "signature": "Zu41tiWfvbzaV8jyBQMfGALEYUvN1cUnudRidZ1Sn8Dr4d9jkjukdwEvYpgBJRgf7gm2R2p2YucnzLA5VfN4TXC",
79
+ "wire": "ARxemD0pSDZ4wZISxRHT7Xa4q/B2A5CECqTpJrsS3wRO+AP0q9ETkSVczKV4uweN9WNtcAX1t+vdVO+671RofweAAQAKFcTJSg3HUFHebqb6raVoF5eHy6sCEDGaULQnOPnQaBa+C3p62Dful96pNejFYRR3SlBir+1PZn8hUJ2YFDxs4CUzhmuaTh/KonEPUBIleMcbFvpa8BWXxdyY/oHE2Eo5pj3EHY0ePgND2FZBMbyU9wWnhL/JTUJ1sg07ZyPP5TOqSnQP4G1XfMUq1cCWYEjS0RjICf9eku5aePwJyKMSBhW6BqUK2cQs3h8vU4/5UEoH400CxCB5NN6rUZmx+FNG989uIl/D6qpT6r2nSmcn7CwgWN8g7WxsWMvhnUp1nkGA054L8khBPq+kuyY+oz3XWVXtzOF3CdBW5bF38fmKhAHj1TSQjmh5lZ36hXoPFLSGJLpsa9vk43vzQ1oGsoxqpvhDhwXFAREACeOd7bTt586hXasm+rLAOq+SuQkYmBlA+X28wjfnjRIqT3s9BfP2qNclycnmwUyRQLd4S6lhAF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkMFN78gl7GdpQlCBi7ZUBl9CmNMVbVcbTU+AkMGOmoY0Ekbsx9eP6B5BdzpGllQZk3kjoHZEeX328+tRRCYBDLTxT7Fyo0GkLLcw8rJt4M0TZawEBYD3zlUbUuroF4uP9YZWVH3W5no5JhR7RM09qc0+SNg7GnSTzKGW3MowkyX4kLpkT+H1WqGfEc0tLsFNMjO24KS+ru9ytphY4h4XDWjJclj04kifG7PRApFI4NgwtaE5na/xCEBI572Nvp+FnlSnCVKIOfYcC5uGB5iRwTkhbkenG2L7c77HIWlFh0XmbbYqIPN6D0cxMS0xfucOVfgzEeW5Lj3z9sl7aP66C7CgwABQIgoQcADAAJA0ANAwAAAAAAEwcACQAQCxoZAQETBwADABgLDRkBAQsCAAMMAgAAAABWIYMAAAAADQEDAREOGgADCRIPAhYNGgsUDhcbHB0RGAgEBRARBgcKGCtkSRPp9m+UAFYhgwAAAAABAAAAAAAAAA0DAwAAAQkLAgAVDAIAAADwztEAAAAAAAsCAAEMAgAAAKAlJgAAAAAAAQoH91x2BwgszoIZyZt8wiqhKEPv07mcVbllAcKrbibGAjAdBwBAEQsBEwI=",
80
+ "slot": 458109122,
81
+ "loaded_writable": [
82
+ "nozHiMDNDHfuvj31jZN917a3mk2KSR9M8L3K13447eG",
83
+ "HjQjngTDqoHE6aaGhUqfz9aQ7WZcBRjy5xB8PScLSr8i"
84
+ ],
85
+ "loaded_readonly": [
86
+ "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
87
+ "So11111111111111111111111111111111111111112",
88
+ "SysvarRent111111111111111111111111111111111",
89
+ "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
90
+ "4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf",
91
+ "8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt",
92
+ "Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1"
93
+ ]
94
+ },
95
+ {
96
+ "signature": "4A2UJ139R7YRvtDRUuTsbj83EQwkWZehP9mvjc9kgzJEaVLCLRKXPtw6CYwdovduVR8cYcUZ6spxHnKKKfkKhdn2",
97
+ "slot": 458539974,
98
+ "wire": "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",
99
+ "loaded_writable": [],
100
+ "loaded_readonly": [],
101
+ "raw_instruction_count": 1
102
+ },
103
+ {
104
+ "signature": "4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2",
105
+ "slot": 458542546,
106
+ "wire": "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",
107
+ "loaded_writable": [],
108
+ "loaded_readonly": [],
109
+ "raw_instruction_count": 1
110
+ }
111
+ ]
@@ -30,7 +30,7 @@ from sol_parser.rpc_parser import (
30
30
  )
31
31
 
32
32
  DEFAULT_SIGNATURE = (
33
- "64srGF8CnTz9zPbdayWYmzs5aVRFBcfjDcidFVvBgAD25VMh52wr88vma7ytSbAZT3C5Giu5BPyGfNfLexLSrKhP"
33
+ "4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2"
34
34
  )
35
35
 
36
36
 
@@ -42,7 +42,7 @@ def fetch_transaction(signature: str, rpc_url: str) -> dict | None:
42
42
  "method": "getTransaction",
43
43
  "params": [
44
44
  signature,
45
- {"encoding": "json", "maxSupportedTransactionVersion": 0},
45
+ {"encoding": "json", "maxSupportedTransactionVersion": 1},
46
46
  ],
47
47
  }
48
48
  ).encode()
@@ -0,0 +1,29 @@
1
+ """Offline captured executions; optional signature fetch uses SOLANA_RPC_URL."""
2
+ import json
3
+ import os
4
+ import sys
5
+ from pathlib import Path
6
+ sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
7
+ from sol_parser import format_dex_event_json
8
+ from sol_parser.rpc_parser import parse_rpc_transaction, rpc_get_transaction_result_dict_to_response
9
+ from parse_tx_by_signature import fetch_transaction
10
+
11
+ if len(sys.argv) > 1:
12
+ raw = fetch_transaction(sys.argv[1], os.environ.get('SOLANA_RPC_URL', 'https://api.mainnet-beta.solana.com'))
13
+ if raw is None:
14
+ raise RuntimeError('Transaction not found; use a recent signature or an archive RPC')
15
+ cases = [{'raw': raw}]
16
+ else:
17
+ cases = json.loads((Path(__file__).resolve().parents[1] / 'tests/fixtures/pump_execution_20261019.json').read_text())['cases']
18
+ for case in cases:
19
+ raw = case['raw']
20
+ logs = raw['meta']['logMessages']
21
+ for mode, variant in [('full',logs),('no_logs',[]),('truncated_logs',logs[:len(logs)//2])]:
22
+ raw['meta']['logMessages'] = variant
23
+ signature = raw['transaction']['signatures'][0]
24
+ events, error = parse_rpc_transaction(rpc_get_transaction_result_dict_to_response(raw), signature, None, 0)
25
+ if error:
26
+ raise RuntimeError(error)
27
+ print(f'{mode} slot={raw["slot"]} signature={signature}')
28
+ for event in events:
29
+ print(format_dex_event_json(event))
@@ -27,6 +27,23 @@ def run_replay():
27
27
  w,r=f['loaded_writable'],f['loaded_readonly']
28
28
  def parse(filter=None):
29
29
  return parse_shred_transaction_with_loaded_addresses(raw,w,r,slot=f['slot'],tx_index=888,recv_us=999,filter=filter)
30
+ if f['expected'][0]['kind'] in ('RapidBuy', 'BuyPumpDelta'):
31
+ events = parse()
32
+ keys = [*m['accountKeys'], *w, *r]
33
+ assert len(events) == len(f['expected'])
34
+ for event in events:
35
+ assert event.type == EventType.RAW_INSTRUCTION
36
+ e = event.data
37
+ ix = m['instructions'][e.instruction_index]
38
+ assert e.program_id == keys[ix['programIdIndex']]
39
+ assert e.accounts == [keys[i] for i in ix['accounts']]
40
+ assert e.account_indices == ix['accounts']
41
+ assert e.instruction_data == list(base58.b58decode(ix['data']))
42
+ assert not hasattr(e, 'is_buy') and not hasattr(e, 'ix_name')
43
+ assert not parse(IncludeOnlyFilter([EventType.PUMP_FUN_TRADE]))
44
+ assert not parse(ExcludeFilter([EventType.RAW_INSTRUCTION]))
45
+ trace.append((f['signature'], [e.type for e in events]))
46
+ continue
30
47
  events=parse(IncludeOnlyFilter([EventType.PUMP_FUN_TRADE,EventType.PUMP_FUN_CREATE]))
31
48
  assert len(events)==len(f['expected'])
32
49
  assert len(parse_shred_transaction(raw))==(0 if w or r else len(events))
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sol-parser-sdk-python"
3
- version = "0.5.14"
3
+ version = "0.5.15"
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"
@@ -513,6 +513,8 @@ from .pump_upgrade import PumpFunPostCompleteBuyEvent, PumpFunSweepBondingCurveF
513
513
  __all__ += ['decode_pump_multi_hop_intent','PumpFunPostCompleteBuyEvent','PumpFunSweepBondingCurveFeeEvent','PumpFunCompleteEvent','PumpSwapSweepPoolFeeEvent']
514
514
 
515
515
  from .pump_routes import PumpRouteHop, PumpRouteIntentEvent
516
+ from .raw_instruction import RawInstructionEvent
517
+ __all__ += ["RawInstructionEvent"]
516
518
  from .shredstream_client import parse_shred_transaction, parse_shred_transaction_with_loaded_addresses, parse_shred_transaction_best_effort
517
519
 
518
520
  __all__ += ["PumpRouteHop", "PumpRouteIntentEvent", "parse_shred_transaction", "parse_shred_transaction_with_loaded_addresses", "parse_shred_transaction_best_effort"]
@@ -120,6 +120,7 @@ RUST_EVENT_TYPES = [
120
120
  "AccountOrcaFeeTier",
121
121
  "AccountOrcaWhirlpoolsConfig",
122
122
  "PumpRouteIntent",
123
+ "RawInstruction",
123
124
  ]
124
125
 
125
126
 
@@ -1816,6 +1816,11 @@ def to_typed_event(event: dict) -> Optional[TypedDexEvent]:
1816
1816
  values={name:(_get_str(data,name) if typ=='pubkey' else _get_int(data,name)) for name,typ in fields}
1817
1817
  return cls(metadata=meta,**values)
1818
1818
 
1819
+ if event_type == EventType.RAW_INSTRUCTION:
1820
+ from .raw_instruction import RawInstructionEvent
1821
+ return RawInstructionEvent(metadata=meta, program_id=data['program_id'],
1822
+ instruction_index=int(data['instruction_index']), accounts=list(data['accounts']),
1823
+ account_indices=list(data['account_indices']), instruction_data=list(data['instruction_data']))
1819
1824
  if event_type == EventType.PUMP_ROUTE_INTENT:
1820
1825
  from .pump_routes import PumpRouteHop, PumpRouteIntentEvent
1821
1826
  return PumpRouteIntentEvent(metadata=meta,kind=data['kind'],program=data['program'],
@@ -19,6 +19,7 @@ from .grpc_types import (
19
19
  event_type_filter_allows_instruction_parsing,
20
20
  )
21
21
  from .inner_instruction_parser import parse_inner_instruction
22
+ from .instructions import clear_pump_instruction_execution_amounts
22
23
  from .instructions import (METEORA_DLMM_PROGRAM_ID, PUMPFUN_PROGRAM_ID, PUMPSWAP_PROGRAM_ID,
23
24
  parse_inner_compiled_instruction_if_supported, parse_instruction_unified)
24
25
  from .merger import try_merge_dex_events
@@ -395,6 +396,7 @@ def parse_instructions_enhanced_from_parsed(
395
396
  ev = parse_instruction_unified(
396
397
  data, accounts, signature, slot, tx_index, block_time_us, grpc_us, filter, pid
397
398
  )
399
+ ev = clear_pump_instruction_execution_amounts(ev)
398
400
  if ev:
399
401
  result.append((i, None, 1, False, ev))
400
402
 
@@ -404,7 +406,7 @@ def parse_instructions_enhanced_from_parsed(
404
406
  pid = get_key_b58(inner_ix.program_id_index)
405
407
  data = bytes(inner_ix.data)
406
408
  accounts = [get_key_b58(b) for b in bytes(inner_ix.accounts)]
407
- ev = parse_inner_compiled_instruction_if_supported(
409
+ ev = clear_pump_instruction_execution_amounts(parse_inner_compiled_instruction_if_supported(
408
410
  data,
409
411
  accounts,
410
412
  signature,
@@ -414,7 +416,7 @@ def parse_instructions_enhanced_from_parsed(
414
416
  grpc_us,
415
417
  filter,
416
418
  pid,
417
- ) or parse_inner_instruction(
419
+ )) or parse_inner_instruction(
418
420
  data,
419
421
  pid,
420
422
  _meta_dict(signature, slot, tx_index, block_time_us, grpc_us, recent_bh),
@@ -48,6 +48,7 @@ class EventType(str, Enum):
48
48
  RAYDIUM_LAUNCHLAB_POOL_CREATE = "RaydiumLaunchlabPoolCreate"
49
49
  RAYDIUM_LAUNCHLAB_MIGRATE_AMM = "RaydiumLaunchlabMigrateAmm"
50
50
  PUMP_ROUTE_INTENT = "PumpRouteIntent"
51
+ RAW_INSTRUCTION = "RawInstruction"
51
52
  # PumpFun
52
53
  PUMP_FUN_TRADE = "PumpFunTrade"
53
54
  PUMP_FUN_BUY = "PumpFunBuy"
@@ -313,7 +314,7 @@ RAYDIUM_LAUNCHLAB_FILTER_TYPES = (
313
314
  EventType.RAYDIUM_LAUNCHLAB_MIGRATE_AMM,
314
315
  )
315
316
  INSTRUCTION_EVENT_TYPES = (
316
- EventType.PUMP_ROUTE_INTENT,
317
+ EventType.PUMP_ROUTE_INTENT, EventType.RAW_INSTRUCTION,
317
318
  *PUMPFUN_FILTER_TYPES,
318
319
  *PUMP_FEES_EVENT_TYPES,
319
320
  *PUMPSWAP_FILTER_TYPES,
@@ -460,7 +461,7 @@ def all_event_types() -> List[EventType]:
460
461
  EventType.ACCOUNT_ORCA_TICK_ARRAY,
461
462
  EventType.ACCOUNT_ORCA_FEE_TIER,
462
463
  EventType.ACCOUNT_ORCA_WHIRLPOOLS_CONFIG,
463
- EventType.PUMP_ROUTE_INTENT,
464
+ EventType.PUMP_ROUTE_INTENT, EventType.RAW_INSTRUCTION,
464
465
  ]
465
466
 
466
467