This commit is contained in:
2026-05-29 07:38:24 +02:00
parent 96b6209482
commit ffa4acbccb
15 changed files with 1982 additions and 107 deletions

View File

@@ -1054,19 +1054,66 @@ Reste à faire plus tard :
- descendre le ledger au niveau instruction/program lorsque nécessaire ;
- ajouter un hash dentrée transaction/instruction pour détecter les mutations de payload ;
- exposer loption `force_decode_replay` dans lUI si besoin ;
- ajouter des filtres plus fins côté UI pour diagnostiquer les lignes ledger `unsafe` ;
- ajouter des diagnostics dédiés dans `local_pipeline_diagnostics`.
### 6.077. Version `0.7.45` — `meteora_dlmm` séparé
Objectif : consolider `meteora_dlmm` comme DEX effectif séparé, avec corpus dédié et events utiles au trading.
Objectif : consolider `meteora_dlmm` comme DEX effectif séparé, avec corpus dédié et events utiles au trading, sans mélanger DAMM v1, DAMM v2 ou DBC.
À faire :
Statut : clos sur le corpus DLMM local élargi.
- vérifier le ou les `program_id` par corpus local, pas seulement par constante ;
- consolider swaps exploitables, add/remove liquidity, positions, lifecycle et audits restants ;
- matérialiser uniquement les events prouvés dans les tables dédiées ;
- conserver tout event incomplet en `instruction_audit` ou non-actionnable ;
- ajouter les compteurs diagnostics par event kind.
Fait :
- constitution dun corpus dédié `meteora_dlmm` via `Demo3`, backfill manuel des signatures anciennes du pool `HTvjzsfX3yU6BUodCjZ5vZkUrAxMDTrBs3CJaq43ashR`, puis backfill par pool address ;
- confirmation locale du programme DLMM observé `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo` dans les transactions du corpus ;
- traitement du wrapper Anchor `anchor_self_cpi_log` `e445a52e51cb9a1d` ;
- mapping prouvé localement et par IDL/Carbon des Anchor CPI swap events : `516ce3becdd00ac4` -> `Swap`, `2e7452d7941b544d` -> `Swap2Evt` ;
- enrichissement du payload `meteora_dlmm.swap` avec `anchorSwapEvent`, montants et fees CPI décodés ;
- cleanup conservatoire des audits Anchor CPI swap déjà couverts par un swap DLMM matérialisé ;
- ajout des events Anchor CPI non-swap DLMM observés : `lb_pair_create_event`, `add_liquidity_event`, `remove_liquidity_event`, `claim_fee_event`, `claim_reward_event` / `fund_reward_event` côté decoder, `position_create_event`, `position_close_event` ;
- promotion du discriminant direct `claim_fee2` vers `meteora_dlmm.claim_fee2` ;
- promotion de `close_position_if_empty` comme event de lifecycle/position close prouvé localement ;
- promotion de `remove_liquidity_by_range2`, `add_liquidity_by_strategy2` et `add_liquidity_by_weight` selon les layouts Carbon et le corpus local ;
- matérialisation validée des families non-trade dans les tables dédiées, notamment `k_sol_liquidity_events`, `k_sol_pool_lifecycle_events` et `k_sol_fee_events` ;
- maintien du ledger replay avec `effective_event_count`, afin que les `.instruction_audit` informatifs ne rendent pas inutilement les transactions `unsafe` ;
- version logique finale du replay pour la tranche : `dex_decode.v0.7.45.dlmm_add_liquidity_strategies1` ;
- maintien de la règle : aucun nouveau `program_id` nest vérifié sans corpus.
Validation locale finale observée sur la base DLMM dédiée :
| Indicateur | Valeur |
|---|---:|
| transactions rejouées | `3027` |
| trades matérialisés | `530` |
| liquidity events matérialisés | `15` |
| lifecycle events matérialisés | `6` |
| candles upsert | `2120` |
| audits DLMM résiduels | `2` |
Events DLMM observés après replay :
- `meteora_dlmm.swap` ;
- `meteora_dlmm.create_pool` ;
- `meteora_dlmm.lb_pair_create_event` ;
- `meteora_dlmm.initialize_bin_array` ;
- `meteora_dlmm.initialize_position` ;
- `meteora_dlmm.position_create_event` ;
- `meteora_dlmm.position_close_event` ;
- `meteora_dlmm.close_position_if_empty` ;
- `meteora_dlmm.add_liquidity_event` ;
- `meteora_dlmm.add_liquidity_by_strategy2` ;
- `meteora_dlmm.add_liquidity_by_weight` ;
- `meteora_dlmm.remove_liquidity_event` ;
- `meteora_dlmm.remove_liquidity` ;
- `meteora_dlmm.remove_liquidity_by_range2` ;
- `meteora_dlmm.claim_fee_event` ;
- `meteora_dlmm.claim_fee2`.
Limite conservée :
- `e445a52e51cb9a1d + e8abf2613a4d232d` reste en `meteora_dlmm.instruction_audit` avec `proofStatus = observed_local_corpus_anchor_self_cpi_log`, faute de mapping Carbon/IDL confirmé. Ces deux audits ne sont pas promus et ne bloquent pas la clôture de `0.7.45`.
Décision : `0.7.45` est clos pour `meteora_dlmm`. La suite immédiate est `0.7.46` sur `meteora_damm_v1` uniquement.
### 6.078. Version `0.7.46` — `meteora_damm_v1` séparé
Objectif : reprendre `meteora_damm_v1` sans le mélanger à DAMM v2, DBC ou DLMM.
@@ -1400,7 +1447,7 @@ Préconditions considérées acquises avant cette reprise :
Ordre de travail recommandé pour la suite :
1. `0.7.44` : ledger de décodage/replay et skip sûr ;
2. `0.7.45` : `meteora_dlmm` ;
2. `0.7.45` : `meteora_dlmm` — clos ;
3. `0.7.46` : `meteora_damm_v1` ;
4. `0.7.47` : `meteora_damm_v2` ;
5. `0.7.48` : `meteora_dbc` ;