~/bend-docscommunity

sysvar.bend source

sysvar.bend on the hub · documented module

import Baseimport ./types.bend as Ty# Cluster sysvars. Checker bodies return 0. The compiler natives call# sol_get_sysvar, except Instructions, which is the account the transaction# must pass (Sysvar1nstructions1111111111111111111111111).## A failed syscall reads as 0. Fees and recent blockhashes are not here.# Slot history and stake history are variable-length and not read.## Clock is 40 bytes. Timestamps are the i64 bits.def Clock.slot() -> Ty.u64:  Ty.u64.zero()def Clock.epoch_start_timestamp() -> Ty.u64:  Ty.u64.zero()def Clock.epoch() -> Ty.u64:  Ty.u64.zero()def Clock.leader_schedule_epoch() -> Ty.u64:  Ty.u64.zero()def Clock.unix_timestamp() -> Ty.u64:  Ty.u64.zero()# EpochSchedule bincode: two u64s, a bool, then two u64s (33 bytes).def EpochSchedule.slots_per_epoch() -> Ty.u64:  Ty.u64.zero()def EpochSchedule.leader_schedule_slot_offset() -> Ty.u64:  Ty.u64.zero()def EpochSchedule.warmup() -> U32:  0def EpochSchedule.first_normal_epoch() -> Ty.u64:  Ty.u64.zero()def EpochSchedule.first_normal_slot() -> Ty.u64:  Ty.u64.zero()def LastRestartSlot.slot() -> Ty.u64:  Ty.u64.zero()# EpochRewards. The parent blockhash and total points sit between partitions# and total_rewards; those two are not read.def EpochRewards.distribution_starting_block_height() -> Ty.u64:  Ty.u64.zero()def EpochRewards.num_partitions() -> Ty.u64:  Ty.u64.zero()def EpochRewards.total_rewards() -> Ty.u64:  Ty.u64.zero()def EpochRewards.distributed_rewards() -> Ty.u64:  Ty.u64.zero()def EpochRewards.active() -> U32:  0# Rent.lamports_per_byte_year. rent_exempt in sol.bend applies the threshold.def Rent.lamports_per_byte_year() -> Ty.u64:  Ty.u64.zero()# SlotHashes: u64 count, then entries of slot u64 + 32-byte hash, newest first.def SlotHashes.len() -> Ty.u64:  Ty.u64.zero()def SlotHashes.slot(+i: Ty.u64) -> Ty.u64:  match i:    case _:      Ty.u64.zero()def newest_go(empty: Bool) -> Ty.u64:  match empty:    case True{}:      Ty.u64.zero()    case False{}:      SlotHashes.slot(Ty.u64.zero())# Slot of the newest hash, or 0 when the sysvar is empty.def SlotHashes.newest() -> Ty.u64:  newest_go(Ty.u64.is_zero(SlotHashes.len()))# Sysvar1nstructions1111111111111111111111111def Instructions.id() -> Ty.Pubkey:  Ty.Pk{    399877894,    1725004568,    81058357,    3234004309,    2412127425,    2775930401,    1607187163,    8,  }# u16 count at byte 0 of the instructions account.def Instructions.len(+a: Ty.Account) -> U32:  match a:    case _:      0# Current instruction index: the last u16 of that account.def Instructions.index(+a: Ty.Account) -> U32:  match a:    case _:      0