# Host Function Implementation Progress This issue tracks the progress of implementing all Soroban host functions. ## context - [ ] `log_from_linear_memory`: `x _` - [x] `obj_cmp`: `x 0` - #52 - [ ] `contract_event`: `x 1` - [ ] `get_ledger_version`: `x 2` - [x] `get_ledger_sequence`: `x 3` - #16 - [x] `get_ledger_timestamp`: `x 4` - #43 - [x] `fail_with_error`: `x 5` - #26 - [ ] `get_ledger_network_id`: `x 6` - [x] `get_current_contract_address`: `x 7` - #27 - [ ] `get_max_live_until_ledger`: `x 8` ## int - [x] `obj_from_u64`: `i _` - #10 - [x] `obj_to_u64`: `i 0` - #10 - [x] `obj_from_i64`: `i 1` - #45 - [x] `obj_to_i64`: `i 2` - #10 - [x] `obj_from_u128_pieces`: `i 3` - #12 - [x] `obj_to_u128_lo64`: `i 4` - #12 - [x] `obj_to_u128_hi64`: `i 5` - #12 - [x] `obj_from_i128_pieces`: `i 6` - #45 - [x] `obj_to_i128_lo64`: `i 7` - #45 - [x] `obj_to_i128_hi64`: `i 8` - #45 - [ ] `obj_from_u256_pieces`: `i 9` - [ ] `u256_val_from_be_bytes`: `i a` - [ ] `u256_val_to_be_bytes`: `i b` - [ ] `obj_to_u256_hi_hi`: `i c` - [ ] `obj_to_u256_hi_lo`: `i d` - [ ] `obj_to_u256_lo_hi`: `i e` - [ ] `obj_to_u256_lo_lo`: `i f` - [ ] `obj_from_i256_pieces`: `i g` - [ ] `i256_val_from_be_bytes`: `i h` - [ ] `i256_val_to_be_bytes`: `i i` - [ ] `obj_to_i256_hi_hi`: `i j` - [ ] `obj_to_i256_hi_lo`: `i k` - [ ] `obj_to_i256_lo_hi`: `i l` - [ ] `obj_to_i256_lo_lo`: `i m` - [ ] `u256_add`: `i n` - [ ] `u256_sub`: `i o` - [ ] `u256_mul`: `i p` - [ ] `u256_div`: `i q` - [ ] `u256_rem_euclid`: `i r` - [ ] `u256_pow`: `i s` - [ ] `u256_shl`: `i t` - [ ] `u256_shr`: `i u` - [ ] `i256_add`: `i v` - [ ] `i256_sub`: `i w` - [ ] `i256_mul`: `i x` - [ ] `i256_div`: `i y` - [ ] `i256_rem_euclid`: `i z` - [ ] `i256_pow`: `i A` - [ ] `i256_shl`: `i B` - [ ] `i256_shr`: `i C` - [ ] `timepoint_obj_from_u64`: `i D` - [ ] `timepoint_obj_to_u64`: `i E` - [ ] `duration_obj_from_u64`: `i F` - [ ] `duration_obj_to_u64`: `i G` ## map - [x] `map_new`: `m _` - #48 - [x] `map_put`: `m 0` - #48 - [x] `map_get`: `m 1` - #48 - [x] `map_del`: `m 2` - #48 - [x] `map_len`: `m 3` - #48 - [x] `map_has`: `m 4` - #48 - [x] `map_key_by_pos`: `m 5` - #54 - [x] `map_val_by_pos`: `m 6` - #54 - [x] `map_keys`: `m 7` - #54 - [x] `map_values`: `m 8` - #54 - [x] `map_new_from_linear_memory`: `m 9` - #15 - [x] `map_unpack_to_linear_memory`: `m a` - #15 ## vec - [x] `vec_new`: `v _` - #23 - [x] `vec_put`: `v 0` - #62 - [x] `vec_get`: `v 1` - #43 - [x] `vec_del`: `v 2` - #62 - [x] `vec_len`: `v 3` - #43 - [x] `vec_push_front`: `v 4` - #62 - [x] `vec_pop_front`: `v 5` - #62 - [x] `vec_push_back`: `v 6` - #43 - [x] `vec_pop_back`: `v 7` - #62 - [x] `vec_front`: `v 8` - #62 - [x] `vec_back`: `v 9` - #62 - [x] `vec_insert`: `v a` - #62 - [x] `vec_append`: `v b` - #62 - [x] `vec_slice`: `v c` - #62 - [ ] `vec_first_index_of`: `v d` - [ ] `vec_last_index_of`: `v e` - [ ] `vec_binary_search`: `v f` - [x] `vec_new_from_linear_memory`: `v g` - #13 - [x] `vec_unpack_to_linear_memory`: `v h` - #13 ## ledger - [x] `put_contract_data`: `l _` - #18 - [x] `has_contract_data`: `l 0` - #18 - [x] `get_contract_data`: `l 1` - #18 - [x] `del_contract_data`: `l 2` - #43 - [ ] `create_contract`: `l 3` - [ ] `create_asset_contract`: `l 4` - [ ] `upload_wasm`: `l 5` - [x] `update_current_contract_wasm`: `l 6` - #47 - [x] `extend_contract_data_ttl`: `l 7` - #47 - [x] `extend_current_contract_instance_and_code_ttl`: `l 8` - #24 - [ ] `extend_contract_instance_and_code_ttl`: `l 9` - [ ] `get_contract_id`: `l a` - [ ] `get_asset_contract_id`: `l b` - [ ] `extend_contract_instance_ttl`: `l c` - [ ] `extend_contract_code_ttl`: `l d` ## call - [x] `call`: `d _` - #27 - [ ] `try_call`: `d 0` - #65 ## buf - [ ] `serialize_to_bytes`: `b _` - [ ] `deserialize_from_bytes`: `b 0` - [x] `bytes_copy_to_linear_memory`: `b 1` - #52 - [x] `bytes_copy_from_linear_memory`: `b 2` - #61 - [x] `bytes_new_from_linear_memory`: `b 3` - #27 - [x] `bytes_new`: `b 4` - #61 - [x] `bytes_put`: `b 5` - #61 - [x] `bytes_get`: `b 6` - #61 - [x] `bytes_del`: `b 7` - #61 - [x] `bytes_len`: `b 8` - #27 - [x] `bytes_push`: `b 9` - #61 - [x] `bytes_pop`: `b a` - #61 - [x] `bytes_front`: `b b` - #61 - [x] `bytes_back`: `b c` - #61 - [x] `bytes_insert`: `b d` - #61 - [x] `bytes_append`: `b e` - #61 - [x] `bytes_slice`: `b f` - #61 - [ ] `string_copy_to_linear_memory`: `b g` - [ ] `symbol_copy_to_linear_memory`: `b h` - [x] `string_new_from_linear_memory`: `b i` - #68 - [x] `symbol_new_from_linear_memory`: `b j` - #13 - [ ] `string_len`: `b k` - [x] `symbol_len`: `b l` - #61 - [x] `symbol_index_in_linear_memory`: `b m` - #46 ## crypto - [ ] `compute_hash_sha256`: `c _` - [ ] `verify_sig_ed25519`: `c 0` - [ ] `compute_hash_keccak256`: `c 1` - [ ] `recover_key_ecdsa_secp256k1`: `c 2` - [ ] `verify_sig_ecdsa_secp256r1`: `c 3` ## address - [ ] `require_auth_for_args`: `a _` - [ ] `require_auth`: `a 0` - [ ] `strkey_to_address`: `a 1` - [ ] `address_to_strkey`: `a 2` - [ ] `authorize_as_curr_contract`: `a 3` ## test - [ ] `dummy0`: `t _` - [ ] `protocol_gated_dummy`: `t 0` ## prng - [ ] `prng_reseed`: `p _` - [ ] `prng_bytes_new`: `p 0` - [ ] `prng_u64_in_inclusive_range`: `p 1` - [ ] `prng_vec_shuffle`: `p 2`
Host Function Implementation Progress
This issue tracks the progress of implementing all Soroban host functions.
context
log_from_linear_memory:x _obj_cmp:x 0contract_event:x 1get_ledger_version:x 2get_ledger_sequence:x 3get_ledger_sequence#16get_ledger_timestamp:x 4fail_with_error:x 5get_ledger_network_id:x 6get_current_contract_address:x 7get_max_live_until_ledger:x 8int
obj_from_u64:i _obj_to_u64:i 0obj_from_i64:i 1i64andi128Types and Host Functions #45obj_to_i64:i 2obj_from_u128_pieces:i 3U128and related host functions #12obj_to_u128_lo64:i 4U128and related host functions #12obj_to_u128_hi64:i 5U128and related host functions #12obj_from_i128_pieces:i 6i64andi128Types and Host Functions #45obj_to_i128_lo64:i 7i64andi128Types and Host Functions #45obj_to_i128_hi64:i 8i64andi128Types and Host Functions #45obj_from_u256_pieces:i 9u256_val_from_be_bytes:i au256_val_to_be_bytes:i bobj_to_u256_hi_hi:i cobj_to_u256_hi_lo:i dobj_to_u256_lo_hi:i eobj_to_u256_lo_lo:i fobj_from_i256_pieces:i gi256_val_from_be_bytes:i hi256_val_to_be_bytes:i iobj_to_i256_hi_hi:i jobj_to_i256_hi_lo:i kobj_to_i256_lo_hi:i lobj_to_i256_lo_lo:i mu256_add:i nu256_sub:i ou256_mul:i pu256_div:i qu256_rem_euclid:i ru256_pow:i su256_shl:i tu256_shr:i ui256_add:i vi256_sub:i wi256_mul:i xi256_div:i yi256_rem_euclid:i zi256_pow:i Ai256_shl:i Bi256_shr:i Ctimepoint_obj_from_u64:i Dtimepoint_obj_to_u64:i Eduration_obj_from_u64:i Fduration_obj_to_u64:i Gmap
map_new:m _map_put:m 0map_get:m 1map_del:m 2map_len:m 3map_has:m 4map_key_by_pos:m 5map_val_by_pos:m 6map_keys:m 7map_values:m 8map_new_from_linear_memory:m 9Map#15map_unpack_to_linear_memory:m aMap#15vec
vec_new:v _vec_put:v 0vec_get:v 1vec_del:v 2vec_len:v 3vec_push_front:v 4vec_pop_front:v 5vec_push_back:v 6vec_pop_back:v 7vec_front:v 8vec_back:v 9vec_insert:v avec_append:v bvec_slice:v cvec_first_index_of:v dvec_last_index_of:v evec_binary_search:v fvec_new_from_linear_memory:v gVecandSymbol#13vec_unpack_to_linear_memory:v hVecandSymbol#13ledger
put_contract_data:l _has_contract_data:l 0get_contract_data:l 1del_contract_data:l 2create_contract:l 3create_asset_contract:l 4upload_wasm:l 5update_current_contract_wasm:l 6extend_contract_data_ttl:l 7extend_current_contract_instance_and_code_ttl:l 8extend_contract_instance_and_code_ttl:l 9get_contract_id:l aget_asset_contract_id:l bextend_contract_instance_ttl:l cextend_contract_code_ttl:l dcall
call:d _try_call:d 0try_call#65buf
serialize_to_bytes:b _deserialize_from_bytes:b 0bytes_copy_to_linear_memory:b 1bytes_copy_from_linear_memory:b 2Bytesoperations #61bytes_new_from_linear_memory:b 3bytes_new:b 4Bytesoperations #61bytes_put:b 5Bytesoperations #61bytes_get:b 6Bytesoperations #61bytes_del:b 7Bytesoperations #61bytes_len:b 8bytes_push:b 9Bytesoperations #61bytes_pop:b aBytesoperations #61bytes_front:b bBytesoperations #61bytes_back:b cBytesoperations #61bytes_insert:b dBytesoperations #61bytes_append:b eBytesoperations #61bytes_slice:b fBytesoperations #61string_copy_to_linear_memory:b gsymbol_copy_to_linear_memory:b hstring_new_from_linear_memory:b isymbol_new_from_linear_memory:b jVecandSymbol#13string_len:b ksymbol_len:b lBytesoperations #61symbol_index_in_linear_memory:b msymbol_index_in_linear_memory#46crypto
compute_hash_sha256:c _verify_sig_ed25519:c 0compute_hash_keccak256:c 1recover_key_ecdsa_secp256k1:c 2verify_sig_ecdsa_secp256r1:c 3address
require_auth_for_args:a _require_auth:a 0strkey_to_address:a 1address_to_strkey:a 2authorize_as_curr_contract:a 3test
dummy0:t _protocol_gated_dummy:t 0prng
prng_reseed:p _prng_bytes_new:p 0prng_u64_in_inclusive_range:p 1prng_vec_shuffle:p 2