7.0 KiB
Raydium AMM v4 Event Coverage Report — 0.7.51-final
Scope
Tranche : 0.7.51 raydium_amm_v4.
Program id canonique local :
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Code local canonique :
raydium_amm_v4
Cette tranche reprend AMM v4 legacy après 0.7.50 raydium_launchpad et les rechecks CPMM/CLMM. Les sources Git/IDL/Solscan restent des indices ; les statuts observé/matérialisé proviennent du corpus local et du replay forcé.
Sources inventoriées
Sources utilisées comme indices de coverage :
- Carbon :
decoders/raydium-amm-v4-decoder; - Pinax :
src/raydium/amm; - fnzero
sol-parser-sdk:idl/raydium_amm_v4.jsonetidls/raydium_amm_v4.json; - fnzero
sol-parser-sdk:idl/raydium_pool_v4.jsonetidls/raydium_pool_v4.json, audit comparatif uniquement ; - Solscan Program IDL et recherche
instruction=<discriminator>pour675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8.
Validation Rust et replay final
Validation locale rapportée :
cargo test -p kb_lib -> 405 passed / 0 failed
cargo clippy -p kb_lib --all-targets -- -D warnings -> OK
Replay local final :
195 replayed
0 decode skipped
195 ledger upserts
70 unsafe ledger rows
168 trades
7 liquidity
15 lifecycle
0 tokenAccount
668 candle upserts
instructionObservations = 2599
resetDeleted = 1578
catalog = 61 tokens / 65 pools / 65 pairs
Coverage finale par discriminant
| Discriminant | Entrée | Famille | Local event kind | Cible DB | Observed | Materialized | Trade |
|---|---|---|---|---|---|---|---|
00 |
initialize |
pool_create |
raydium_amm_v4.initialize |
k_sol_pool_lifecycle_events |
4 | 4 | 0 |
01 |
initialize2 |
pool_create |
raydium_amm_v4.initialize2_pool |
k_sol_pool_lifecycle_events |
8 | 8 | 0 |
02 |
monitor_step |
order_place |
raydium_amm_v4.monitor_step |
k_sol_orderbook_events |
20 | 20 | 0 |
03 |
deposit |
liquidity_add |
raydium_amm_v4.deposit |
k_sol_liquidity_events |
10 | 5 | 0 |
04 |
withdraw |
liquidity_remove |
raydium_amm_v4.withdraw |
k_sol_liquidity_events |
3 | 2 | 0 |
05 |
migrate_to_open_book |
order_place |
raydium_amm_v4.migrate_to_open_book |
k_sol_orderbook_events |
6 | 6 | 0 |
06 |
set_params |
admin_config |
raydium_amm_v4.set_params |
k_sol_pool_admin_events |
1 | 1 | 0 |
07 |
withdraw_pnl |
fee |
raydium_amm_v4.withdraw_pnl |
k_sol_fee_events |
1 | 1 | 0 |
08 |
withdraw_srm |
fee |
raydium_amm_v4.withdraw_srm |
k_sol_fee_events |
2 | 1 | 0 |
09 |
swap_base_in |
swap |
raydium_amm_v4.swap_base_in |
k_sol_trade_events |
76 | 66 | 66 |
0a |
pre_initialize |
pool_create |
raydium_amm_v4.pre_initialize |
k_sol_pool_lifecycle_events |
8 | 7 | 0 |
0b |
swap_base_out |
swap |
raydium_amm_v4.swap_base_out |
k_sol_trade_events |
3 | 1 | 1 |
0c |
simulate_info |
cpi_transport |
raydium_amm_v4.simulate_info |
k_sol_dex_decoded_events_only |
6 | 0 | 0 |
0d |
admin_cancel_orders |
order_cancel |
raydium_amm_v4.admin_cancel_orders |
k_sol_orderbook_events |
22 | 22 | 0 |
0e |
create_config_account |
admin_config |
raydium_amm_v4.create_config_account |
k_sol_pool_admin_events |
50 | 50 | 0 |
0f |
update_config_account |
admin_config |
raydium_amm_v4.update_config_account |
k_sol_pool_admin_events |
6 | 6 | 0 |
10 |
swap_base_in_v2 |
swap |
raydium_amm_v4.swap_base_in_v2 |
k_sol_trade_events |
35 | 35 | 35 |
11 |
swap_base_out_v2 |
swap |
raydium_amm_v4.swap_base_out_v2 |
k_sol_trade_events |
7 | 7 | 7 |
Toutes les entrées ont proof_status=upstream_git_local_corpus_materialized, sauf simulate_info, qui reste volontairement upstream_git_local_corpus_observed / decoded-only.
Matérialisation métier finale
| Event kind | Decoded | Trade | Liquidity | Lifecycle | Fee | Admin | Orderbook |
|---|---|---|---|---|---|---|---|
raydium_amm_v4.admin_cancel_orders |
22 | 0 | 0 | 0 | 0 | 0 | 22 |
raydium_amm_v4.create_config_account |
50 | 0 | 0 | 0 | 0 | 50 | 0 |
raydium_amm_v4.deposit |
10 | 0 | 5 | 0 | 0 | 0 | 0 |
raydium_amm_v4.initialize2_pool |
8 | 0 | 0 | 8 | 0 | 0 | 0 |
raydium_amm_v4.migrate_to_open_book |
6 | 0 | 0 | 0 | 0 | 0 | 6 |
raydium_amm_v4.monitor_step |
20 | 0 | 0 | 0 | 0 | 0 | 20 |
raydium_amm_v4.pre_initialize |
8 | 0 | 0 | 7 | 0 | 0 | 0 |
raydium_amm_v4.set_params |
1 | 0 | 0 | 0 | 0 | 1 | 0 |
raydium_amm_v4.simulate_info |
6 | 0 | 0 | 0 | 0 | 0 | 0 |
raydium_amm_v4.swap_base_in |
76 | 66 | 0 | 0 | 0 | 0 | 0 |
raydium_amm_v4.swap_base_in_v2 |
35 | 35 | 0 | 0 | 0 | 0 | 0 |
raydium_amm_v4.swap_base_out |
3 | 1 | 0 | 0 | 0 | 0 | 0 |
raydium_amm_v4.swap_base_out_v2 |
7 | 7 | 0 | 0 | 0 | 0 | 0 |
raydium_amm_v4.update_config_account |
6 | 0 | 0 | 0 | 0 | 6 | 0 |
raydium_amm_v4.withdraw |
3 | 0 | 2 | 0 | 0 | 0 | 0 |
raydium_amm_v4.withdraw_pnl |
1 | 0 | 0 | 0 | 1 | 0 | 0 |
raydium_amm_v4.withdraw_srm |
2 | 0 | 0 | 0 | 1 | 0 | 0 |
Invariants validés
Les requêtes finales donnent vide pour :
raydium_amm_v4.swaplegacy ;- decoded AMM v4 sans coverage entry ;
- observations AMM v4 dont
length(discriminator_hex) > 2; - non-swap AMM v4 avec trade ;
- transaction failed AMM v4 avec trade ;
- event successful non matérialisé sans raison explicite ;
- event AMM v4 matérialisé vers plus d'une table métier principale.
Gaps expliqués
Les écarts observed_count > materialized_count sont acceptés uniquement s'ils sont expliqués :
swap_base_in/swap_base_out: decoded-only lorsque les deltas vault ou montants exploitables sont absents ;deposit/withdraw: non matérialisés lorsque le pool/pair catalogue ou les deltas nécessaires sont absents ;withdraw_srm: non matérialisé si le contexte fee exploitable est absent ;pre_initialize: 1 transaction failed ; les 7 transactions successful sont matérialisées en lifecycle audit minimal ;simulate_info: decoded-only assumé.
Pour deposit, le corpus final montre 5 événements matérialisés sur le pool catalogué 2dRNngAm729NzLbb1pzgHtfHvPqR4XHFmFyYK78EfEeX / pair FIDA/RAY, et 5 événements decoded-only sur des pools absents du catalogue local.
Décisions spécifiques
raydium_amm_v4.swapest définitivement interdit : les swaps doivent rester spécialisés.pre_initializeest conservé pour les scans historiques, matérialisé comme lifecycle audit deprecated/partial, sans pair exploitable.migrate_to_open_book,monitor_stepetadmin_cancel_orderssont des side effects orderbook AMM v4, pas des trades OpenBook autonomes.simulate_inforestek_sol_dex_decoded_events_only.- Les side effects SPL Token / Token-2022 restent transversaux.
raydium_pool_v4n'est pas promu en decoder autonome dans0.7.51.
Clôture
0.7.51 raydium_amm_v4 est clôturable côté kb_lib sous réserve de conserver les rechecks CPMM/CLMM/Launchpad dans la validation globale de workspace lorsque la base utilisée les contient.