22 KiB
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.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 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 l’API 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_eventest ajouté à la matrice CPMM avecevent_family=cpi_transport,expected_db_target=k_sol_dex_decoded_events_only,local_event_kind=raydium_cpmm.cpi_eventet discriminante445a52e51cb9a1d.swap_eventrestedecoded_events_onlypour éviter le double comptage avecswap_base_input/swap_base_output.- Le discriminant local
40f4bc78a7e9690aest codé commeraydium_cpmm.anchor_idl_instruction,event_family=idl_management,expected_db_target=k_sol_dex_decoded_events_only, après inspection Solscan des logsIdlCreateAccount/IdlCloseAccount.
CLMM
cpi_eventest ajouté à la matrice CLMM avecevent_family=cpi_transport,expected_db_target=k_sol_dex_decoded_events_only,local_event_kind=raydium_clmm.cpi_eventet discriminante445a52e51cb9a1d.update_dynamic_fee_configest ajouté avecevent_family=admin_config,expected_db_target=k_sol_pool_admin_events,local_event_kind=raydium_clmm.update_dynamic_fee_configet discriminant0707500802c784f0.- 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_eventetswap_router_base_inrestentdecoded_events_only: les trades canoniques sontswap/swap_v2, afin d'éviter le double comptage et la matérialisation de routes sans pool direct.liquidity_calculate_eventest classéliquidity_calculationet restedecoded_events_only, car il sert au diagnostic/calcul et non à une mutation de liquidité fiable.create_support_mint_associatedcible la nouvelle tablek_sol_token_account_events.create_operation_accountetupdate_operation_accountsont normalisés enadmin_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.51 — raydium_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. |