Tilin rakenne

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ä:

  1. Julkinen avain: vastaa Ed25519 keypairia (sisältää yksityisen avaimen)
  2. Program Derived Address (PDA): johdettu deterministisesti ohjelma-ID:stä ja siemenistä (ei yksityistä avainta)

An account with its base58 encoded public key address
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 keys
const keypairSigner = await generateKeyPairSigner();
console.log(keypairSigner);
Console
Click to execute the code.

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}`);
Console
Click to execute the code.

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äTyyppiKuvaus
lamportsu64Saldo lamporteissa. Omistaja voi veloittaa; mikä tahansa ohjelma voi hyvittää.
dataVec<u8>Tilin tila tai ohjelman tavukoodi. Enintään 10 MiB. Vain omistaja voi kirjoittaa.
ownerPubkeyOhjelma, jolla on kirjoitusoikeus. Uudelleenmääritettävissä vain kun data on nollattu.
executableboolTrue = ohjelmatili.
rent_epochEpochVanhentunut. Asetettu arvoon u64::MAX rent-vapautetuille tileille.
Account
pub struct Account {
/// lamports in the account
pub 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,
/// deprecated
pub 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:

  1. Hae tili sen osoitteella.
  2. 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.

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:

  1. Hae tili sen osoitteella.
  2. 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.

Account Examples
// Example Token Mint Account
Account {
lamports: 1461600,
data.len: 82,
owner: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb,
executable: false,
rent_epoch: 0,
data: 010000001e213c90625a7e643d9555bb01b6c3fe6416d7afd523ce8c7ddd9b923ceafb9d00000000000000000901010000001e213c90625a7e643d9555bb01b6,
}
// Example Token Program Account
Account {
lamports: 4513200894,
data.len: 134080,
owner: BPFLoader2111111111111111111111111111111111,
executable: true,
rent_epoch: 18446744073709551615,
data: 7f454c460201010000000000000000000300f70001000000d8f90000000000004000000000000000800902000000000000000000400038000400400009000800,
}

Is this page helpful?

Sisällysluettelo

Muokkaa sivua
© 2026 Solana Foundation. Kaikki oikeudet pidätetään.