7.0 KiB
DEX Event Coverage Matrix — khadhroony-bobobot 0.7.48
Cette matrice complète 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é.