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: Cargo.toml # file: Cargo.toml
# version: 37 # version: 38
[workspace] [workspace]
resolver = "3" resolver = "3"
@@ -18,7 +18,7 @@ members = [
] ]
[workspace.package] [workspace.package]
version = "0.4.8-pre.14" version = "0.4.8-pre.15"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
repository = "https://git.sasedev.com/Sasedev/khadhroony-bot3" repository = "https://git.sasedev.com/Sasedev/khadhroony-bot3"

View File

@@ -1,5 +1,5 @@
<!-- file: docs/DEVNET_EXECUTION_GUIDE.md --> <!-- file: docs/DEVNET_EXECUTION_GUIDE.md -->
<!-- version: 23 --> <!-- version: 24 -->
# Guide dexécution Devnet # 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 ; 5. SPL Associated Token Account — mint Token-2022 ;
6. SPL Token classique ; 6. SPL Token classique ;
7. Token-2022 ; 7. Token-2022 ;
8. registre ElGamal ; 8. registre ElGamal — reporté tant que sa fixture de preuve réelle manque ;
9. Metaplex Token Metadata — préparation de fixture, simulation puis soumission explicite. 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. 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 ### C01 — Initialiser lenvironnement de validation
```bash ```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 ### 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 ### C03 — Vérifier lidentité du réseau
```bash ```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 : 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 ### C12 — Preuves applicatives communes
Pour chaque scénario, conserver depuis lapplication : Pour chaque scénario, conserver depuis lapplication :
- profil et cluster résolus ; - 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. 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 ## 13. Critères de clôture de la campagne
La campagne est clôturable uniquement lorsque : 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 ; - 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 ; - 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 ; - les identités persistées respectent la nomenclature canonique ;
- aucun ancien `processor_name`, `surface_code`, `operation_code` ou `event_code` ne subsiste ; - aucun ancien `processor_name`, `surface_code`, `operation_code` ou `event_code` ne subsiste ;
- le replay ciblé est sans échec ni erreur de traitement ; - le replay ciblé est sans échec ni erreur de traitement ;
- les projections sont présentes et idempotentes ; - les projections sont présentes et idempotentes ;
- le présent guide reflète les commandes réellement exécutées. - 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 --> <!-- file: docs/IDL_AUDIT.md -->
<!-- version: 3 --> <!-- version: 4 -->
# Audit des IDL v3 # Audit des IDL v3
@@ -20,96 +20,96 @@ Le tag `5` a porté le nom de travail `WithdrawExcessLamports` avant la premièr
## Inventaire ## Inventaire
| Nom v3 | Program ID déclaré | Version déclarée | Instructions | SHA-256 | | 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.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` | | `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.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.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.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.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.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.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.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.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.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.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` | | `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.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.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.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` | | `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.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.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.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.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.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` | | `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` | | `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` | | `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` | | `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.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.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` | | `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.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.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.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.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.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.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.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.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.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` | | `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.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.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` | | `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` | | `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.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` | | `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.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` | | `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.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.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` | | `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.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.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.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` | | `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.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.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.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.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` | | `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` | | `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.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.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.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.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.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.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.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` | | `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.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.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` | | `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.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.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.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` | | `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.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.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` | | `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` | | `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` | | `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` | | `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.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.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.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.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.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` | | `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.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` | | `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` | | `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` | | `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 --> <!-- file: docs/IDL_TO_KB_LIB_NOMENCLATURE.md -->
<!-- version: 6 --> <!-- version: 7 -->
# Correspondance IDL ↔ `kb-lib` # Correspondance IDL ↔ `kb-lib`
Ce tableau constitue la cible de classification pour les futurs décodeurs et exécuteurs. 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. Il ne signifie pas que tous les modules proposés sont déjà implémentés.
| IDL v3 | Module actuel | Module cible | Action Rust | | 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.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` | | `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.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.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.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.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.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.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.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.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.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.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 | | `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.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.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.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 | | `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.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.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.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.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.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 | | `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 | | `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 | | `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` | | `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.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.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 | | `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.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.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.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.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.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.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.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.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.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 | | `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.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.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 | | `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 | | `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.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_solscan.json` | `metadata/metaplex_token_metadata` | `metadata/metaplex_token_metadata` | Aucune | | `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.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` | | `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.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.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 | | `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.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.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.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 | | `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.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.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.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.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 | | `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 | | `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.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.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.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.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.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.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.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 | | `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.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.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 | | `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.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.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.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 | | `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.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.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 | | `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` | | `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` | | `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 | | `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.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.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.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.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.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 | | `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.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 | | `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 | | `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 | | `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 --> <!-- file: docs/README.md -->
<!-- version: 23 --> <!-- version: 24 -->
# Documentation active de Khadhroony Bot3 # 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/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_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_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 ## 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.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 — 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.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) ; - [`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.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 ## 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 de reprise
- [`Prompt actif 0.4.8`](../prompts/028_v0_4_8_spl_token_metadata_and_offchain_decision.md). - [`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 --> <!-- 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 # 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 ### 2.1 Surfaces strictement distinctes
| Surface | Program ID ou frontière | Rôle dans `0.4.8` | | 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 | | 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éter le contrat déjà partiellement pris en charge | | 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 | | `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` | | 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+` | | 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. 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`. 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. 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`. 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 ### `0.4.8-pre.016` — clôture obligatoire
Réservée à : Réservée à :

View File

@@ -1,8 +1,16 @@
<!-- file: kb-lib/CHANGELOG.md --> <!-- file: kb-lib/CHANGELOG.md -->
<!-- version: 48 --> <!-- version: 50 -->
# CHANGELOG — kb-lib # CHANGELOG — kb-lib
## `0.4.8-pre.015` — réconciliation des matrices Metadata
- `pre.015-delta-fix-001` retire du rustdoc public de linventaire Metaplex la provenance obsolète `0.4.7-pre.005` et décrit désormais la surface comme linventaire audité courant ;
- ajoute un test dAPI externe qui parcourt les 35 opérations Metaplex depuis les seuls exports crate-root, vérifie les 15 opérations explicitement deprecated et refuse un Program ID étranger ;
- retire du TODO les validations réseau complémentaires Metaplex déjà closes en `pre.013`, sans supprimer le réaudit transversal prévu pour `0.5.x` ;
- le delta initial réconcilie les métadonnées de progression de la matrice contractuelle Metaplex Token Metadata avec la surface réellement clôturée en `pre.013` ;
- conserve intactes les 58 lignes du contrat dinstructions, les inventaires de comptes et les matrices historiques fermées.
## `0.4.8-pre.013` — exactitude des builders Metaplex courants ## `0.4.8-pre.013` — exactitude des builders Metaplex courants
- `pre.013-delta-fix-033` aligne la validation du décodeur `Update` sur les privilèges runtime globaux : lauthority doit signer et les comptes mutables doivent rester writable, mais un même wallet utilisé comme authority et fee payer peut apparaître writable à la position authority lors du replay Core ; le test `modern_update_variants_accept_transaction_privilege_supersets` couvre cette forme sans augmenter le nombre total de tests. - `pre.013-delta-fix-033` aligne la validation du décodeur `Update` sur les privilèges runtime globaux : lauthority doit signer et les comptes mutables doivent rester writable, mais un même wallet utilisé comme authority et fee payer peut apparaître writable à la position authority lors du replay Core ; le test `modern_update_variants_accept_transaction_privilege_supersets` couvre cette forme sans augmenter le nombre total de tests.
@@ -48,7 +56,6 @@
- ajoute les régressions de clôture couvrant lautorité nullable `None`, la forme `Emit` complète sans plage et la plage maximale exactement égale à 1 024 octets. - ajoute les régressions de clôture couvrant lautorité nullable `None`, la forme `Emit` complète sans plage et la plage maximale exactement égale à 1 024 octets.
- corrige dans `pre.011-fix-006` les deux attentes de nommage de ces régressions afin de vérifier les codes dopération canoniques `spl.token_2022.update_token_metadata_authority` et `spl.token_2022.emit_token_metadata`. - corrige dans `pre.011-fix-006` les deux attentes de nommage de ces régressions afin de vérifier les codes dopération canoniques `spl.token_2022.update_token_metadata_authority` et `spl.token_2022.emit_token_metadata`.
## 0.4.8-pre.008 — matérialiseurs metadata spécialisés ## 0.4.8-pre.008 — matérialiseurs metadata spécialisés
- corrige le décodeur Solana Program Metadata pour interpréter les flags `signer` et `writable` du replay comme des privilèges globaux de message : les privilèges requis sont désormais des minima, et les sur-ensembles légitimes dus au fee payer ou à dautres instructions ne sont plus rejetés ; - corrige le décodeur Solana Program Metadata pour interpréter les flags `signer` et `writable` du replay comme des privilèges globaux de message : les privilèges requis sont désormais des minima, et les sur-ensembles légitimes dus au fee payer ou à dautres instructions ne sont plus rejetés ;

View File

@@ -1,5 +1,5 @@
<!-- file: kb-lib/TODO.md --> <!-- file: kb-lib/TODO.md -->
<!-- version: 14 --> <!-- version: 15 -->
# TODO — kb-lib # TODO — kb-lib
@@ -23,8 +23,3 @@
- [ ] Surfaces - remplacer les décodeurs et exécuteurs réservés selon le ROADMAP. - [ ] Surfaces - remplacer les décodeurs et exécuteurs réservés selon le ROADMAP.
- [ ] Anchor - implémenter linfrastructure générique des conventions Anchor dans la série `0.6.x`. - [ ] Anchor - implémenter linfrastructure générique des conventions Anchor dans la série `0.6.x`.
## Validation réseau complémentaire Metaplex Token Metadata
- [ ] Réauditer les opérations spécialisées après disponibilité des fixtures Devnet Print/Burn, collection et pNFT.
- [ ] Conserver les états synthétique, simulé, soumis, non applicable et indisponible distincts dans les matrices.

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/executor/metadata/metaplex_token_metadata/intent.rs // file: kb-lib/src/executor/metadata/metaplex_token_metadata/intent.rs
// version: 9 // version: 10
//! Typed current and deprecated Metaplex Token Metadata execution intents. //! Typed current and deprecated Metaplex Token Metadata execution intents.
@@ -124,7 +124,7 @@ pub const EX_METAPLEX_TOKEN_METADATA_DEPRECATED_OPERATION_CODES: &[&str] = &[
EX_METAPLEX_TOKEN_METADATA_APPROVE_USE_AUTHORITY_OPERATION, EX_METAPLEX_TOKEN_METADATA_APPROVE_USE_AUTHORITY_OPERATION,
EX_METAPLEX_TOKEN_METADATA_REVOKE_USE_AUTHORITY_OPERATION, EX_METAPLEX_TOKEN_METADATA_REVOKE_USE_AUTHORITY_OPERATION,
]; ];
/// Current and deprecated operations implemented through `0.4.7-pre.005`. /// Current and explicitly deprecated operations exposed by the audited Metaplex Token Metadata executor.
pub const EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES: &[&str] = &[ pub const EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES: &[&str] = &[
EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION, EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION,
EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION, EX_METAPLEX_TOKEN_METADATA_UPDATE_OPERATION,

View File

@@ -0,0 +1,34 @@
// file: kb-lib/tests/external_metaplex_token_metadata_executor_api.rs
// version: 1
//! Downstream-style compilation contract for the Metaplex Token Metadata executor.
#[test]
fn external_consumers_inspect_metaplex_executor_capabilities_only_through_crate_root_exports() {
let executor = kb_lib::ExMetadataMetaplexTokenMetadataExecutor;
let program_id = kb_lib::MdProgramId(
kb_program_ids::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID.to_string(),
);
assert_eq!(kb_lib::EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES.len(), 35);
assert_eq!(kb_lib::EX_METAPLEX_TOKEN_METADATA_DEPRECATED_OPERATION_CODES.len(), 15);
for operation_code in kb_lib::EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES {
let capability = kb_lib::ExApiTypedInstructionExecutor::capability(
&executor,
&program_id,
operation_code,
);
assert!(capability.is_supported());
}
for operation_code in kb_lib::EX_METAPLEX_TOKEN_METADATA_DEPRECATED_OPERATION_CODES {
assert!(
kb_lib::EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES.contains(operation_code)
);
}
let foreign_program_id = kb_lib::MdProgramId(kb_program_ids::SYSTEM_PROGRAM_ID.to_string());
let foreign_capability = kb_lib::ExApiTypedInstructionExecutor::capability(
&executor,
&foreign_program_id,
kb_lib::EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION,
);
assert!(!foreign_capability.is_supported());
}

View File

@@ -1,11 +1,15 @@
<!-- file: kb-pipeline-demo-scenarios/CHANGELOG.md --> <!-- file: kb-pipeline-demo-scenarios/CHANGELOG.md -->
<!-- version: 71 --> <!-- version: 72 -->
# CHANGELOG — kb-pipeline-demo-scenarios # CHANGELOG — kb-pipeline-demo-scenarios
- `pre.013-delta-fix-037` consolide la clôture Metaplex après validation locale complète de `fix-036` : `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --all-targets` sans warning, audit workspace clean et 105 tests unitaires + 1 CLI + 1 API externe réussissent. Les guides actifs cessent de présenter `Verify/Unverify`, le lifecycle pNFT ou Token Owned Escrow comme `not_run`, la campagne maintenance finale est documentée, et le TODO retire les tâches `pre.013` terminées. La matrice fonctionnelle reste inchangée à 15 `confirmed`, 5 `unavailable`, 0 `not_run`. ## `0.4.8-pre.015`
- `pre.015-delta-fix-001` réconcilie lUSAGE avec la preuve Devnet Solana Program Metadata déjà acquise : les neuf opérations sont `confirmed` depuis `pre.010`, et `Close` conserve sa preuve spécifique `account_absence` ; aucune nouvelle campagne réseau nest ouverte.
## `0.4.8-pre.013` ## `0.4.8-pre.013`
- `pre.013-delta-fix-037` consolide la clôture Metaplex après validation locale complète de `fix-036` : `cargo fmt --all`, `cargo check --workspace`, `cargo clippy --all-targets` sans warning, audit workspace clean et 105 tests unitaires + 1 CLI + 1 API externe réussissent. Les guides actifs cessent de présenter `Verify/Unverify`, le lifecycle pNFT ou Token Owned Escrow comme `not_run`, la campagne maintenance finale est documentée, et le TODO retire les tâches `pre.013` terminées. La matrice fonctionnelle reste inchangée à 15 `confirmed`, 5 `unavailable`, 0 `not_run`.
- `pre.013-delta-fix-036` ferme la matrice Devnet des 20 opérations courantes : `Update` est confirmé sur NFT par `4hxxBnsCA1JBJPNHgXRDeq1W7rXbFj2yySscWJKxU1VTMDcPzPfoWy7QzANHSDsbQfxxcwuAQNDLqEukgsug6qoZ` au slot `482162413`, avec simulation au slot `482162408`, replay, matérialisation, idempotence et transition `primary_sale_happened false -> true`; `Resize`, `Migrate`, `Collect` et `CloseAccounts` sont classés `unavailable` après probes Devnet exacts `Custom(201)`, `Custom(75)`, `Custom(7)` et `Custom(188)` sans soumission. La matrice finale compte 15 `confirmed`, 5 `unavailable`, 0 `not_run`; le warning Clippy `if_same_then_else` du test de matrice est supprimé en fusionnant les branches NFT identiques. - `pre.013-delta-fix-036` ferme la matrice Devnet des 20 opérations courantes : `Update` est confirmé sur NFT par `4hxxBnsCA1JBJPNHgXRDeq1W7rXbFj2yySscWJKxU1VTMDcPzPfoWy7QzANHSDsbQfxxcwuAQNDLqEukgsug6qoZ` au slot `482162413`, avec simulation au slot `482162408`, replay, matérialisation, idempotence et transition `primary_sale_happened false -> true`; `Resize`, `Migrate`, `Collect` et `CloseAccounts` sont classés `unavailable` après probes Devnet exacts `Custom(201)`, `Custom(75)`, `Custom(7)` et `Custom(188)` sans soumission. La matrice finale compte 15 `confirmed`, 5 `unavailable`, 0 `not_run`; le warning Clippy `if_same_then_else` du test de matrice est supprimé en fusionnant les branches NFT identiques.
- `pre.013-delta-fix-035` corrige le parseur des refus runtime de la campagne maintenance : `simulation.error` contient déjà le JSON RPC sous forme de chaîne, et sa double sérialisation empêchait `fix-034` de reconnaître le `Custom(201)` pourtant observé. Le probe parse désormais structurellement `InstructionError[1].Custom`; le test de contrat existant couvre les codes `201`, `75`, `7` et `188`. La matrice reste à 14 `confirmed`, 2 `unavailable` et 4 `not_run`. - `pre.013-delta-fix-035` corrige le parseur des refus runtime de la campagne maintenance : `simulation.error` contient déjà le JSON RPC sous forme de chaîne, et sa double sérialisation empêchait `fix-034` de reconnaître le `Custom(201)` pourtant observé. Le probe parse désormais structurellement `InstructionError[1].Custom`; le test de contrat existant couvre les codes `201`, `75`, `7` et `188`. La matrice reste à 14 `confirmed`, 2 `unavailable` et 4 `not_run`.
- `pre.013-delta-fix-034` enregistre le premier run de maintenance : `Update` franchit confirmation et postcondition `primary_sale_happened false -> true`, puis `Resize` atteint le handler courant et la simulation est refusée avec `AlreadyResized`, `Custom(201)`, `14643` CU consommées et aucune soumission. Comme les comptes créés aujourdhui sont déjà au layout cible et quun succès exigerait un compte legacy sous-dimensionné contrôlé, `Resize` passe à `unavailable`; la matrice devient 14 `confirmed`, 2 `unavailable` et 4 `not_run`. La campagne corrigée soumet uniquement `Update` et traite désormais `Resize`, `Migrate`, `Collect` et `CloseAccounts` comme probes simulation-only attendus respectivement en `201`, `75`, `7` et `188`. - `pre.013-delta-fix-034` enregistre le premier run de maintenance : `Update` franchit confirmation et postcondition `primary_sale_happened false -> true`, puis `Resize` atteint le handler courant et la simulation est refusée avec `AlreadyResized`, `Custom(201)`, `14643` CU consommées et aucune soumission. Comme les comptes créés aujourdhui sont déjà au layout cible et quun succès exigerait un compte legacy sous-dimensionné contrôlé, `Resize` passe à `unavailable`; la matrice devient 14 `confirmed`, 2 `unavailable` et 4 `not_run`. La campagne corrigée soumet uniquement `Update` et traite désormais `Resize`, `Migrate`, `Collect` et `CloseAccounts` comme probes simulation-only attendus respectivement en `201`, `75`, `7` et `188`.
@@ -189,7 +193,6 @@
- utilise explicitement le wallet du profil comme mint authority et freeze authority ; - utilise explicitement le wallet du profil comme mint authority et freeze authority ;
- conserve le keypair du mint dans `kb-wallet` sans exposer ni déléguer ses secrets à une CLI externe. - conserve le keypair du mint dans `kb-wallet` sans exposer ni déléguer ses secrets à une CLI externe.
## 0.4.7-pre.013-fix-010 ## 0.4.7-pre.013-fix-010
- adapte la création de la fixture NFT à la CLI `spl-token` installée, qui ne prend pas en charge `create-token --freeze-authority` ; - adapte la création de la fixture NFT à la CLI `spl-token` installée, qui ne prend pas en charge `create-token --freeze-authority` ;

View File

@@ -1,5 +1,5 @@
<!-- file: kb-pipeline-demo-scenarios/USAGE.md --> <!-- file: kb-pipeline-demo-scenarios/USAGE.md -->
<!-- version: 24 --> <!-- version: 25 -->
# Utilisation de kb-pipeline-demo-scenarios # Utilisation de kb-pipeline-demo-scenarios
@@ -197,7 +197,6 @@ Les tests Devnet restent opt-in et peuvent produire des transactions réelles lo
- les scénarios réseau exigent un endpoint, un wallet et des fonds compatibles ; - les scénarios réseau exigent un endpoint, un wallet et des fonds compatibles ;
- la bibliothèque ne fournit pas dinterface graphique. - la bibliothèque ne fournit pas dinterface graphique.
## Charger les scénarios synthétiques Metaplex ## Charger les scénarios synthétiques Metaplex
```rust ```rust
@@ -252,7 +251,6 @@ fn load_metaplex_cross_validation() -> kb_core::Result<usize> {
Les cas marqués `requiresNetworkEvidence` ne peuvent pas être déclarés validés à partir de preuves synthétiques. Une simulation, une soumission ou une confirmation exige les preuves RPC déclarées par le cas. Les cas marqués `requiresNetworkEvidence` ne peuvent pas être déclarés validés à partir de preuves synthétiques. Une simulation, une soumission ou une confirmation exige les preuves RPC déclarées par le cas.
## Simuler une opération Metaplex réelle sur Devnet ## Simuler une opération Metaplex réelle sur Devnet
LAPI réseau prend un intent Metaplex typé déjà lié aux comptes et autorités de la fixture. Le wallet persistant du profil doit être lunique signer requis. LAPI réseau prend un intent Metaplex typé déjà lié aux comptes et autorités de la fixture. Le wallet persistant du profil doit être lunique signer requis.
@@ -522,7 +520,7 @@ where
Cet appel crée des comptes et soumet onze transactions réelles au minimum : deux transferts de préfinancement et neuf opérations `ProgM6…`. Il ne doit jamais être déclenché implicitement par une ouverture de fenêtre ou une simple demande de simulation. Cet appel crée des comptes et soumet onze transactions réelles au minimum : deux transferts de préfinancement et neuf opérations `ProgM6…`. Il ne doit jamais être déclenché implicitement par une ouverture de fenêtre ou une simple demande de simulation.
La matrice `SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_MATRIX.json` reste à `not_run` tant que les signatures, simulations, postconditions et preuves matérialisées nont pas été enregistrées. `Close` exige une preuve `account_absence`, car un compte absent ne produit pas de snapshot matérialisé. La matrice `SOLANA_PROGRAM_METADATA_DEVNET_VALIDATION_MATRIX.json` est fermée à neuf opérations `confirmed` depuis `0.4.8-pre.010`. Les deux parcours conservent leurs signatures, simulations, postconditions et preuves matérialisées ; `Close` utilise une preuve `account_absence`, car un compte absent ne produit pas de snapshot matérialisé. Une réexécution nest nécessaire quen cas de régression ou de changement du runtime Devnet.
### Preuve machine-readable `Create -> Mint` ### Preuve machine-readable `Create -> Mint`
À partir de `pre.013-delta-fix-012`, une campagne réussie imprime en plus une ligne unique `METAPLEX_CREATE_MINT_EVIDENCE`. Elle contient les deux objets `create` et `mint` avec le cluster, le genesis hash, le slot RPC de simulation, le nombre de logs, le message hash exact, le fee estimé, la signature, le statut/slot de confirmation, les nombres de snapshots et matérialisations ainsi que les drapeaux canonical/Core/replay/idempotence. Cette ligne est la forme à conserver pour les futures promotions de matrice. À partir de `pre.013-delta-fix-012`, une campagne réussie imprime en plus une ligne unique `METAPLEX_CREATE_MINT_EVIDENCE`. Elle contient les deux objets `create` et `mint` avec le cluster, le genesis hash, le slot RPC de simulation, le nombre de logs, le message hash exact, le fee estimé, la signature, le statut/slot de confirmation, les nombres de snapshots et matérialisations ainsi que les drapeaux canonical/Core/replay/idempotence. Cette ligne est la forme à conserver pour les futures promotions de matrice.

View File

@@ -1,8 +1,14 @@
<!-- file: kb-pipeline/CHANGELOG.md --> <!-- file: kb-pipeline/CHANGELOG.md -->
<!-- version: 28 --> <!-- version: 30 -->
# CHANGELOG — kb-pipeline # CHANGELOG — kb-pipeline
## `0.4.8-pre.015`
- `pre.015-delta-fix-001` retire du TODO les validations Solana Program Metadata déjà closes par le replay mainnet `pre.008`, la campagne Devnet `pre.010` et le desktop `pre.014`, ainsi que la dette Metaplex Print/Burn/collection/pNFT fermée en `pre.013` ;
- le delta initial ajoute un test dAPI externe dédié à Token-2022 Token Metadata afin de vérifier les exports crate-root des lectures stateful, de la validation de plage `Emit`, de linspection du `returnData` et de la postcondition dautorité ;
- ne modifie aucun contrat dexécution ou de stockage.
## `0.4.8-pre.013` ## `0.4.8-pre.013`
- `pre.013-delta-fix-031` expose `MetaplexTokenMetadataAccountKind::TokenOwnedEscrow` dans les lectures stateful et réutilise le décodeur strict déjà présent dans `kb-lib`, y compris validation du propriétaire, du discriminant, du PDA dautorité et du bump ; - `pre.013-delta-fix-031` expose `MetaplexTokenMetadataAccountKind::TokenOwnedEscrow` dans les lectures stateful et réutilise le décodeur strict déjà présent dans `kb-lib`, y compris validation du propriétaire, du discriminant, du PDA dautorité et du bump ;
@@ -32,7 +38,6 @@
- décode uniquement un retour complet et conserve un retour partiel sans inventer un état ; - décode uniquement un retour complet et conserve un retour partiel sans inventer un état ;
- ajoute la postcondition stateful de changement ou suppression de lautorité metadata. - ajoute la postcondition stateful de changement ou suppression de lautorité metadata.
## 0.4.8-pre.010 ## 0.4.8-pre.010
- remplace lassertion runtime sur la relation entre borne RPC et borne de décodage par une assertion `const`, afin de supprimer le dernier warning `clippy::assertions_on_constants` ; - remplace lassertion runtime sur la relation entre borne RPC et borne de décodage par une assertion `const`, afin de supprimer le dernier warning `clippy::assertions_on_constants` ;

View File

@@ -1,14 +1,8 @@
<!-- file: kb-pipeline/TODO.md --> <!-- file: kb-pipeline/TODO.md -->
<!-- version: 12 --> <!-- version: 13 -->
# TODO — kb-pipeline # TODO — kb-pipeline
## Validation réseau Solana Program Metadata
- [ ] `0.4.8-pre.009` - valider les neuf opérations sur Devnet depuis `kb-pipeline-demo-scenarios`, avec fixture native, simulation, soumission confirmée, lectures avant/après et replay.
- [ ] `0.4.8-pre.009` - vérifier depuis `demo_execution_metadata` que les scénarios desktop consomment les mêmes runners réutilisables sans dupliquer la logique du pipeline.
- [ ] Validation historique - exécuter `demo_backfill`, Core extraction et decode replay sur des signatures `ProgM6…` représentatives, puis contrôler les sorties matérialisées.
## Réaudit ultérieur des surfaces historiques ## Réaudit ultérieur des surfaces historiques
- [ ] Version à déterminer - après le réaudit des exécuteurs Solana Core et SPL dans `kb-lib`, vérifier que le pipeline orchestre sans filtrage implicite les opérations courantes et les opérations obsolètes explicitement approuvées. - [ ] Version à déterminer - après le réaudit des exécuteurs Solana Core et SPL dans `kb-lib`, vérifier que le pipeline orchestre sans filtrage implicite les opérations courantes et les opérations obsolètes explicitement approuvées.
@@ -23,7 +17,3 @@
- [ ] Réseau - confirmer lexistence et le déploiement du programme avant toute campagne réelle. - [ ] Réseau - confirmer lexistence et le déploiement du programme avant toute campagne réelle.
- [ ] Intégration - compléter uniquement les couches justifiées par un scénario réellement exécutable. - [ ] Intégration - compléter uniquement les couches justifiées par un scénario réellement exécutable.
## Validation réseau complémentaire Metaplex Token Metadata
- [ ] Raccorder les postconditions et matérialisations des futures fixtures Print/Burn, collection et pNFT sans spécialiser le pipeline généraliste.

View File

@@ -0,0 +1,42 @@
// file: kb-pipeline/tests/external_metadata_token_2022_pipeline_api.rs
// version: 1
//! External-only coverage for the public Token-2022 Token Metadata pipeline contract.
#[test]
fn external_consumers_use_only_public_token_2022_metadata_pipeline_exports() {
let account = kb_lib::MdPubkey(solana_pubkey::Pubkey::new_from_array([9_u8; 32]).to_string());
let request = kb_pipeline::Token2022StatefulReadRequest {
query_role: "rpc".to_string(),
account: account.clone(),
kind: kb_lib::DcToken2022StateKind::Mint,
min_context_slot: std::option::Option::Some(42),
max_data_bytes: kb_pipeline::MAX_TOKEN_2022_STATEFUL_ACCOUNT_BYTES,
context: kb_pipeline::Token2022StatefulContext::default(),
};
assert_eq!(request.account, account);
assert_eq!(request.kind, kb_lib::DcToken2022StateKind::Mint);
assert!(
kb_pipeline::validate_token_2022_metadata_emit_range(
std::option::Option::Some(0),
std::option::Option::Some(32),
)
.is_ok()
);
let _emit_inspector: fn(
&kb_lib::ExApiExecutionSimulationResult,
std::option::Option<u64>,
std::option::Option<u64>,
) -> kb_core::Result<kb_pipeline::Token2022MetadataEmitEvidence> =
kb_pipeline::inspect_token_2022_metadata_emit_simulation;
let _authority_inspector: fn(
&kb_lib::MdPubkey,
std::option::Option<&kb_lib::MdPubkey>,
&kb_pipeline::Token2022StatefulSnapshotBundle,
) -> kb_pipeline::Token2022ExecutionPostcondition =
kb_pipeline::inspect_token_2022_metadata_authority_postcondition;
const {
assert!(kb_pipeline::MAX_TOKEN_2022_METADATA_EMIT_BYTES > 0);
assert!(kb_pipeline::MAX_TOKEN_2022_STATEFUL_ACCOUNT_BYTES > 0);
}
}

View File

@@ -1,11 +1,11 @@
{ {
"schema_version": 3, "schema_version": 4,
"milestone": "0.4.7-pre.006", "milestone": "0.4.8-pre.015",
"surface_code": "metadata.metaplex_token_metadata", "surface_code": "metadata.metaplex_token_metadata",
"program_id": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s", "program_id": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s",
"program_family": "independent_metaplex_foundation_program", "program_family": "independent_metaplex_foundation_program",
"decode_status": "instruction_inventory_exhaustive_0_through_57_and_account_key_inventory_exhaustive_0_through_14", "decode_status": "instruction_inventory_exhaustive_0_through_57_and_account_key_inventory_exhaustive_0_through_14",
"runtime_registration": "enabled_in_kb_lib_pre_009", "runtime_registration": "enabled_current_runtime_replay_and_desktop",
"official_sources": [ "official_sources": [
{ {
"kind": "repository", "kind": "repository",
@@ -325,14 +325,11 @@
}, },
"execution": { "execution": {
"enabled": true, "enabled": true,
"phase": "pre_003_current_create_update_and_deprecated_puff_set_token_standard_enabled_remaining_builders_pending_pre_004_to_pre_006", "phase": "current_surface_closed_with_builders_stateful_pipeline_and_devnet_classification",
"surface_closure_required_by": "0.4.7-pre.006", "surface_closure_required_by": "0.4.8-pre.013",
"reserved_executor_may_not_claim_support": false "reserved_executor_may_not_claim_support": false
}, },
"next_proofs": [ "next_proofs": [],
"implement every executable_current builder by pre.006",
"integrate stateful orchestration in pre.007"
],
"implemented_instruction_groups": [ "implemented_instruction_groups": [
{ {
"pre_release": "0.4.7-pre.002", "pre_release": "0.4.7-pre.002",
@@ -1697,7 +1694,7 @@
"stable account-based output identity" "stable account-based output identity"
] ]
}, },
"next_proof": "builders_preflight_postconditions_and_stateful_pipeline_after_closed_pre_002_contract", "next_proof": "none_current_surface_closed_and_devnet_classified_in_0.4.8-pre.013",
"instruction_execution_contract": [ "instruction_execution_contract": [
{ {
"discriminator": 0, "discriminator": 0,