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 @@
<!-- file: kb-program-ids/README.md -->
<!-- version: 5 -->
<!-- version: 6 -->
# kb-program-ids
`kb-program-ids` est la source unique des identifiants de programmes Solana et des comptes natifs connus utilisés par le workspace.
La tranche `0.1.0-pre.004` expose les 18 surfaces exécutables nécessaires au décodeur Solana Core, les comptes natifs associés utilisés par leurs contrats et lidentifiant SPL Token classique employé par les tests de frontière. La tranche `0.1.0-pre.005` ajoute les trois identifiants SPL Memo v1, v3 et v4 sans les classer parmi les surfaces natives. `0.1.0-pre.006` active lidentifiant SPL Token classique dans un décodeur concret tout en le maintenant hors des surfaces natives. `0.1.0-pre.007` ajoute les identifiants SPL Associated Token Account et Token2022 nécessaires à la frontière ATA. `0.1.0-pre.008` ajoute le Program ID indépendant du registre ElGamal de Token2022, toujours hors des surfaces natives.
La tranche `0.1.0-pre.004` expose les 18 surfaces exécutables nécessaires au décodeur Solana Core, les comptes natifs associés utilisés par leurs contrats et lidentifiant SPL Token classique employé par les tests de frontière. La tranche `0.1.0-pre.005` ajoute les trois identifiants SPL Memo v1, v3 et v4 sans les classer parmi les surfaces natives. `0.1.0-pre.006` active lidentifiant SPL Token classique dans un décodeur concret tout en le maintenant hors des surfaces natives. `0.1.0-pre.007` ajoute les identifiants SPL Associated Token Account et Token2022 nécessaires à la frontière ATA. `0.1.0-pre.008` ajoute le Program ID indépendant du registre ElGamal de Token2022. `0.1.0-pre.009` ajoute le Program ID indépendant de Metaplex Token Metadata. Ces programmes restent hors des surfaces natives.
`constants.rs` reste lunique source des adresses et des tableaux statiques. `programs.rs` porte
`ProgramIdEntry`, ses méthodes et toutes les fonctions de consultation. `lib.rs` se limite aux

View File

@@ -1,5 +1,5 @@
// file: kb-program-ids/src/constants.rs
// version: 4
// version: 5
//! Canonical Solana program and well-known account identifiers.
@@ -27,6 +27,9 @@ pub const INCINERATOR_PROGRAM_ID: &str = "1nc1nerator111111111111111111111111111
pub const LOADER_V4_PROGRAM_ID: &str = "LoaderV411111111111111111111111111111111111";
/// Native Loader program identifier.
pub const NATIVE_LOADER_PROGRAM_ID: &str = "NativeLoader1111111111111111111111111111111";
/// Metaplex Token Metadata program identifier.
pub const METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID: &str =
"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s";
/// Secp256k1 precompile program identifier.
pub const SECP256K1_PROGRAM_ID: &str = "KeccakSecp256k11111111111111111111111111111";
/// Secp256r1 precompile program identifier.
@@ -198,6 +201,10 @@ pub(crate) const PROGRAM_ID_ENTRIES: &[crate::ProgramIdEntry] = &[
name: "incinerator",
address: crate::INCINERATOR_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "metadata_metaplex_token_metadata",
address: crate::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "loader_v4",
address: crate::LOADER_V4_PROGRAM_ID,

View File

@@ -1,5 +1,5 @@
// file: kb-program-ids/src/lib.rs
// version: 7
// version: 8
#![forbid(unsafe_code)]
#![deny(unreachable_pub)]
@@ -39,6 +39,8 @@ pub use constants::FEATURE_PROGRAM_ID;
pub use constants::INCINERATOR_PROGRAM_ID;
/// Loader version 4 program identifier.
pub use constants::LOADER_V4_PROGRAM_ID;
/// Metaplex Token Metadata program identifier.
pub use constants::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID;
/// Native Loader program identifier.
pub use constants::NATIVE_LOADER_PROGRAM_ID;
/// Secp256k1 precompile program identifier.

View File

@@ -1,5 +1,5 @@
// file: kb-program-ids/src/programs.rs
// version: 1
// version: 2
//! Enumerable canonical program registry.
@@ -65,7 +65,7 @@ mod tests {
assert!(codes.insert(entry.code()));
assert!(program_ids.insert(entry.program_id()));
}
assert_eq!(crate::registered_program_ids().len(), 32);
assert_eq!(crate::registered_program_ids().len(), 33);
}
#[test]
@@ -122,8 +122,8 @@ mod tests {
}
#[test]
fn spl_primitives_are_registered_without_joining_native_surfaces() {
let spl_program_ids = [
fn protocol_primitives_are_registered_without_joining_native_surfaces() {
let protocol_program_ids = [
crate::SPL_MEMO_V1_PROGRAM_ID,
crate::SPL_MEMO_V3_PROGRAM_ID,
crate::SPL_MEMO_V4_PROGRAM_ID,
@@ -131,8 +131,9 @@ mod tests {
crate::SPL_TOKEN_2022_PROGRAM_ID,
crate::SPL_TOKEN_2022_ELGAMAL_REGISTRY_PROGRAM_ID,
crate::ASSOCIATED_TOKEN_PROGRAM_ID,
crate::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID,
];
for program_id in spl_program_ids {
for program_id in protocol_program_ids {
assert!(crate::find_registered_program_id(program_id).is_some());
assert!(
!crate::native_program_ids()