31 lines
1.9 KiB
Markdown
31 lines
1.9 KiB
Markdown
<!-- file: kb_program_ids/README.md -->
|
||
<!-- version: 6 -->
|
||
|
||
# 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()`.
|