v0.1.0-pre.009

This commit is contained in:
2026-07-23 21:19:45 +02:00
parent 12b42a31b8
commit 51ed3d11cf
22 changed files with 9580 additions and 86 deletions

View File

@@ -1,11 +1,11 @@
{
"schema_version": 2,
"milestone": "0.4.7-pre.025",
"milestone": "0.1.0-pre.009",
"surface_code": "metadata_metaplex_token_metadata",
"program_id": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s",
"program_family": "independent_metaplex_foundation_program",
"decode_status": "instruction_inventory_exhaustive_0_through_57_and_account_key_inventory_exhaustive_0_through_14",
"runtime_registration": "not_enabled_in_pre_008",
"runtime_registration": "enabled_in_kb_lib_pre_009",
"official_sources": [
{
"kind": "repository",
@@ -356,7 +356,7 @@
}
],
"wire": "official_borsh_mpl_token_metadata_5_1_1",
"runtime_registration": "pending_full_group_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.003",
@@ -392,7 +392,7 @@
],
"wire": "single_u8_discriminator_official_mpl_token_metadata_5_1_1",
"account_contract": "ordered_required_accounts_plus_optional_collection_authority_record_and_bounded_remaining_accounts",
"runtime_registration": "pending_broader_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.004",
@@ -428,7 +428,7 @@
],
"wire": "single_u8_discriminator_official_mpl_token_metadata_5_1_1",
"account_contract": "ordered_required_accounts_plus_optional_collection_authority_record; collection metadata is writable and collection authority is readonly signer",
"runtime_registration": "pending_broader_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.005",
@@ -597,7 +597,7 @@
"wire": "u8 discriminator + historical DataV2 + bool is_mutable using Borsh 0.10",
"account_contract": "metadata, mint, mint_authority signer, payer writable signer, update_authority, system_program, optional rent",
"provenance": "historical Metaplex Token Metadata instruction surface; current SDK DataV2 type reused only for exact compatible wire fields",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.010",
@@ -624,7 +624,7 @@
],
"wire": "u8 discriminator + historical Data/Option<Data> fields using Borsh 0.10",
"provenance": "historical generated Metaplex Token Metadata surface",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.011",
@@ -651,7 +651,7 @@
],
"wire": "CreateMasterEditionV3: u8 discriminator + Option<u64> max_supply; conversion: u8 discriminator only",
"account_contract": "exact generated Rust SDK account order and signer/writable flags; optional rent accepted for CreateMasterEditionV3",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.012",
@@ -679,7 +679,7 @@
"wire": "u8 discriminator + MintNewEditionFromMasterEditionViaTokenArgs { edition: u64 }",
"account_contract": "exact generated Rust SDK account order and signer/writable flags; optional rent accepted after the required program accounts",
"edition_marker_contract": "edition marker PDA is writable and corresponds to floor(edition / EDITION_MARKER_BIT_SIZE); PDA derivation validation remains planned with account decoding",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.013",
@@ -707,7 +707,7 @@
"wire": "u8 discriminator + SetCollectionSizeArgs { size: u64 }",
"account_contract": "exact generated Rust SDK account order and signer/writable flags; optional collection authority record accepted",
"provenance_boundary": "BubblegumSetCollectionSize is decoded as a Token Metadata bridge instruction and does not claim complete Bubblegum coverage",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.014",
@@ -734,7 +734,7 @@
],
"wire": "u8 discriminator + DelegateArgs or RevokeArgs Borsh enum; DelegateArgs may contain optional AuthorizationData",
"account_contract": "14 positional accounts with Metaplex program placeholders for absent optional accounts; exact signer/writable invariants on authority, payer, metadata and optional writable records",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.015",
@@ -788,7 +788,7 @@
],
"wire": "Borsh enums TransferArgs/LockArgs/UnlockArgs/BurnArgs; CloseAccounts discriminator only",
"account_contract": "exact generated Rust SDK positional accounts and signer/writable invariants; Metaplex program placeholders accepted for absent optional programmable accounts",
"runtime_registration": "pending_full_decoder_and_account_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.016",
@@ -816,7 +816,7 @@
"wire": "u8 discriminator only",
"account_contract": "delegate writable signer, token account writable, edition/mint/token program readonly",
"inventory_audit": "official generated Rust SDK instruction module index audited; remaining modules are tracked before account-state decoding",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.017",
@@ -852,7 +852,7 @@
],
"wire": "u8 discriminator only",
"account_contract": "exact generated Rust SDK positional signer/writable contracts; BurnNft collection metadata, deprecated printing-token reservation list are optional trailing accounts",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.018",
@@ -897,7 +897,7 @@
],
"wire": "Create/Close/Collect discriminator only; TransferOutOfEscrow discriminator + amount u64",
"account_contract": "exact generated Rust SDK signer/writable contracts with optional trailing authority on create and transfer",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.019",
@@ -915,7 +915,7 @@
],
"wire": "u8 discriminator + CreateArgs enum",
"account_contract": "nine positional accounts with Metaplex placeholders for optional master edition and SPL Token Program",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.020",
@@ -933,7 +933,7 @@
],
"wire": "u8 discriminator + MintArgs::V1 { amount: u64, authorization_data: Option<AuthorizationData> }",
"account_contract": "fifteen positional accounts with Metaplex placeholders for optional token owner, master edition, token record, delegate record and authorization-rule accounts",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.021",
@@ -955,7 +955,7 @@
],
"wire": "u8 discriminator + PrintArgs::{V1,V2} { edition: u64 }",
"account_contract": "eighteen positional accounts with a Metaplex placeholder or writable Token Record at position 6",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.022",
@@ -984,7 +984,7 @@
],
"wire": "u8 discriminator + UpdateArgs enum",
"account_contract": "eleven positional accounts with Metaplex placeholders for optional delegate record, token, edition and authorization-rule accounts",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.023",
@@ -1031,7 +1031,7 @@
],
"wire": "u8 discriminator + UseArgs or VerificationArgs enum",
"account_contract": "twelve positional accounts for Use; eight positional accounts for Verify/Unverify, with Metaplex placeholders for optional accounts",
"runtime_registration": "pending_full_decoder_validation"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"pre_release": "0.4.7-pre.024",
@@ -1112,7 +1112,7 @@
],
"wire": "u8 discriminator only",
"account_contract": "exact IDL/generated positional signer and writable flags",
"runtime_registration": "pending_full_decoder_validation",
"runtime_registration": "enabled_in_kb_lib_pre_009",
"inventory_proof": {
"covered_discriminators": [
0,
@@ -1198,7 +1198,7 @@
"uri_bytes": 200,
"creators": 5
},
"runtime_registration": "not_enabled"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"group": "edition_and_master_edition_accounts",
@@ -1261,7 +1261,7 @@
"bit_order": "most_significant_bit_first"
}
},
"runtime_registration": "not_enabled"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"group": "token_record_account",
@@ -1300,7 +1300,7 @@
"LockedTransfer",
"Migration"
],
"runtime_registration": "not_enabled"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"group": "delegate_and_authority_records",
@@ -1363,7 +1363,7 @@
"holder_delegate_role_seeds": [
"print_delegate"
],
"runtime_registration": "not_enabled"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"group": "token_owned_escrow_account",
@@ -1405,7 +1405,7 @@
"Migrate": "may create or update related programmable records; correlation pending",
"Resize": "changes allocated account bytes without changing canonical identity"
},
"runtime_registration": "not_enabled"
"runtime_registration": "enabled_in_kb_lib_pre_009"
},
{
"group": "historical_reservation_lists",

View File

@@ -1,5 +1,5 @@
<!-- file: docs/PROGRAM_REGISTRY_CONTROL.md -->
<!-- version: 4 -->
<!-- version: 5 -->
# Contrôle du registre des programmes
@@ -250,7 +250,7 @@ Ces identifiants sont détaillés dans `docs/CORE_PROGRAM_IDS.md`. Ils sont couv
| `lock_raydium_lp` | `LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE` | `raydium_lock_lp` | `raydium_lock_lp` | `-` | `kb_decoder_lock_raydium_lp` | `reserved_missing` |
| `admin_jupiter_lock` | `LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn` | `jupiter_lock` | `jupiter_lock` | `-` | `kb_decoder_admin_jupiter_lock` | `reserved_missing` |
| `admin_pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | `pump_fees` | `pump_fees` | `kb_decoder_pump_fees` | `kb_decoder_admin_pump_fees` | `current_alias` |
| `metadata_metaplex_token_metadata` | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | `metaplex_token_metadata` | `metaplex_token_metadata` | `-` | `kb_decoder_metadata_metaplex_token_metadata` | `reserved_missing` |
| `metadata_metaplex_token_metadata` | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | `metaplex_token_metadata` | `metaplex_token_metadata` | `-` | `kb_lib::decoder::metadata::metaplex_token_metadata` | `current_migrated` |
| `metadata_name_service` | `namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX` | `name_service` | `name_service` | `-` | `kb_decoder_metadata_spl_name_service` | `reserved_missing` |
| `nft_metaplex_bubblegum` | `BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY` | `bubblegum` | `bubblegum` | `-` | `kb_decoder_nft_metaplex_bubblegum` | `reserved_missing` |
| `nft_metaplex_mpl_core` | `CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d` | `mpl_core` | `mpl_core` | `-` | `kb_decoder_nft_metaplex_mpl_core` | `reserved_missing` |

View File

@@ -1,5 +1,5 @@
<!-- file: docs/SOLANA_INTERFACE_DEPENDENCIES.md -->
<!-- version: 30 -->
<!-- version: 31 -->
# Dépendances dinterfaces Solana et SPL
@@ -281,10 +281,23 @@ Pour chaque nouvelle interface :
6. tester les payloads tronqués, inconnus, suffixés et les comptes invalides ;
7. documenter toute divergence entre linterface et le runtime.
### Metaplex Token Metadata — audit et premier décodage `0.4.7-pre.002`
### Metaplex Token Metadata — port maximal `0.1.0-pre.009`
Le catalogue workspace déclare `mpl-token-metadata ^5.1` avec la seule feature `serde`. La publication officielle résolue reste `5.1.1`; elle fournit les modules générés `accounts`, `instructions`, `types` et `errors` issus de lIDL Metaplex, sans introduire Anchor. La crate officielle utilise Borsh `< 1.0`; le décodeur référence donc explicitement `borsh 0.10` sous lalias workspace `borsh_0_10`, distinct de Borsh 1.x utilisé par dautres interfaces du workspace.
Le dépôt officiel `metaplex-foundation/mpl-token-metadata` confirme le Program ID `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`. LIDL officiel audité porte la version `1.14.0` et le blob `5df4a24f62c2743125be096cc174680790c92c18`; linventaire Rust généré des instructions porte le blob `3c42eec629f82e44ba690a7c4bd2177cc78f1d49`.
`kb_decoder_metadata_metaplex_token_metadata` implémente désormais `InstructionDecoder` pour `CreateMetadataAccountV3` et `UpdateMetadataAccountV2`. Les arguments sont lus avec les types Borsh officiels et projetés avec la feature `serde`; les payloads, chaînes, créateurs, frais, comptes et suffixes sont bornés. Lenregistrement dans le registre runtime reste différé jusquà validation de ce premier groupe. Les metadata Token-2022 incorporées, Metaplex Core, Bubblegum et le JSON externe restent des provenances ou composants distincts.
`kb_lib::decoder::metadata::metaplex_token_metadata` implémente désormais la couverture exhaustive des
58 discriminateurs `0..=57`. Les arguments sont lus avec les types Borsh officiels lorsque le SDK
les expose, ou avec un miroir local borné du wire publié pour les variantes historiques. Les
payloads, chaînes, créateurs, frais, comptes et suffixes sont bornés.
Le même composant inventorie les 15 variantes `Key 0..=14` et décode les quatorze layouts
représentant un compte réel. Les parseurs utilisent `solana-pubkey ^4.2` pour vérifier owner,
PDA et bump, puis les comptes historiques reçoivent une politique de matérialisation historique
distincte de leur interdiction dexécution. `Uninitialized` reste une sentinelle explicitement
refusée et toute variante future absente de linventaire fait échouer les tests.
Les metadata Token2022 incorporées, Metaplex Core, Bubblegum et le JSON externe restent des
provenances ou composants distincts. Aucun fetch HTTP, IPFS ou Arweave nappartient au replay
canonique de cette tranche.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/TRACING_CONTRACT.md -->
<!-- version: 17 -->
<!-- version: 18 -->
# Contrat de tracing par crate et composant
@@ -57,6 +57,7 @@ Les targets déjà migrés vers les noms canoniques bot3 sont :
```text
kb-lib.decoder.solana.core
kb-lib.decoder.metadata.metaplex_token_metadata
kb-lib.decoder.spl.associated_token_account
kb-lib.decoder.spl.elgamal_registry
kb-lib.decoder.spl.memo