Skeemat

Skeema määrittää rakenteen ja validointisäännöt tunnistetiedoille Solana Attestation -järjestelmässä. Skeemat toimivat malleina, jotka määrittävät, mitä kenttiä tunnistetiedon tulisi sisältää ja miten ne tulisi muotoilla. Jokainen skeema on liitetty tunnistetietotyyppiin, ja niitä voidaan versioida tietorakenteen kehityksen tueksi.

Rakenne

Schema-rakenne edustaa skeemaa Solana Attestation -järjestelmässä. Jokainen skeema määrittää mallin tunnistetiedoille, joita voidaan luoda sen alla.

Tyyppimäärittelyt

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

Metodit

Skeemojen hakeminen

MetodiKuvausParametritPalautusarvo
fetchSchemaHakee yksittäisen skeeman sen osoitteellarpc: RPC-konteksti, address: Skeeman osoite, config?: HakukonfiguraatioPromise<Account<Schema>>
fetchMaybeSchemaHakee skeeman turvallisesti, palauttaa null jos ei löydyrpc: RPC-konteksti, address: Skeeman osoite, config?: HakukonfiguraatioPromise<MaybeAccount<Schema>>
fetchAllSchemaHakee useita skeemoja niiden osoitteillarpc: RPC-konteksti, addresses: Skeemaosoitteiden taulukko, config?: HakukonfiguraatioPromise<Account<Schema>[]>
fetchAllMaybeSchemaHakee useita skeemoja turvallisesti, ohittaa löytymättömätrpc: RPC-konteksti, addresses: Skeemaosoitteiden taulukko, config?: HakukonfiguraatioPromise<MaybeAccount<Schema>[]>

Sarjallistaminen

MetodiKuvausParametritPalautusarvo
getSchemaEncoderHakee enkooderin skeemadatalleEi mitäänEncoder<SchemaArgs>
getSchemaDecoderHakee dekooderin skeemadatalleEi mitäänDecoder<Schema>
getSchemaCodecHakee koodekkin skeemadatalleEi mitäänCodec<SchemaArgs, Schema>

Käyttöesimerkit

Yksittäisen skeeman hakeminen

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

Useiden skeemojen hakeminen

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

Turvallinen hakeminen

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

Skeeman asettelun tietotyypit

layout-kenttä käyttää numeerisia arvoja määrittämään tietotyypit kullekin skeeman kentälle:

ArvoTietotyyppiKuvaus
0U8Etumerkitön 8-bittinen kokonaisluku
1U16Etumerkitön 16-bittinen kokonaisluku
2U32Etumerkitön 32-bittinen kokonaisluku
3U64Etumerkitön 64-bittinen kokonaisluku
4U128Etumerkitön 128-bittinen kokonaisluku
5I8Etumerkillinen 8-bittinen kokonaisluku
6I16Etumerkillinen 16-bittinen kokonaisluku
7I32Etumerkillinen 32-bittinen kokonaisluku
8I64Etumerkillinen 64-bittinen kokonaisluku
9I128Etumerkillinen 128-bittinen kokonaisluku
10BoolTotuusarvo
11CharYksittäinen merkki
12StringMuuttuvanpituinen merkkijono
13VecU8Vektori etumerkittömiä 8-bittisiä kokonaislukuja
14VecU16Vektori etumerkittömiä 16-bittisiä kokonaislukuja
15VecU32Vektori etumerkittömiä 32-bittisiä kokonaislukuja
16VecU64Vektori etumerkittömiä 64-bittisiä kokonaislukuja
17VecU128Vektori etumerkittömiä 128-bittisiä kokonaislukuja
18VecI8Vektori etumerkillisiä 8-bittisiä kokonaislukuja
19VecI16Vektori etumerkillisiä 16-bittisiä kokonaislukuja
20VecI32Vektori etumerkillisiä 32-bittisiä kokonaislukuja
21VecI64Vektori etumerkillisiä 64-bittisiä kokonaislukuja
22VecI128Vektori etumerkillisiä 128-bittisiä kokonaislukuja
23VecBoolVektori totuusarvoja
24VecCharVektori merkkejä
25VecStringVektori merkkijonoja

Esimerkkikäyttö

Esimerkiksi [12, 0, 12]-asettelu määrittelisi kolme kenttää: String-kentän, jonka jälkeen tulee U8-kokonaisluku ja sen jälkeen toinen String-kenttä. fieldNames-taulukko tarjoaa ihmisluettavat nimet, jotka vastaavat sijaintinsa puolesta kutakin asetteluarvoa, joten kenttänimillä ["name", "age", "country"] ensimmäinen String-kenttä nimettäisiin "name", U8-kenttä olisi "age" ja toinen String-kenttä olisi "country".

Tässä on esimerkki siitä, miten niitä hyödynnettäisiin Schemaa luotaessa:

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

Tärkeät huomiot

  • discriminator-kenttää käytetään sisäisesti, eikä sitä tule muokata
  • credential-kenttä linkittää skeeman siihen liittyvään valtuustietotyyppiin
  • isPaused voidaan käyttää skeeman käytön väliaikaiseen poistamiseen käytöstä
  • version-kenttä mahdollistaa skeeman kehittämisen säilyttäen samalla taaksepäin yhteensopivuuden
  • layout ja fieldNames määrittelevät tätä skeemaa käyttävien valtuustietojen rakenteen
  • Kaikki tavutaulukkokentät (name, description, layout, fieldNames) tulee koodata/purkaa oikein sovelluksesi tarpeiden mukaisesti

Is this page helpful?

Sisällysluettelo

Muokkaa sivua

Hallinnoi

© 2026 Solana Foundation.
Kaikki oikeudet pidätetään.
Yhdistä