Yhteenveto
Tileillä on 5 kenttää: lamports, data, owner, executable ja rent_epoch. Jokainen tili tunnistetaan ainutlaatuisella 32-tavuisella osoitteella. Tilien on säilytettävä vähimmäis-lamport-saldo, joka on suhteessa niiden datakokoon, pysyäkseen ketjussa.
Tiliosoite
Jokainen tiliosoite on 32-tavuinen arvo, joka näytetään base58-koodattuna merkkijonona. Osoite voi olla kahta tyyppiä:
- Julkinen avain: vastaa Ed25519 keypairia (sisältää yksityisen avaimen)
- Program Derived Address (PDA): johdettu deterministisesti ohjelma-ID:stä ja siemenistä (ei yksityistä avainta)
Julkinen avain
Keypair koostuu julkisesta avaimesta (käytetään tiliosoitteena) ja
yksityisestä avaimesta (käytetään transaktioiden allekirjoittamiseen). Seuraava
esimerkki generoi keypair-parin Solana SDK:n avulla.
import { generateKeyPairSigner } from "@solana/kit";// Kit does not enable extractable private keysconst keypairSigner = await generateKeyPairSigner();console.log(keypairSigner);
Program Derived Address
Program Derived Address (PDA) johdetaan deterministisesti ohjelma-ID:stä ja yhdestä tai useammasta valinnaisesta siemenestä. PDA:lla ei ole vastaavaa yksityistä avainta. Seuraava esimerkki johtaa PDA:n Solana SDK:n avulla.
import { Address, getProgramDerivedAddress } from "@solana/kit";const programAddress = "11111111111111111111111111111111" as Address;const seeds = ["helloWorld"];const [pda, bump] = await getProgramDerivedAddress({programAddress,seeds});console.log(`PDA: ${pda}`);console.log(`Bump: ${bump}`);
Tilin kentät
Jokaisella
Account
-tilillä on enimmäiskoko
MAX_ACCOUNT_DATA_LEN
(10 MiB, vastaa MAX_PERMITTED_DATA_LENGTH) ja se sisältää viisi kenttää:
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
lamports | u64 | Saldo lamporteissa. Omistaja voi veloittaa; mikä tahansa ohjelma voi hyvittää. |
data | Vec<u8> | Tilin tila tai ohjelman tavukoodi. Enintään 10 MiB. Vain omistaja voi kirjoittaa. |
owner | Pubkey | Ohjelma, jolla on kirjoitusoikeus. Uudelleenmääritettävissä vain kun data on nollattu. |
executable | bool | True = ohjelmatili. |
rent_epoch | Epoch | Vanhentunut. Asetettu arvoon u64::MAX rent-vapautetuille tileille. |
pub struct Account {/// lamports in the accountpub lamports: u64,/// data held in this account#[cfg_attr(feature = "serde", serde(with = "serde_bytes"))]pub data: Vec<u8>,/// the program that owns this account. If executable, the program that loads this account.pub owner: Pubkey,/// if true, this account's data contains a program (and is now read-only)pub executable: bool,/// deprecatedpub rent_epoch: Epoch,}
Lamportit
lamports-kenttä sisältää tilin saldon
lamporteissa (1 SOL = 1 000 000 000
lamportia).
Jokaisen tilin on ylläpidettävä vähimmäis-lamport-saldo, joka tunnetaan nimellä rent-exempt-saldo, jotta sen data säilyy ketjussa. Tämä saldo on suhteessa tilin datakokoon.
Vaikka sitä usein kutsutaan "rentiksi", rent-vapautettu saldo toimii palautettavana talletuksena, koko saldo palautetaan kun tili suljetaan.
Katso
minimum_balance()
ja rent-
vakiot.
Data
data-kenttä tallentaa mielivaltaisen tavutaulukon. Sen sisältö riippuu tilin
tyypistä:
- Ohjelmatilit: Sisältää suoritettavan tavukoodin tai ohjelman datatilin osoitteen, joka tallentaa tavukoodin.
- Datatilit: Sisältää ohjelman määrittelemän tiladatan. Omistava ohjelma määrittelee serialisointimuodon.
Tilin datan lukeminen vaatii kaksi vaihetta:
- Hae tili sen osoitteella.
- Deserialisoi
data-kenttä raakatavuista ohjelman määrittelemään datarakenteeseen.
Omistaja
owner-kenttä sisältää ohjelman tunnisteen (julkisen avaimen) ohjelmasta, joka
omistaa tämän tilin.
Omistaja-ohjelma on ainoa ohjelma, joka voi:
- Muokata tilin
data-kenttää - Vähentää lamportteja tilin
lamports-kentästä
Mikä tahansa ohjelma voi lisätä lamportteja toiselle tilille, mutta vain omistaja voi vähentää lamportteja siitä.
Ohjelmatileillä omistaja on tilin latausohjelma.
Suoritettava
executable-kenttä on totuusarvo, joka määrittää, onko tili
ohjelmatili vai
datatili:
true= ohjelmatili (sisältää suoritettavaa koodia)false= datatili (tallentaa tilaa)
Rent epoch
rent_epoch-kenttä on vanhentunut.
Aikaisemmin seurattiin, milloin tililtä vähennettäisiin automaattisesti
lamporteja sen datan ketjussa ylläpitämisen maksamiseksi. Koska rent-keräys on
vanhentunut, rent_epoch asetetaan arvoon u64::MAX kaikille uusille
rent-exempt-tileille.
Is this page helpful?