Schémas

Un schéma définit la structure et les règles de validation pour les identifiants dans le Système d'Attestation Solana. Les schémas servent de modèles qui spécifient quels champs un identifiant doit contenir et comment ils doivent être formatés. Chaque schéma est associé à un type d'identifiant et peut être versionné pour prendre en charge l'évolution de la structure des données.

Structure

La structure Schema représente un schéma dans le Système d'Attestation Solana. Chaque schéma définit un modèle pour les identifiants qui peuvent être créés sous celui-ci.

Définitions de Types

Schema

export type Schema = {
discriminator: number; // Internal discriminator
credential: Address; // Associated credential address
name: ReadonlyUint8Array; // Schema name
description: ReadonlyUint8Array; // Schema description
layout: ReadonlyUint8Array; // Schema layout definition
fieldNames: ReadonlyUint8Array; // Names of fields in the schema
isPaused: boolean; // Pause status
version: number; // Schema version
};

Méthodes

Récupération des Schémas

MéthodeDescriptionParamètresRetourne
fetchSchemaRécupère un schéma unique par son adresserpc : Contexte RPC, address : Adresse du schéma, config? : Configuration de récupérationPromise<Account<Schema>>
fetchMaybeSchemaRécupère un schéma en toute sécurité, retourne null si non trouvérpc : Contexte RPC, address : Adresse du schéma, config? : Configuration de récupérationPromise<MaybeAccount<Schema>>
fetchAllSchemaRécupère plusieurs schémas par leurs adressesrpc : Contexte RPC, addresses : Tableau d'adresses de schémas, config? : Configuration de récupérationPromise<Account<Schema>[]>
fetchAllMaybeSchemaRécupère plusieurs schémas en toute sécurité, ignore ceux non trouvésrpc : Contexte RPC, addresses : Tableau d'adresses de schémas, config? : Configuration de récupérationPromise<MaybeAccount<Schema>[]>

Sérialisation

MéthodeDescriptionParamètresRetourne
getSchemaEncoderObtient l'encodeur pour les données de schémaAucunEncoder<SchemaArgs>
getSchemaDecoderObtient le décodeur pour les données de schémaAucunDecoder<Schema>
getSchemaCodecObtient le codec pour les données de schémaAucunCodec<SchemaArgs, Schema>

Exemples d'utilisation

Récupération d'un schéma unique

const schema = await fetchSchema(rpc, schemaAddress);
console.log("Schema name:", schema.name);

Récupération de plusieurs schémas

const schemas = await fetchAllSchema(rpc, [schema1Address, schema2Address]);
schemas.forEach((schema) => console.log("Schema:", schema.name));

Récupération sécurisée

const schema = await fetchMaybeSchema(rpc, schemaAddress);
if (schema) {
console.log("Schema found:", schema.name);
} else {
console.log("Schema not found");
}

Types de données de la disposition du schéma

Le champ layout utilise des valeurs numériques pour spécifier les types de données de chaque champ du schéma :

ValeurType de donnéesDescription
0U8Entier non signé sur 8 bits
1U16Entier non signé sur 16 bits
2U32Entier non signé sur 32 bits
3U64Entier non signé sur 64 bits
4U128Entier non signé sur 128 bits
5I8Entier signé sur 8 bits
6I16Entier signé sur 16 bits
7I32Entier signé sur 32 bits
8I64Entier signé sur 64 bits
9I128Entier signé sur 128 bits
10BoolValeur booléenne
11CharCaractère unique
12StringChaîne de caractères de longueur variable
13VecU8Vecteur d'entiers non signés sur 8 bits
14VecU16Vecteur d'entiers non signés sur 16 bits
15VecU32Vecteur d'entiers non signés sur 32 bits
16VecU64Vecteur d'entiers non signés sur 64 bits
17VecU128Vecteur d'entiers non signés sur 128 bits
18VecI8Vecteur d'entiers signés sur 8 bits
19VecI16Vecteur d'entiers signés sur 16 bits
20VecI32Vecteur d'entiers signés sur 32 bits
21VecI64Vecteur d'entiers signés sur 64 bits
22VecI128Vecteur d'entiers signés sur 128 bits
23VecBoolVecteur de valeurs booléennes
24VecCharVecteur de caractères
25VecStringVecteur de chaînes de caractères

Exemple d'utilisation

Par exemple, une disposition de [12, 0, 12] définirait trois champs : une String, suivie d'un entier U8, suivi d'une autre String. Le tableau fieldNames fournit des noms lisibles par l'humain qui correspondent positionnellement à chaque valeur de disposition, donc avec les noms de champs ["name", "age", "country"], le premier champ String serait nommé "name", le champ U8 serait "age", et le second champ String serait "country".

Voici un exemple de la façon dont ceux-ci seraient utilisés lors de la création d'un Schema :

const createSchemaInstruction = getCreateSchemaInstruction({
authority,
payer,
credential: credentialPda,
schema: schemaPda,
name: "Test Schema",
description: "Just an example",
fieldNames: ["name", "age", "country"],
layout: Buffer.from([12, 0, 12])
});

Remarques importantes

  • Le champ discriminator est utilisé en interne et ne doit pas être modifié
  • Le champ credential relie le schéma à son type de credential associé
  • isPaused peut être utilisé pour désactiver temporairement l'utilisation du schéma
  • Le champ version permet l'évolution du schéma tout en maintenant la compatibilité ascendante
  • layout et fieldNames définissent la structure des credentials utilisant ce schéma
  • Tous les champs de tableau d'octets (name, description, layout, fieldNames) doivent être correctement encodés/décodés selon les besoins de votre application

Is this page helpful?

Géré par

© 2026 Fondation Solana.
Tous droits réservés.
Restez connecté