Files
khadhroony-bobobot/docs/DEX_EVENT_COVERAGE_MATRIX.md
2026-06-05 14:53:16 +02:00

11 KiB
Raw Blame History

DEX Event Coverage Matrix — khadhroony-bobobot 0.7.49

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 planned

Prochaine tranche : identifier program ids/IDL, lister instructions/events/discriminants, constituer corpus Demo3/Solscan/Demo2, puis appliquer les mêmes règles de coverage et matérialisation que CPMM/CLMM.