v0.1.0-pre.074
This commit is contained in:
@@ -473,17 +473,17 @@ Les sources externes ci-dessous sont des **indices de décodage**, pas des preuv
|
||||
|
||||
Sources prioritaires :
|
||||
|
||||
| Source | Usage attendu |
|
||||
|---|---|
|
||||
| `idls/` | Corpus local d’IDL téléchargés depuis Solscan ; source de savoir locale à comparer aux sources Git avant promotion métier. |
|
||||
| `https://github.com/sevenlabs-hq/carbon/tree/main/decoders` | Source principale de discriminants, instructions et events multi-protocoles. |
|
||||
| `https://github.com/0xfnzero/solana-streamer` | Source complémentaire pour PumpFun, PumpSwap, Bonk et Raydium CPMM. |
|
||||
| `https://github.com/0xfnzero/sol-parser-sdk/tree/main/idls` | IDL complémentaires pour programmes Solana supportés par parser SDK. |
|
||||
| `https://github.com/pinax-network/substreams-solana-idls/tree/main/src` | IDL et layouts additionnels à comparer au registre local. |
|
||||
| `https://github.com/hodlwarden/solana-tx-parser/tree/main/src` | Décodage transactionnel complémentaire et conventions de mapping. |
|
||||
| `https://github.com/openbook-dex/openbook-v2` | Source officielle OpenBook v2 : programme, IDL et logs. |
|
||||
| `https://github.com/all-in-one-blockchain/phoenix-onchain-mm` | Source Phoenix/MM complémentaire pour corpus et intégration. |
|
||||
| `https://docs.vybenetwork.com/docs/available-dexs-amms` | Source de découverte de DEX/AMM supportés par Vybe, à traiter comme index externe non vérifié localement. |
|
||||
| Source | Usage attendu |
|
||||
|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------|
|
||||
| `idls/` | Corpus local d’IDL téléchargés depuis Solscan ; source de savoir locale à comparer aux sources Git avant promotion métier. |
|
||||
| `https://github.com/sevenlabs-hq/carbon/tree/main/decoders` | Source principale de discriminants, instructions et events multi-protocoles. |
|
||||
| `https://github.com/0xfnzero/solana-streamer` | Source complémentaire pour PumpFun, PumpSwap, Bonk et Raydium CPMM. |
|
||||
| `https://github.com/0xfnzero/sol-parser-sdk/tree/main/idls` | IDL complémentaires pour programmes Solana supportés par parser SDK. |
|
||||
| `https://github.com/pinax-network/substreams-solana-idls/tree/main/src` | IDL et layouts additionnels à comparer au registre local. |
|
||||
| `https://github.com/hodlwarden/solana-tx-parser/tree/main/src` | Décodage transactionnel complémentaire et conventions de mapping. |
|
||||
| `https://github.com/openbook-dex/openbook-v2` | Source officielle OpenBook v2 : programme, IDL et logs. |
|
||||
| `https://github.com/all-in-one-blockchain/phoenix-onchain-mm` | Source Phoenix/MM complémentaire pour corpus et intégration. |
|
||||
| `https://docs.vybenetwork.com/docs/available-dexs-amms` | Source de découverte de DEX/AMM supportés par Vybe, à traiter comme index externe non vérifié localement. |
|
||||
|
||||
|
||||
## 1. Objectif
|
||||
@@ -504,10 +504,10 @@ Le but court terme n’est pas encore le live trading. Le but court terme est de
|
||||
|
||||
Le workspace contient deux crates principales.
|
||||
|
||||
| Crate | Rôle |
|
||||
|---|---|
|
||||
| `kb_lib` | Bibliothèque métier : configuration, tracing, clients réseau, pool HTTP, manager WS, résolution transactionnelle, décodage DEX, détection métier, persistance SQLite, backfill, metadata, candles, signaux analytiques, validation et diagnostics. |
|
||||
| `kb_demo_app` | Application Tauri V2 de démonstration et d’inspection : fenêtres `Demo Ws`, `Demo Ws Manager`, `Demo Http`, `Demo Pipeline`, `Demo Pipeline 2`, `Demo3`, graphiques candles et commandes de backfill/replay. |
|
||||
| Crate | Rôle |
|
||||
|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `kb_lib` | Bibliothèque métier : configuration, tracing, clients réseau, pool HTTP, manager WS, résolution transactionnelle, décodage DEX, détection métier, persistance SQLite, backfill, metadata, candles, signaux analytiques, validation et diagnostics. |
|
||||
| `kb_demo_app` | Application Tauri V2 de démonstration et d’inspection : fenêtres `Demo Ws`, `Demo Ws Manager`, `Demo Http`, `Demo Pipeline`, `Demo Pipeline 2`, `Demo3`, graphiques candles et commandes de backfill/replay. |
|
||||
|
||||
La logique métier doit rester dans `kb_lib`. `kb_demo_app` doit rester une façade UI/Tauri utilisée pour inspecter, backfiller et constituer du corpus on-chain ; elle ne doit pas récupérer de logique DEX profonde.
|
||||
|
||||
@@ -546,16 +546,16 @@ Le pipeline `0.7.x` couvre déjà les étapes suivantes :
|
||||
|
||||
Un corpus local de reprise contient notamment :
|
||||
|
||||
| Indicateur | Valeur observée |
|
||||
|---|---:|
|
||||
| transactions chain | `2956` |
|
||||
| decoded events | `7159` |
|
||||
| trade events | `2738` |
|
||||
| liquidity events | `0` |
|
||||
| pool lifecycle events | `1` |
|
||||
| fee events | `0` |
|
||||
| reward events | `0` |
|
||||
| admin events | `0` |
|
||||
| Indicateur | Valeur observée |
|
||||
|-----------------------|----------------:|
|
||||
| transactions chain | `2956` |
|
||||
| decoded events | `7159` |
|
||||
| trade events | `2738` |
|
||||
| liquidity events | `0` |
|
||||
| pool lifecycle events | `1` |
|
||||
| fee events | `0` |
|
||||
| reward events | `0` |
|
||||
| admin events | `0` |
|
||||
|
||||
Cette distribution montre que les swaps sont déjà fortement présents, mais que la matérialisation non-trade n’est pas encore homogène sur le corpus courant. Les nombreux `instruction_audit`, surtout côté Meteora, doivent devenir un axe de travail DEX par DEX.
|
||||
|
||||
@@ -563,34 +563,34 @@ Cette distribution montre que les swaps sont déjà fortement présents, mais qu
|
||||
|
||||
Les surfaces suivantes existent dans le code, dans la matrice ou dans le corpus local. Leur niveau de preuve doit rester explicite.
|
||||
|
||||
| Code | Statut de travail | Commentaire |
|
||||
|---|---|---|
|
||||
| `pump_fun` | launch surface | Surface de launch / mint initial. À traiter après les DEX effectifs sauf besoin de migration. |
|
||||
| `pump_swap` | DEX effectif | Swaps `buy` / `sell` observés. Non-trade à étendre plus tard. |
|
||||
| `raydium_cpmm` | DEX effectif consolidé partiellement | Swaps et premiers events non-trade prouvés sur corpus antérieur. |
|
||||
| `raydium_clmm` | DEX effectif consolidé partiellement | Swaps v2/legacy, positions et liquidity events prouvés sur corpus antérieur. |
|
||||
| `raydium_amm_v4` | DEX effectif legacy | Swaps AMM v4 legacy matérialisés ; non-swaps legacy conservés en audit tant que le corpus ne permet pas une promotion fiable. |
|
||||
| `meteora_dlmm` | DEX effectif consolidé en `0.7.45` | Swaps, Anchor CPI swap events, liquidity, positions, fees et lifecycle principaux validés par corpus local ; deux Anchor CPI audits résiduels `e8abf2613a4d232d` restent volontairement non mappés. |
|
||||
| `meteora_damm_v1` | DEX effectif en consolidation `0.7.46` | Swaps présents ; decoder étendu aux create_pool, liquidity, claim_fee et lock events DAMM v1 mappés upstream Git/corpus local. Validation DB à rejouer sur base dédiée. |
|
||||
| `meteora_damm_v2` | DEX effectif à reprendre séparément | Swaps et create_pool observés ; nombreux audits à traiter. |
|
||||
| `meteora_dbc` | launch/bonding + DEX effectif partiel à reprendre séparément | Gros volume d’audits ; séparer bonding/launch, swap effectif et migration. |
|
||||
| `orca_whirlpools` | DEX effectif à vérifier | À revalider par corpus dédié avant promotion. |
|
||||
| `fluxbeam` | DEX effectif à vérifier | Program id, corpus et events à vérifier. |
|
||||
| `dexlab` | DEX effectif à vérifier | Program id, corpus et events à vérifier. |
|
||||
| `metaDAO` | candidat à vérifier | Aucun `program_id` ne doit être déclaré vérifié sans preuve/corpus. |
|
||||
| `printr` | candidat à vérifier | Aucun `program_id` ne doit être déclaré vérifié sans preuve/corpus. |
|
||||
| Code | Statut de travail | Commentaire |
|
||||
|-------------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `pump_fun` | launch surface | Surface de launch / mint initial. À traiter après les DEX effectifs sauf besoin de migration. |
|
||||
| `pump_swap` | DEX effectif | Swaps `buy` / `sell` observés. Non-trade à étendre plus tard. |
|
||||
| `raydium_cpmm` | DEX effectif consolidé partiellement | Swaps et premiers events non-trade prouvés sur corpus antérieur. |
|
||||
| `raydium_clmm` | DEX effectif consolidé partiellement | Swaps v2/legacy, positions et liquidity events prouvés sur corpus antérieur. |
|
||||
| `raydium_amm_v4` | DEX effectif legacy | Swaps AMM v4 legacy matérialisés ; non-swaps legacy conservés en audit tant que le corpus ne permet pas une promotion fiable. |
|
||||
| `meteora_dlmm` | DEX effectif consolidé en `0.7.45` | Swaps, Anchor CPI swap events, liquidity, positions, fees et lifecycle principaux validés par corpus local ; deux Anchor CPI audits résiduels `e8abf2613a4d232d` restent volontairement non mappés. |
|
||||
| `meteora_damm_v1` | DEX effectif en consolidation `0.7.46` | Swaps présents ; decoder étendu aux create_pool, liquidity, claim_fee et lock events DAMM v1 mappés upstream Git/corpus local. Validation DB à rejouer sur base dédiée. |
|
||||
| `meteora_damm_v2` | DEX effectif à reprendre séparément | Swaps et create_pool observés ; nombreux audits à traiter. |
|
||||
| `meteora_dbc` | launch/bonding + DEX effectif partiel à reprendre séparément | Gros volume d’audits ; séparer bonding/launch, swap effectif et migration. |
|
||||
| `orca_whirlpools` | DEX effectif à vérifier | À revalider par corpus dédié avant promotion. |
|
||||
| `fluxbeam` | DEX effectif à vérifier | Program id, corpus et events à vérifier. |
|
||||
| `dexlab` | DEX effectif à vérifier | Program id, corpus et events à vérifier. |
|
||||
| `metaDAO` | candidat à vérifier | Aucun `program_id` ne doit être déclaré vérifié sans preuve/corpus. |
|
||||
| `printr` | candidat à vérifier | Aucun `program_id` ne doit être déclaré vérifié sans preuve/corpus. |
|
||||
|
||||
### 3.5. Statuts de preuve obligatoires
|
||||
|
||||
Aucun `program_id`, DEX ou event ne doit être documenté comme vérifié sans preuve reproductible.
|
||||
|
||||
| Statut | Sens |
|
||||
|---|---|
|
||||
| `known` | Connu/listé dans le code, une doc, une source externe ou la matrice. |
|
||||
| `observed` | Vu dans une transaction, une instruction, une base locale ou un corpus on-chain. |
|
||||
| `decoded` | Un decoder produit un event structuré ou un `instruction_audit` classé. |
|
||||
| `materialized` | L’event alimente une table métier dédiée : trade, liquidity, lifecycle, fee, reward, admin, mint/burn, etc. |
|
||||
| `verified_by_corpus` | Validé par requêtes SQL, signatures/corpus reproductibles et invariants de validation. |
|
||||
| Statut | Sens |
|
||||
|----------------------|-------------------------------------------------------------------------------------------------------------|
|
||||
| `known` | Connu/listé dans le code, une doc, une source externe ou la matrice. |
|
||||
| `observed` | Vu dans une transaction, une instruction, une base locale ou un corpus on-chain. |
|
||||
| `decoded` | Un decoder produit un event structuré ou un `instruction_audit` classé. |
|
||||
| `materialized` | L’event alimente une table métier dédiée : trade, liquidity, lifecycle, fee, reward, admin, mint/burn, etc. |
|
||||
| `verified_by_corpus` | Validé par requêtes SQL, signatures/corpus reproductibles et invariants de validation. |
|
||||
|
||||
### 3.6. État validé de `meteora_dlmm` en `0.7.45`
|
||||
|
||||
@@ -598,25 +598,25 @@ La tranche `0.7.45` clôt la normalisation séparée de `meteora_dlmm` sur le co
|
||||
|
||||
Éléments validés :
|
||||
|
||||
| Famille | Events DLMM couverts |
|
||||
|---|---|
|
||||
| Swaps | `swap`, `swap2`, `swap_exact_out` lorsque présents, avec enrichissement `anchorSwapEvent` pour `Swap` / `Swap2Evt`. |
|
||||
| Création / lifecycle | `create_pool`, `lb_pair_create_event`, `initialize_bin_array`, `initialize_position`. |
|
||||
| Positions | `position_create_event`, `position_close_event`, `close_position_if_empty`. |
|
||||
| Liquidité | `add_liquidity_event`, `add_liquidity_by_strategy2`, `add_liquidity_by_weight`, `remove_liquidity_event`, `remove_liquidity`, `remove_liquidity_by_range2`. |
|
||||
| Fees | `claim_fee_event`, `claim_fee2`. |
|
||||
| Rewards | Décodeurs Anchor CPI présents pour `claim_reward_event` / `fund_reward_event`, mais non observés dans le corpus final `0.7.45`. |
|
||||
| Famille | Events DLMM couverts |
|
||||
|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Swaps | `swap`, `swap2`, `swap_exact_out` lorsque présents, avec enrichissement `anchorSwapEvent` pour `Swap` / `Swap2Evt`. |
|
||||
| Création / lifecycle | `create_pool`, `lb_pair_create_event`, `initialize_bin_array`, `initialize_position`. |
|
||||
| Positions | `position_create_event`, `position_close_event`, `close_position_if_empty`. |
|
||||
| Liquidité | `add_liquidity_event`, `add_liquidity_by_strategy2`, `add_liquidity_by_weight`, `remove_liquidity_event`, `remove_liquidity`, `remove_liquidity_by_range2`. |
|
||||
| Fees | `claim_fee_event`, `claim_fee2`. |
|
||||
| Rewards | Décodeurs Anchor CPI présents pour `claim_reward_event` / `fund_reward_event`, mais non observés dans le corpus final `0.7.45`. |
|
||||
|
||||
Validation locale finale sur la base DLMM dédiée :
|
||||
|
||||
| Indicateur | Valeur observée |
|
||||
|---|---:|
|
||||
| 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` |
|
||||
| Indicateur | Valeur observée |
|
||||
|-------------------------------|----------------:|
|
||||
| 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` |
|
||||
|
||||
Les deux audits restants sont `e445a52e51cb9a1d + e8abf2613a4d232d`. Ils restent en `meteora_dlmm.instruction_audit`, car aucun mapping upstream Git/IDL suffisamment fiable n’a été confirmé. Ils ne bloquent pas la clôture de `0.7.45`.
|
||||
|
||||
@@ -643,21 +643,21 @@ Chaque DEX ou variante de DEX doit avoir sa propre étape de validation. Les fam
|
||||
|
||||
### 4.1. Ordre de travail DEX effectifs
|
||||
|
||||
| Priorité | Code cible | Rôle | Action prochaine |
|
||||
|---:|---|---|---|
|
||||
| 1 | `pump_swap` | AMM / swap | Maintenir les invariants swaps et chercher les non-trade prouvés. |
|
||||
| 2 | `raydium_cpmm` | AMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. |
|
||||
| 3 | `raydium_clmm` | CLMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. |
|
||||
| 4 | `raydium_amm_v4` | AMM legacy actif | Garder swaps ; ne promouvoir les non-swaps qu’avec corpus. |
|
||||
| 5 | `meteora_dlmm` | DLMM | Reprendre séparément : swaps, liquidity, positions, lifecycle, fees/rewards/admin. |
|
||||
| 6 | `meteora_damm_v1` | AMM | Reprendre séparément : swaps exploitables, pools, liquidity, fees/admin. |
|
||||
| 7 | `meteora_damm_v2` | AMM | Reprendre séparément : create_pool, swaps exploitables, configs dynamiques, non-trade. |
|
||||
| 8 | `meteora_dbc` | bonding / DEX effectif partiel | Reprendre séparément : swap effectif, bonding curve, migration, launch attribution. |
|
||||
| 9 | `orca_whirlpools` | CLMM | Revalider par corpus dédié. |
|
||||
| 10 | `fluxbeam` | AMM | Vérifier program id, events et corpus. |
|
||||
| 11 | `dexlab` | AMM | Vérifier program id, events et corpus. |
|
||||
| 12 | `metaDAO` | candidat DEX | Vérifier par corpus avant toute promotion. |
|
||||
| 13 | `printr` | candidat DEX | Vérifier par corpus avant toute promotion. |
|
||||
| Priorité | Code cible | Rôle | Action prochaine |
|
||||
|---------:|-------------------|--------------------------------|----------------------------------------------------------------------------------------|
|
||||
| 1 | `pump_swap` | AMM / swap | Maintenir les invariants swaps et chercher les non-trade prouvés. |
|
||||
| 2 | `raydium_cpmm` | AMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. |
|
||||
| 3 | `raydium_clmm` | CLMM | Garder consolidé ; ne rouvrir que sur nouveaux discriminators/corpus. |
|
||||
| 4 | `raydium_amm_v4` | AMM legacy actif | Garder swaps ; ne promouvoir les non-swaps qu’avec corpus. |
|
||||
| 5 | `meteora_dlmm` | DLMM | Reprendre séparément : swaps, liquidity, positions, lifecycle, fees/rewards/admin. |
|
||||
| 6 | `meteora_damm_v1` | AMM | Reprendre séparément : swaps exploitables, pools, liquidity, fees/admin. |
|
||||
| 7 | `meteora_damm_v2` | AMM | Reprendre séparément : create_pool, swaps exploitables, configs dynamiques, non-trade. |
|
||||
| 8 | `meteora_dbc` | bonding / DEX effectif partiel | Reprendre séparément : swap effectif, bonding curve, migration, launch attribution. |
|
||||
| 9 | `orca_whirlpools` | CLMM | Revalider par corpus dédié. |
|
||||
| 10 | `fluxbeam` | AMM | Vérifier program id, events et corpus. |
|
||||
| 11 | `dexlab` | AMM | Vérifier program id, events et corpus. |
|
||||
| 12 | `metaDAO` | candidat DEX | Vérifier par corpus avant toute promotion. |
|
||||
| 13 | `printr` | candidat DEX | Vérifier par corpus avant toute promotion. |
|
||||
|
||||
### 4.2. Launch surfaces reportées
|
||||
|
||||
@@ -738,18 +738,18 @@ Table actuelle :
|
||||
|
||||
Champs principaux :
|
||||
|
||||
| Champ conceptuel | Rôle |
|
||||
|---|---|
|
||||
| `transaction_id` / `signature` | rattachement transactionnel stable |
|
||||
| `decoder_scope` | périmètre logique du decoder, actuellement `dex_decode.local_pipeline` |
|
||||
| `decoder_version` | version logique du decoder |
|
||||
| `decode_status` | `decoded` ou `no_events` dans la première implémentation |
|
||||
| `certainty` | `sure` ou `unsafe` |
|
||||
| `event_count` | nombre total d’events persistés |
|
||||
| `distinct_token_mint_count` | garde-fou multi-token |
|
||||
| `force_replay_required` | indique que le décodage doit être relancé |
|
||||
| `status_reason` | diagnostic lisible sans panic |
|
||||
| `created_at` / `updated_at` | audit local |
|
||||
| Champ conceptuel | Rôle |
|
||||
|--------------------------------|------------------------------------------------------------------------|
|
||||
| `transaction_id` / `signature` | rattachement transactionnel stable |
|
||||
| `decoder_scope` | périmètre logique du decoder, actuellement `dex_decode.local_pipeline` |
|
||||
| `decoder_version` | version logique du decoder |
|
||||
| `decode_status` | `decoded` ou `no_events` dans la première implémentation |
|
||||
| `certainty` | `sure` ou `unsafe` |
|
||||
| `event_count` | nombre total d’events persistés |
|
||||
| `distinct_token_mint_count` | garde-fou multi-token |
|
||||
| `force_replay_required` | indique que le décodage doit être relancé |
|
||||
| `status_reason` | diagnostic lisible sans panic |
|
||||
| `created_at` / `updated_at` | audit local |
|
||||
|
||||
## 6. Politique de replay
|
||||
|
||||
|
||||
Reference in New Issue
Block a user