Özet
Instructions sysvar (Sysvar1nstructions1111111111111111111111111), bir
programın mevcut işlemdeki tüm üst düzey talimatları indeks veya göreceli
ofset ile okumasını sağlar. CPI iç talimatlarına erişilemez.
Instructions sysvar
Programlar, Instructions sysvar
(Sysvar1nstructions1111111111111111111111111) aracılığıyla mevcut işlemdeki
tüm üst düzey talimatları inceleyebilir. Bu, bir programın aynı işlemdeki diğer
talimatları incelemesine olanak tanır; örneğin, belirli bir talimatın yürüttüğü
talimatla aynı işlemde olduğunu doğrulamak için kullanılabilir.
Instructions sysvar yalnızca işlem mesajındaki üst düzey talimatları içerir. CPI aracılığıyla çağrılan iç talimatlara bu sysvar üzerinden erişilemez.
Instructions sysvar, normal Sysvar trait'i üzerinden erişilmez. Bunun
yerine,
solana_instructions_sysvar
crate'indeki serbest fonksiyonlar aracılığıyla erişilir.
Sysvar verileri özel bir ikili düzen ile serileştirilir:
| Ofset | Boyut | Açıklama |
|---|---|---|
| 0 | 2 | num_instructions (u16, little-endian) |
| 2 | 2 * N | Her talimat için bayt ofsetleri (her biri u16) |
| değişken | değişken | Serileştirilmiş talimat verileri |
| son 2 bayt | 2 | Mevcut talimat indeksi (u16, little-endian) |
Her serileştirilmiş talimat şunları içerir: hesap sayısı (u16), 33 baytlık girişler halinde hesaplar (1 bayrak baytı + 32 baytlık pubkey), program ID (32 bayt), veri uzunluğu (u16) ve ham veri baytları.
Temel fonksiyonlar:
load_current_index_checked(account_info): Şu anda yürütülmekte olan talimatın indeksini döndürür. Çalışma zamanı, her yeni üst düzey talimat başladığında bu değeri günceller.load_instruction_at_checked(index, account_info): Verilen mutlak indeksteki talimatı deserialize eder.get_instruction_relative(offset, account_info): Mevcut talimata göre bir talimat yükler (örneğin, önceki talimat için-1, sonraki için1).
Is this page helpful?