v0.4.8-pre.015

This commit is contained in:
2026-08-09 12:57:24 +02:00
parent aec7b4b76a
commit 3a509acb82
17 changed files with 570 additions and 271 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/DEVNET_EXECUTION_GUIDE.md -->
<!-- version: 23 -->
<!-- version: 24 -->
# Guide dexécution Devnet
@@ -14,8 +14,8 @@ Ce guide décrit la campagne Devnet de `kb-app-demo-desktop` et `kb-pipeline-dem
5. SPL Associated Token Account — mint Token-2022 ;
6. SPL Token classique ;
7. Token-2022 ;
8. registre ElGamal ;
9. Metaplex Token Metadata — préparation de fixture, simulation puis soumission explicite.
8. registre ElGamal — reporté tant que sa fixture de preuve réelle manque ;
9. Metadata on-chain — Solana Program Metadata, Token-2022 Token Metadata et Metaplex Token Metadata dans `demo_execution_metadata`.
Les commandes réutilisables sont centralisées en section 4. Chaque scénario référence leur identifiant `Cxx` au lieu de les recopier.
@@ -100,7 +100,7 @@ Arrêter avec `Ctrl+C`, puis relancer `T01`.
### C01 — Initialiser lenvironnement de validation
```bash
cd ~/Projects/khadhroony-bot3 && set -o pipefail && export KB_DEVNET_PROFILE="local_devnet" && export KB_DEVNET_RPC_URL="https://api.devnet.solana.com" && export KB_DEVNET_VALIDATION_DIR="/tmp/devnet-validation/current" && export KB_DEVNET_WALLET="$PWD/wallets/temporary/local_devnet/local-devnet-operator.json" && mkdir -p "$KB_DEVNET_VALIDATION_DIR" && printf 'Profil : %s\n' "$KB_DEVNET_PROFILE" && printf 'RPC Devnet : %s\n' "$KB_DEVNET_RPC_URL" && printf 'Preuves : %s\n' "$KB_DEVNET_VALIDATION_DIR" && printf 'Wallet : %s\n' "$KB_DEVNET_WALLET";
cd ~/Projects/khadhroony-bot3 && set -o pipefail && export KB_DEVNET_PROFILE="local_devnet" && export KB_DEVNET_RPC_URL="https://api.devnet.solana.com" && export KB_DEVNET_VALIDATION_DIR="/tmp/devnet-validation/current" && export KB_DEVNET_WALLET="$PWD/wallets/temporary/local_devnet/local-devnet-operator.json" && mkdir -p "$KB_DEVNET_VALIDATION_DIR" && printf 'Profil : %s\n' "$KB_DEVNET_PROFILE" && printf 'RPC Devnet : %s\n' "$KB_DEVNET_RPC_URL" && printf 'Preuves : %s\n' "$KB_DEVNET_VALIDATION_DIR" && printf 'Wallet : %s\n' "$KB_DEVNET_WALLET";
```
### C02 — Capturer les versions CLI
@@ -114,7 +114,7 @@ Chaque campagne doit capturer les versions exactes des outils externes quelle
### C03 — Vérifier lidentité du réseau
```bash
solana config set --url "$KB_DEVNET_RPC_URL" && { date --iso-8601=seconds; solana config get; solana cluster-version --url "$KB_DEVNET_RPC_URL"; solana genesis-hash --url "$KB_DEVNET_RPC_URL"; solana epoch-info --url "$KB_DEVNET_RPC_URL"; } | tee "$KB_DEVNET_VALIDATION_DIR/01-devnet-network.txt";
solana config set --url "$KB_DEVNET_RPC_URL" && { date --iso-8601=seconds; solana config get; solana cluster-version --url "$KB_DEVNET_RPC_URL"; solana genesis-hash --url "$KB_DEVNET_RPC_URL"; solana epoch-info --url "$KB_DEVNET_RPC_URL"; } | tee "$KB_DEVNET_VALIDATION_DIR/01-devnet-network.txt";
```
Le genesis hash Devnet attendu est :
@@ -302,8 +302,6 @@ Le compte `TOKEN_2022_CLOSE_ACCOUNT` doit rester vide jusqu'au scénario `CloseA
### C12 — Preuves applicatives communes
Pour chaque scénario, conserver depuis lapplication :
- profil et cluster résolus ;
@@ -776,37 +774,60 @@ Les champs envisagés sont :
Ne pas fabriquer une preuve de validation à partir dun compte quelconque. La future campagne S06 devra produire sa propre fixture, exécuter simulation et envoi, confirmer la signature, puis vérifier insertion canonique, extraction Core, replay, projection admin et idempotence.
## 12. Future fenêtre Metadata
## 12. Scénario S07 — Metadata on-chain
La future fenêtre metadata devra suivre la même structure : commandes communes `C01` à `C12`, puis scénarios séparés pour les metadata incorporées Token-2022, Metaplex Token Metadata et lenrichissement off-chain indépendant.
### Surface réellement exposée
La fenêtre `demo_execution_metadata` regroupe trois domaines on-chain distincts sans les fusionner :
- Solana Program Metadata, Program ID `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` ;
- Token-2022 Token Metadata, exécuté par le programme Token-2022 à partir du contrat `spl-token-metadata-interface` ;
- Metaplex Token Metadata, Program ID `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`.
Le profil Devnet sélectionné est synchronisé entre les trois accordéons. Les résultats détaillés utilisent les trois accordéons **Préflight et opérations**, **Simulation et confirmation** et **Postconditions et preuves**. Le journal dexécution reste en pleine largeur sous la grille. Aucun bouton de fetch HTTP, IPFS ou Arweave nest exposé.
### Qualification courante
Les matrices réseau actives sont déjà qualifiées :
- Solana Program Metadata : neuf opérations `confirmed` par les deux campagnes `pre.010` ;
- Token-2022 Token Metadata : cinq opérations `confirmed` par la campagne `pre.012` (`Initialize`, `UpdateField`, `Emit`, `RemoveKey`, `UpdateAuthority`) ;
- Metaplex Token Metadata : 20 opérations courantes classées en `pre.013`, avec 15 `confirmed`, 5 `unavailable` et 0 `not_run`.
Les cinq indisponibilités Metaplex restent bornées par leurs preuves runtime : `Use`, `Resize`, `Migrate`, `Collect` et `CloseAccounts`. Une simulation négative ne doit jamais être transformée en autorisation de soumission.
### Revalidation depuis le desktop
Une revalidation complète nest pas requise à chaque changement documentaire. En cas de régression du runtime, du transport, de lorchestration ou du panneau :
1. démarrer Tauri avec `T01` et sélectionner un profil Devnet persistant ;
2. préparer la base depuis le panneau Metadata ;
3. conserver `simulation-first`, les limites de coût et la confirmation opérateur explicite ;
4. exécuter uniquement la campagne spécialisée concernée ;
5. vérifier la confirmation, lhydratation canonique, lextraction Core, le replay, la matérialisation, les postconditions et lidempotence ;
6. comparer le résultat à la matrice Devnet active du domaine avant toute modification de statut.
Pour Metaplex, utiliser les campagnes qualifiées du panneau (`Create -> Mint`, collection, `Print -> Burn`, lifecycle pNFT, escrow, maintenance et probe `Use`) plutôt que reconstruire manuellement un intent générique. Pour Token-2022 Token Metadata et Solana Program Metadata, utiliser leurs campagnes dédiées déjà exposées par le panneau.
### Critères de validation
- le Program ID et le domaine sélectionnés restent exacts ;
- les transactions soumises sont précédées dune simulation réussie du même message ;
- les opérations classées `unavailable` restent simulation-only ;
- les preuves canonical/Core/replay/materialization/postconditions restent cohérentes avec la matrice active ;
- les JsonViewer ne remplacent pas les preuves persistées ; ils les rendent seulement observables dans le desktop ;
- aucune résolution off-chain nest effectuée par le replay canonique ou par le panneau Metadata.
## 13. Critères de clôture de la campagne
La campagne est clôturable uniquement lorsque :
- tous les scénarios déclarés validables dans la campagne ont été rejoués depuis une base Devnet propre ;
- toutes les signatures S01 à S05 sont confirmées sur Devnet ;
- toutes les signatures des scénarios effectivement rejoués sont confirmées sur Devnet ;
- toute surface reportée est identifiée explicitement avec ses prérequis manquants ;
- les preuves S07 restent concordantes avec les matrices Metadata actives, sans imposer un rerun réseau en labsence de régression ;
- les identités persistées respectent la nomenclature canonique ;
- aucun ancien `processor_name`, `surface_code`, `operation_code` ou `event_code` ne subsiste ;
- le replay ciblé est sans échec ni erreur de traitement ;
- les projections sont présentes et idempotentes ;
- le présent guide reflète les commandes réellement exécutées.
## 10. Metaplex Token Metadata
Dans `demo_execution_metadata`, sélectionner un profil Devnet puis préparer sa base. Le panneau charge le même inventaire de profils que les démonstrations Solana Core et SPL.
Pour `Create`, utiliser **Préparer la fixture Create**. Cette action :
1. charge le wallet persistant du profil ;
2. crée ou réutilise un mint SPL classique à zéro décimale ;
3. dérive automatiquement les PDA `metadata` et `master edition` ;
4. génère lintent typé prêt à simuler.
Les placeholders entre chevrons ne sont jamais des valeurs exécutables. Toujours lancer une simulation RPC avant dactiver la soumission et la confirmation opérateur. Le journal du panneau et les blocs JSON titrés constituent les preuves applicatives immédiates ; la signature, le slot et les postconditions sont requis pour déclarer une validation réseau.
### Paramètres communs du panneau Metadata
Le panneau Metaplex utilise le même modèle opérateur que Solana Core et SPL : profil Devnet préparé, limites de dépense visibles, journal commun avec une seule barre `Copier` / `Effacer`, bouton de simulation distinct du bouton de soumission et confirmation opérateur séparée. Une soumission construit un plan avec `dry_run = false`, mais la transaction ne peut être signée ou envoyée qu'après réussite de la simulation exacte du même message.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/IDL_AUDIT.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# Audit des IDL v3
@@ -20,96 +20,96 @@ Le tag `5` a porté le nom de travail `WithdrawExcessLamports` avant la premièr
## Inventaire
| Nom v3 | Program ID déclaré | Version déclarée | Instructions | SHA-256 |
|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------|-----------------:|-------------:|--------------------------------------------------------------------|
| `adapter.DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB.saber_decimal_wrapper.V0_0_0.from_solscan.json` | `non déclaré` | `0.0.0` | 3 | `1b357156864a702c5a1019fd1d19bd5b60661f33101d46a77899b88c8fbc87da` |
| `adapter.TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR.spl_token_wrap.V0_1_0.from_github_solana_program.json` | `TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR` | `0.1.0` | 6 | `8b0a4f56ea3bfa66ba2a1de8523a693629fb3a24417e28f338985eeddbf95cfc` |
| `amm.2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.lifinity_swap_v2.V0_1_1.from_solscan.json` | `non déclaré` | `0.1.1` | 3 | `bbfefa42ca3ffa024acca68cc0e14c7c4babbc2928923d02d615620b18624910` |
| `amm.AMMJdEiCCa8mdugg6JPF7gFirmmxisTfDJoSNSUi5zDJ.metadao_v0_5.V0_5_0.from_solscan.json` | `non déclaré` | `0.5.0` | 5 | `34c20e1ef623e96cd677f30548cadad2c49fc2b33217911c09b743d278bbae26` |
| `amm.BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.bonk_swap.V0_1_1.from_solscan.json` | `non déclaré` | `0.1.1` | 19 | `27eca49509a866341def453cf303aa8e524a7f8f42a9ab76900c63bbb215c001` |
| `amm.Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.meteora_damm_v1.V0_5_2.from_solscan.json` | `non déclaré` | `0.5.2` | 26 | `0dd02f981806be81c15353b009a4f077d8f59f7e0192af6bc89d56acaed36f6e` |
| `amm.GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT.goosefx_gamma.V0_2_0.from_solscan.json` | `GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT` | `0.2.0` | 27 | `f515cfbeffebb5019ca15e25c2055fe1ea72882abc0b4a0dfbd6634eb1fa558b` |
| `amm.GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.goosefx_v2.V0_3_0.from_solscan.json` | `non déclaré` | `0.3.0` | 8 | `ddfe3e78103781cb6189d928a8ad1c00325d668a01a7ef20fe32307424ad203d` |
| `amm.Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1.guac_swap.V0_1_1.from_solscan.json` | `non déclaré` | `0.1.1` | 20 | `11dcb508fc32854aed599f860636e8b3e9de50abb9fdfc3126bc032ec6cae98a` |
| `amm.WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb.woofi.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 41 | `864c5bd4331b8190e2e8cb8f9d01ba7bdbb42ba1e470cc6fbf95d3f9fb4c25b6` |
| `amm.cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG.meteora_damm_v2.V0_2_0.from_solscan.json` | `cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG` | `0.2.0` | 38 | `86077cdb029944c16e6e7515fb3c3a3fba4f7821003a6d23507784e7d66d4ff9` |
| `amm.pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.pump_swap.V0_1_0.from_solscan.json` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | `0.1.0` | 27 | `7e56e6acb0bd34530386abe3e91e89ecab66f9c2cbb1e959c4c941e09c0b0316` |
| `amm.vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ.vertigo.V0_1_0.from_solscan.json` | `vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ` | `0.1.0` | 6 | `08f8a5aeba3197dca7f5702d6c0c91f0da9d96d1cd80815d2104b484e49d6103` |
| `bridge.6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn.layer_zero_executor.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 8 | `6b2f1390e8647ea2a2b206c262e7ca226c11c014a49c6a948e208ef0a113f2cc` |
| `bridge.76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6.layer_zero_endpoint.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 32 | `5a1210a5325cc52196f33122485e6c10b4d1d19c919e9da85440aad97ca147dd` |
| `bridge.CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe.circle_cctp_token_messenger_minter_v2.V0_2_0.from_solscan.json` | `CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe` | `0.2.0` | 25 | `7d12fedcd1a923ac1b4ce8dee1ca241ffc37c7c8f7682974bd14ebb75dd36520` |
| `bridge.CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3.circle_cctp_token_messenger_minter.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 19 | `0a5b235212bf5c1791cb62d3775feeddfe8a6c81120455d60fb0d834afcd3f75` |
| `clmm.6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6.stabble.V0_1_0.from_solscan.json` | `6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6` | `0.1.0` | 21 | `d0abb8e6b7f5b0e7ff0e73df2e94185d1d42b8e7e967f0341d2325ee99eccf37` |
| `clmm.CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.raydium.V0_1_0.from_solscan.json` | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | `0.1.0` | 34 | `6cda2dfa4a880fea3ac91f5055dc1d9b64b799bde997a7941a181f70d6e226fc` |
| `clmm.HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq.pancake_swap.V0_1_0.from_solscan.json` | `HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq` | `0.1.0` | 27 | `271fe54bb767dd63bb2194b6f40164026476cb871b8e624b8ab10d65d7ccf846` |
| `clmm.REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2.byreal.V0_1_0.from_solscan.json` | `REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2` | `0.1.0` | 35 | `2192c87aaf13cf2838dc939bca965e1f9cd8bc2e1c0bc15c54804072390f1d3a` |
| `clmm.fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9.fusion.V1_1_4.from_solscan.json` | `fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9` | `1.1.4` | 33 | `dfc258caa3c4060b761759d1d3120cfd87ac1c2a47c3f061d97ceb4eed97d0a5` |
| `clmm.whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.orca_whirlpool.V0_9_0.from_solscan.json` | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc` | `0.9.0` | 66 | `b858ae977743365529c970ced550eba435fa282a198c7d1a620865bd6e424460` |
| `cpmm.CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.raydium.V0_2_0.from_solscan.json` | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | `0.2.0` | 14 | `e4cbb793a8724e37cba2c92b38d074a9ddec9b810757b5fb404da523cfb4b59f` |
| `dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.meteora.V0_12_0.from_solscan.json` | `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo` | `0.12.0` | 76 | `24b04bbd70964c7a128b7c8df46be6000b43d7814e1ec54140728b7aedb60970` |
| `fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.pump_fees.V0_1_0.from_solscan.json` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | `0.1.0` | 29 | `2f8c355c5af9d95891f64fd71986f01f8a630e62dec032d0de42bb23dfa3518e` |
| `governance.FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq.metadao_futarchy.V0_6_1.from_solscan.json` | `non déclaré` | `0.6.1` | 23 | `1a35740c627990de699ea526ed83becf4331b40dbeea96687fa584f4a468ac81` |
| `governance.SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf.squads_multisig.V2_0_0.from_solscan.json` | `non déclaré` | `2.0.0` | 31 | `5304fa2bac2d6ed5a749267ad0cfce217e9ecbf369805ececa0a83c12c51ac56` |
| `governance.WALL8ucBuUyL46QYxwYJjidaFYhdvxUFrgvBxPshERx.metadao_bid_wall.V0_7_0.from_solscan.json` | `non déclaré` | `0.7.0` | 5 | `6e48c20a4e6ffc1b3226ea2d31e846a4a1d2851d593dad3d8531e5de63b65fa2` |
| `launchpad.5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki.virtuals.V0_1_0.from_solscan.json` | `5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki` | `0.1.0` | 8 | `a61fe5f6fd5add913dfde81e6c30c4a6051a226a741dc2cf7d625298da8260fa` |
| `launchpad.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.pump_fun.V0_1_0.from_solscan.json` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | `0.1.0` | 40 | `5c3c6b548cb3845717eaa483e828aa8e938fc46a847b06f58dbb8e692015bed4` |
| `launchpad.LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.raydium_launchlab.V0_2_0.from_solscan.json` | `LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj` | `0.2.0` | 25 | `f0f1c0c1fa9fb5cb19ba451c2148defc0e13dc33cf2a12b86790ac919ddeb1c1` |
| `launchpad.MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG.moonit.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 6 | `ca1463bb404aa960a02a744a7b80e88a9706b7ad12fa018de14c445d5e8ec2c6` |
| `launchpad.PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd.pump_pumpup_ai.V0_1_0.from_solscan.json` | `PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd` | `0.1.0` | 20 | `841e845ea956220d2f2bf6546efacad218b6d59097709e8a0de205b4cb9e32db` |
| `launchpad.T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint.printr.V1_0_0.from_solscan.json` | `T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint` | `1.0.0` | 28 | `6124c944d3c45529fa3cdff6a69e842ed062892e7f7b53ccb25c13fad4957b5c` |
| `launchpad.boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4.boop_fun.V0_3_0.from_solscan.json` | `boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4` | `0.3.0` | 29 | `f68e54671b2e80344804d499e5b8c4bd87e1a3f8705e85b69cdaf3540bcb41c5` |
| `launchpad.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.meteora_dbc.V0_1_10.from_solscan.json` | `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN` | `0.1.10` | 28 | `3499aacfe5647ea5a43951094e702826c46163b8e4678d5e75976955846a94d3` |
| `launchpad.moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM.metadao_ico.V0_7_0.from_solscan.json` | `non déclaré` | `0.7.0` | 13 | `852eb123ab405ce54fa67f1237cfe4da9d66033457ad0f129a287989c675cc43` |
| `launchpad.waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF.orca_wavebreak.V1_1_5.from_solscan.json` | `waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF` | `1.1.5` | 64 | `f38f1c00c81bcd94649fa2af5a7fc413149550718402fe1c4e0a6b2a43412d81` |
| `lending.C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr.clone.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 30 | `670402c21d1cdc952aabc1e6b607be2769ab34024e2fc5a46699aefdb8c4814d` |
| `lending.KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD.kamino.V1_23_0.from_solscan.json` | `non déclaré` | `1.23.0` | 63 | `de08e6fc025c3eb62b1445b225aae9e84a08f425cdd164bf7440e6ef7a04d87a` |
| `lending.MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA.marginfi_v2.V0_1_8.from_solscan.json` | `MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA` | `0.1.8` | 91 | `950f5008a596147a52ce6c4403a675aaf357333b6a1920dafd23005770faa01f` |
| `lock.LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE.raydium_lp.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 4 | `0422cb7577ce3cbd03c730141bb4172a80c71e89cb0622424cb8662645702d0a` |
| `metadata.ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S.solana_program_metadata.V0_0_0.from_github_solana_program.json` | `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` | `0.0.0` | 9 | `e6874f519d2ecaa8d92e2d58d1caabc130352c98b5a829375efd31636dbbc7a1` |
| `metadata.metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.metaplex_token_metadata.V1_14_0.from_solscan.json` | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | `1.14.0` | 58 | `8dcfda9d55aca11cc2e521c4670470533426da4613f208fcc2d0ea6bf3014f33` |
| `nft.BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY.metaplex_bubblegum.V0_12_0.from_solscan.json` | `non déclaré` | `0.12.0` | 17 | `db126f7491582f905f79cf0d291233b3b651ed7ea8d96089c25ec8fc6c6c2a98` |
| `nft.TCMPhJdwDryooaGtiocG1u3xcYbRpiJzb283XfCZsDp.tensor_cnft.V2_0_1.from_solscan.json` | `non déclaré` | `2.0.1` | 21 | `4033ac96e4a6af76178e997e58bb670a515c7f397b02dd1e647392c7e3851786` |
| `orderbook.j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X.jupiter_limit_order_v2.V0_1_0.from_solscan.json` | `j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X` | `0.1.0` | 8 | `f6d9c4ef2bc8a8d7757f09743c571526d23137414056d72d8724f0aa6392e1fe` |
| `orderbook.jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu.jupiter_limit_order.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 9 | `06a4d4d60cb5baefd2404fccad2818a4ac201dd0132b3ac530060d2c7ed67ffd` |
| `orderbook.opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.openbook_v2.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 29 | `e5bc0fcaf3a4b53f22e77704105664f872b338561acabe0f2248b0f84327d391` |
| `perpetuals.EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih.phoenix_eternal.V0_2_0.from_solscan.json` | `EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih` | `0.2.0` | 80 | `fed07943bba51add829c11e69e32c2302a41f242567174f999f6a60cf770e87b` |
| `perpetuals.PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu.jupiter.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 59 | `9b9276a918f27028093742277d9b4335be66ff8a73b566d03a61cf1373c36d98` |
| `perpetuals.ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD.zeta.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 107 | `24194a0de79d5eef4da3d425f0555c81b3f7e983d0ed6d98a99e93bd8cae1927` |
| `perpetuals.dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH.drift_v2.V2_150_0.from_solscan.json` | `non déclaré` | `2.150.0` | 241 | `198ab073625c9f5c8c18596d00344d8f194070aebf94f813e41ca51f1a4d1b6b` |
| `router.6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma.okx_labs_v1.V0_1_0.from_solscan.json` | `6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma` | `0.1.0` | 14 | `018edd87dcbc99da4ff852223c649075dfc0bfaef6115ef343d5b543920c8e5a` |
| `router.DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH.dflow_aggregator_v4.V0_1_0.from_solscan.json` | `DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH` | `0.1.0` | 17 | `a61d05f857becf70f6ff348fcdbd025996d9e9120809d6fb91d7e150d38d5947` |
| `router.JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB.jupiter_aggregator_v4.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 34 | `3b69fd55ba15e8620b7c24209650b5ca84eb435f5cbdd596cb59023826bf1bb9` |
| `router.JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4.jupiter_aggregator_v6.V0_1_0.from_solscan.json` | `JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4` | `0.1.0` | 17 | `98f4bf0ea4388f8cc341fc49678756289c5381339a678003f1494960e7ac6f46` |
| `router.proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u.okx_labs_v2.V0_1_0.from_solscan.json` | `proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u` | `0.1.0` | 19 | `39c8f7d80af6534178cc688d0ab580d19d059154ff5142e764a39dd65d61bd34` |
| `rwa.XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm.ondo_global_markets.V0_1_0.from_solscan.json` | `XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm` | `0.1.0` | 62 | `33ce1bcfd180cb9b202d7706e7d797bd96d87ea6a8fe7853f2e197fc880ae2b5` |
| `solana.11111111111111111111111111111111.core.system.V0_0_1.from_github_solana_program.json` | `11111111111111111111111111111111` | `0.0.1` | 14 | `e48967dbcbd252ef175a91f6684630e1f4c5c3e6176bc2c2c4f21d16193f86df` |
| `solana.AddressLookupTab1e1111111111111111111111111.core.address_lookup_table.V0_0_1.from_github_solana_program.json` | `AddressLookupTab1e1111111111111111111111111` | `0.0.1` | 5 | `91ae5d89d647a3dec7dcf36fa4dd96064b902d50bd5f65b2ce41f4aef5a53cfc` |
| `solana.BPFLoaderUpgradeab1e11111111111111111111111.core.loader_v3.V0_0_0.from_github_solana_program.json` | `CoreBPFLoaderUpgradeab1e1111111111111111111` | `0.0.0` | 8 | `a30e6f9f497e6339b63b06a4253c3c7fe1871672009e15994b51c4016376a997` |
| `solana.ComputeBudget111111111111111111111111111111.core.compute_budget.V0_0_1.from_github_solana_program.json` | `ComputeBudget111111111111111111111111111111` | `0.0.1` | 5 | `7b430c17afdae7c804ad9cd8b3d7f934a8dcf8fddaf4802731e8e7b1eed1b6a1` |
| `solana.Config1111111111111111111111111111111111111.core.config.V0_0_1.from_github_solana_program.json` | `Config1111111111111111111111111111111111111` | `0.0.1` | 1 | `c6faf7d86e83e305749b8231211d9a713398775ec7eae97032ece88c50e76aa4` |
| `solana.Feature111111111111111111111111111111111111.core.feature.V0_0_1.from_github_solana_program.json` | `Feature111111111111111111111111111111111111` | `0.0.1` | 1 | `a442ae23b4083aa9111f9dbddb8e25907c9411413d775b671f93c02a183c4784` |
| `solana.LoaderV411111111111111111111111111111111111.core.loader_v4.V0_0_0.from_github_solana_program.json` | `CoreBPFLoaderV41111111111111111111111111111` | `0.0.0` | 6 | `641c77405ce3967c375df5e3d886dbf84e52a2cd8c7626e537a6e5a4ff93c076` |
| `solana.Stake11111111111111111111111111111111111111.core.stake.V4_3_1.from_github_solana_program.json` | `Stake11111111111111111111111111111111111111` | `4.3.1` | 18 | `f9e914666fac43a6c6c3eeab141b950efc9c5702c814fe5b55875a323d904230` |
| `spl.MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr.memo.v3.V3_0_1.from_github_solana_program.json` | `MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr` | `3.0.1` | 1 | `95c763b4fc93d339ab3567c811b064459241f19345e7963a037530d6af94865a` |
| `spl.TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.token.V3_3_0.from_github_solana_program.json` | `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` | `3.3.0` | 28 | `de47e7a9469b962dbf7c9f643aa3433316936fbfc0c48aad261ab6388af9611d` |
| `spl.TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.token_2022.V3_0_1.from_github_solana_program.json` | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` | `3.0.1` | 100 | `3c65163c8ed2934a353bc0fc42ddd3193b93137407ca2d3e71a3c3d9692841e4` |
| `stable.HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn.swap_hylo_exchange.V0_1_4.from_solscan.json` | `HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn` | `0.1.4` | 27 | `6230bd19f9ac55e3bcc3e0dbd1967d9272732f8e6f1233dfee859d4a7828b53c` |
| `stable.JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr.swap_jupiter_stable.V0_1_0.from_solscan.json` | `JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr` | `0.1.0` | 13 | `5365cc15dd0476ac697ec435899f9f14c23c499bbda2a56fe1910c086f5386d7` |
| `stable.NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P.swap_numeraire.V0_1_0.from_solscan.json` | `NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P` | `0.1.0` | 22 | `50e3a8ea08c61312fcdb371ef5916e94bd9ccf6101b395fc80019d725e892da1` |
| `stable.swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.swap_stabble.V1_5_0.from_solscan.json` | `swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ` | `1.5.0` | 19 | `c82c0aa3f83db311e605f716ec7f1fdf2aadea7b611455489fad7b668a2fb77b` |
| `staking.4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7.jito_tip_distribution.V0_1_5.from_solscan.json` | `4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7` | `0.1.5` | 10 | `d8ba465c8b5bfbcb62763107e514c0672b89ee0d3f66d773719925372ec9ef99` |
| `staking.FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr.kamino_farm.V1_6_5.from_solscan.json` | `non déclaré` | `1.6.5` | 26 | `e7b825abd1e44bdc8dd315d491de7f3ddc67e58fce4222f5379a61f31b372572` |
| `staking.MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD.marinade_finance.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 28 | `f549293a7aeaf2f31f584a869a1e6e0e280f496efa0b4e3c70998e6551c1a987` |
| `storage.recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5.solana_record.V0_4_0.from_github_solana_program.json` | `recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5` | `0.4.0` | 5 | `9c6a4c8849cf1778cc633bb07ffb8933e0945beba5c072e303894691c761caba` |
| `strategy.DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M.jupiter_dca.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 12 | `0e3cfa37ab4ec041d9e806abb6dcf9e225b3b0a404515cb0ae5b0e1ae76b46c5` |
| `treasury.treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5.helium_treasury_management.V0_2_3.from_solscan.json` | `treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5` | `0.2.3` | 3 | `36e6ce8da7ea0cea0a8a7be0a8e35b679cbcae2e859e98b5b527775ea973d673` |
| `vault.24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi.meteora.V0_7_2.from_solscan.json` | `non déclaré` | `0.7.2` | 14 | `21f750d8ffbb17be4d73bfb4d24cc142897d53a350700f678b927af924305929` |
| `vault.6LtLpnUFNByNXLyCoK9wA2MykKAmQNZKBdY8s47dehDc.kamino_yvaults.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 38 | `2a76880dfba5b8fa102823ba9b72ae62095ea78270b9eaa1b0d6c44b176f801f` |
| `vault.CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s.carrot_defi.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 42 | `21932378870ab46deb3408ec5cabfa19d8b47949ba04a57442692ab8abc53cf1` |
| `vault.HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ.hylo_stability_pool.V0_1_4.from_solscan.json` | `HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ` | `0.1.4` | 9 | `70c87ac19ac1d3b8b0ed31d4d4e52d74ab2b155ac1a2b8057ba859c0f42ba106` |
| `vault.KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd.kamino_v2.V2_1_1.from_solscan.json` | `non déclaré` | `2.1.1` | 22 | `17a310e293893bb8fe8cb7daee0b1ef59fd9f31da8ba1fd1f00e7a436ca4348a` |
| `vault.kvauTFR8qm1dhniz6pYuBZkuene3Hfrs1VQhVRgCNrr.kamino.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 12 | `5a1c6a1e584be14f8eee1abf4682d057f9aba5d35c4597c48cb2fa997d41cddc` |
| `vesting.LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn.jupiter_lock.V0_4_0.from_solscan.json` | `LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn` | `0.4.0` | 11 | `f424e9c0df4b6bd6e63d40f1ffcf6be065bdb734323808fa1f11c1cb60610bb8` |
| `vesting.strmRqUCoQUgGUan5YhzUZa6KqdzwX5L6FpUxfmKg5m.streamflow.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 10 | `d74b7df8692ca019de952534f532d8b38b38ef8a34139bff894df1efd9aed0df` |
| `wallet.JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw.jupiter_apepro_smart_wallet.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 6 | `7d47428b045fe7ace80dc0f4b5b8a1e8a509a1ed77cd60d90d39f8a1c9e232ec` |
| `weighted.swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW.swap_stabble.V1_5_0.from_solscan.json` | `swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW` | `1.5.0` | 13 | `97ffbefbaa3a9729ac5cd700c2650a74042730ca1c6d0c9acf702504721fcb43` |
| Nom v3 | Program ID déclaré | Version déclarée | Instructions | SHA-256 |
|----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------|-----------------:|-------------:|--------------------------------------------------------------------|
| `adapter.DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB.saber_decimal_wrapper.V0_0_0.from_solscan.json` | `non déclaré` | `0.0.0` | 3 | `1b357156864a702c5a1019fd1d19bd5b60661f33101d46a77899b88c8fbc87da` |
| `adapter.TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR.spl_token_wrap.V0_1_0.from_github_solana_program.json` | `TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR` | `0.1.0` | 6 | `8b0a4f56ea3bfa66ba2a1de8523a693629fb3a24417e28f338985eeddbf95cfc` |
| `amm.2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.lifinity_swap_v2.V0_1_1.from_solscan.json` | `non déclaré` | `0.1.1` | 3 | `bbfefa42ca3ffa024acca68cc0e14c7c4babbc2928923d02d615620b18624910` |
| `amm.AMMJdEiCCa8mdugg6JPF7gFirmmxisTfDJoSNSUi5zDJ.metadao_v0_5.V0_5_0.from_solscan.json` | `non déclaré` | `0.5.0` | 5 | `34c20e1ef623e96cd677f30548cadad2c49fc2b33217911c09b743d278bbae26` |
| `amm.BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.bonk_swap.V0_1_1.from_solscan.json` | `non déclaré` | `0.1.1` | 19 | `27eca49509a866341def453cf303aa8e524a7f8f42a9ab76900c63bbb215c001` |
| `amm.Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.meteora_damm_v1.V0_5_2.from_solscan.json` | `non déclaré` | `0.5.2` | 26 | `0dd02f981806be81c15353b009a4f077d8f59f7e0192af6bc89d56acaed36f6e` |
| `amm.GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT.goosefx_gamma.V0_2_0.from_solscan.json` | `GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT` | `0.2.0` | 27 | `f515cfbeffebb5019ca15e25c2055fe1ea72882abc0b4a0dfbd6634eb1fa558b` |
| `amm.GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.goosefx_v2.V0_3_0.from_solscan.json` | `non déclaré` | `0.3.0` | 8 | `ddfe3e78103781cb6189d928a8ad1c00325d668a01a7ef20fe32307424ad203d` |
| `amm.Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1.guac_swap.V0_1_1.from_solscan.json` | `non déclaré` | `0.1.1` | 20 | `11dcb508fc32854aed599f860636e8b3e9de50abb9fdfc3126bc032ec6cae98a` |
| `amm.WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb.woofi.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 41 | `864c5bd4331b8190e2e8cb8f9d01ba7bdbb42ba1e470cc6fbf95d3f9fb4c25b6` |
| `amm.cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG.meteora_damm_v2.V0_2_0.from_solscan.json` | `cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG` | `0.2.0` | 38 | `86077cdb029944c16e6e7515fb3c3a3fba4f7821003a6d23507784e7d66d4ff9` |
| `amm.pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.pump_swap.V0_1_0.from_solscan.json` | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | `0.1.0` | 27 | `7e56e6acb0bd34530386abe3e91e89ecab66f9c2cbb1e959c4c941e09c0b0316` |
| `amm.vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ.vertigo.V0_1_0.from_solscan.json` | `vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ` | `0.1.0` | 6 | `08f8a5aeba3197dca7f5702d6c0c91f0da9d96d1cd80815d2104b484e49d6103` |
| `bridge.6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn.layer_zero_executor.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 8 | `6b2f1390e8647ea2a2b206c262e7ca226c11c014a49c6a948e208ef0a113f2cc` |
| `bridge.76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6.layer_zero_endpoint.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 32 | `5a1210a5325cc52196f33122485e6c10b4d1d19c919e9da85440aad97ca147dd` |
| `bridge.CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe.circle_cctp_token_messenger_minter_v2.V0_2_0.from_solscan.json` | `CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe` | `0.2.0` | 25 | `7d12fedcd1a923ac1b4ce8dee1ca241ffc37c7c8f7682974bd14ebb75dd36520` |
| `bridge.CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3.circle_cctp_token_messenger_minter.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 19 | `0a5b235212bf5c1791cb62d3775feeddfe8a6c81120455d60fb0d834afcd3f75` |
| `clmm.6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6.stabble.V0_1_0.from_solscan.json` | `6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6` | `0.1.0` | 21 | `d0abb8e6b7f5b0e7ff0e73df2e94185d1d42b8e7e967f0341d2325ee99eccf37` |
| `clmm.CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.raydium.V0_1_0.from_solscan.json` | `CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK` | `0.1.0` | 34 | `6cda2dfa4a880fea3ac91f5055dc1d9b64b799bde997a7941a181f70d6e226fc` |
| `clmm.HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq.pancake_swap.V0_1_0.from_solscan.json` | `HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq` | `0.1.0` | 27 | `271fe54bb767dd63bb2194b6f40164026476cb871b8e624b8ab10d65d7ccf846` |
| `clmm.REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2.byreal.V0_1_0.from_solscan.json` | `REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2` | `0.1.0` | 35 | `2192c87aaf13cf2838dc939bca965e1f9cd8bc2e1c0bc15c54804072390f1d3a` |
| `clmm.fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9.fusion.V1_1_4.from_solscan.json` | `fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9` | `1.1.4` | 33 | `dfc258caa3c4060b761759d1d3120cfd87ac1c2a47c3f061d97ceb4eed97d0a5` |
| `clmm.whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.orca_whirlpool.V0_9_0.from_solscan.json` | `whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc` | `0.9.0` | 66 | `b858ae977743365529c970ced550eba435fa282a198c7d1a620865bd6e424460` |
| `cpmm.CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.raydium.V0_2_0.from_solscan.json` | `CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C` | `0.2.0` | 14 | `e4cbb793a8724e37cba2c92b38d074a9ddec9b810757b5fb404da523cfb4b59f` |
| `dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.meteora.V0_12_0.from_solscan.json` | `LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo` | `0.12.0` | 76 | `24b04bbd70964c7a128b7c8df46be6000b43d7814e1ec54140728b7aedb60970` |
| `fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.pump_fees.V0_1_0.from_solscan.json` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | `0.1.0` | 29 | `2f8c355c5af9d95891f64fd71986f01f8a630e62dec032d0de42bb23dfa3518e` |
| `governance.FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq.metadao_futarchy.V0_6_1.from_solscan.json` | `non déclaré` | `0.6.1` | 23 | `1a35740c627990de699ea526ed83becf4331b40dbeea96687fa584f4a468ac81` |
| `governance.SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf.squads_multisig.V2_0_0.from_solscan.json` | `non déclaré` | `2.0.0` | 31 | `5304fa2bac2d6ed5a749267ad0cfce217e9ecbf369805ececa0a83c12c51ac56` |
| `governance.WALL8ucBuUyL46QYxwYJjidaFYhdvxUFrgvBxPshERx.metadao_bid_wall.V0_7_0.from_solscan.json` | `non déclaré` | `0.7.0` | 5 | `6e48c20a4e6ffc1b3226ea2d31e846a4a1d2851d593dad3d8531e5de63b65fa2` |
| `launchpad.5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki.virtuals.V0_1_0.from_solscan.json` | `5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki` | `0.1.0` | 8 | `a61fe5f6fd5add913dfde81e6c30c4a6051a226a741dc2cf7d625298da8260fa` |
| `launchpad.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.pump_fun.V0_1_0.from_solscan.json` | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | `0.1.0` | 40 | `5c3c6b548cb3845717eaa483e828aa8e938fc46a847b06f58dbb8e692015bed4` |
| `launchpad.LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.raydium_launchlab.V0_2_0.from_solscan.json` | `LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj` | `0.2.0` | 25 | `f0f1c0c1fa9fb5cb19ba451c2148defc0e13dc33cf2a12b86790ac919ddeb1c1` |
| `launchpad.MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG.moonit.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 6 | `ca1463bb404aa960a02a744a7b80e88a9706b7ad12fa018de14c445d5e8ec2c6` |
| `launchpad.PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd.pump_pumpup_ai.V0_1_0.from_solscan.json` | `PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd` | `0.1.0` | 20 | `841e845ea956220d2f2bf6546efacad218b6d59097709e8a0de205b4cb9e32db` |
| `launchpad.T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint.printr.V1_0_0.from_solscan.json` | `T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint` | `1.0.0` | 28 | `6124c944d3c45529fa3cdff6a69e842ed062892e7f7b53ccb25c13fad4957b5c` |
| `launchpad.boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4.boop_fun.V0_3_0.from_solscan.json` | `boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4` | `0.3.0` | 29 | `f68e54671b2e80344804d499e5b8c4bd87e1a3f8705e85b69cdaf3540bcb41c5` |
| `launchpad.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.meteora_dbc.V0_1_10.from_solscan.json` | `dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN` | `0.1.10` | 28 | `3499aacfe5647ea5a43951094e702826c46163b8e4678d5e75976955846a94d3` |
| `launchpad.moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM.metadao_ico.V0_7_0.from_solscan.json` | `non déclaré` | `0.7.0` | 13 | `852eb123ab405ce54fa67f1237cfe4da9d66033457ad0f129a287989c675cc43` |
| `launchpad.waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF.orca_wavebreak.V1_1_5.from_solscan.json` | `waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF` | `1.1.5` | 64 | `f38f1c00c81bcd94649fa2af5a7fc413149550718402fe1c4e0a6b2a43412d81` |
| `lending.C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr.clone.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 30 | `670402c21d1cdc952aabc1e6b607be2769ab34024e2fc5a46699aefdb8c4814d` |
| `lending.KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD.kamino.V1_23_0.from_solscan.json` | `non déclaré` | `1.23.0` | 63 | `de08e6fc025c3eb62b1445b225aae9e84a08f425cdd164bf7440e6ef7a04d87a` |
| `lending.MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA.marginfi_v2.V0_1_8.from_solscan.json` | `MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA` | `0.1.8` | 91 | `950f5008a596147a52ce6c4403a675aaf357333b6a1920dafd23005770faa01f` |
| `lock.LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE.raydium_lp.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 4 | `0422cb7577ce3cbd03c730141bb4172a80c71e89cb0622424cb8662645702d0a` |
| `metadata.ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S.solana_program_metadata.V0_0_0.from_github_solana_program.json` | `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` | `0.0.0` | 9 | `e6874f519d2ecaa8d92e2d58d1caabc130352c98b5a829375efd31636dbbc7a1` |
| `metadata.metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.metaplex_token_metadata.V1_14_0.from_github_mpl-token-metadata.json` | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | `1.14.0` | 58 | `8dcfda9d55aca11cc2e521c4670470533426da4613f208fcc2d0ea6bf3014f33` |
| `nft.BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY.metaplex_bubblegum.V0_12_0.from_solscan.json` | `non déclaré` | `0.12.0` | 17 | `db126f7491582f905f79cf0d291233b3b651ed7ea8d96089c25ec8fc6c6c2a98` |
| `nft.TCMPhJdwDryooaGtiocG1u3xcYbRpiJzb283XfCZsDp.tensor_cnft.V2_0_1.from_solscan.json` | `non déclaré` | `2.0.1` | 21 | `4033ac96e4a6af76178e997e58bb670a515c7f397b02dd1e647392c7e3851786` |
| `orderbook.j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X.jupiter_limit_order_v2.V0_1_0.from_solscan.json` | `j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X` | `0.1.0` | 8 | `f6d9c4ef2bc8a8d7757f09743c571526d23137414056d72d8724f0aa6392e1fe` |
| `orderbook.jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu.jupiter_limit_order.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 9 | `06a4d4d60cb5baefd2404fccad2818a4ac201dd0132b3ac530060d2c7ed67ffd` |
| `orderbook.opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.openbook_v2.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 29 | `e5bc0fcaf3a4b53f22e77704105664f872b338561acabe0f2248b0f84327d391` |
| `perpetuals.EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih.phoenix_eternal.V0_2_0.from_solscan.json` | `EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih` | `0.2.0` | 80 | `fed07943bba51add829c11e69e32c2302a41f242567174f999f6a60cf770e87b` |
| `perpetuals.PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu.jupiter.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 59 | `9b9276a918f27028093742277d9b4335be66ff8a73b566d03a61cf1373c36d98` |
| `perpetuals.ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD.zeta.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 107 | `24194a0de79d5eef4da3d425f0555c81b3f7e983d0ed6d98a99e93bd8cae1927` |
| `perpetuals.dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH.drift_v2.V2_150_0.from_solscan.json` | `non déclaré` | `2.150.0` | 241 | `198ab073625c9f5c8c18596d00344d8f194070aebf94f813e41ca51f1a4d1b6b` |
| `router.6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma.okx_labs_v1.V0_1_0.from_solscan.json` | `6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma` | `0.1.0` | 14 | `018edd87dcbc99da4ff852223c649075dfc0bfaef6115ef343d5b543920c8e5a` |
| `router.DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH.dflow_aggregator_v4.V0_1_0.from_solscan.json` | `DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH` | `0.1.0` | 17 | `a61d05f857becf70f6ff348fcdbd025996d9e9120809d6fb91d7e150d38d5947` |
| `router.JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB.jupiter_aggregator_v4.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 34 | `3b69fd55ba15e8620b7c24209650b5ca84eb435f5cbdd596cb59023826bf1bb9` |
| `router.JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4.jupiter_aggregator_v6.V0_1_0.from_solscan.json` | `JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4` | `0.1.0` | 17 | `98f4bf0ea4388f8cc341fc49678756289c5381339a678003f1494960e7ac6f46` |
| `router.proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u.okx_labs_v2.V0_1_0.from_solscan.json` | `proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u` | `0.1.0` | 19 | `39c8f7d80af6534178cc688d0ab580d19d059154ff5142e764a39dd65d61bd34` |
| `rwa.XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm.ondo_global_markets.V0_1_0.from_solscan.json` | `XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm` | `0.1.0` | 62 | `33ce1bcfd180cb9b202d7706e7d797bd96d87ea6a8fe7853f2e197fc880ae2b5` |
| `solana.11111111111111111111111111111111.core.system.V0_0_1.from_github_solana_program.json` | `11111111111111111111111111111111` | `0.0.1` | 14 | `e48967dbcbd252ef175a91f6684630e1f4c5c3e6176bc2c2c4f21d16193f86df` |
| `solana.AddressLookupTab1e1111111111111111111111111.core.address_lookup_table.V0_0_1.from_github_solana_program.json` | `AddressLookupTab1e1111111111111111111111111` | `0.0.1` | 5 | `91ae5d89d647a3dec7dcf36fa4dd96064b902d50bd5f65b2ce41f4aef5a53cfc` |
| `solana.BPFLoaderUpgradeab1e11111111111111111111111.core.loader_v3.V0_0_0.from_github_solana_program.json` | `CoreBPFLoaderUpgradeab1e1111111111111111111` | `0.0.0` | 8 | `a30e6f9f497e6339b63b06a4253c3c7fe1871672009e15994b51c4016376a997` |
| `solana.ComputeBudget111111111111111111111111111111.core.compute_budget.V0_0_1.from_github_solana_program.json` | `ComputeBudget111111111111111111111111111111` | `0.0.1` | 5 | `7b430c17afdae7c804ad9cd8b3d7f934a8dcf8fddaf4802731e8e7b1eed1b6a1` |
| `solana.Config1111111111111111111111111111111111111.core.config.V0_0_1.from_github_solana_program.json` | `Config1111111111111111111111111111111111111` | `0.0.1` | 1 | `c6faf7d86e83e305749b8231211d9a713398775ec7eae97032ece88c50e76aa4` |
| `solana.Feature111111111111111111111111111111111111.core.feature.V0_0_1.from_github_solana_program.json` | `Feature111111111111111111111111111111111111` | `0.0.1` | 1 | `a442ae23b4083aa9111f9dbddb8e25907c9411413d775b671f93c02a183c4784` |
| `solana.LoaderV411111111111111111111111111111111111.core.loader_v4.V0_0_0.from_github_solana_program.json` | `CoreBPFLoaderV41111111111111111111111111111` | `0.0.0` | 6 | `641c77405ce3967c375df5e3d886dbf84e52a2cd8c7626e537a6e5a4ff93c076` |
| `solana.Stake11111111111111111111111111111111111111.core.stake.V4_3_1.from_github_solana_program.json` | `Stake11111111111111111111111111111111111111` | `4.3.1` | 18 | `f9e914666fac43a6c6c3eeab141b950efc9c5702c814fe5b55875a323d904230` |
| `spl.MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr.memo.v3.V3_0_1.from_github_solana_program.json` | `MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr` | `3.0.1` | 1 | `95c763b4fc93d339ab3567c811b064459241f19345e7963a037530d6af94865a` |
| `spl.TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.token.V3_3_0.from_github_solana_program.json` | `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA` | `3.3.0` | 28 | `de47e7a9469b962dbf7c9f643aa3433316936fbfc0c48aad261ab6388af9611d` |
| `spl.TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.token_2022.V3_0_1.from_github_solana_program.json` | `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` | `3.0.1` | 100 | `3c65163c8ed2934a353bc0fc42ddd3193b93137407ca2d3e71a3c3d9692841e4` |
| `stable.HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn.swap_hylo_exchange.V0_1_4.from_solscan.json` | `HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn` | `0.1.4` | 27 | `6230bd19f9ac55e3bcc3e0dbd1967d9272732f8e6f1233dfee859d4a7828b53c` |
| `stable.JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr.swap_jupiter_stable.V0_1_0.from_solscan.json` | `JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr` | `0.1.0` | 13 | `5365cc15dd0476ac697ec435899f9f14c23c499bbda2a56fe1910c086f5386d7` |
| `stable.NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P.swap_numeraire.V0_1_0.from_solscan.json` | `NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P` | `0.1.0` | 22 | `50e3a8ea08c61312fcdb371ef5916e94bd9ccf6101b395fc80019d725e892da1` |
| `stable.swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.swap_stabble.V1_5_0.from_solscan.json` | `swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ` | `1.5.0` | 19 | `c82c0aa3f83db311e605f716ec7f1fdf2aadea7b611455489fad7b668a2fb77b` |
| `staking.4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7.jito_tip_distribution.V0_1_5.from_solscan.json` | `4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7` | `0.1.5` | 10 | `d8ba465c8b5bfbcb62763107e514c0672b89ee0d3f66d773719925372ec9ef99` |
| `staking.FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr.kamino_farm.V1_6_5.from_solscan.json` | `non déclaré` | `1.6.5` | 26 | `e7b825abd1e44bdc8dd315d491de7f3ddc67e58fce4222f5379a61f31b372572` |
| `staking.MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD.marinade_finance.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 28 | `f549293a7aeaf2f31f584a869a1e6e0e280f496efa0b4e3c70998e6551c1a987` |
| `storage.recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5.solana_record.V0_4_0.from_github_solana_program.json` | `recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5` | `0.4.0` | 5 | `9c6a4c8849cf1778cc633bb07ffb8933e0945beba5c072e303894691c761caba` |
| `strategy.DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M.jupiter_dca.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 12 | `0e3cfa37ab4ec041d9e806abb6dcf9e225b3b0a404515cb0ae5b0e1ae76b46c5` |
| `treasury.treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5.helium_treasury_management.V0_2_3.from_solscan.json` | `treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5` | `0.2.3` | 3 | `36e6ce8da7ea0cea0a8a7be0a8e35b679cbcae2e859e98b5b527775ea973d673` |
| `vault.24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi.meteora.V0_7_2.from_solscan.json` | `non déclaré` | `0.7.2` | 14 | `21f750d8ffbb17be4d73bfb4d24cc142897d53a350700f678b927af924305929` |
| `vault.6LtLpnUFNByNXLyCoK9wA2MykKAmQNZKBdY8s47dehDc.kamino_yvaults.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 38 | `2a76880dfba5b8fa102823ba9b72ae62095ea78270b9eaa1b0d6c44b176f801f` |
| `vault.CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s.carrot_defi.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 42 | `21932378870ab46deb3408ec5cabfa19d8b47949ba04a57442692ab8abc53cf1` |
| `vault.HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ.hylo_stability_pool.V0_1_4.from_solscan.json` | `HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ` | `0.1.4` | 9 | `70c87ac19ac1d3b8b0ed31d4d4e52d74ab2b155ac1a2b8057ba859c0f42ba106` |
| `vault.KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd.kamino_v2.V2_1_1.from_solscan.json` | `non déclaré` | `2.1.1` | 22 | `17a310e293893bb8fe8cb7daee0b1ef59fd9f31da8ba1fd1f00e7a436ca4348a` |
| `vault.kvauTFR8qm1dhniz6pYuBZkuene3Hfrs1VQhVRgCNrr.kamino.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 12 | `5a1c6a1e584be14f8eee1abf4682d057f9aba5d35c4597c48cb2fa997d41cddc` |
| `vesting.LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn.jupiter_lock.V0_4_0.from_solscan.json` | `LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn` | `0.4.0` | 11 | `f424e9c0df4b6bd6e63d40f1ffcf6be065bdb734323808fa1f11c1cb60610bb8` |
| `vesting.strmRqUCoQUgGUan5YhzUZa6KqdzwX5L6FpUxfmKg5m.streamflow.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 10 | `d74b7df8692ca019de952534f532d8b38b38ef8a34139bff894df1efd9aed0df` |
| `wallet.JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw.jupiter_apepro_smart_wallet.V0_1_0.from_solscan.json` | `non déclaré` | `0.1.0` | 6 | `7d47428b045fe7ace80dc0f4b5b8a1e8a509a1ed77cd60d90d39f8a1c9e232ec` |
| `weighted.swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW.swap_stabble.V1_5_0.from_solscan.json` | `swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW` | `1.5.0` | 13 | `97ffbefbaa3a9729ac5cd700c2650a74042730ca1c6d0c9acf702504721fcb43` |

View File

@@ -1,101 +1,101 @@
<!-- file: docs/IDL_TO_KB_LIB_NOMENCLATURE.md -->
<!-- version: 6 -->
<!-- version: 7 -->
# Correspondance IDL ↔ `kb-lib`
Ce tableau constitue la cible de classification pour les futurs décodeurs et exécuteurs.
Il ne signifie pas que tous les modules proposés sont déjà implémentés.
| IDL v3 | Module actuel | Module cible | Action Rust |
|-----------------------------------------------------------------------------------------------------------------------|------------------------------------------------|------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|
| `adapter.DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB.saber_decimal_wrapper.V0_0_0.from_solscan.json` | `adapter/saber_decimal_wrapper` | `adapter/saber_decimal_wrapper` | Aucune |
| `adapter.TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR.spl_token_wrap.V0_1_0.from_github_solana_program.json` | `—` | `adapter/spl_token_wrap` | Créer `adapter/spl_token_wrap` |
| `amm.2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.lifinity_swap_v2.V0_1_1.from_solscan.json` | `amm/lifinity_swap_v2` | `amm/lifinity_swap_v2` | Aucune |
| `amm.AMMJdEiCCa8mdugg6JPF7gFirmmxisTfDJoSNSUi5zDJ.metadao_v0_5.V0_5_0.from_solscan.json` | `amm/metadao_v0_5` | `amm/metadao_v0_5` | Aucune |
| `amm.BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.bonk_swap.V0_1_1.from_solscan.json` | `amm/bonk_swap` | `amm/bonk_swap` | Aucune |
| `amm.Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.meteora_damm_v1.V0_5_2.from_solscan.json` | `amm/meteora_damm_v1` | `amm/meteora_damm_v1` | Aucune |
| `amm.GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT.goosefx_gamma.V0_2_0.from_solscan.json` | `amm/goosefx_gamma` | `amm/goosefx_gamma` | Aucune |
| `amm.GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.goosefx_v2.V0_3_0.from_solscan.json` | `amm/goosefx_v2` | `amm/goosefx_v2` | Aucune |
| `amm.Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1.guac_swap.V0_1_1.from_solscan.json` | `amm/guac_swap` | `amm/guac_swap` | Aucune |
| `amm.WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb.woofi.V0_1_0.from_solscan.json` | `amm/woofi` | `amm/woofi` | Aucune |
| `amm.cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG.meteora_damm_v2.V0_2_0.from_solscan.json` | `amm/meteora_damm_v2` | `amm/meteora_damm_v2` | Aucune |
| `amm.pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.pump_swap.V0_1_0.from_solscan.json` | `amm/pump_swap` | `amm/pump_swap` | Aucune |
| `amm.vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ.vertigo.V0_1_0.from_solscan.json` | `amm/vertigo` | `amm/vertigo` | Aucune |
| `bridge.6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn.layer_zero_executor.V0_1_0.from_solscan.json` | `bridge/layer_zero_executor` | `bridge/layer_zero_executor` | Aucune |
| `bridge.76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6.layer_zero_endpoint.V0_1_0.from_solscan.json` | `bridge/layer_zero_endpoint` | `bridge/layer_zero_endpoint` | Aucune |
| `bridge.CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe.circle_cctp_token_messenger_minter_v2.V0_2_0.from_solscan.json` | `bridge/circle_cctp_token_messenger_minter_v2` | `bridge/circle_cctp_token_messenger_minter_v2` | Aucune |
| `bridge.CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3.circle_cctp_token_messenger_minter.V0_1_0.from_solscan.json` | `bridge/circle_cctp_token_messenger_minter` | `bridge/circle_cctp_token_messenger_minter` | Aucune |
| `clmm.6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6.stabble.V0_1_0.from_solscan.json` | `clmm/stabble` | `clmm/stabble` | Aucune |
| `clmm.CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.raydium.V0_1_0.from_solscan.json` | `clmm/raydium` | `clmm/raydium` | Aucune |
| `clmm.HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq.pancake_swap.V0_1_0.from_solscan.json` | `clmm/pancake_swap` | `clmm/pancake_swap` | Aucune |
| `clmm.REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2.byreal.V0_1_0.from_solscan.json` | `clmm/byreal` | `clmm/byreal` | Aucune |
| `clmm.fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9.fusion.V1_1_4.from_solscan.json` | `clmm/fusion` | `clmm/fusion` | Aucune |
| `clmm.whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.orca_whirlpool.V0_9_0.from_solscan.json` | `clmm/orca_whirlpool` | `clmm/orca_whirlpool` | Aucune |
| `cpmm.CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.raydium.V0_2_0.from_solscan.json` | `cpmm/raydium` | `cpmm/raydium` | Aucune |
| `dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.meteora.V0_12_0.from_solscan.json` | `dlmm/meteora` | `dlmm/meteora` | Aucune |
| `fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.pump_fees.V0_1_0.from_solscan.json` | `admin/pump_fees` | `fees/pump_fees` | Déplacer `admin/pump_fees``fees/pump_fees` |
| `governance.FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq.metadao_futarchy.V0_6_1.from_solscan.json` | `amm/metadao_futarchy_amm` | `governance/metadao_futarchy` | Déplacer `amm/metadao_futarchy_amm``governance/metadao_futarchy` |
| `governance.SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf.squads_multisig.V2_0_0.from_solscan.json` | `—` | `governance/squads_multisig` | Créer `governance/squads_multisig` |
| `governance.WALL8ucBuUyL46QYxwYJjidaFYhdvxUFrgvBxPshERx.metadao_bid_wall.V0_7_0.from_solscan.json` | `governance/metadao_bid_wall` | `governance/metadao_bid_wall` | Aucune |
| `launchpad.5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki.virtuals.V0_1_0.from_solscan.json` | `amm/virtuals` | `launchpad/virtuals` | Déplacer `amm/virtuals``launchpad/virtuals` |
| `launchpad.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.pump_fun.V0_1_0.from_solscan.json` | `launchpad/pump_fun` | `launchpad/pump_fun` | Aucune |
| `launchpad.LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.raydium_launchlab.V0_2_0.from_solscan.json` | `launchpad/raydium_launchlab` | `launchpad/raydium_launchlab` | Aucune |
| `launchpad.MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG.moonit.V0_1_0.from_solscan.json` | `launchpad/moonit` | `launchpad/moonit` | Aucune |
| `launchpad.PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd.pump_pumpup_ai.V0_1_0.from_solscan.json` | `launchpad/pump_pumpup_ai` | `launchpad/pump_pumpup_ai` | Aucune |
| `launchpad.T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint.printr.V1_0_0.from_solscan.json` | `launchpad/printr` | `launchpad/printr` | Aucune |
| `launchpad.boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4.boop_fun.V0_3_0.from_solscan.json` | `launchpad/boop_fun` | `launchpad/boop_fun` | Aucune |
| `launchpad.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.meteora_dbc.V0_1_10.from_solscan.json` | `launchpad/meteora_dbc` | `launchpad/meteora_dbc` | Aucune |
| `launchpad.moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM.metadao_ico.V0_7_0.from_solscan.json` | `launchpad/metadao_ico` | `launchpad/metadao_ico` | Aucune |
| `launchpad.waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF.orca_wavebreak.V1_1_5.from_solscan.json` | `launchpad/orca_wavebreak` | `launchpad/orca_wavebreak` | Aucune |
| `lending.C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr.clone.V0_1_0.from_solscan.json` | `lending/clone` | `lending/clone` | Aucune |
| `lending.KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD.kamino.V1_23_0.from_solscan.json` | `lending/kamino` | `lending/kamino` | Aucune |
| `lending.MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA.marginfi_v2.V0_1_8.from_solscan.json` | `lending/marginfi_v2` | `lending/marginfi_v2` | Aucune |
| `lock.LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE.raydium_lp.V0_1_0.from_solscan.json` | `lock/raydium_lp` | `lock/raydium_lp` | Aucune |
| `metadata.ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S.solana_program_metadata.V0_0_0.from_github_solana_program.json` | `metadata/solana_program_metadata` | `metadata/solana_program_metadata` | Modèles wire, décodeurs de comptes, neuf instructions stables et matérialisation exhaustive présents ; implémenter lexécuteur |
| `metadata.metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.metaplex_token_metadata.V1_14_0.from_solscan.json` | `metadata/metaplex_token_metadata` | `metadata/metaplex_token_metadata` | Aucune |
| `nft.BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY.metaplex_bubblegum.V0_12_0.from_solscan.json` | `nft/metaplex_bubblegum` | `nft/metaplex_bubblegum` | Aucune |
| `nft.TCMPhJdwDryooaGtiocG1u3xcYbRpiJzb283XfCZsDp.tensor_cnft.V2_0_1.from_solscan.json` | `—` | `nft/tensor_cnft` | Créer `nft/tensor_cnft` |
| `orderbook.j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X.jupiter_limit_order_v2.V0_1_0.from_solscan.json` | `orderbook/jupiter_limit_order_v2` | `orderbook/jupiter_limit_order_v2` | Aucune |
| `orderbook.jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu.jupiter_limit_order.V0_1_0.from_solscan.json` | `orderbook/jupiter_limit_order` | `orderbook/jupiter_limit_order` | Aucune |
| `orderbook.opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.openbook_v2.V0_1_0.from_solscan.json` | `orderbook/openbook_v2` | `orderbook/openbook_v2` | Aucune |
| `perpetuals.EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih.phoenix_eternal.V0_2_0.from_solscan.json` | `—` | `perpetuals/phoenix_eternal` | Créer `perpetuals/phoenix_eternal` |
| `perpetuals.PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu.jupiter.V0_1_0.from_solscan.json` | `perpetuals/jupiter` | `perpetuals/jupiter` | Aucune |
| `perpetuals.ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD.zeta.V0_1_0.from_solscan.json` | `perpetuals/zeta` | `perpetuals/zeta` | Aucune |
| `perpetuals.dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH.drift_v2.V2_150_0.from_solscan.json` | `perpetuals/drift_v2` | `perpetuals/drift_v2` | Aucune |
| `router.6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma.okx_labs_v1.V0_1_0.from_solscan.json` | `router/okx_labs_v1` | `router/okx_labs_v1` | Aucune |
| `router.DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH.dflow_aggregator_v4.V0_1_0.from_solscan.json` | `router/dflow_aggregator_v4` | `router/dflow_aggregator_v4` | Aucune |
| `router.JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB.jupiter_aggregator_v4.V0_1_0.from_solscan.json` | `router/jupiter_aggregator_v4` | `router/jupiter_aggregator_v4` | Aucune |
| `router.JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4.jupiter_aggregator_v6.V0_1_0.from_solscan.json` | `router/jupiter_aggregator_v6` | `router/jupiter_aggregator_v6` | Aucune |
| `router.proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u.okx_labs_v2.V0_1_0.from_solscan.json` | `router/okx_labs_v2` | `router/okx_labs_v2` | Aucune |
| `rwa.XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm.ondo_global_markets.V0_1_0.from_solscan.json` | `rwa/ondo_global_markets` | `rwa/ondo_global_markets` | Aucune |
| `solana.11111111111111111111111111111111.core.system.V0_0_1.from_github_solana_program.json` | `solana/core/system` | `solana/core/system` | Aucune |
| `solana.AddressLookupTab1e1111111111111111111111111.core.address_lookup_table.V0_0_1.from_github_solana_program.json` | `solana/core/address_lookup_table` | `solana/core/address_lookup_table` | Aucune |
| `solana.BPFLoaderUpgradeab1e11111111111111111111111.core.loader_v3.V0_0_0.from_github_solana_program.json` | `solana/core/loader_v3` | `solana/core/loader_v3` | Aucune |
| `solana.ComputeBudget111111111111111111111111111111.core.compute_budget.V0_0_1.from_github_solana_program.json` | `solana/core/compute_budget` | `solana/core/compute_budget` | Aucune |
| `solana.Config1111111111111111111111111111111111111.core.config.V0_0_1.from_github_solana_program.json` | `solana/core/config` | `solana/core/config` | Aucune |
| `solana.Feature111111111111111111111111111111111111.core.feature.V0_0_1.from_github_solana_program.json` | `solana/core/feature` | `solana/core/feature` | Aucune |
| `solana.LoaderV411111111111111111111111111111111111.core.loader_v4.V0_0_0.from_github_solana_program.json` | `solana/core/loader_v4` | `solana/core/loader_v4` | Aucune |
| `solana.Stake11111111111111111111111111111111111111.core.stake.V4_3_1.from_github_solana_program.json` | `solana/core/stake` | `solana/core/stake` | Aucune |
| `spl.MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr.memo.v3.V3_0_1.from_github_solana_program.json` | `spl/memo/v3` | `spl/memo/v3` | Aucune |
| `spl.TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.token.V3_3_0.from_github_solana_program.json` | `spl/token` | `spl/token` | Aucune |
| `spl.TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.token_2022.V3_0_1.from_github_solana_program.json` | `spl/token_2022` | `spl/token_2022` | Aucune |
| `stable.HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn.swap_hylo_exchange.V0_1_4.from_solscan.json` | `stable/swap_hylo_exchange` | `stable/swap_hylo_exchange` | Aucune |
| `stable.JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr.swap_jupiter_stable.V0_1_0.from_solscan.json` | `stable/swap_jupiter_stable` | `stable/swap_jupiter_stable` | Aucune |
| `stable.NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P.swap_numeraire.V0_1_0.from_solscan.json` | `stable/swap_numeraire` | `stable/swap_numeraire` | Aucune |
| `stable.swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.swap_stabble.V1_5_0.from_solscan.json` | `stable/swap_stabble` | `stable/swap_stabble` | Aucune |
| `staking.4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7.jito_tip_distribution.V0_1_5.from_solscan.json` | `—` | `staking/jito_tip_distribution` | Créer `staking/jito_tip_distribution` |
| `staking.FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr.kamino_farm.V1_6_5.from_solscan.json` | `staking/kamino_farm` | `staking/kamino_farm` | Aucune |
| `staking.MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD.marinade_finance.V0_1_0.from_solscan.json` | `staking/marinade_finance` | `staking/marinade_finance` | Aucune |
| `storage.recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5.solana_record.V0_4_0.from_github_solana_program.json` | `—` | `storage/solana_record` | Créer `storage/solana_record` |
| `strategy.DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M.jupiter_dca.V0_1_0.from_solscan.json` | `strategy/jupiter_dca` | `strategy/jupiter_dca` | Déplacer `strategy/jupiter_dca``strategy/jupiter_dca` |
| `treasury.treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5.helium_treasury_management.V0_2_3.from_solscan.json` | `treasury/helium_treasury_management` | `treasury/helium_treasury_management` | Aucune |
| `vault.24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi.meteora.V0_7_2.from_solscan.json` | `vault/meteora` | `vault/meteora` | Aucune |
| `vault.6LtLpnUFNByNXLyCoK9wA2MykKAmQNZKBdY8s47dehDc.kamino_yvaults.V0_1_0.from_solscan.json` | `vault/kamino_yvaults` | `vault/kamino_yvaults` | Aucune |
| `vault.CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s.carrot_defi.V0_1_0.from_solscan.json` | `vault/carrot_defi` | `vault/carrot_defi` | Aucune |
| `vault.HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ.hylo_stability_pool.V0_1_4.from_solscan.json` | `vault/hylo_stability_pool` | `vault/hylo_stability_pool` | Aucune |
| `vault.KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd.kamino_v2.V2_1_1.from_solscan.json` | `vault/kamino_v2` | `vault/kamino_v2` | Aucune |
| `vault.kvauTFR8qm1dhniz6pYuBZkuene3Hfrs1VQhVRgCNrr.kamino.V0_1_0.from_solscan.json` | `vault/kamino` | `vault/kamino` | Aucune |
| `vesting.LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn.jupiter_lock.V0_4_0.from_solscan.json` | `admin/jupiter_lock` | `vesting/jupiter_lock` | Déplacer `admin/jupiter_lock``vesting/jupiter_lock` |
| `vesting.strmRqUCoQUgGUan5YhzUZa6KqdzwX5L6FpUxfmKg5m.streamflow.V0_1_0.from_solscan.json` | `vesting/streamflow` | `vesting/streamflow` | Aucune |
| `wallet.JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw.jupiter_apepro_smart_wallet.V0_1_0.from_solscan.json` | `wallet/jupiter_apepro_smart_wallet` | `wallet/jupiter_apepro_smart_wallet` | Aucune |
| `weighted.swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW.swap_stabble.V1_5_0.from_solscan.json` | `weighted/swap_stabble` | `weighted/swap_stabble` | Aucune |
| IDL v3 | Module actuel | Module cible | Action Rust |
|----------------------------------------------------------------------------------------------------------------------------|------------------------------------------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------|
| `adapter.DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB.saber_decimal_wrapper.V0_0_0.from_solscan.json` | `adapter/saber_decimal_wrapper` | `adapter/saber_decimal_wrapper` | Aucune |
| `adapter.TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR.spl_token_wrap.V0_1_0.from_github_solana_program.json` | `—` | `adapter/spl_token_wrap` | Créer `adapter/spl_token_wrap` |
| `amm.2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c.lifinity_swap_v2.V0_1_1.from_solscan.json` | `amm/lifinity_swap_v2` | `amm/lifinity_swap_v2` | Aucune |
| `amm.AMMJdEiCCa8mdugg6JPF7gFirmmxisTfDJoSNSUi5zDJ.metadao_v0_5.V0_5_0.from_solscan.json` | `amm/metadao_v0_5` | `amm/metadao_v0_5` | Aucune |
| `amm.BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p.bonk_swap.V0_1_1.from_solscan.json` | `amm/bonk_swap` | `amm/bonk_swap` | Aucune |
| `amm.Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB.meteora_damm_v1.V0_5_2.from_solscan.json` | `amm/meteora_damm_v1` | `amm/meteora_damm_v1` | Aucune |
| `amm.GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT.goosefx_gamma.V0_2_0.from_solscan.json` | `amm/goosefx_gamma` | `amm/goosefx_gamma` | Aucune |
| `amm.GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn.goosefx_v2.V0_3_0.from_solscan.json` | `amm/goosefx_v2` | `amm/goosefx_v2` | Aucune |
| `amm.Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1.guac_swap.V0_1_1.from_solscan.json` | `amm/guac_swap` | `amm/guac_swap` | Aucune |
| `amm.WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb.woofi.V0_1_0.from_solscan.json` | `amm/woofi` | `amm/woofi` | Aucune |
| `amm.cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG.meteora_damm_v2.V0_2_0.from_solscan.json` | `amm/meteora_damm_v2` | `amm/meteora_damm_v2` | Aucune |
| `amm.pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.pump_swap.V0_1_0.from_solscan.json` | `amm/pump_swap` | `amm/pump_swap` | Aucune |
| `amm.vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ.vertigo.V0_1_0.from_solscan.json` | `amm/vertigo` | `amm/vertigo` | Aucune |
| `bridge.6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn.layer_zero_executor.V0_1_0.from_solscan.json` | `bridge/layer_zero_executor` | `bridge/layer_zero_executor` | Aucune |
| `bridge.76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6.layer_zero_endpoint.V0_1_0.from_solscan.json` | `bridge/layer_zero_endpoint` | `bridge/layer_zero_endpoint` | Aucune |
| `bridge.CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe.circle_cctp_token_messenger_minter_v2.V0_2_0.from_solscan.json` | `bridge/circle_cctp_token_messenger_minter_v2` | `bridge/circle_cctp_token_messenger_minter_v2` | Aucune |
| `bridge.CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3.circle_cctp_token_messenger_minter.V0_1_0.from_solscan.json` | `bridge/circle_cctp_token_messenger_minter` | `bridge/circle_cctp_token_messenger_minter` | Aucune |
| `clmm.6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6.stabble.V0_1_0.from_solscan.json` | `clmm/stabble` | `clmm/stabble` | Aucune |
| `clmm.CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK.raydium.V0_1_0.from_solscan.json` | `clmm/raydium` | `clmm/raydium` | Aucune |
| `clmm.HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq.pancake_swap.V0_1_0.from_solscan.json` | `clmm/pancake_swap` | `clmm/pancake_swap` | Aucune |
| `clmm.REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2.byreal.V0_1_0.from_solscan.json` | `clmm/byreal` | `clmm/byreal` | Aucune |
| `clmm.fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9.fusion.V1_1_4.from_solscan.json` | `clmm/fusion` | `clmm/fusion` | Aucune |
| `clmm.whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc.orca_whirlpool.V0_9_0.from_solscan.json` | `clmm/orca_whirlpool` | `clmm/orca_whirlpool` | Aucune |
| `cpmm.CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C.raydium.V0_2_0.from_solscan.json` | `cpmm/raydium` | `cpmm/raydium` | Aucune |
| `dlmm.LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo.meteora.V0_12_0.from_solscan.json` | `dlmm/meteora` | `dlmm/meteora` | Aucune |
| `fees.pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ.pump_fees.V0_1_0.from_solscan.json` | `admin/pump_fees` | `fees/pump_fees` | Déplacer `admin/pump_fees``fees/pump_fees` |
| `governance.FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq.metadao_futarchy.V0_6_1.from_solscan.json` | `amm/metadao_futarchy_amm` | `governance/metadao_futarchy` | Déplacer `amm/metadao_futarchy_amm``governance/metadao_futarchy` |
| `governance.SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf.squads_multisig.V2_0_0.from_solscan.json` | `—` | `governance/squads_multisig` | Créer `governance/squads_multisig` |
| `governance.WALL8ucBuUyL46QYxwYJjidaFYhdvxUFrgvBxPshERx.metadao_bid_wall.V0_7_0.from_solscan.json` | `governance/metadao_bid_wall` | `governance/metadao_bid_wall` | Aucune |
| `launchpad.5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki.virtuals.V0_1_0.from_solscan.json` | `amm/virtuals` | `launchpad/virtuals` | Déplacer `amm/virtuals``launchpad/virtuals` |
| `launchpad.6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P.pump_fun.V0_1_0.from_solscan.json` | `launchpad/pump_fun` | `launchpad/pump_fun` | Aucune |
| `launchpad.LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj.raydium_launchlab.V0_2_0.from_solscan.json` | `launchpad/raydium_launchlab` | `launchpad/raydium_launchlab` | Aucune |
| `launchpad.MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG.moonit.V0_1_0.from_solscan.json` | `launchpad/moonit` | `launchpad/moonit` | Aucune |
| `launchpad.PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd.pump_pumpup_ai.V0_1_0.from_solscan.json` | `launchpad/pump_pumpup_ai` | `launchpad/pump_pumpup_ai` | Aucune |
| `launchpad.T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint.printr.V1_0_0.from_solscan.json` | `launchpad/printr` | `launchpad/printr` | Aucune |
| `launchpad.boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4.boop_fun.V0_3_0.from_solscan.json` | `launchpad/boop_fun` | `launchpad/boop_fun` | Aucune |
| `launchpad.dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN.meteora_dbc.V0_1_10.from_solscan.json` | `launchpad/meteora_dbc` | `launchpad/meteora_dbc` | Aucune |
| `launchpad.moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM.metadao_ico.V0_7_0.from_solscan.json` | `launchpad/metadao_ico` | `launchpad/metadao_ico` | Aucune |
| `launchpad.waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF.orca_wavebreak.V1_1_5.from_solscan.json` | `launchpad/orca_wavebreak` | `launchpad/orca_wavebreak` | Aucune |
| `lending.C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr.clone.V0_1_0.from_solscan.json` | `lending/clone` | `lending/clone` | Aucune |
| `lending.KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD.kamino.V1_23_0.from_solscan.json` | `lending/kamino` | `lending/kamino` | Aucune |
| `lending.MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA.marginfi_v2.V0_1_8.from_solscan.json` | `lending/marginfi_v2` | `lending/marginfi_v2` | Aucune |
| `lock.LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE.raydium_lp.V0_1_0.from_solscan.json` | `lock/raydium_lp` | `lock/raydium_lp` | Aucune |
| `metadata.ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S.solana_program_metadata.V0_0_0.from_github_solana_program.json` | `metadata/solana_program_metadata` | `metadata/solana_program_metadata` | Aucune — modèles, décodeurs, matérialiseur, exécuteur, pipeline, scénarios et validation Devnet présents |
| `metadata.metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.metaplex_token_metadata.V1_14_0.from_github_mpl-token-metadata.json` | `metadata/metaplex_token_metadata` | `metadata/metaplex_token_metadata` | Aucune |
| `nft.BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY.metaplex_bubblegum.V0_12_0.from_solscan.json` | `nft/metaplex_bubblegum` | `nft/metaplex_bubblegum` | Aucune |
| `nft.TCMPhJdwDryooaGtiocG1u3xcYbRpiJzb283XfCZsDp.tensor_cnft.V2_0_1.from_solscan.json` | `—` | `nft/tensor_cnft` | Créer `nft/tensor_cnft` |
| `orderbook.j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X.jupiter_limit_order_v2.V0_1_0.from_solscan.json` | `orderbook/jupiter_limit_order_v2` | `orderbook/jupiter_limit_order_v2` | Aucune |
| `orderbook.jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu.jupiter_limit_order.V0_1_0.from_solscan.json` | `orderbook/jupiter_limit_order` | `orderbook/jupiter_limit_order` | Aucune |
| `orderbook.opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb.openbook_v2.V0_1_0.from_solscan.json` | `orderbook/openbook_v2` | `orderbook/openbook_v2` | Aucune |
| `perpetuals.EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih.phoenix_eternal.V0_2_0.from_solscan.json` | `—` | `perpetuals/phoenix_eternal` | Créer `perpetuals/phoenix_eternal` |
| `perpetuals.PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu.jupiter.V0_1_0.from_solscan.json` | `perpetuals/jupiter` | `perpetuals/jupiter` | Aucune |
| `perpetuals.ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD.zeta.V0_1_0.from_solscan.json` | `perpetuals/zeta` | `perpetuals/zeta` | Aucune |
| `perpetuals.dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH.drift_v2.V2_150_0.from_solscan.json` | `perpetuals/drift_v2` | `perpetuals/drift_v2` | Aucune |
| `router.6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma.okx_labs_v1.V0_1_0.from_solscan.json` | `router/okx_labs_v1` | `router/okx_labs_v1` | Aucune |
| `router.DF1ow4tspfHX9JwWJsAb9epbkA8hmpSEAtxXy1V27QBH.dflow_aggregator_v4.V0_1_0.from_solscan.json` | `router/dflow_aggregator_v4` | `router/dflow_aggregator_v4` | Aucune |
| `router.JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB.jupiter_aggregator_v4.V0_1_0.from_solscan.json` | `router/jupiter_aggregator_v4` | `router/jupiter_aggregator_v4` | Aucune |
| `router.JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4.jupiter_aggregator_v6.V0_1_0.from_solscan.json` | `router/jupiter_aggregator_v6` | `router/jupiter_aggregator_v6` | Aucune |
| `router.proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u.okx_labs_v2.V0_1_0.from_solscan.json` | `router/okx_labs_v2` | `router/okx_labs_v2` | Aucune |
| `rwa.XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm.ondo_global_markets.V0_1_0.from_solscan.json` | `rwa/ondo_global_markets` | `rwa/ondo_global_markets` | Aucune |
| `solana.11111111111111111111111111111111.core.system.V0_0_1.from_github_solana_program.json` | `solana/core/system` | `solana/core/system` | Aucune |
| `solana.AddressLookupTab1e1111111111111111111111111.core.address_lookup_table.V0_0_1.from_github_solana_program.json` | `solana/core/address_lookup_table` | `solana/core/address_lookup_table` | Aucune |
| `solana.BPFLoaderUpgradeab1e11111111111111111111111.core.loader_v3.V0_0_0.from_github_solana_program.json` | `solana/core/loader_v3` | `solana/core/loader_v3` | Aucune |
| `solana.ComputeBudget111111111111111111111111111111.core.compute_budget.V0_0_1.from_github_solana_program.json` | `solana/core/compute_budget` | `solana/core/compute_budget` | Aucune |
| `solana.Config1111111111111111111111111111111111111.core.config.V0_0_1.from_github_solana_program.json` | `solana/core/config` | `solana/core/config` | Aucune |
| `solana.Feature111111111111111111111111111111111111.core.feature.V0_0_1.from_github_solana_program.json` | `solana/core/feature` | `solana/core/feature` | Aucune |
| `solana.LoaderV411111111111111111111111111111111111.core.loader_v4.V0_0_0.from_github_solana_program.json` | `solana/core/loader_v4` | `solana/core/loader_v4` | Aucune |
| `solana.Stake11111111111111111111111111111111111111.core.stake.V4_3_1.from_github_solana_program.json` | `solana/core/stake` | `solana/core/stake` | Aucune |
| `spl.MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr.memo.v3.V3_0_1.from_github_solana_program.json` | `spl/memo/v3` | `spl/memo/v3` | Aucune |
| `spl.TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA.token.V3_3_0.from_github_solana_program.json` | `spl/token` | `spl/token` | Aucune |
| `spl.TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb.token_2022.V3_0_1.from_github_solana_program.json` | `spl/token_2022` | `spl/token_2022` | Aucune |
| `stable.HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn.swap_hylo_exchange.V0_1_4.from_solscan.json` | `stable/swap_hylo_exchange` | `stable/swap_hylo_exchange` | Aucune |
| `stable.JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr.swap_jupiter_stable.V0_1_0.from_solscan.json` | `stable/swap_jupiter_stable` | `stable/swap_jupiter_stable` | Aucune |
| `stable.NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P.swap_numeraire.V0_1_0.from_solscan.json` | `stable/swap_numeraire` | `stable/swap_numeraire` | Aucune |
| `stable.swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ.swap_stabble.V1_5_0.from_solscan.json` | `stable/swap_stabble` | `stable/swap_stabble` | Aucune |
| `staking.4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7.jito_tip_distribution.V0_1_5.from_solscan.json` | `—` | `staking/jito_tip_distribution` | Créer `staking/jito_tip_distribution` |
| `staking.FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr.kamino_farm.V1_6_5.from_solscan.json` | `staking/kamino_farm` | `staking/kamino_farm` | Aucune |
| `staking.MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD.marinade_finance.V0_1_0.from_solscan.json` | `staking/marinade_finance` | `staking/marinade_finance` | Aucune |
| `storage.recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5.solana_record.V0_4_0.from_github_solana_program.json` | `—` | `storage/solana_record` | Créer `storage/solana_record` |
| `strategy.DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M.jupiter_dca.V0_1_0.from_solscan.json` | `strategy/jupiter_dca` | `strategy/jupiter_dca` | Déplacer `strategy/jupiter_dca``strategy/jupiter_dca` |
| `treasury.treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5.helium_treasury_management.V0_2_3.from_solscan.json` | `treasury/helium_treasury_management` | `treasury/helium_treasury_management` | Aucune |
| `vault.24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi.meteora.V0_7_2.from_solscan.json` | `vault/meteora` | `vault/meteora` | Aucune |
| `vault.6LtLpnUFNByNXLyCoK9wA2MykKAmQNZKBdY8s47dehDc.kamino_yvaults.V0_1_0.from_solscan.json` | `vault/kamino_yvaults` | `vault/kamino_yvaults` | Aucune |
| `vault.CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s.carrot_defi.V0_1_0.from_solscan.json` | `vault/carrot_defi` | `vault/carrot_defi` | Aucune |
| `vault.HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ.hylo_stability_pool.V0_1_4.from_solscan.json` | `vault/hylo_stability_pool` | `vault/hylo_stability_pool` | Aucune |
| `vault.KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd.kamino_v2.V2_1_1.from_solscan.json` | `vault/kamino_v2` | `vault/kamino_v2` | Aucune |
| `vault.kvauTFR8qm1dhniz6pYuBZkuene3Hfrs1VQhVRgCNrr.kamino.V0_1_0.from_solscan.json` | `vault/kamino` | `vault/kamino` | Aucune |
| `vesting.LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn.jupiter_lock.V0_4_0.from_solscan.json` | `admin/jupiter_lock` | `vesting/jupiter_lock` | Déplacer `admin/jupiter_lock``vesting/jupiter_lock` |
| `vesting.strmRqUCoQUgGUan5YhzUZa6KqdzwX5L6FpUxfmKg5m.streamflow.V0_1_0.from_solscan.json` | `vesting/streamflow` | `vesting/streamflow` | Aucune |
| `wallet.JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw.jupiter_apepro_smart_wallet.V0_1_0.from_solscan.json` | `wallet/jupiter_apepro_smart_wallet` | `wallet/jupiter_apepro_smart_wallet` | Aucune |
| `weighted.swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW.swap_stabble.V1_5_0.from_solscan.json` | `weighted/swap_stabble` | `weighted/swap_stabble` | Aucune |

View File

@@ -1,5 +1,5 @@
<!-- file: docs/README.md -->
<!-- version: 23 -->
<!-- version: 24 -->
# Documentation active de Khadhroony Bot3
@@ -101,6 +101,9 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
- [`validation/MAINNET_RESEARCH_BACKFILL_VALIDATION_SCENARIO.md`](validation/MAINNET_RESEARCH_BACKFILL_VALIDATION_SCENARIO.md) ;
- [`validation/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_MAINNET_REPLAY_REPORT.md`](validation/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_MAINNET_REPLAY_REPORT.md) ;
- [`validation/V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md`](validation/V0_4_8_PRE_010_SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_REPORT.md) — preuve de deux campagnes Devnet complètes couvrant les neuf opérations Solana Program Metadata ;
- [`validation/V0_4_8_PRE_012_TOKEN_2022_METADATA_DEVNET_VALIDATION_REPORT.md`](validation/V0_4_8_PRE_012_TOKEN_2022_METADATA_DEVNET_VALIDATION_REPORT.md) — preuve Devnet des cinq opérations Token-2022 Token Metadata ;
- [`validation/V0_4_8_PRE_013_METAPLEX_FINAL_VALIDATION_REPORT.md`](validation/V0_4_8_PRE_013_METAPLEX_FINAL_VALIDATION_REPORT.md) — clôture de la matrice Metaplex à 15 `confirmed`, 5 `unavailable`, 0 `not_run` ;
- [`validation/V0_4_8_PRE_014_DESKTOP_METADATA_VALIDATION_REPORT.md`](validation/V0_4_8_PRE_014_DESKTOP_METADATA_VALIDATION_REPORT.md) — validation des trois domaines Metadata dans le desktop ;
## Audits actifs
@@ -108,10 +111,11 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
- [`Audit 0.4.8-pre.005 — instructions et historique Solana Program Metadata`](audits/V0_4_8_PRE_005_SOLANA_PROGRAM_METADATA_INSTRUCTION_HISTORY_AUDIT.md) ;
- [`Audit 0.4.8-pre.007 — structure du matérialiseur Metaplex Token Metadata`](audits/V0_4_8_PRE_007_METAPLEX_MATERIALIZER_STRUCTURE_AUDIT.md) ;
- [`Audit 0.4.8-pre.007 — conventions et structure de tous les matérialisateurs`](audits/V0_4_8_PRE_007_MATERIALIZER_CONVENTION_AUDIT.md) ;
- [`Audit 0.4.8-pre.008 — pipeline Solana Program Metadata`](audits/V0_4_8_PRE_008_METADATA_SOLANA_PROGRAM_PIPELINE_AUDIT.md).
- [`Audit 0.4.8-pre.008 — pipeline Solana Program Metadata`](audits/V0_4_8_PRE_008_METADATA_SOLANA_PROGRAM_PIPELINE_AUDIT.md) ;
- [`Correctif 0.4.8-pre.008 — replay historique Solana Program Metadata`](audits/V0_4_8_PRE_008_SOLANA_PROGRAM_METADATA_HISTORICAL_REPLAY_FIX.md) ;
- [`Audit 0.4.8-pre.009 — scénarios Devnet Solana Program Metadata`](audits/V0_4_8_PRE_009_METADATA_SOLANA_PROGRAM_DEVNET_SCENARIOS_AUDIT.md) ;
- [`Audit 0.4.8-pre.011 — complétude Token-2022 Token Metadata`](audits/V0_4_8_PRE_011_TOKEN_2022_METADATA_COMPLETENESS_AUDIT.md).
- [`Audit 0.4.8-pre.011 — complétude Token-2022 Token Metadata`](audits/V0_4_8_PRE_011_TOKEN_2022_METADATA_COMPLETENESS_AUDIT.md) ;
- [`Audit transversal 0.4.8-pre.015 — Metadata`](audits/V0_4_8_PRE_015_METADATA_TRANSVERSAL_RECONCILIATION_AUDIT.md).
## Plans de version actifs
@@ -120,4 +124,3 @@ Les onze crates possèdent désormais `README.md`, `TODO.md`, `USAGE.md` et `CHA
## Prompt de reprise
- [`Prompt actif 0.4.8`](../prompts/028_v0_4_8_spl_token_metadata_and_offchain_decision.md).

View File

@@ -0,0 +1,182 @@
<!-- file: docs/audits/V0_4_8_PRE_015_METADATA_TRANSVERSAL_RECONCILIATION_AUDIT.md -->
<!-- version: 3 -->
# Audit transversal Metadata `0.4.8-pre.015`
## 1. Objet
Cet audit ouvre la réconciliation transversale après la clôture de la finalisation desktop en `pre.014`. Il compare les trois domaines Metadata actifs :
- Metaplex Token Metadata ;
- Token-2022 Token Metadata ;
- Solana Program Metadata.
Le contrôle porte sur le stockage, les matrices contractuelles et réseau, les registres runtime, les exports publics et la nomenclature IDL. Il nouvre aucune nouvelle campagne Devnet et ne réinterprète pas les matrices historiques fermées.
## 2. Stockage
Les trois matérialisateurs Metadata produisent des `MtApiMaterializedOutput` de famille `Metadata`. Leur persistance passe par le stockage générique introduit par `0004_decode_materialization_store.sql` :
- `kb_sol_decode_events` conserve les observations décodées et leur payload JSONB ;
- `kb_sol_mat_events` conserve les sorties matérialisées avec `processor_name`, `processor_version`, `input_key`, `output_key`, `materialized_family` et `payload_jsonb` ;
- lidentité dune projection est bornée par lindex unique `(processor_name, processor_version, input_key, output_key)` ;
- les requêtes de lecture savent filtrer les sorties matérialisées par `processor_name`, `materialized_family` et signature.
Metaplex Token Metadata, Token-2022 Token Metadata et Solana Program Metadata nexigent donc pas trois schémas spécialisés. Le nom du matérialiseur identifie le producteur et `payload_jsonb` conserve les projections hétérogènes sans perdre leur contrat métier.
**Conclusion stockage : aucune migration PostgreSQL nest requise en `pre.015`.** Une table spécialisée ne serait justifiée que par un futur besoin de requête ou de contrainte relationnelle impossible à exprimer proprement avec le store générique actuel.
## 3. Matrices
### 3.1 Solana Program Metadata
Les matrices actives restent cohérentes entre elles :
| Matrice | Inventaire |
|----------------------|------------------------------------:|
| comptes | 3 entrées |
| instructions stables | 9 |
| exécuteur | 9 opérations |
| matérialisation | 2 snapshots + 9 faits dinstruction |
| pipeline | 9 opérations |
| validation Devnet | 9 opérations `confirmed` |
La matrice Devnet conserve `0.4.8-pre.009` comme milestone propriétaire du contrat de scénarios, tandis que ses preuves pointent vers la campagne réelle `pre.010`. Ce découpage est codé explicitement dans le validateur et nest pas une divergence à corriger.
### 3.2 Token-2022 Token Metadata
`SPL_TOKEN_2022_METADATA_DEVNET_VALIDATION_MATRIX.json` contient exactement les cinq opérations de `spl-token-metadata-interface` :
- `Initialize` ;
- `UpdateField` ;
- `Emit` ;
- `RemoveKey` ;
- `UpdateAuthority`.
Les cinq lignes sont `confirmed` sous le Program ID Token-2022. La matrice générale `SPL_TOKEN_2022_VALIDATION_MATRIX.json` reste un document historique du périmètre `0.4.6` et conserve volontairement ses scénarios réseau non exécutés de cette époque ; elle ne doit pas être réécrite à partir des preuves Metadata de `0.4.8`.
### 3.3 Metaplex Token Metadata
La matrice réseau courante ferme les 20 opérations :
- 15 `confirmed` ;
- 5 `unavailable` ;
- 0 `not_run`.
La matrice contractuelle `METAPLEX_TOKEN_METADATA_MATRIX.json` ferme parallèlement les 58 discriminateurs historiques :
- 20 `executable_current` ;
- 15 `executable_deprecated` ;
- 22 `decode_only_replaced` ;
- 1 `decode_only_bridge_boundary`.
Son inventaire métier est correct, mais ses métadonnées de progression étaient restées sur lancien état `pre.003/pre.007` : phase dexécution partielle, builders encore annoncés comme futurs et orchestration stateful encore listée dans `next_proofs`. Ces champs sont réconciliés avec la clôture réelle de `pre.013`, sans modifier les 58 lignes du contrat.
Les matrices `METAPLEX_TOKEN_METADATA_VALIDATION_MATRIX.json` (`0.4.7`) et `METAPLEX_TOKEN_METADATA_CROSS_VALIDATION_MATRIX.json` (`0.4.7-pre.010`) sont des corpus historiques fermés dont le validateur impose explicitement le milestone. Leurs statuts ne sont donc pas promus artificiellement à partir de la matrice réseau `pre.013`.
## 4. Registres runtime et exports
Le replay desktop enregistre explicitement les trois matérialisateurs :
- `MtMetadataMetaplexTokenMetadataMaterializer` ;
- `MtMetadataSolanaProgramMaterializer` ;
- `MtMetadataToken2022Materializer`.
Il enregistre également les décodeurs Metaplex Token Metadata, Solana Program Metadata et Token-2022. Les trois matérialisateurs sont exportés depuis la façade `kb-lib`.
`kb-pipeline` possède déjà des tests dAPI externe dédiés aux pipelines Metaplex Token Metadata et Solana Program Metadata. La surface Token-2022 expose bien ses contrats stateful et Metadata depuis la racine de crate, mais ne possédait pas de test externe dédié dans `kb-pipeline/tests`.
**Correction `pre.015-delta` :** ajout dun test externe Token-2022 Token Metadata couvrant la construction de la requête stateful et laccessibilité crate-root des contrats `Emit` et de postcondition dautorité.
## 5. IDL et nomenclature
Deux écarts documentaires actifs sont constatés :
1. le fichier Metaplex présent sous `idls/` est `metadata.metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s.metaplex_token_metadata.V1_14_0.from_github_mpl-token-metadata.json`, alors que `IDL_AUDIT.md` et `IDL_TO_KB_LIB_NOMENCLATURE.md` utilisaient encore le suffixe historique `from_solscan.json` ;
2. la ligne Solana Program Metadata de la nomenclature indiquait encore « implémenter lexécuteur », alors que modèles, décodeurs, matérialiseur, exécuteur, pipeline, scénarios et validation Devnet sont déjà présents.
Les deux documents sont corrigés. LIDL JSON elle-même reste inchangée.
## 6. Changements du premier delta
Le premier delta de `pre.015` :
- passe `workspace.package.version` à `0.4.8-pre.15` ;
- najoute aucune migration de stockage ;
- corrige les deux documents IDL ;
- réconcilie uniquement les métadonnées de progression de la matrice contractuelle Metaplex active ;
- ajoute le test dAPI externe Token-2022 Token Metadata dans `kb-pipeline` ;
- conserve les matrices historiques fermées sans réécriture ;
- prépare la suite de la réconciliation avant `pre.016`.
## 7. Validation du delta initial
La validation locale du 9 août 2026 est complète :
- `cargo fmt --all` : terminé ;
- `cargo check --workspace` : terminé ;
- `cargo clippy --all-targets` : terminé sans warning ;
- `python3 scripts/audit_rust_workspace_rules.py` : audits général, exports et workspace propres ;
- `cargo test -p kb-pipeline` : 109 tests unitaires, trois tests dAPI Metadata externes et doc-tests réussis ;
- `cargo test -p kb-lib` : 706 tests unitaires, huit tests dintégration et doc-tests réussis ;
- `cargo test -p kb-pipeline-demo-scenarios` : 105 tests unitaires, 1 test CLI, 1 test API externe et doc-tests réussis.
Le test externe Token-2022 ajouté par le delta compile donc bien uniquement contre la façade publique de `kb-pipeline`.
## 8. Seconde passe — registres, exports et documentation active
Le registre desktop `demo_decode_replay` contient les trois matérialiseurs spécialisés et leurs identités exactes : Metaplex Token Metadata, Solana Program Metadata et Token-2022. Le test externe générique `kb-lib/tests/external_materializer_api.rs` impose déjà que les trois types satisfassent les façades publiques `MtApiEventMaterializer` et `MtMaterializer`.
Lexécuteur Solana Program Metadata possède déjà un test externe dédié, tandis que Metaplex navait quune couverture interne et des consommateurs workspace. `pre.015-delta-fix-001` ajoute donc un test downstream-style qui parcourt les 35 opérations supportées Metaplex via `ExMetadataMetaplexTokenMetadataExecutor`, vérifie les 15 codes deprecated et le refus dun Program ID étranger, en nutilisant que les exports crate-root.
Trois écarts de documentation active sont corrigés simultanément :
- le rustdoc public `EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES` ne prétend plus être borné à `0.4.7-pre.005` ;
- `kb-pipeline-demo-scenarios/USAGE.md` reflète les neuf opérations Solana Program Metadata `confirmed` de `pre.010` au lieu de présenter encore la matrice comme `not_run` ;
- `docs/DEVNET_EXECUTION_GUIDE.md` remplace la « future fenêtre Metadata » et la section Metaplex hors ordre par un scénario Metadata on-chain unique, couvrant les trois domaines réellement exposés dans `demo_execution_metadata` et interdisant toujours le fetch off-chain.
`docs/README.md` référence désormais les rapports Devnet Token-2022 `pre.012`, Metaplex final `pre.013`, desktop Metadata `pre.014` et le présent audit `pre.015`.
La réconciliation des TODO retire également uniquement les tâches déjà closes : les validations Solana Program Metadata mainnet/Devnet/desktop et les anciennes fixtures Metaplex spécialisées. Les dettes `0.5.x`, ElGamal conditionnelles et les évolutions générales restent ouvertes.
## 9. Contrôles du correctif
Après application de `pre.015-delta-fix-001`, les validations locales minimales sont :
```bash
cargo fmt --all
cargo check --workspace
cargo clippy --all-targets
python3 scripts/audit_rust_workspace_rules.py
cargo test -p kb-lib
```
Aucune campagne Devnet nest requise : les changements réseau sont nuls et les statuts corrigés proviennent de matrices et rapports déjà qualifiés.
## 10. Validation de `pre.015-delta-fix-001`
La validation locale du 9 août 2026 confirme la seconde passe :
- `cargo fmt --all` : terminé ;
- `cargo check --workspace` : terminé ;
- `cargo clippy --all-targets` : terminé sans warning ;
- `python3 scripts/audit_rust_workspace_rules.py` : audits général, exports et workspace propres ;
- `cargo test -p kb-lib` : 706 tests unitaires, neuf tests dintégration et doc-tests réussis.
Le nouveau test externe Metaplex `external_metaplex_token_metadata_executor_api` passe donc depuis un consommateur downstream-style utilisant uniquement les exports crate-root.
## 11. Conclusion
La réconciliation transversale ne laisse plus de divergence fonctionnelle active entre les trois domaines Metadata :
- aucune migration PostgreSQL spécialisée nest requise ;
- les matrices réseau courantes concordent avec les preuves qualifiées ;
- les matrices historiques restent volontairement figées à leur milestone ;
- les trois décodeurs et matérialiseurs sont présents dans les registres runtime attendus ;
- les exports publics disposent de contrats externes cohérents ;
- les références IDL et la nomenclature active sont réconciliées ;
- les README, USAGE, TODO et guides actifs ne portent plus de statut Metadata devenu faux.
Deux tâches de niveau release restent volontairement hors de `pre.015` : transformer le ROADMAP pour refléter létat final de `0.4.8` et mettre à jour le CHANGELOG général uniquement après la validation finale. Elles appartiennent explicitement à `pre.016` et ne constituent pas une divergence des contrats Metadata.
**Statut de `0.4.8-pre.015` : terminé et validé.** La suite peut ouvrir `0.4.8-pre.016`, réservé à la conformité finale, à la documentation de release, au nettoyage/archivage et à la préparation du prompt suivant.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/plans/V0_4_8_SOLANA_PROGRAM_METADATA_AND_TOKEN_2022_COMPLETENESS_PLAN.md -->
<!-- version: 59 -->
<!-- version: 62 -->
# Plan `0.4.8` — Solana Program Metadata et complétude Token-2022
@@ -15,13 +15,13 @@ Il doit être maintenu pendant chaque prerelease, puis archivé pendant la derni
### 2.1 Surfaces strictement distinctes
| Surface | Program ID ou frontière | Rôle dans `0.4.8` |
|-----------------------------------|--------------------------------------------------------------------|---------------------------------------------------------------------------------|
| Metaplex Token Metadata | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | surface clôturée en `0.4.7`, hors développement principal |
| Token-2022 Token Metadata | programme Token-2022 `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` | compléter le contrat déjà partiellement pris en charge |
| `spl-token-metadata-interface` | interface sans Program ID autonome imposé | source contractuelle des instructions metadata implémentées par Token-2022 |
| Solana Program Metadata | `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` | nouvelle surface on-chain à implémenter sous `metadata/solana_program_metadata` |
| contenu distant HTTP/IPFS/Arweave | transport off-chain indépendant | hors `0.4.8`, reporté à lhorizon `0.15+` |
| Surface | Program ID ou frontière | Rôle dans `0.4.8` |
|-----------------------------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
| Metaplex Token Metadata | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | surface héritée de `0.4.7`, réauditée et qualifiée à 15 `confirmed` / 5 `unavailable` en `pre.013` |
| Token-2022 Token Metadata | programme Token-2022 `TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb` | complétude livrée en `pre.011` et validée sur Devnet en `pre.012` |
| `spl-token-metadata-interface` | interface sans Program ID autonome imposé | source contractuelle des instructions metadata implémentées par Token-2022 |
| Solana Program Metadata | `ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S` | surface complète livrée de `pre.003` à `pre.010`, avec neuf opérations Devnet `confirmed` |
| contenu distant HTTP/IPFS/Arweave | transport off-chain indépendant | hors `0.4.8`, reporté à lhorizon `0.15+` |
Aucun décodeur Token-2022 existant nest un décodeur partiel de `ProgM6…`. Les deux contrats doivent conserver des namespaces, modèles, matrices, tests et scénarios distincts.
@@ -484,7 +484,7 @@ Les blocs **Préflight et opérations**, **Simulation et confirmation** et **Pos
La validation finale confirme `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --all-targets`, laudit workspace et les 144 tests desktop. La disposition est également validée visuellement dans Tauri. `pre.014` est clôturée ; aucune nouvelle campagne Devnet nest requise avant `pre.015`.
### `0.4.8-pre.015` — stockage, matrices et réconciliation transversale
### `0.4.8-pre.015` — stockage, matrices et réconciliation transversale — terminé et validé
Objectif : réconcilier les trois surfaces Metadata désormais implémentées et validées avant la clôture documentaire de `pre.016`, sans ouvrir de nouvelle capacité réseau.
@@ -497,6 +497,28 @@ Objectif : réconcilier les trois surfaces Metadata désormais implémentées et
Critère : aucune divergence non expliquée entre code, matrices, registres, IDL, stockage et documentation active ; les éventuelles dettes restantes sont explicitement reportées avant `pre.016`.
#### `pre.015-delta` — audit transversal initial
Le stockage spécialisé nest pas requis : les sorties des trois matérialisateurs Metadata sont déjà persistées dans `kb_sol_mat_events`, qui distingue le producteur par `processor_name`, conserve la famille `metadata`, stocke les projections hétérogènes dans `payload_jsonb` et garantit lidentité par `(processor_name, processor_version, input_key, output_key)`. Aucune migration nest ajoutée.
La réconciliation statique relève en revanche trois écarts actifs : la nomenclature IDL de Solana Program Metadata demandait encore un exécuteur déjà implémenté ; les documents IDL utilisaient encore lancien nom de fichier Metaplex `from_solscan` au lieu du fichier GitHub présent ; la matrice contractuelle Metaplex conservait des champs de progression `pre.003/pre.007` alors que sa surface courante est clôturée et classifiée sur Devnet depuis `pre.013`. Ces métadonnées sont corrigées sans réécrire les matrices historiques fermées de `0.4.7` ou `0.4.6`.
Un test dAPI externe Token-2022 Token Metadata est ajouté à `kb-pipeline` afin daligner cette surface sur les tests crate-root déjà présents pour Metaplex Token Metadata et Solana Program Metadata.
La validation locale du delta initial est complète le 9 août 2026 : `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --all-targets` et laudit workspace sont propres ; `kb-pipeline` réussit 109 tests unitaires et trois suites dAPI Metadata externes ; `kb-lib` réussit 706 tests unitaires et huit tests dintégration ; `kb-pipeline-demo-scenarios` réussit 105 tests unitaires, 1 test CLI et 1 test API externe.
#### `pre.015-delta-fix-001` — exports et documentation active
La seconde passe confirme les trois matérialiseurs Metadata dans le registre runtime desktop et dans le contrat externe générique de `kb-lib`. Elle relève trois écarts actifs : le rustdoc de linventaire dopérations Metaplex cite encore `0.4.7-pre.005`, lUSAGE des scénarios présente encore la matrice Solana Program Metadata comme `not_run`, et le guide Devnet contient une « future fenêtre Metadata » suivie dune section Metaplex hors ordre alors que `demo_execution_metadata` est livré et validé.
Le correctif remplace ces états obsolètes par les qualifications courantes, ajoute au sommaire documentaire les rapports Token-2022, Metaplex final et desktop Metadata, et ajoute un test externe `kb-lib` parcourant les 35 capacités Metaplex depuis les seuls exports crate-root. Il retire également des TODO `kb-lib` et `kb-pipeline` les validations Metadata déjà closes, tout en conservant les dettes `0.5.x` et ElGamal réellement ouvertes. Aucune matrice réseau, migration de stockage ou campagne Devnet nest modifiée.
#### `pre.015-delta-fix-002` — clôture de la réconciliation transversale
La validation locale du correctif `fix-001` confirme `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --all-targets` et laudit workspace sans écart. `kb-lib` conserve 706 tests unitaires et passe désormais neuf tests dintégration externes, dont le nouveau contrat Metaplex crate-root.
La dernière passe ne relève plus de divergence fonctionnelle entre stockage, matrices courantes, registres runtime, exports, IDL, TODO et documentation opérationnelle. Les occurrences `not_run` restantes sont confinées aux matrices et rapports historiques dont le milestone est volontairement figé. Les documents de release de niveau workspace — transformation finale du ROADMAP et mise à jour du CHANGELOG général — restent explicitement réservés à `pre.016`, conformément au cycle de clôture. `pre.015` est donc clôturée sans migration de stockage ni nouvelle campagne Devnet.
### `0.4.8-pre.016` — clôture obligatoire
Réservée à :