Schema's

Een schema definieert de structuur en validatieregels voor credentials in het Solana Attestation System. Schema's dienen als sjablonen die specificeren welke velden een credential moet bevatten en hoe deze geformatteerd moeten worden. Elk schema is gekoppeld aan een credentialtype en kan worden geversioneerd om evolutie van de datastructuur te ondersteunen.

Structuur

De Schema struct vertegenwoordigt een schema in het Solana Attestation System. Elk schema definieert een sjabloon voor credentials die eronder kunnen worden aangemaakt.

Type Definities

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
};

Methoden

Schema's Ophalen

MethodeBeschrijvingParametersRetourneert
fetchSchemaHaalt een enkel schema op via zijn adresrpc: RPC context, address: Adres van schema, config?: Fetch configuratiePromise<Account<Schema>>
fetchMaybeSchemaHaalt veilig een schema op, retourneert null indien niet gevondenrpc: RPC context, address: Adres van schema, config?: Fetch configuratiePromise<MaybeAccount<Schema>>
fetchAllSchemaHaalt meerdere schema's op via hun adressenrpc: RPC context, addresses: Array van schema-adressen, config?: Fetch configuratiePromise<Account<Schema>[]>
fetchAllMaybeSchemaHaalt veilig meerdere schema's op, slaat niet-gevonden overrpc: RPC context, addresses: Array van schema-adressen, config?: Fetch configuratiePromise<MaybeAccount<Schema>[]>

Serialisatie

MethodeBeschrijvingParametersRetourneert
getSchemaEncoderHaalt de encoder op voor schemadataGeenEncoder<SchemaArgs>
getSchemaDecoderHaalt de decoder op voor schemadataGeenDecoder<Schema>
getSchemaCodecHaalt de codec op voor schemadataGeenCodec<SchemaArgs, Schema>

Gebruiksvoorbeelden

Een Enkel Schema Ophalen

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

Meerdere Schema's Ophalen

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

Veilig Ophalen

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

Schema Layout Gegevenstypen

Het layout veld gebruikt numerieke waarden om gegevenstypen voor elk veld in het schema te specificeren:

WaardeGegevenstypeBeschrijving
0U8Unsigned 8-bit integer
1U16Unsigned 16-bit integer
2U32Unsigned 32-bit integer
3U64Unsigned 64-bit integer
4U128Unsigned 128-bit integer
5I8Signed 8-bit integer
6I16Signed 16-bit integer
7I32Signed 32-bit integer
8I64Signed 64-bit integer
9I128Signed 128-bit integer
10BoolBooleaanse waarde
11CharEnkel karakter
12StringString met variabele lengte
13VecU8Vector van unsigned 8-bit integers
14VecU16Vector van unsigned 16-bit integers
15VecU32Vector van unsigned 32-bit integers
16VecU64Vector van unsigned 64-bit integers
17VecU128Vector van unsigned 128-bit integers
18VecI8Vector van signed 8-bit integers
19VecI16Vector van signed 16-bit integers
20VecI32Vector van signed 32-bit integers
21VecI64Vector van signed 64-bit integers
22VecI128Vector van signed 128-bit integers
23VecBoolVector van booleaanse waarden
24VecCharVector van karakters
25VecStringVector van strings

Voorbeeldgebruik

Een layout van [12, 0, 12] zou bijvoorbeeld drie velden definiëren: een String, gevolgd door een U8-integer, gevolgd door nog een String. De fieldNames-array biedt leesbare namen die positioneel overeenkomen met elke layoutwaarde, dus met veldnamen ["name", "age", "country"] zou het eerste String-veld "name" heten, het U8-veld zou "age" zijn, en het tweede String-veld zou "country" zijn.

Hier is een voorbeeld van hoe deze gebruikt zouden worden bij het aanmaken van een 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])
});

Belangrijke opmerkingen

  • Het veld discriminator wordt intern gebruikt en mag niet worden gewijzigd
  • Het veld credential koppelt het schema aan het bijbehorende referentietype
  • isPaused kan worden gebruikt om het gebruik van het schema tijdelijk uit te schakelen
  • Het veld version maakt schema-evolutie mogelijk met behoud van achterwaartse compatibiliteit
  • layout en fieldNames definiëren de structuur van referenties die dit schema gebruiken
  • Alle byte-arrayvelden (name, description, layout, fieldNames) moeten correct worden gecodeerd/gedecodeerd volgens de behoeften van uw applicatie

Is this page helpful?

Inhoudsopgave

Pagina Bewerken

Beheerd door

© 2026 Solana Foundation.
Alle rechten voorbehouden.
Blijf Verbonden