6.9 KiB
Meteora DBC Event Coverage Report — 0.7.56 final
Statut final
La tranche 0.7.56 meteora_dbc est clôturée.
Program id :
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
Source locale prioritaire :
idls/meteora_dbc.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.json
Surface IDL : 28 instructions, 23 events Anchor, 9 accounts, 59 types.
Résultat build/replay final
cargo test -p kb_lib -> 446 passed / 0 failed
cargo clippy -p kb_lib --all-targets -- -D warnings -> OK
480 replayed
0 decode skipped
480 ledger upserts
454 unsafe ledger rows
264 trades
1 liquidity
122 lifecycle
0 tokenAccount
1056 candle upserts
instructionObservations = 7167
resetDeleted = 3583
catalog = 86 tokens / 60 pools / 60 pairs
Replay final recommandé pour reproduire :
skipDexDecode=no
forceDexDecode=yes
deferInstructionObservations=yes
Décisions métier verrouillées
Swaps
meteora_dbc.swapetmeteora_dbc.swap2sont les seules entrées candidates trade/candle directes.- Les trades/candles ne sont produits que si les montants exécutés et les mints base/quote sont fiables.
- Les montants de
swap2doivent être dérivés du layout et/ou des CPI SPL effectifs ; ne pas utiliser naïvement les bornes d'instruction. - Les events Anchor
EvtSwap/EvtSwap2restent decoded-only s'ils ne portent pas un contexte mint/pair suffisant ou s'ils doublonnent l'instruction matérialisée.
Lifecycle / migration / lockers
initialize_virtual_pool_with_spl_tokenetinitialize_virtual_pool_with_token2022alimentent lifecycle/catalog lorsque les comptes pool/base/quote/config sont fiables.create_locker,migrate_meteora_damm_claim_lp_token,migrate_meteora_damm_lock_lp_token,migration_damm_v2*etmigrate_meteora_damm*sont lifecycle, pas liquidity artificielle.- Les metadata-only restent decoded-only avec raison explicite si elles n'apportent pas de cible métier fiable.
Admin/config
create_config,create_operator_account,close_*operator*, metadata,transfer_pool_creatoret events config/admin alimententk_sol_pool_admin_eventsuniquement si l'acteur et la cible sont fiables.- Les payloads génériques ou incomplets restent audit/decoded-only.
Fees
- Les fees DBC utilisent le modèle parent+legs :
k_sol_fee_events+k_sol_fee_event_amounts. - Les maxima d'instruction (
maxAmount*,u64::MAX, bornes de claim) ne sont pas des montants exécutés. - Les montants fiables proviennent des CPI SPL, des legs explicitement reconstruits ou des lamport balance deltas prouvés.
- Les events Anchor fee sans mint restent decoded-only avec
skipFeeReason. - Les cas sans transfert réel portent
fee_instruction_has_no_actual_transferoufee_instruction_has_only_zero_amount_transfers.
Matérialisation fee finale
| Event kind | Fee parents | Parents scalaires | Amount legs | Décision |
|---|---|---|---|---|
meteora_dbc.claim_creator_trading_fee |
8 | 8 | 8 | Mono-leg fiable. |
meteora_dbc.claim_partner_pool_creation_fee |
10 | 10 | 10 | Mono-leg fiable. |
meteora_dbc.claim_protocol_fee |
10 | 10 | 10 | Mono-leg fiable. |
meteora_dbc.claim_protocol_pool_creation_fee |
10 | 10 | 10 | Mono-leg/lamport delta fiable. |
meteora_dbc.claim_trading_fee |
11 | 6 | 18 | Mix mono-leg et multi-leg ; parent non agrégé pour multi-leg. |
meteora_dbc.creator_withdraw_surplus |
2 | 2 | 2 | Mono-leg fiable ; résiduels sans transfert réel explicités. |
meteora_dbc.partner_withdraw_surplus |
9 | 9 | 9 | Mono-leg fiable. |
meteora_dbc.withdraw_leftover |
10 | 10 | 10 | Mono-leg fiable. |
meteora_dbc.withdraw_migration_fee |
9 | 9 | 9 | Fee, pas migration target ; mono-leg fiable. |
meteora_dbc.zap_protocol_fee |
10 | 10 | 10 | Mono-leg fiable. |
Total meteora_dbc |
89 | n/a | 96 | Parent+legs validé. |
Socle k_sol_fee_event_amounts
La version 0.7.56 ajoute un modèle durable pour les fees composés :
k_sol_fee_eventsest le parent logique unique lié audecoded_event_id;k_sol_fee_event_amountscontient les legs de montants, avecleg_index,fee_component_kind,token_mint,amount_raw, comptes source/destination etamount_source;- un parent avec
fee_token_mint + fee_amount_rawcrée automatiquement un leg scalaire ; - un parent multi-leg/multi-mint laisse les champs scalaires du parent vides et stocke tout dans les legs ;
- les deletes/replays nettoient les legs avant ou avec le parent ;
- la requête de contrôle
parent scalar without legdoit rester vide.
Sources amount_source connues en fin de tranche :
parent_fee_event_amount
fee_event_amounts
inner_spl_transfer
lamport_balance_delta
allowlisted_inner_spl_transfer
Recovery fee allowlistée
La recovery allowlisted_inner_spl_transfer est volontairement non globale.
Elle a été testée sur anciennes bases pour enrichir les surfaces déjà connues :
| Surface testée | Résultat |
|---|---|
raydium_launchpad |
claim_creator_fee, claim_platform_fee, claim_platform_fee_from_vault, collect_fee enrichis en legs depuis CPI SPL. |
raydium_cpmm |
collect_creator_fee enrichi ; collect_fund_fee et collect_protocol_fee restent sans transfert réel exploitable dans le corpus testé. |
pump_swap |
collect_coin_creator_fee et certains transfer_creator_fees_to_pump_v2 enrichis ; cas zero/no-transfer explicités. |
pump_fees |
crank_donation_fee_pda et sweep_buyback enrichis ; events déjà scalaires conservés. |
meteora_dbc |
Non concerné par l'allowlist générique ; DBC conserve ses chemins spécifiques. |
Règle pour les prochaines versions : tout nouveau decoder doit déclarer explicitement sa policy de récupération des montants fee. Aucun futur decoder ne doit hériter automatiquement de la recovery CPI SPL.
Checks de fermeture
Les contrôles de fermeture exigés sont propres :
- fallback
upstream_gitmeteora_dbcpour entrées couvertes localement : vide ; - decoded
meteora_dbcsans coverage : vide ; - successful non-materialized sans
skip*Reasonou policy explicite : vide ; - failed tx avec materialization métier : vide ;
- multi-target materialization : vide ;
- non-swap DBC vers trade/candle : vide ;
- parent fee scalaire sans leg : vide ;
- legs fee orphelins : vide ;
- watchlist globale sans backlog dominant
meteora_dbc.
Fichiers de référence
kb_lib/src/dex/meteora_dbc.rs
kb_lib/src/non_trade_event_materialization.rs
kb_lib/src/db/queries/fee_event_amount.rs
kb_lib/src/db/entities/fee_event_amount.rs
kb_lib/src/db/dtos/fee_event_amount.rs
validation_sql/SQL_VALIDATION_METEORA_DBC_0_7_56.sql
docs/reports/FEE_EVENT_AMOUNTS_MODEL_NOTE_0_7_56.md
docs/VALIDATION_STATUS_0_7_56_FINAL.md
docs/prompts/PROMPT_0_7_57_METEORA_DLMM_FULL_DECODE_MATERIALIZATION.md
Décision
0.7.56 meteora_dbc est clôturé. La prochaine tranche est 0.7.57 meteora_dlmm en full decode + full materialization.