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 Address
PDA Derivation
Algoritma penurunan, canonical bump, contoh findProgramAddress dengan berbagai jenis seed.
PDA Accounts
Membuat akun pada alamat PDA, penandatanganan invoke_signed, pola Anchor.
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_signedruntime 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
| Batasan | Nilai | Sumber |
|---|---|---|
| Seed maksimal | 16 | MAX_SEEDS |
| Panjang seed maksimal | 32 byte maksimal per seed | MAX_SEED_LEN |
| Rentang bump | 0-255 (1 byte) | Ditambahkan sebagai elemen seed terakhir |
Biaya create_program_address | 1.500 CU | create_program_address_units |
Biaya terburuk find_program_address | 1.500 entri + 1.500 x iterasi | 1.500 saat masuk + 1.500 per bump yang gagal |
| Penandatangan PDA maksimal per CPI | 16 | MAX_SIGNERS |
Is this page helpful?