v0.4.7-pre.011
This commit is contained in:
@@ -1,61 +1,45 @@
|
||||
<!-- file: kb-lib/CHANGELOG.md -->
|
||||
<!-- version: 13 -->
|
||||
<!-- version: 15 -->
|
||||
|
||||
# CHANGELOG — kb-lib
|
||||
|
||||
## 0.4.7-pre.011 — réouverture des validations réseau
|
||||
|
||||
### Documentation
|
||||
|
||||
- réorganisation de `README.md`, `USAGE.md`, `TODO.md` et du changelog selon leur rôle documentaire ;
|
||||
- suppression des tâches Metaplex terminées du TODO ;
|
||||
- maintien des campagnes réseau hors du TODO de `kb-lib`, la surface de builders étant achevée.
|
||||
|
||||
## 0.4.7-pre.006 — fermeture de l’exécuteur Metaplex
|
||||
|
||||
- fermeture des 35 opérations officiellement constructibles : 20 courantes et 15 dépréciées ;
|
||||
- ajout des éditions historiques constructibles, use authority, escrow, mint, migrate, use, collect, print et resize ;
|
||||
- ajout des éditions, use authority, escrow, mint, migrate, use, collect, print et resize ;
|
||||
- conservation des 22 instructions remplacées en decode-only et de Bubblegum comme frontière externe ;
|
||||
- construction des instructions restantes depuis le contrat IDL exact, avec comptes, signers, mutabilité et arguments Borsh officiels ;
|
||||
- extension des tests unitaires d’intent, builder et capability ;
|
||||
- fermeture de la matrice des 58 discriminants avant l’intégration pipeline.
|
||||
- extension des tests unitaires d’intent, builder, capability, PDA et signers.
|
||||
|
||||
## 0.4.7-pre.005 — programmable NFTs et délégations
|
||||
|
||||
- ajout des wrappers officiels `Burn`, `Delegate`, `Revoke`, `Lock`, `Unlock`, `Transfer` et `CloseAccounts` ;
|
||||
- validation du couplage des comptes Token Authorization Rules et maintien de la simulation obligatoire ;
|
||||
- exposition des codes d’opération, bindings TS-RS et capacités exactes correspondantes ;
|
||||
- ajout de tests unitaires dans `intent.rs`, `builder.rs` et `executor.rs` ;
|
||||
- maintien des versions remplacées en decode-only avec renvoi vers leur wrapper canonique.
|
||||
- validation des comptes Token Authorization Rules et maintien de la simulation obligatoire.
|
||||
|
||||
## 0.4.7-pre.004 — collections, créateurs et autorités
|
||||
|
||||
- ajout des wrappers courants `Verify` et `Unverify` pour les créateurs et collections ;
|
||||
- ajout de `SetCollectionSize` comme opération officiellement constructible mais dépréciée, soumise à approbation opérateur explicite ;
|
||||
- validation des combinaisons de comptes creator/collection et des PDA collection metadata/master edition ;
|
||||
- ajout des codes d’opération, exports publics, bindings et tests unitaires correspondants ;
|
||||
- maintien des anciennes instructions de vérification remplacées en decode-only.
|
||||
- ajout des wrappers courants `Verify` et `Unverify` ;
|
||||
- ajout de `SetCollectionSize` comme opération dépréciée soumise à approbation explicite.
|
||||
|
||||
## 0.4.7-pre.003 — fondations de l’exécuteur Metaplex
|
||||
|
||||
### Correctif `0.4.7-pre.003-delta-fix-003`
|
||||
|
||||
- ajout de tests unitaires dans `intent.rs`, `builder.rs` et `executor.rs` pour la surface Metaplex introduite en `pre.003` ;
|
||||
- vérification des codes d’opération, de la partition des opérations dépréciées, des politiques fail-closed, des PDA metadata/edition, du builder `PuffMetadata`, des capacités exactes et de la parité entre dispatch typé et générique.
|
||||
|
||||
### Correctif `0.4.7-pre.003-delta-fix-002`
|
||||
|
||||
- suppression de la dépendance directe inutile à `solana-program` dans le workspace et `kb-lib` ;
|
||||
- utilisation des types modulaires `solana_instruction::Instruction` et `solana_pubkey::Pubkey` pour le contrat interne ;
|
||||
- conversion locale des types de compatibilité retournés par `mpl-token-metadata 5.1.1`, sans exposer ni dépendre directement de `solana-program` ;
|
||||
- suppression de tous les opérateurs `?` introduits par la surface Metaplex `pre.003` ;
|
||||
- ajout des TODO de réaudit des exécuteurs Solana Core/SPL et de leur orchestration pipeline selon la nouvelle règle des opérations remplacées et obsolètes.
|
||||
|
||||
- remplacement de l’exécuteur réservé par une surface typée initiale ;
|
||||
- builders courants `Create` et `UpdateAsUpdateAuthorityV2` fondés sur `mpl-token-metadata` ;
|
||||
- validation des PDA metadata/edition, des signers autorisés, des comptes de rule set et des plafonds de coût ;
|
||||
- simulation et dry-run obligatoires pour cette première tranche ;
|
||||
- correction de la classification des instructions remplacées et obsolètes.
|
||||
- remplacement de l’exécuteur réservé par une surface typée ;
|
||||
- ajout des builders `Create`, `Update`, `PuffMetadata` et `SetTokenStandard` ;
|
||||
- correction des dépendances Solana modulaires, suppression des opérateurs `?` introduits et ajout des tests de parité ;
|
||||
- classification des opérations courantes, remplacées et obsolètes constructibles.
|
||||
|
||||
## 0.4.7-pre.002 — contrat Metaplex fermé
|
||||
|
||||
- classification exhaustive des 58 discriminants Metaplex Token Metadata ;
|
||||
- comptes positionnels et signers importés de l’IDL archivée `V1_14_0` ;
|
||||
- classification exhaustive des 58 discriminants ;
|
||||
- propriété unique des faits metadata, admin, lifecycle et risk/compliance ;
|
||||
- exposition directe des créateurs, collection, uses, token standard et programmable config dans le snapshot metadata autoritatif ;
|
||||
- tests contractuels d’exhaustivité, d’unicité et de séparation avec Token-2022.
|
||||
- séparation contractuelle avec Token-2022.
|
||||
|
||||
## 0.4.6
|
||||
|
||||
|
||||
@@ -1,70 +1,64 @@
|
||||
<!-- file: kb-lib/README.md -->
|
||||
<!-- version: 17 -->
|
||||
<!-- version: 19 -->
|
||||
|
||||
# kb-lib
|
||||
|
||||
`kb-lib` est la bibliothèque fonctionnelle consolidée de `khadhroony-bot3`. Elle expose les modèles partagés, les contrats et implémentations de décodage, de matérialisation, d’exécution et de sécurité nécessaires au pipeline Solana.
|
||||
|
||||
- Metaplex Token Metadata expose les wrappers canoniques courants et conserve les opérations obsolètes encore constructibles sous une API Rust `#[deprecated]` avec approbation opérateur explicite ; les versions remplacées ne reçoivent qu’un renvoi vers leur remplacement canonique final.
|
||||
`kb-lib` est la bibliothèque fonctionnelle consolidée de `khadhroony-bot3`. Elle fournit les modèles, décodeurs, matérialisateurs, exécuteurs et contrats de sécurité indépendants du transport, du stockage et de l’interface utilisateur.
|
||||
|
||||
## Périmètre
|
||||
|
||||
La crate regroupe quatre familles internes, exposées par la façade `kb_lib` :
|
||||
La crate couvre actuellement Solana Core, SPL Memo, SPL Token classique, SPL Associated Token Account, Token-2022, le registre SPL ElGamal et Metaplex Token Metadata.
|
||||
|
||||
- décodeurs et contrats de décodage contextualisé ;
|
||||
- exécuteurs, plans préparés et politiques de sécurité ;
|
||||
- matérialisateurs et projections structurées ;
|
||||
- modèles canoniques utilisés par les autres crates.
|
||||
Pour Metaplex Token Metadata, elle fournit :
|
||||
|
||||
Elle couvre actuellement Solana Core, SPL Memo, SPL Token classique, SPL Associated Token Account, Token-2022, le registre SPL ElGamal et le décodeur Metaplex Token Metadata. De nombreux décodeurs et exécuteurs réservés exposent seulement une identité et une compatibilité conservatrice ; ils ne constituent pas une implémentation fonctionnelle.
|
||||
- le décodage des 58 discriminants et des principales familles de comptes ;
|
||||
- la propriété unique des faits metadata, admin, lifecycle et risk/compliance ;
|
||||
- 20 opérations courantes exécutables ;
|
||||
- 15 opérations obsolètes encore constructibles, exposées comme dépréciées et soumises à une approbation explicite ;
|
||||
- 22 versions remplacées conservées en décodage uniquement et redirigées vers leur remplacement canonique final ;
|
||||
- une frontière explicite avec Bubblegum et avec les metadata incorporées de Token-2022.
|
||||
|
||||
## Responsabilités
|
||||
|
||||
- reconnaître et décoder une instruction à partir d’un contexte canonique ;
|
||||
- publier des déclarations de couverture déterministes ;
|
||||
- reconnaître et décoder des instructions contextualisées ;
|
||||
- décoder les comptes on-chain pris en charge ;
|
||||
- produire des observations et diagnostics typés ;
|
||||
- construire des plans d’exécution bornés et vérifiables ;
|
||||
- appliquer les politiques de sécurité avant simulation, signature ou envoi ;
|
||||
- matérialiser les observations commitées selon des contrats explicites ;
|
||||
- conserver des modèles indépendants du stockage, du transport et de l’interface desktop.
|
||||
- matérialiser les faits stables et prouvés ;
|
||||
- construire des plans d’exécution bornés ;
|
||||
- déclarer les comptes, signers, coûts et confirmations nécessaires ;
|
||||
- appliquer les garde-fous fail-closed avant simulation, signature ou envoi ;
|
||||
- exposer des modèles indépendants du RPC, de PostgreSQL et de Tauri.
|
||||
|
||||
## Hors périmètre
|
||||
|
||||
`kb-lib` ne persiste aucune donnée, ne dialogue pas directement avec un RPC, ne sélectionne pas un endpoint et ne gère pas les secrets de wallet. Ces responsabilités appartiennent respectivement à `kb-store`, `kb-onchain-transport`, `kb-pipeline` et `kb-wallet`.
|
||||
`kb-lib` ne sélectionne aucun endpoint, ne lit pas directement un RPC, ne persiste aucune donnée, ne gère pas les secrets de wallet et ne soumet aucune transaction.
|
||||
|
||||
## Surface publique principale
|
||||
|
||||
La façade publique est organisée autour de :
|
||||
- contrats `DcApi*` et décodeurs concrets `Dc*Decoder` ;
|
||||
- parseurs de comptes et d’états bornés ;
|
||||
- contrats `MtApi*` et matérialisateurs concrets ;
|
||||
- contrats `ExApi*`, politiques de sécurité et exécuteurs `Ex*Executor` ;
|
||||
- `ExMetadataMetaplexTokenMetadataExecutor`, `ExMetaplexTokenMetadataExecutionIntent` et `ExMetaplexTokenMetadataOperation` ;
|
||||
- modèles canoniques `Md*` réexportés par la façade.
|
||||
|
||||
- `DcApiInstructionDecoder`, `DcApiProtocolDecoder` et les types `DcApi*` ;
|
||||
- les décodeurs concrets `DcSolanaCoreDecoder`, `DcSplMemoDecoder`, `DcSplTokenDecoder`, `DcSplAssociatedTokenAccountDecoder`, `DcSplToken2022Decoder`, `DcSplElgamalRegistryDecoder` et `DcMetadataMetaplexTokenMetadataDecoder` ;
|
||||
- `ExApiTypedInstructionExecutor`, `ExApiInstructionExecutor`, les politiques `ExApi*` et les exécuteurs concrets `Ex*Executor` ;
|
||||
- `ExSafetyChecker` et les décisions de sécurité associées ;
|
||||
- `MtApiEventMaterializer`, les types `MtApi*` et les matérialisateurs concrets ;
|
||||
- `MdCoreInstructionReplayInput` et les modèles canoniques réexportés.
|
||||
Les exemples d’appel et invariants sont documentés dans [USAGE.md](USAGE.md).
|
||||
|
||||
Le catalogue détaillé et les exemples se trouvent dans [USAGE.md](USAGE.md).
|
||||
## Relations avec le workspace
|
||||
|
||||
## Matrices contractuelles
|
||||
|
||||
Les matrices actives sont maintenues sous [`../test-fixtures/contract-matrices/`](../test-fixtures/contract-matrices/). Elles servent à la fois de références documentaires et de fixtures exécutées par des tests. Elles ne sont pas dupliquées dans la documentation de la crate.
|
||||
|
||||
## Relations
|
||||
|
||||
- dépend de `kb-core` pour le contrat d’erreur commun ;
|
||||
- dépend de `kb-program-ids` pour le registre canonique des programmes ;
|
||||
- dépend de `kb-core` et `kb-program-ids` ;
|
||||
- est consommée par `kb-pipeline`, `kb-store`, `kb-onchain-transport`, `kb-pipeline-demo-scenarios` et `kb-app-demo-desktop` ;
|
||||
- ne dépend jamais de `kb-store` ni d’une application.
|
||||
- ne dépend jamais de `kb-store`, `kb-pipeline` ni d’une application.
|
||||
|
||||
## Statut et limites
|
||||
|
||||
La migration des surfaces historiques jusqu’à un périmètre proche de bot2 `0.4.6` est largement réalisée. Le décodeur Metaplex Token Metadata couvre les 58 discriminants et les matérialisations possèdent désormais un contrat fermé de propriété des faits. L’exécuteur Metaplex ferme désormais les 35 opérations officiellement constructibles : 20 opérations courantes et 15 opérations obsolètes conservées sous `#[deprecated]` avec approbation opérateur explicite. Les 22 versions remplacées restent decode-only et Bubblegum demeure une frontière externe. La fermeture inclut les éditions, uses, escrow, mint, print, collect, migrate et resize. Le registre ElGamal n’est pas déclaré validé sur Devnet ou Mainnet.
|
||||
La surface fonctionnelle Metaplex de la crate est achevée. Les campagnes Devnet restantes relèvent de `kb-pipeline-demo-scenarios` et de `kb-app-demo-desktop`, non d’un manque de builder dans `kb-lib`.
|
||||
|
||||
## Documents
|
||||
Le registre ElGamal n’est pas déclaré validé réellement sur réseau.
|
||||
|
||||
- [Utilisation](USAGE.md)
|
||||
- [Travaux restants](TODO.md)
|
||||
- [Historique de la crate](CHANGELOG.md)
|
||||
- [Architecture générale](../docs/architecture/ARCHITECTURE.md)
|
||||
- [Pipeline](../docs/architecture/PIPELINE_ARCHITECTURE.md)
|
||||
- [Matrice des surfaces](../docs/architecture/SURFACE_CRATE_MATRIX.md)
|
||||
## Documentation
|
||||
|
||||
- [Guide d’utilisation](USAGE.md)
|
||||
- [Travaux restant à réaliser](TODO.md)
|
||||
- [Historique des changements](CHANGELOG.md)
|
||||
- [Matrice contractuelle Metaplex](../test-fixtures/contract-matrices/METAPLEX_TOKEN_METADATA_MATRIX.json)
|
||||
|
||||
@@ -1,39 +1,22 @@
|
||||
<!-- file: kb-lib/TODO.md -->
|
||||
<!-- version: 10 -->
|
||||
<!-- version: 11 -->
|
||||
|
||||
# TODO — kb-lib
|
||||
|
||||
## `0.4.7` — Metaplex Token Metadata
|
||||
## Réaudit ultérieur des exécuteurs déjà livrés
|
||||
|
||||
- [x] établir le contrat fermé de couverture et de propriété des faits ;
|
||||
- [x] introduire les intents et builders courants `Create`/`Update` ;
|
||||
- [x] achever les wrappers courants Verify/Unverify et l’opération dépréciée SetCollectionSize ;
|
||||
- [x] achever délégations et opérations pNFT `Burn`/`Lock`/`Unlock`/`Transfer`/`CloseAccounts` ;
|
||||
- [x] achever éditions, use, escrow et opérations courantes restantes en `pre.006` ;
|
||||
|
||||
## Entre `0.4.6` et `0.4.7` — Metaplex Token Metadata
|
||||
|
||||
- [x] Matérialisation - vérifier la couverture exacte migrée depuis bot2.
|
||||
- [x] Matérialisation - compléter uniquement les projections réellement manquantes et fermer leur propriété unique.
|
||||
- [x] Exécution - implémenter l’exécuteur à partir des contrats officiels vérifiés.
|
||||
- [x] Tests - ajouter les tests unitaires et contractuels de l’exécuteur.
|
||||
- [ ] Intégration - préparer les contrats nécessaires au pipeline et aux démonstrations.
|
||||
- [ ] Validation - valider le parcours complet sur un réseau approprié lorsque les prérequis sont réunis.
|
||||
- [ ] Version à déterminer - réauditer les exécuteurs Solana Core et SPL selon la règle distinguant les opérations courantes, remplacées et obsolètes encore constructibles.
|
||||
- [ ] Solana Core - vérifier chaque génération historique ou obsolète officiellement constructible et ajouter les opérations dépréciées manquantes sans réexposer les versions remplacées intermédiaires.
|
||||
- [ ] SPL Memo - réexaminer Memo v1 et Memo v3 et documenter leur statut exact de remplacement ou d’obsolescence constructible.
|
||||
- [ ] SPL Token, ATA, Token-2022 et registre ElGamal - appliquer la même classification opération par opération.
|
||||
- [ ] Matrices - aligner statuts, annotations `#[deprecated]`, approbations opérateur et tests de parité des surfaces réauditées.
|
||||
|
||||
## Report conditionnel — registre SPL ElGamal
|
||||
|
||||
- [ ] Réseau - confirmer si le registre est déployé et utilisable sur Devnet ou Mainnet.
|
||||
- [ ] Fixture - préparer une preuve `PubkeyValidity` et un compte `Proof Context State` valide si un réseau exploitable est confirmé.
|
||||
- [ ] Fixture - préparer une preuve `PubkeyValidity` et un compte `Proof Context State` valides si un réseau exploitable est confirmé.
|
||||
- [ ] Validation - exécuter une validation réseau réelle avant de déclarer la surface validée.
|
||||
|
||||
## Réaudit ultérieur des exécuteurs déjà livrés
|
||||
|
||||
- [ ] Version à déterminer - réauditer les exécuteurs Solana Core et SPL déjà implémentés selon la règle distinguant les opérations courantes, remplacées et obsolètes constructibles.
|
||||
- [ ] Solana Core - vérifier chaque génération historique ou obsolète officiellement constructible et ajouter les opérations dépréciées manquantes sans réexposer les versions remplacées intermédiaires.
|
||||
- [ ] SPL Memo - réexaminer notamment Memo v1 et Memo v3 : conserver uniquement le remplacement canonique pour les versions remplacées et implémenter comme dépréciée toute génération obsolète encore légitimement constructible.
|
||||
- [ ] SPL Token, ATA, Token-2022 et registre ElGamal - vérifier la même règle opération par opération, documenter les remplacements canoniques et compléter les builders dépréciés manquants.
|
||||
- [ ] Matrices - aligner les statuts, annotations `#[deprecated]`, approbations opérateur et tests de parité de toutes les surfaces concernées.
|
||||
|
||||
## Versions ultérieures
|
||||
|
||||
- [ ] Surfaces - remplacer les décodeurs et exécuteurs réservés selon le ROADMAP.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: kb-lib/USAGE.md -->
|
||||
<!-- version: 5 -->
|
||||
<!-- version: 7 -->
|
||||
|
||||
# Utilisation de kb-lib
|
||||
|
||||
@@ -117,7 +117,6 @@ println!("edition parent={:?}", edition.parent);
|
||||
|
||||
Les signatures exactes doivent être vérifiées lors de l’utilisation : certaines familles exigent un contexte ou une identité canonique supplémentaire.
|
||||
|
||||
|
||||
## Exécution typée
|
||||
|
||||
`ExApiTypedInstructionExecutor` produit un `ExApiPreparedExecutionPlan` à partir d’une intention et d’une politique explicites. Les exécuteurs concrets incluent notamment :
|
||||
@@ -157,6 +156,22 @@ println!("required_signers={}", plan.required_signers.len());
|
||||
|
||||
Memo v1 et v3 restent non exécutables. Memo v4 est la seule génération exécutable.
|
||||
|
||||
## Exécution Metaplex Token Metadata
|
||||
|
||||
La surface publique repose sur :
|
||||
|
||||
- `ExMetadataMetaplexTokenMetadataExecutor` ;
|
||||
- `ExMetaplexTokenMetadataExecutionIntent` ;
|
||||
- `ExMetaplexTokenMetadataOperation` ;
|
||||
- les constantes `EX_METAPLEX_TOKEN_METADATA_*_OPERATION` ;
|
||||
- `EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES` et `EX_METAPLEX_TOKEN_METADATA_DEPRECATED_OPERATION_CODES`.
|
||||
|
||||
Le consommateur construit un intent typé, puis appelle `ExApiTypedInstructionExecutor::build_prepared_plan`. Le plan retourné contient les instructions, comptes et signers requis, mais n’effectue ni simulation ni envoi.
|
||||
|
||||
Les opérations courantes utilisent leur wrapper canonique final. Les versions remplacées ne possèdent pas de builder public distinct. Les opérations obsolètes encore constructibles exigent que l’intent autorise explicitement l’exécution dépréciée ; leurs variantes Rust sont marquées `#[deprecated]`.
|
||||
|
||||
Avant utilisation du plan, le consommateur doit transmettre celui-ci au préflight et à l’orchestration de `kb-pipeline`.
|
||||
|
||||
## Sécurité
|
||||
|
||||
Les types `ExSafetyChecker`, `ExSafetyDecision`, `ExSafetyEvaluation` et `ExSafetyViolation` permettent d’évaluer un plan avant son utilisation. Une décision conservatrice doit être respectée par le consommateur ; elle ne doit pas être contournée par l’application.
|
||||
|
||||
Reference in New Issue
Block a user