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 discriminatorcredential: Address; // Associated credential addressname: ReadonlyUint8Array; // Schema namedescription: ReadonlyUint8Array; // Schema descriptionlayout: ReadonlyUint8Array; // Schema layout definitionfieldNames: ReadonlyUint8Array; // Names of fields in the schemaisPaused: boolean; // Pause statusversion: number; // Schema version};
Metodit
Skeemojen hakeminen
| Metodi | Kuvaus | Parametrit | Palautusarvo |
|---|---|---|---|
fetchSchema | Hakee yksittäisen skeeman sen osoitteella | rpc: RPC-konteksti, address: Skeeman osoite, config?: Hakukonfiguraatio | Promise<Account<Schema>> |
fetchMaybeSchema | Hakee skeeman turvallisesti, palauttaa null jos ei löydy | rpc: RPC-konteksti, address: Skeeman osoite, config?: Hakukonfiguraatio | Promise<MaybeAccount<Schema>> |
fetchAllSchema | Hakee useita skeemoja niiden osoitteilla | rpc: RPC-konteksti, addresses: Skeemaosoitteiden taulukko, config?: Hakukonfiguraatio | Promise<Account<Schema>[]> |
fetchAllMaybeSchema | Hakee useita skeemoja turvallisesti, ohittaa löytymättömät | rpc: RPC-konteksti, addresses: Skeemaosoitteiden taulukko, config?: Hakukonfiguraatio | Promise<MaybeAccount<Schema>[]> |
Sarjallistaminen
| Metodi | Kuvaus | Parametrit | Palautusarvo |
|---|---|---|---|
getSchemaEncoder | Hakee enkooderin skeemadatalle | Ei mitään | Encoder<SchemaArgs> |
getSchemaDecoder | Hakee dekooderin skeemadatalle | Ei mitään | Decoder<Schema> |
getSchemaCodec | Hakee koodekkin skeemadatalle | Ei mitään | Codec<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:
| Arvo | Tietotyyppi | Kuvaus |
|---|---|---|
| 0 | U8 | Etumerkitön 8-bittinen kokonaisluku |
| 1 | U16 | Etumerkitön 16-bittinen kokonaisluku |
| 2 | U32 | Etumerkitön 32-bittinen kokonaisluku |
| 3 | U64 | Etumerkitön 64-bittinen kokonaisluku |
| 4 | U128 | Etumerkitön 128-bittinen kokonaisluku |
| 5 | I8 | Etumerkillinen 8-bittinen kokonaisluku |
| 6 | I16 | Etumerkillinen 16-bittinen kokonaisluku |
| 7 | I32 | Etumerkillinen 32-bittinen kokonaisluku |
| 8 | I64 | Etumerkillinen 64-bittinen kokonaisluku |
| 9 | I128 | Etumerkillinen 128-bittinen kokonaisluku |
| 10 | Bool | Totuusarvo |
| 11 | Char | Yksittäinen merkki |
| 12 | String | Muuttuvanpituinen merkkijono |
| 13 | VecU8 | Vektori etumerkittömiä 8-bittisiä kokonaislukuja |
| 14 | VecU16 | Vektori etumerkittömiä 16-bittisiä kokonaislukuja |
| 15 | VecU32 | Vektori etumerkittömiä 32-bittisiä kokonaislukuja |
| 16 | VecU64 | Vektori etumerkittömiä 64-bittisiä kokonaislukuja |
| 17 | VecU128 | Vektori etumerkittömiä 128-bittisiä kokonaislukuja |
| 18 | VecI8 | Vektori etumerkillisiä 8-bittisiä kokonaislukuja |
| 19 | VecI16 | Vektori etumerkillisiä 16-bittisiä kokonaislukuja |
| 20 | VecI32 | Vektori etumerkillisiä 32-bittisiä kokonaislukuja |
| 21 | VecI64 | Vektori etumerkillisiä 64-bittisiä kokonaislukuja |
| 22 | VecI128 | Vektori etumerkillisiä 128-bittisiä kokonaislukuja |
| 23 | VecBool | Vektori totuusarvoja |
| 24 | VecChar | Vektori merkkejä |
| 25 | VecString | Vektori 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 muokatacredential-kenttä linkittää skeeman siihen liittyvään valtuustietotyyppiinisPausedvoidaan käyttää skeeman käytön väliaikaiseen poistamiseen käytöstäversion-kenttä mahdollistaa skeeman kehittämisen säilyttäen samalla taaksepäin yhteensopivuudenlayoutjafieldNamesmää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?