sol.bend checks
raw source on the hub · import 0x29742a6f4a4244bd67c547157a88b9de/sol.bend as Sol
1 import
import Base
Types
type Pubkey source · line 10 · raw
Data
Pk@w0:U32 -> @w1:U32 -> @w2:U32 -> @w3:U32 -> @w4:U32 -> @w5:U32 -> @w6:U32 -> @w7:U32 -> Pubkey
type U64 source · line 16 · raw
Data
Book U64: two little-endian U32 words. The C backend implements U64.* as a real machine u64; on-chain lamports and token amounts are never truncated.
U64@lo:U32 -> @hi:U32 -> U64
type Account source · line 19 · raw
Data
Acc@key:Pubkey -> @owner:Pubkey -> @lamports:U64 -> @data:List<&2, U32> -> @is_signer:Bool -> @is_writable:Bool -> Account
type Pda source · line 31 · raw
Data
Stand-in for find_program_address([seed_le, owner], program_id). On-chain the compiler replaces derive_pda / find_pda with the syscall.
Pda@key:Pubkey -> @bump:U32 -> Pda
type Cpi source · line 36 · raw
Data
Two CPI slots. queue_cpi fills cpi then cpi1. The runtime invokes both after process returns Ok. Indices are World account slots.
CpiNoneCpi
CpiTransfer@from:U32 -> @to:U32 -> @lamports:U64 -> @sign:Bool -> @bump:U32 -> Cpi
CpiTokenTransfer@from:U32 -> @to:U32 -> @mint:U32 -> @auth:U32 -> @amount:U64 -> @decimals:U32 -> @sign:Bool -> @bump:U32 -> Cpi
type World source · line 41 · raw
Data
World@n:U32 -> @ix0:U32 -> @ix1:U64 -> @ix2:U64 -> @ix3:U64 -> @pda_seed:U32 -> @program_id:Pubkey -> @a0:Account -> @a1:Account -> @a2:Account -> @a3:Account -> @a4:Account -> @a5:Account -> @a6:Account -> @a7:Account -> @cpi:Cpi -> @cpi1:Cpi -> World
type Outcome source · line 62 · raw
Data
Ok@world:World -> Outcome
Err@code:U32 -> Outcome
Definitions
def ok source · line 66 · raw
@+w:World -> Outcome
def fail source · line 69 · raw
@+code:U32 -> Outcome
def E.ok source · line 72 · raw
U32
def E.accounts source · line 75 · raw
U32
def E.data source · line 78 · raw
U32
def E.auth source · line 81 · raw
U32
def E.init source · line 84 · raw
U32
def E.missing source · line 87 · raw
U32
def E.overflow source · line 90 · raw
U32
def E.underflow source · line 93 · raw
U32
def E.threshold source · line 96 · raw
U32
def E.executed source · line 99 · raw
U32
def E.owner source · line 102 · raw
U32
def E.pda source · line 105 · raw
U32
def E.cpi source · line 108 · raw
U32
def E.token source · line 111 · raw
U32
def U64.pack source · line 114 · raw
@lo:U32 -> @hi:U32 -> U64
def U64.from_u32 source · line 117 · raw
@lo:U32 -> U64
def U64.zero source · line 120 · raw
U64
def U64.lo source · line 123 · raw
@x:U64 -> U32
def U64.hi source · line 128 · raw
@x:U64 -> U32
def U64.is_eq source · line 133 · raw
@+a:U64 -> @+b:U64 -> Bool
def U64.is_ne source · line 138 · raw
@+a:U64 -> @+b:U64 -> Bool
def U64.is_lt source · line 141 · raw
@+a:U64 -> @+b:U64 -> Bool
def U64.is_gt source · line 146 · raw
@+a:U64 -> @+b:U64 -> Bool
def U64.is_le source · line 149 · raw
@+a:U64 -> @+b:U64 -> Bool
def U64.is_ge source · line 152 · raw
@+a:U64 -> @+b:U64 -> Bool
def U64.is_zero source · line 155 · raw
@+a:U64 -> Bool
def U64.carry source · line 160 · raw
@c:Bool -> @+hi:U32 -> U32
def U64.borrow source · line 167 · raw
@c:Bool -> @+hi:U32 -> U32
def U64.add source · line 174 · raw
@+a:U64 -> @+b:U64 -> U64
def U64.sub source · line 182 · raw
@+a:U64 -> @+b:U64 -> U64
def U64.would_ovf source · line 190 · raw
@+a:U64 -> @+b:U64 -> Bool
def Pubkey.eq source · line 193 · raw
@+a:Pubkey -> @+b:Pubkey -> Bool
def Pubkey.zero source · line 204 · raw
Pubkey
def system_id source · line 207 · raw
Pubkey
def auth_ok source · line 210 · raw
@is_signer:Bool -> @same:Bool -> Bool
def word_at source · line 213 · raw
@xs:List<&2, U32> -> @i:Nat -> U32
def word_set source · line 222 · raw
@xs:List<&2, U32> -> @i:Nat -> @v:U32 -> List<&2, U32>
def words_len source · line 231 · raw
@xs:List<&2, U32> -> Nat
def has_words source · line 238 · raw
@xs:List<&2, U32> -> @n:Nat -> Bool
def has_disc source · line 241 · raw
@xs:List<&2, U32> -> @d:U32 -> Bool
def load_u32 source · line 244 · raw
@xs:List<&2, U32> -> @i:Nat -> U32
def store_u32 source · line 247 · raw
@xs:List<&2, U32> -> @i:Nat -> @v:U32 -> List<&2, U32>
def acc_key source · line 250 · raw
@a:Account -> Pubkey
def acc_owner source · line 255 · raw
@a:Account -> Pubkey
def acc_signer source · line 260 · raw
@a:Account -> Bool
def acc_writable source · line 265 · raw
@a:Account -> Bool
def acc_lamports source · line 270 · raw
@a:Account -> U64
def acc_data source · line 275 · raw
@a:Account -> List<&2, U32>
def acc_set_data source · line 280 · raw
@a:Account -> @data:List<&2, U32> -> Account
def acc_set_lamports source · line 285 · raw
@a:Account -> @lamports:U64 -> Account
def acc_credit source · line 290 · raw
@+a:Account -> @amt:U64 -> Account
def acc_debit source · line 293 · raw
@+a:Account -> @amt:U64 -> Account
def acc_owned source · line 296 · raw
@+a:Account -> @+program_id:Pubkey -> Bool
def acc_is_system source · line 299 · raw
@+a:Account -> Bool
def pda_key source · line 302 · raw
@p:Pda -> Pubkey
def pda_bump source · line 307 · raw
@p:Pda -> U32
def pda_matches source · line 312 · raw
@+got:Pubkey -> @+want:Pubkey -> Bool
def PDA_SEED source · line 316 · raw
U32
Default seed bytes bend. Programs may pass another U32 seed.
def derive_pda_seeded source · line 322 · raw
@+program_id:Pubkey -> @+owner:Pubkey -> @+seed:U32 -> Pda
Checker / host XOR stand-in. Not SHA256. On-chain the compiler replaces derive_pda_seeded with sol_try_find_program_address ([seed_le_bytes, owner], program_id). Prove pda_matches / Pubkey.eq.
def derive_pda source · line 336 · raw
@+program_id:Pubkey -> @+owner:Pubkey -> Pda
def find_pda source · line 339 · raw
@+program_id:Pubkey -> @+owner:Pubkey -> @+bump:U32 -> Pubkey
def cpi_none source · line 342 · raw
Cpi
def cpi_is_none source · line 345 · raw
@c:Cpi -> Bool
def world_a0 source · line 354 · raw
@w:World -> Account
def world_a1 source · line 359 · raw
@w:World -> Account
def world_a2 source · line 364 · raw
@w:World -> Account
def world_a3 source · line 369 · raw
@w:World -> Account
def world_a4 source · line 374 · raw
@w:World -> Account
def world_a5 source · line 379 · raw
@w:World -> Account
def world_a6 source · line 384 · raw
@w:World -> Account
def world_a7 source · line 389 · raw
@w:World -> Account
def world_n source · line 394 · raw
@w:World -> U32
def world_ix0 source · line 399 · raw
@w:World -> U32
def world_ix1 source · line 404 · raw
@w:World -> U64
def world_ix2 source · line 409 · raw
@w:World -> U64
def world_ix3 source · line 414 · raw
@w:World -> U64
def world_pda_seed source · line 419 · raw
@w:World -> U32
def world_program_id source · line 424 · raw
@w:World -> Pubkey
def world_cpi source · line 429 · raw
@w:World -> Cpi
def world_cpi1 source · line 434 · raw
@w:World -> Cpi
def world_set_a0 source · line 439 · raw
@w:World -> @a0:Account -> World
def world_set_a1 source · line 444 · raw
@w:World -> @a1:Account -> World
def world_set_a2 source · line 449 · raw
@w:World -> @a2:Account -> World
def world_set_a3 source · line 454 · raw
@w:World -> @a3:Account -> World
def world_set_a4 source · line 459 · raw
@w:World -> @a4:Account -> World
def world_set_a5 source · line 464 · raw
@w:World -> @a5:Account -> World
def world_set_a6 source · line 469 · raw
@w:World -> @a6:Account -> World
def world_set_a7 source · line 474 · raw
@w:World -> @a7:Account -> World
def world_set_cpi source · line 479 · raw
@w:World -> @cpi:Cpi -> World
def world_set_cpi1 source · line 484 · raw
@w:World -> @cpi1:Cpi -> World
def world_set_pda_seed source · line 489 · raw
@w:World -> @pda_seed:U32 -> World
def queue_cpi source · line 494 · raw
@empty:Bool -> @+w:World -> @c:Cpi -> World
def cpi_transfer source · line 501 · raw
@+w:World -> @+from:U32 -> @+to:U32 -> @+lamports:U64 -> World
def cpi_transfer_signed source · line 504 · raw
@+w:World -> @+from:U32 -> @+to:U32 -> @+lamports:U64 -> @+bump:U32 -> World
def cpi_token_transfer source · line 507 · raw
@+w:World -> @+from:U32 -> @+to:U32 -> @+mint:U32 -> @+auth:U32 -> @+amount:U64 -> @+decimals:U32 -> World
def cpi_token_transfer_signed source · line 510 · raw
@+w:World -> @+from:U32 -> @+to:U32 -> @+mint:U32 -> @+auth:U32 -> @+amount:U64 -> @+decimals:U32 -> @+bump:U32 -> World
def world_amt source · line 513 · raw
@+w:World -> U64
def need_accounts source · line 516 · raw
@w:World -> @k:U32 -> Bool
def counter_inc source · line 519 · raw
@+value:U32 -> U32
def dec_if source · line 522 · raw
@z:Bool -> @value:U32 -> Maybe<&2, U32>
def counter_dec source · line 529 · raw
@+value:U32 -> Maybe<&2, U32>
def withdraw_if source · line 532 · raw
@lt:Bool -> @bal:U64 -> @amt:U64 -> Maybe<&2, U64>
def try_withdraw source · line 539 · raw
@+bal:U64 -> @+amt:U64 -> Maybe<&2, U64>
def deposit_if source · line 542 · raw
@ovf:Bool -> @bal:U64 -> @amt:U64 -> Maybe<&2, U64>
def try_deposit source · line 549 · raw
@+bal:U64 -> @+amt:U64 -> Maybe<&2, U64>
def load_u64 source · line 552 · raw
@+xs:List<&2, U32> -> @+i:Nat -> U64
def store_u64 source · line 555 · raw
@+xs:List<&2, U32> -> @+i:Nat -> @v:U64 -> List<&2, U32>
def popcount.go source · line 560 · raw
@fuel:Nat -> @+mask:U32 -> @acc:U32 -> U32
def popcount source · line 567 · raw
@mask:U32 -> U32
def can_execute source · line 570 · raw
@approvals:U32 -> @threshold:U32 -> Bool
def bit_set source · line 573 · raw
@mask:U32 -> @i:U32 -> U32
def pick_u32 source · line 576 · raw
@b:Bool -> @t:U32 -> @f:U32 -> U32
def maybe_u32 source · line 583 · raw
@b:Bool -> @v:U32 -> Maybe<&2, U32>
def zeros source · line 590 · raw
@n:Nat -> List<&2, U32>
def ensure_if source · line 597 · raw
@ok:Bool -> @xs:List<&2, U32> -> @n:Nat -> List<&2, U32>
def ensure_words source · line 604 · raw
@+xs:List<&2, U32> -> @+n:Nat -> List<&2, U32>
def read_pk source · line 607 · raw
@+xs:List<&2, U32> -> @+off:Nat -> Pubkey
def write_pk source · line 619 · raw
@xs:List<&2, U32> -> @+off:Nat -> @p:Pubkey -> List<&2, U32>
def pk_eq_at source · line 625 · raw
@+xs:List<&2, U32> -> @+off:Nat -> @+k:Pubkey -> Bool
def pk_eq_words source · line 628 · raw
@+a:List<&2, U32> -> @+ao:Nat -> @+b:List<&2, U32> -> @+bo:Nat -> Bool
def owner_pick source · line 631 · raw
@is0:Bool -> @is1:Bool -> Maybe<&2, U32>
def owner_index source · line 638 · raw
@+key:Pubkey -> @+o0:Pubkey -> @+o1:Pubkey -> @+n:U32 -> Maybe<&2, U32>