~/bend-docscommunity

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

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.

type Account source · line 19 · raw

Data

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.

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.

type World source · line 41 · raw

Data

type Outcome source · line 62 · raw

Data

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>