11 KiB
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.48 — raydium_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_matchne 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.49 — raydium_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 d’observation 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.50 — raydium_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.