Files
khadhroony-bobobot/docs/DEX_EVENT_COVERAGE_MATRIX.md
2026-06-09 10:13:03 +02:00

22 KiB
Raw Blame History

DEX Event Coverage Matrix — khadhroony-bobobot 0.7.50-pre-r2

Cette matrice complète docs/DEX_DECODER_MATRIX.md avec une lecture par familles d'événements. Elle ne remplace pas la preuve locale : une entrée Git/IDL reste un indice tant qu'elle n'est pas observée dans le corpus local puis validée par replay et SQL.

Règles de statut

Statut Sens
decoded Un decoder local produit un event spécialisé ou un event audit-only classé.
materialized L'event alimente une table métier existante validée par corpus.
audit-only L'event reste dans k_sol_dex_decoded_events et ne produit jamais trade/candle.
upstream_git_mapped_unverified L'entrée est connue depuis Carbon/fnzero/IDL, mais non observée localement.
not_applicable La famille n'existe pas pour ce DEX/version ou appartient à un autre programme.

0.7.48raydium_cpmm

Sources inventoriées : Carbon carbon-raydium-cpmm-decoder, fnzero solana-streamer / sol-parser-sdk IDL raydium_cpmm.json.

Famille Entrées Raydium CPMM Statut 0.7.48 Cible DB Justification / règle
swap swap_base_input, swap_base_output, swap_event materialized pour swap_base_*; swap_event audit-only k_sol_trade_events seulement pour swap_base_*; k_sol_dex_decoded_events_only pour swap_event swap_event est décodé mais ne produit jamais trade/candle afin d'éviter les doublons.
pool_create initialize, initialize_with_permission materialized k_sol_pool_lifecycle_events initialize_with_permission est lifecycle-only et ne crée plus d'admin row.
add_liquidity deposit, lp_change_event(changeType=0) materialized k_sol_liquidity_events deposit et lp_change_event(changeType=0) matérialisent liquidity, sans trade/candle.
remove_liquidity withdraw, lp_change_event(changeType=1) materialized k_sol_liquidity_events withdraw et lp_change_event(changeType=1) matérialisent liquidity, sans trade/candle.
position_open - not_applicable - CPMM n'a pas de position CLMM.
position_close - not_applicable - CPMM n'a pas de position CLMM.
fee collect_creator_fee, collect_fund_fee, collect_protocol_fee materialized k_sol_fee_events Les trois familles de fee CPMM observées sont matérialisées avec trade_count=0.
reward - not_applicable - Aucune entrée reward CPMM dans Carbon/fnzero IDL inventoriée pour cette tranche.
admin/config create_amm_config, update_amm_config, create_permission_pda, update_pool_status, close_permission_pda materialized pour les entrées observées ; upstream_git_mapped_unverified pour update_pool_status / close_permission_pda k_sol_pool_admin_events ou decoded-only selon corpus create_amm_config, create_permission_pda et update_amm_config sont matérialisés ; les deux autres restent non observés localement.
mint - direct not_applicable - Mint LP implicite possible dans les instructions, mais pas d'instruction CPMM mint dédiée.
burn - direct not_applicable - Burn LP implicite possible dans withdraw, mais pas d'instruction CPMM burn dédiée.
transfer SPL Token inner transfers audit-only indirect k_sol_dex_decoded_events pour cette tranche Pas de table k_sol_token_transfer_events ajoutée en 0.7.48.
account_create comptes système/ATA indirects audit-only indirect decoded-only Hors programme CPMM direct.
account_close comptes système/ATA indirects audit-only indirect decoded-only Hors programme CPMM direct.
wrap_sol user/router side not_applicable - Préparation WSOL hors CPMM.
unwrap_sol user/router side not_applicable - Cleanup WSOL hors CPMM.
order_place - not_applicable - CPMM est AMM, pas orderbook.
order_cancel - not_applicable - CPMM est AMM, pas orderbook.
order_fill - not_applicable - CPMM est AMM, pas orderbook.
consume_events - not_applicable - CPMM est AMM, pas orderbook.
settle_funds - not_applicable - CPMM est AMM, pas orderbook.
vault_deposit - not_applicable - Les vaults CPMM sont des comptes de pool, pas une surface vault séparée.
vault_withdraw - not_applicable - Les vaults CPMM sont des comptes de pool, pas une surface vault séparée.
lock - not_applicable - Raydium liquidity locking est une surface séparée.
unlock - not_applicable - Raydium liquidity locking est une surface séparée.
launch - not_applicable - Raydium LaunchLab/Launchpad est séparé de CPMM.
migration - not_applicable - Les migrations launch → pool relèvent des launch surfaces.
stake - not_applicable - Hors CPMM.
unstake - not_applicable - Hors CPMM.
unknown/unmapped audit raydium_cpmm.instruction_audit audit-only k_sol_dex_decoded_events_only Toute instruction observée mais non mappée reste audit-only et ne produit jamais trade/candle.

Validation attendue

  • k_sol_dex_event_coverage_entries.decoder_code = 'raydium_cpmm' contient toutes les entrées Carbon/fnzero synchronisées.
  • upstream_git.instruction_match ne doit plus apparaître pour une instruction CPMM remplacée par un decoder local spécialisé.
  • Les familles non-trade CPMM doivent rester trade_count = 0.
  • Les transactions failed CPMM doivent rester décodées/auditables mais non matérialisées en trade/candle.

Note 0.7.48-part2-fix2 — CPMM official instruction parity

La couverture raydium_cpmm est alignée avec les instructions exposées par le programme officiel Raydium CP-Swap et par Carbon : create_amm_config, update_amm_config, update_pool_status, collect_protocol_fee, collect_fund_fee, collect_creator_fee, create_permission_pda, close_permission_pda, initialize, initialize_with_permission, deposit, withdraw, swap_base_input, swap_base_output, lp_change_event et swap_event.

lp_change_event est maintenant classé event_family=liquidity dans la table coverage, parce que l'event couvre à la fois dépôt et retrait. La matérialisation reste déterminée par changeType dans le payload décodé : 0 = add/deposit, 1 = remove/withdraw.

Note 0.7.48 final — Raydium CPMM clôturable

Validation finale locale : deposit = 11/11 liquidity, withdraw = 14/14 liquidity, lp_change_event = 25/25 liquidity, fees = 26/26 fee, admin/config observés = 23/23 admin, lifecycle = 9/9, swap_event = audit-only avec 0 trade, et trades matérialisés uniquement depuis swap_base_input / swap_base_output.

close_permission_pda et update_pool_status restent upstream_git_mapped_unverified faute de corpus local. Les filtres Solscan instruction=9c5420764587467b et instruction=82576c062ee0757b n'ont pas fourni de signatures exploitables dans l'horizon testé.

0.7.49raydium_clmm final coverage

Sources inventoriées : Carbon raydium-clmm-decoder, fnzero sol-parser-sdk, Pinax substreams-solana-idls/src/raydium/clmm, Raydium/Solscan Program IDL.

État final validé : 45 entrées listées, 33 instructions locales observées/décodées, 25 entrées matérialisées, 1186 trades, raydium_clmm.instruction_audit = 0, fallback upstream_git.instruction_match localement couvert = 0.

Famille Entrées Raydium CLMM Statut 0.7.49 Cible DB Justification / règle
swap swap, swap_v2 materialized k_sol_trade_events Seuls ces swaps produisent trades/candles lorsque les montants sont exploitables.
swap audit swap_event, swap_router_base_in observed/audit ou upstream_git_unverified selon corpus k_sol_dex_decoded_events_only Pas de double trade/candle.
pool_create create_pool, create_customizable_pool decoded; create_pool matérialisé quand prouvé k_sol_pool_lifecycle_events Création de pool = lifecycle, pas admin.
add_liquidity increase_liquidity, increase_liquidity_v2, open position variants decoded; variantes prouvées matérialisées k_sol_liquidity_events CLMM implique position/tick/NFT ; matérialisation seulement sur corpus OK.
remove_liquidity decrease_liquidity, decrease_liquidity_v2, close position variants decoded; variantes prouvées matérialisées k_sol_liquidity_events Aucune promotion trade/candle.
fee collect_fund_fee, collect_protocol_fee decoded; protocol fee matérialisé si tx OK k_sol_fee_events Mapping fee sans trade/candle.
reward initialize_reward, collect_remaining_rewards, set_reward_params, transfer_reward_owner, update_reward_infos decoded; variantes prouvées matérialisées k_sol_reward_events / k_sol_pool_admin_events Reward/config selon instruction.
admin/config create_amm_config, create_dynamic_fee_config, create_operation_account, update_amm_config, update_operation_account, update_pool_status decoded; variantes prouvées matérialisées k_sol_pool_admin_events ou decoded-only Config/admin sans trade/candle.
account_create create_support_mint_associated observed/decoded k_sol_token_account_events prévu / decoded-only selon corpus Side effect technique ; pas de trade/candle.
order_place open_limit_order, increase_limit_order decoded/materialized k_sol_orderbook_events Orderbook CLMM, jamais trade/candle.
order_cancel decrease_limit_order, close_limit_order decoded/materialized k_sol_orderbook_events Orderbook CLMM, jamais trade/candle.
settle_funds settle_limit_order decoded/materialized k_sol_orderbook_events Settlement orderbook, pas trade direct.
mint/burn/transfer/account_close/wrap/unwrap Side effects SPL Token / Token-2022 indirect decoded-only Pas de promotion en raydium_clmm.* sans instruction directe.
launch/migration/lock/unlock/stake/unstake/vault - not_applicable - Surfaces hors CLMM direct.
unknown/unmapped audit raydium_clmm.instruction_audit, fallback upstream closed k_sol_dex_decoded_events_only Résidu validé à zéro après replay.

Les 11 Anchor / Program data events restent upstream_git_unverified et préparés audit-only faute dobservation locale : collect_personal_fee_event, collect_protocol_fee_event, config_change_event, create_personal_position_event, decrease_liquidity_event, increase_liquidity_event, liquidity_calculate_event, liquidity_change_event, pool_created_event, swap_event, update_reward_infos_event.

0.7.50raydium_launchpad bootstrap

Sources inventoriées : Carbon raydium-launchpad-decoder, Solscan Program IDL LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj, fnzero IDL listings, Raydium SDK Launchpad examples. Code local canonique : raydium_launchpad. Aucun alias Rust raydium_launchlab ne doit être conservé dans lAPI publique.

État de départ préparé : 1 entrée programme et 26 entrées discriminées listées depuis Carbon/IDL. Toutes les entrées Launchpad sont gardées decoded_events_only en bootstrap, même si leur famille inférée est swap, pool_create, fee, admin_config, launch ou migration. La matérialisation métier est volontairement différée jusqu'au corpus local.

Famille Entrées Raydium Launchpad Statut 0.7.50 bootstrap Cible DB initiale Justification / règle
swap buy_exact_in, buy_exact_out, sell_exact_in, sell_exact_out, trade_event upstream_git_mapped_unverified puis decoded/audit-only si observé k_sol_dex_decoded_events_only Aucun trade/candle avant preuve locale de montants, sens et absence de doublon avec la surface DEX de migration.
pool_create initialize, initialize_v2, initialize_with_token_2022, pool_create_event upstream_git_mapped_unverified decoded_events_only Lifecycle launch/pool non promu tant que le compte pool/mint/quote n'est pas validé localement.
add_liquidity - direct confirmé not_applicable - Peut apparaître via DEX de destination ou SPL side effects, pas comme instruction Launchpad directe prouvée.
remove_liquidity - direct confirmé not_applicable - Même règle que add_liquidity.
position_open - not_applicable - Pas de position CLMM/LP NFT directe confirmée.
position_close - not_applicable - Pas de position CLMM/LP NFT directe confirmée.
fee claim_creator_fee, claim_platform_fee, claim_platform_fee_from_vault, claim_vested_event, claim_vested_token, collect_fee, collect_migrate_fee upstream_git_mapped_unverified puis decoded/audit-only si observé decoded_events_only Fee/vesting/migration fee utile pour stratégie, mais pas matérialisé sans corpus.
reward - direct confirmé not_applicable - Vesting n'est pas promu en reward transversal dans cette tranche.
admin/config create_config, create_platform_config, remove_platform_curve_param, update_config, update_platform_config, update_platform_curve_param upstream_git_mapped_unverified puis decoded/audit-only si observé decoded_events_only Admin/config utile pour audit, pas de table métier promue.
mint SPL Token / Token-2022 side effects possibles indirect decoded_events_only Ne devient pas raydium_launchpad.* sans instruction directe du programme.
burn SPL Token / Token-2022 side effects possibles indirect decoded_events_only Même règle que mint.
transfer SPL Token / Token-2022 side effects attendus indirect decoded_events_only Même règle que CPMM/CLMM : side effect transversal.
account_create create_vesting_account, create_vesting_event upstream_git_mapped_unverified decoded_events_only Vesting/account audit uniquement, pas de nouvelle table transversale.
account_close - direct confirmé not_applicable - Aucun close direct Launchpad confirmé.
wrap_sol Side effect utilisateur/router possible indirect decoded_events_only Hors programme Launchpad direct.
unwrap_sol Side effect utilisateur/router possible indirect decoded_events_only Hors programme Launchpad direct.
order_place - not_applicable - Launchpad n'est pas traité comme orderbook.
order_cancel - not_applicable - Launchpad n'est pas traité comme orderbook.
order_fill - not_applicable - Launchpad n'est pas traité comme orderbook.
consume_events - not_applicable - Launchpad n'est pas traité comme orderbook.
settle_funds - not_applicable - Launchpad n'est pas traité comme orderbook.
vault_deposit - direct confirmé not_applicable - Aucun vault direct Launchpad confirmé.
vault_withdraw - direct confirmé not_applicable - Aucun vault direct Launchpad confirmé.
lock - direct confirmé not_applicable - Liquidity locking reste une autre surface Raydium.
unlock - direct confirmé not_applicable - Liquidity locking reste une autre surface Raydium.
launch initialize*, pool_create_event upstream_git_mapped_unverified decoded_events_only La promotion k_sol_launch_events est différée.
migration migrate_to_amm, migrate_to_cpswap, collect_migrate_fee upstream_git_mapped_unverified decoded_events_only Destination AMM/CPMM à valider localement avant liaison métier.
stake - not_applicable - Aucun stake direct Launchpad confirmé.
unstake - not_applicable - Aucun unstake direct Launchpad confirmé.
unknown/unmapped audit raydium_launchpad.instruction_audit audit-only decoded_events_only Résidu à réduire par discriminant après backfill ciblé et replay.

Rapport détaillé : docs/reports/RAYDIUM_LAUNCHPAD_EVENT_COVERAGE_REPORT.md.

SQL de validation : validation_sql/SQL_VALIDATION_RAYDIUM_LAUNCHPAD_0_7_50.sql.

0.7.50-pre3 Launchpad note

pre3 correction: Launchpad self-CPI selector e445a52e51cb9a1d is transport only. Known embedded event discriminators are decoded as raydium_launchpad.trade_event and raydium_launchpad.pool_create_event. The Launchpad initialize* instruction family now supplies pool/pair catalog context; trade_event remains decoded-only until trade/candle promotion is explicitly proven.

Note 0.7.50-pre-r2 — Raydium CPMM/CLMM closure re-check

Sources ajoutées à la vérification CPMM/CLMM : Carbon raydium-cpmm-decoder, Carbon raydium-clmm-decoder, Solscan Program IDL CPMM/CLMM et sol-parser-sdk IDL Raydium.

CPMM

  • cpi_event est ajouté à la matrice CPMM avec event_family=cpi_transport, expected_db_target=k_sol_dex_decoded_events_only, local_event_kind=raydium_cpmm.cpi_event et discriminant e445a52e51cb9a1d.
  • swap_event reste decoded_events_only pour éviter le double comptage avec swap_base_input / swap_base_output.
  • Le discriminant local 40f4bc78a7e9690a est codé comme raydium_cpmm.anchor_idl_instruction, event_family=idl_management, expected_db_target=k_sol_dex_decoded_events_only, après inspection Solscan des logs IdlCreateAccount / IdlCloseAccount.

CLMM

  • cpi_event est ajouté à la matrice CLMM avec event_family=cpi_transport, expected_db_target=k_sol_dex_decoded_events_only, local_event_kind=raydium_clmm.cpi_event et discriminant e445a52e51cb9a1d.
  • update_dynamic_fee_config est ajouté avec event_family=admin_config, expected_db_target=k_sol_pool_admin_events, local_event_kind=raydium_clmm.update_dynamic_fee_config et discriminant 0707500802c784f0.
  • Les Program-data events CLMM sont maintenant rattachés localement : swap_event, pool_created_event, liquidity_change_event, create_personal_position_event, decrease_liquidity_event, increase_liquidity_event, collect_protocol_fee_event, config_change_event, update_reward_infos_event.
  • swap_event et swap_router_base_in restent decoded_events_only : les trades canoniques sont swap / swap_v2, afin d'éviter le double comptage et la matérialisation de routes sans pool direct.
  • liquidity_calculate_event est classé liquidity_calculation et reste decoded_events_only, car il sert au diagnostic/calcul et non à une mutation de liquidité fiable.
  • create_support_mint_associated cible la nouvelle table k_sol_token_account_events.
  • create_operation_account et update_operation_account sont normalisés en admin_config.

Validation attendue après replay : aucune entrée CPMM/CLMM ne doit rester en event_family='unknown' hors program, les fallbacks upstream_git.instruction_match ne doivent pas dupliquer une entrée locale couverte, et les transactions failed ne doivent matérialiser ni trade, ni liquidity, ni fee/admin/reward/orderbook/token-account.

Rapport associé : docs/reports/RAYDIUM_CPMM_CLMM_RECHECK_REPORT_0_7_50_PRE_R2.md.

0.7.51raydium_amm_v4

Sources inventoriées : Carbon raydium-amm-v4-decoder, Pinax src/raydium/amm, fnzero raydium_amm_v4.json, Solscan Program IDL. raydium_pool_v4 est comparé mais non promu.

Validation locale finale : tous les discriminants AMM v4 officiels 00..11 sont observés ; instruction_audit, fallback upstream, decoded sans coverage, observations 8 octets, non-swap trade, failed tx trade, gaps inexpliqués et multi-target materialization sont vides.

Famille Entrées AMM v4 Statut 0.7.51-final Cible DB Règle
swap swap_base_in, swap_base_out, swap_base_in_v2, swap_base_out_v2 observed/materialized partiel expliqué k_sol_trade_events Trade/candle seulement si tx successful + montants vault fiables ; sinon skipTradeReason.
pool_create initialize, initialize2_pool observed/materialized k_sol_pool_lifecycle_events Alimente lifecycle et catalogue seulement quand les mints/pool sont prouvés.
pool_create deprecated pre_initialize observed/materialized audit minimal k_sol_pool_lifecycle_events Lifecycle deprecated/partial ; ne crée pas de pair exploitable sans mints.
liquidity_add deposit observed/materialized partiel expliqué k_sol_liquidity_events Jamais trade/candle ; pools absents du catalogue restent decoded-only expliqués.
liquidity_remove withdraw observed/materialized partiel expliqué k_sol_liquidity_events Jamais trade/candle ; deltas/catalogue manquants doivent être explicités.
fee withdraw_pnl, withdraw_srm observed/materialized partiel expliqué k_sol_fee_events Jamais trade/candle.
admin/config set_params, create_config_account, update_config_account observed/materialized k_sol_pool_admin_events Preuve métier par corpus uniquement.
orderbook side effects monitor_step, migrate_to_open_book, admin_cancel_orders observed/materialized k_sol_orderbook_events Side effects OpenBook/Serum ; pas de trade OpenBook autonome, pas de lifecycle en double.
cpi/informational simulate_info observed decoded-only k_sol_dex_decoded_events_only Audit technique uniquement.
token side effects SPL Token / Token-2022 inner instructions transversal decoded-only actuellement Ne pas promouvoir comme AMM v4 direct.
unknown/unmapped audit residual raydium_amm_v4.instruction_audit vide decoded-only si futur inconnu Tout residual doit être expliqué avant promotion.