# kb_program_ids Ce crate centralise les identifiants de programmes Solana utilisés par les décodeurs, exécuteurs, stores, applications et outils du workspace. ## Rôle Il fournit une source unique pour les `program_id` connus afin d’éviter les divergences entre les crates de lecture et les crates d’exécution. ## Règle Les crates spécialisés peuvent conserver un fichier `constants.rs` pour leurs constantes internes, mais les identifiants de programmes doivent être référencés via `kb_program_ids::...`. ## Registre énumérable `registered_program_ids()` expose les identifiants connus avec un code stable en lower snake case. `find_registered_program_id()` permet la résolution inverse exacte d’un program ID vers ce code. Ce registre sert notamment aux sélecteurs de l’application de démonstration sans dupliquer la liste des constantes. ## Registre natif `native_program_ids()` expose séparément les dix-huit programmes exécutables runtime natifs, loaders, précompiles et surfaces historiques suivis par `0.4.x`. `native_well_known_account_ids()` expose les comptes natifs non exécutables nécessaires au décodage et à l’audit. Cette liste inclut notamment `vote`, les loaders BPF v1/v2/upgradeable, loader-v4 et les précompiles Ed25519, Secp256k1 et Secp256r1, ainsi que le stateless Slashing Program `S1ashing...`. ## Registre SPL vérifié Le registre distingue les trois générations Memo (`v1`, `v3`, `v4`) et conserve `MEMO_PROGRAM_ID` comme alias de compatibilité vers Memo v3. Il expose également Single Pool, Account Compression, Noop, le registre ElGamal de Token-2022 et un alias explicite pour SPL Name Service. ## Stake Config `StakeConfig11111111111111111111111111111111` est exposé par `STAKE_CONFIG_ACCOUNT_ID`. L’ancien nom `STAKE_CONFIG_PROGRAM_ID` reste un alias déprécié de compatibilité, mais l’adresse ne figure plus dans `native_program_ids()`.