Program Derived Addressit (PDA:t) ovat 32-tavuisia tilien osoitteita, jotka
johdettaan deterministisesti ohjelmatunnisteesta ja siemenjoukosta. Ne taataan
olevan Ed25519-käyrän ulkopuolella, mikä tarkoittaa, ettei niille ole olemassa
yksityistä avainta. Vain ohjelma, jonka tunnistetta käytettiin johtamisessa, voi
"allekirjoittaa" PDA:n puolesta, ja se tekee sen
invoke_signed-toiminnon kautta ohjelmien välisten kutsujen
(CPI) yhteydessä.
Program Derived Address
PDA:n johtaminen
Johtamisalgoritmi, kanoninen bump, findProgramAddress-esimerkkejä eri siementyypeillä.
PDA-tilit
Tilien luominen PDA-osoitteisiin, invoke_signed-allekirjoitus, Anchor-mallit.
Keskeiset tiedot
- Deterministinen: Samat siemenet ja ohjelmatunniste tuottavat aina saman osoitteen.
- Käyrän ulkopuolella: Johdettu osoite varmistetaan olevan epäkelpo Ed25519-julkinen avain. Jos hajautus sattuu osumaan käyrälle, johtaminen epäonnistuu ja kokeillaan eri bump-siementä.
- Ei yksityistä avainta: Koska osoite on käyrän ulkopuolella, kukaan ei voi
tuottaa sille kryptografista allekirjoitusta. Ohjelma "allekirjoittaa"
ajonaikaisen
invoke_signed-mekanismin kautta sen sijaan.
Milloin käyttää PDA:ita
- Deterministinen osoitteistus: Johda sama tili samoista siemenistä joka kerta.
- Ohjelman allekirjoitus: Vain omistava ohjelma voi allekirjoittaa
invoke_signed-toiminnon kautta, mikä mahdollistaa ohjelmien toimimisen autonomisina auktoriteetteina. - Käyttäjäkohtainen tila: Johda käyttäjäkohtaiset tilit käyttäjän
pubkey-siemenistä (esim.
["user", user_pubkey]). - Ei avainparihallintaa: Ei yksityistä avainta tallennettavaksi tai menetettäväksi. Osoite johdetaan puhtaasti siemenistä.
Rajoitukset
| Rajoitus | Arvo | Lähde |
|---|---|---|
| Seedien enimmäismäärä | 16 | MAX_SEEDS |
| Seedin enimmäispituus | 32 tavua per seed | MAX_SEED_LEN |
| Bump-arvoalue | 0-255 (1 tavu) | Lisätään viimeisenä seed-elementtinä |
create_program_address-kustannus | 1 500 CU | create_program_address_units |
find_program_address pahimman tapauksen kustannus | 1 500 aloitus + 1 500 x iteraatiot | 1 500 aloituksessa + 1 500 per epäonnistunut bump |
| PDA-allekirjoittajien enimmäismäärä per CPI | 16 | MAX_SIGNERS |
Is this page helpful?