Yhteenveto
Instructions sysvar (Sysvar1nstructions1111111111111111111111111)
mahdollistaa ohjelman lukea kaikki ylätason instruktiot nykyisessä
transaktiossa indeksin tai suhteellisen siirtymän perusteella. CPI:n sisäiset
instruktiot eivät ole saatavilla.
Instructions sysvar
Ohjelmat voivat tarkastella kaikkia ylätason instruktioita nykyisessä
transaktiossa Instructions sysvar -järjestelmämuuttujan
(Sysvar1nstructions1111111111111111111111111) avulla. Tämä mahdollistaa
ohjelman tarkastella muita instruktioita samassa transaktiossa, esimerkiksi
varmistaakseen, että tietty instruktio on samassa transaktiossa kuin instruktio,
jota se suorittaa.
Instructions sysvar sisältää vain ylätason instruktiot transaktioviestistä. CPI:n kautta kutsutut sisäiset instruktiot eivät ole saatavilla tämän sysvar-muuttujan kautta.
Instructions sysvar -järjestelmämuuttujaa ei käytetä normaalin Sysvar
-traittien kautta. Sen sijaan sitä käytetään vapaiden funktioiden kautta
solana_instructions_sysvar
-cratessa.
Sysvar-data on sarjallistettu mukautetulla binäärimuodolla:
| Siirtymä | Koko | Kuvaus |
|---|---|---|
| 0 | 2 | num_instructions (u16, little-endian) |
| 2 | 2 * N | Tavusiirtymät kullekin instruktiolle (u16 kukin) |
| vaihtelee | vaihtelee | Sarjallistettu instruction data |
| viimeiset 2 tavua | 2 | Nykyinen instruktioindeksi (u16, little-endian) |
Jokainen sarjallistettu instruktio sisältää: tilien määrän (u16), tilit 33-tavuisina merkintöinä (1 lippubitti + 32-tavuinen pubkey), ohjelma-ID:n (32 tavua), datan pituuden (u16) ja raadat datatavut.
Keskeiset funktiot:
load_current_index_checked(account_info): Palauttaa parhaillaan suoritettavan instruktion indeksin. Ajonaikainen ympäristö päivittää tämän arvon aina, kun uusi ylätason instruktio alkaa.load_instruction_at_checked(index, account_info): Deserialisoi instruktion annetussa absoluuttisessa indeksissä.get_instruction_relative(offset, account_info): Lataa instruktion suhteessa nykyiseen (esim.-1edelliselle instruktiolle,1seuraavalle).
Is this page helpful?