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äislamport-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)
An account with its base58 encoded public key address
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äislamport-saldo, joka tunnetaan rent-vapautettuna saldona, jotta sen data säilyy ketjussa. Tämä saldo on verrannollinen tilin datan kokoon.
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.
Aiemmin seurattiin, milloin tilistä vähennetään automaattisesti lamportteja sen
datan ketjussa ylläpitämisen maksamiseksi. Koska rent-keräys on vanhentunut,
rent_epoch asetetaan arvoon u64::MAX kaikille uusille rent-vapautetuille
tileille.
Is this page helpful?