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)
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äis-lamport-saldoa, jotta sen tiedot pysyvät tallennettuina ketjussa. Tämä palautettava tallennussaldo on suhteessa tilin tietojen kokoon.
Ajoympäristö ja RPC-metodinimet kutsuvat tätä "rent-exempt minimumiksi", mutta jatkuva vuokranperintä on poistettu käytöstä. Käsittele saldo palautettavana tilin tallennustalletuksena: koko saldo voidaan palauttaa, 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 tililtä vähennetään automaattisesti lamporteja
maksamaan tietojen säilyttämisestä ketjussa. Koska jatkuva vuokranperintä on poistettu käytöstä,
rent_epoch on asetettu arvoon u64::MAX kaikille uusille tileille, jotka täyttävät vähimmäis-
tallennussaldon vaatimuksen.
Is this page helpful?