Program Derived Addresses (PDAs)

Program Derived Addresses (PDAs) adalah alamat akun 32-byte yang diturunkan secara deterministik dari program ID dan sekumpulan seed. Alamat ini dijamin tidak berada pada kurva Ed25519, yang berarti tidak ada private key untuk alamat tersebut. Hanya program yang ID-nya digunakan dalam penurunan yang dapat "menandatangani" untuk PDA, dan hal ini dilakukan melalui invoke_signed selama cross-program invocations (CPIs).

Program Derived AddressProgram Derived Address

Fakta kunci

  • Deterministik: Seed dan program ID yang sama selalu menghasilkan alamat yang sama.
  • Off-curve: Alamat yang diturunkan diverifikasi untuk tidak menjadi public key Ed25519 yang valid. Jika hash kebetulan berada pada kurva, penurunan gagal dan bump seed yang berbeda dicoba.
  • Tidak ada private key: Karena alamat berada off-curve, tidak ada yang dapat menghasilkan tanda tangan kriptografis untuknya. Program "menandatangani" melalui mekanisme invoke_signed runtime sebagai gantinya.

Kapan menggunakan PDAs

  • Deterministic addressing: Turunkan akun yang sama dari seed yang sama setiap waktu.
  • Program signing: Hanya program pemilik yang dapat menandatangani melalui invoke_signed, memungkinkan program bertindak sebagai otoritas otonom.
  • User-scoped state: Turunkan akun per-pengguna dari seed pubkey pengguna (misalnya, ["user", user_pubkey]).
  • Tidak ada pengelolaan keypair: Tidak ada private key untuk disimpan atau hilang. Alamat diturunkan murni dari seed.

Batasan

BatasanNilaiSumber
Seed maksimal16MAX_SEEDS
Panjang seed maksimal32 byte maksimal per seedMAX_SEED_LEN
Rentang bump0-255 (1 byte)Ditambahkan sebagai elemen seed terakhir
Biaya create_program_address1.500 CUcreate_program_address_units
Biaya terburuk find_program_address1.500 entri + 1.500 x iterasi1.500 saat masuk + 1.500 per bump yang gagal
Penandatangan PDA maksimal per CPI16MAX_SIGNERS

Is this page helpful?

Daftar Isi

Edit Halaman

Dikelola oleh

© 2026 Yayasan Solana.
Semua hak dilindungi.
Terhubung