Program Derived Address'ler (PDA'lar)

Program Derived Address'ler (PDA'lar), bir program ID'si ve bir dizi seed'den deterministik olarak türetilen 32 baytlık hesap adresleridir. Ed25519 eğrisi üzerinde olmadıkları garanti edilir, bu da onlar için özel bir anahtarın mevcut olmadığı anlamına gelir. Yalnızca türetmede ID'si kullanılan program bir PDA için "imza atabilir" ve bunu programlar arası çağrılar (CPI'lar) sırasında invoke_signed aracılığıyla yapar.

Program Derived AddressProgram Derived Address

Temel gerçekler

  • Deterministik: Aynı seed'ler ve program ID her zaman aynı adresi üretir.
  • Eğri-dışı: Türetilen adresin geçerli bir Ed25519 genel anahtarı olmadığı doğrulanır. Hash eğri üzerine düşerse, türetme başarısız olur ve farklı bir bump seed denenir.
  • Özel anahtar yok: Adres eğri-dışı olduğundan, kimse bunun için kriptografik bir imza üretemez. Program bunun yerine çalışma zamanının invoke_signed mekanizması aracılığıyla "imza atar".

PDA'lar ne zaman kullanılır

  • Deterministik adresleme: Her seferinde aynı seed'lerden aynı hesabı türetin.
  • Program imzalama: Yalnızca sahip olan program invoke_signed aracılığıyla imzalayabilir, bu da programların otonom otoriteler olarak hareket etmesini sağlar.
  • Kullanıcı kapsamlı durum: Kullanıcı pubkey seed'lerinden kullanıcı başına hesaplar türetin (örn., ["user", user_pubkey]).
  • Keypair yönetimi yok: Saklanacak veya kaybedilecek özel anahtar yoktur. Adres tamamen seed'lerden türetilir.

Limitler

LimitDeğerKaynak
Maksimum seed sayısı16MAX_SEEDS
Maksimum seed uzunluğuSeed başına maksimum 32 baytMAX_SEED_LEN
Bump aralığı0-255 (1 bayt)Son seed öğesi olarak eklenir
create_program_address maliyeti1.500 CUcreate_program_address_units
find_program_address en kötü durum maliyeti1.500 giriş + 1.500 x iterasyon1.500 girişte + başarısız bump başına 1.500
CPI başına maksimum PDA imzalayıcı16MAX_SIGNERS

Is this page helpful?

İçindekiler

Sayfayı Düzenle

Yönetici

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