Şemalar

Bir şema, Solana Onaylama Sistemi'ndeki kimlik bilgileri için yapı ve doğrulama kurallarını tanımlar. Şemalar, bir kimlik bilgisinin hangi alanları içermesi gerektiğini ve nasıl biçimlendirilmesi gerektiğini belirten şablonlar olarak hizmet eder. Her şema bir kimlik bilgisi türüyle ilişkilendirilir ve veri yapısının evrimini desteklemek için sürümlenebilir.

Yapı

Schema yapısı, Solana Onaylama Sistemi'ndeki bir şemayı temsil eder. Her şema, altında oluşturulabilecek kimlik bilgileri için bir şablon tanımlar.

Tür Tanımlamaları

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

Metodlar

Şemaları Çekme

MetodAçıklamaParametrelerDöndürür
fetchSchemaAdresine göre tek bir şema çekerrpc: RPC bağlamı, address: Şemanın adresi, config?: Çekme yapılandırmasıPromise<Account<Schema>>
fetchMaybeSchemaGüvenli bir şekilde şema çeker, bulunamazsa null döndürürrpc: RPC bağlamı, address: Şemanın adresi, config?: Çekme yapılandırmasıPromise<MaybeAccount<Schema>>
fetchAllSchemaAdreslerine göre birden fazla şema çekerrpc: RPC bağlamı, addresses: Şema adresleri dizisi, config?: Çekme yapılandırmasıPromise<Account<Schema>[]>
fetchAllMaybeSchemaGüvenli bir şekilde birden fazla şema çeker, bulunamayanları atlarrpc: RPC bağlamı, addresses: Şema adresleri dizisi, config?: Çekme yapılandırmasıPromise<MaybeAccount<Schema>[]>

Serileştirme

MetodAçıklamaParametrelerDöndürür
getSchemaEncoderŞema verileri için kodlayıcıyı alırYokEncoder<SchemaArgs>
getSchemaDecoderŞema verileri için kod çözücüyü alırYokDecoder<Schema>
getSchemaCodecŞema verileri için kodlayıcı-kod çözücüyü alırYokCodec<SchemaArgs, Schema>

Kullanım Örnekleri

Tek Bir Şema Getirme

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

Birden Fazla Şema Getirme

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

Güvenli Getirme

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

Şema Düzeni Veri Tipleri

layout alanı, şemadaki her alan için veri tiplerini belirtmek üzere sayısal değerler kullanır:

DeğerVeri TipiAçıklama
0U8İşaretsiz 8-bit tam sayı
1U16İşaretsiz 16-bit tam sayı
2U32İşaretsiz 32-bit tam sayı
3U64İşaretsiz 64-bit tam sayı
4U128İşaretsiz 128-bit tam sayı
5I8İşaretli 8-bit tam sayı
6I16İşaretli 16-bit tam sayı
7I32İşaretli 32-bit tam sayı
8I64İşaretli 64-bit tam sayı
9I128İşaretli 128-bit tam sayı
10BoolBoolean değeri
11CharTek karakter
12StringDeğişken uzunluklu dize
13VecU8İşaretsiz 8-bit tam sayı vektörü
14VecU16İşaretsiz 16-bit tam sayı vektörü
15VecU32İşaretsiz 32-bit tam sayı vektörü
16VecU64İşaretsiz 64-bit tam sayı vektörü
17VecU128İşaretsiz 128-bit tam sayı vektörü
18VecI8İşaretli 8-bit tam sayı vektörü
19VecI16İşaretli 16-bit tam sayı vektörü
20VecI32İşaretli 32-bit tam sayı vektörü
21VecI64İşaretli 64-bit tam sayı vektörü
22VecI128İşaretli 128-bit tam sayı vektörü
23VecBoolBoolean değerleri vektörü
24VecCharKarakter vektörü
25VecStringDize vektörü

Örnek Kullanım

Örneğin, [12, 0, 12] düzeni üç alan tanımlar: bir String, ardından bir U8 tam sayısı, ardından başka bir String. fieldNames dizisi, her düzen değerine konumsal olarak karşılık gelen okunabilir isimler sağlar, dolayısıyla ["name", "age", "country"] alan adlarıyla, ilk String alanı "name" olarak, U8 alanı "age" olarak ve ikinci String alanı "country" olarak adlandırılır.

Bir Schema oluştururken bunların nasıl kullanılacağına dair bir örnek:

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

Önemli Notlar

  • discriminator alanı dahili olarak kullanılır ve değiştirilmemelidir
  • credential alanı, şemayı ilişkili kimlik bilgisi türüne bağlar
  • isPaused, şema kullanımını geçici olarak devre dışı bırakmak için kullanılabilir
  • version alanı, geriye dönük uyumluluğu korurken şema evrimine izin verir
  • layout ve fieldNames, bu şemayı kullanan kimlik bilgilerinin yapısını tanımlar
  • Tüm bayt dizisi alanları (name, description, layout, fieldNames), uygulamanızın ihtiyaçlarına göre düzgün şekilde kodlanmalı/çözülmelidir

Is this page helpful?

İçindekiler

Sayfayı Düzenle

Yönetici

© 2026 Solana Vakfı.
Tüm hakları saklıdır.
Bağlanın