diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..23d6093 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,16 @@ +# Keep the build context small. CI builds from a fresh checkout, but a local +# working copy carries a multi-gigabyte target/ dir that would otherwise be +# uploaded to the daemon on every `docker buildx build`. +target/ +**/target/ + +.git/ +.github/ +Docker/ + +# Matches the .gitignore entries that never belong in a build. +my-* +.claude/ +.vscode/ +**/.DS_Store +**/*.rs.bk diff --git a/.github/workflows/libvmexeccapi-build-linux-arm64.yml b/.github/workflows/libvmexeccapi-build-linux-arm64.yml index f5094af..9d6f520 100644 --- a/.github/workflows/libvmexeccapi-build-linux-arm64.yml +++ b/.github/workflows/libvmexeccapi-build-linux-arm64.yml @@ -29,7 +29,10 @@ jobs: context: . load: true platforms: linux/arm64 - file: ./Docker/arm64.dockerfile + file: ./Docker/linux.dockerfile + build-args: | + MAKE_TARGET=capi-linux-arm + ARTIFACT_NAME=libvmexeccapi_arm.so tags: mx-builder - name: Copy library from Docker image diff --git a/.github/workflows/libvmexeccapi-build.yml b/.github/workflows/libvmexeccapi-build.yml index c164325..733eedf 100644 --- a/.github/workflows/libvmexeccapi-build.yml +++ b/.github/workflows/libvmexeccapi-build.yml @@ -29,7 +29,7 @@ jobs: - name: Install rust uses: actions-rust-lang/setup-rust-toolchain@v1 with: - toolchain: "1.92" + toolchain: "1.98" - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index a11557f..cc46fef 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -15,9 +15,9 @@ jobs: - uses: actions-rs/toolchain@v1 with: default: true - toolchain: "1.92" + toolchain: "1.98" - name: Run rust tests - run: cargo +1.92 test --release + run: cargo +1.98 test --release clippy_check: permissions: write-all name: Clippy linter check @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions-rs/toolchain@v1 with: - toolchain: stable + toolchain: "1.98" components: clippy default: true - uses: actions-rs/clippy-check@v1 diff --git a/.gitignore b/.gitignore index 6d4d737..725e250 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,8 @@ Cargo.lock # Personal scripts my-* + +# Other +.vscode +**/.DS_Store +.claude diff --git a/Docker/arm64.dockerfile b/Docker/arm64.dockerfile deleted file mode 100644 index 0f2f776..0000000 --- a/Docker/arm64.dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM arm64v8/rust:1.77.0 - -RUN apt-get update && apt-get install -y \ - wget \ - git \ - patchelf \ - build-essential - -ENV CARGO_NET_GIT_FETCH_WITH_CLI=true - -COPY . /repository -WORKDIR /repository -RUN make capi-linux-arm -RUN mkdir /data && cp /repository/target/release/libvmexeccapi_arm.so /data/libvmexeccapi_arm.so diff --git a/Docker/linux.dockerfile b/Docker/linux.dockerfile new file mode 100644 index 0000000..30b71cf --- /dev/null +++ b/Docker/linux.dockerfile @@ -0,0 +1,21 @@ +# Builds libvmexeccapi for Linux, amd64 or arm64. The caller picks the arch via +# `docker buildx build --platform`; the official `rust` image is multi-arch, so +# the same tag resolves to the right base image on either platform. +FROM rust:1.98 + +# ARTIFACT_NAME must match what MAKE_TARGET produces in target/release (see Makefile). +ARG MAKE_TARGET=capi-linux-amd64 +ARG ARTIFACT_NAME=libvmexeccapi.so + +# wget and git already ship in the base image; only these two are new. +RUN apt-get update && apt-get install -y --no-install-recommends \ + patchelf \ + build-essential \ + && rm -rf /var/lib/apt/lists/* + +ENV CARGO_NET_GIT_FETCH_WITH_CLI=true + +COPY . /repository +WORKDIR /repository +RUN make ${MAKE_TARGET} +RUN mkdir /data && cp /repository/target/release/${ARTIFACT_NAME} /data/${ARTIFACT_NAME} diff --git a/Makefile b/Makefile index 493ff25..b061c6e 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,16 @@ -.PHONY: clean +.PHONY: capi capi-linux-amd64 capi-linux-arm capi-osx-amd64 capi-osx-arm \ + capi-osx-amd64-cross capi-linux-amd64-docker capi-linux-arm64-docker \ + ci-local clean check-macos + +# cargo and docker already parallelise internally, and a parallel make would +# have two cargo invocations contend for the same target dir lock. +.NOTPARALLEL: + +# Where `ci-local` gathers the artifacts, so the cross and container builds +# stay out of the host's target/release. +CI_LOCAL_DIR ?= target/ci-local + +UNAME_S := $(shell uname -s) capi: cargo build -p multiversx-chain-vm-executor-c-api --release @@ -11,18 +23,79 @@ capi-linux-arm: capi mv target/release/libmultiversx_chain_vm_executor_c_api.so target/release/libvmexeccapi_arm.so patchelf --set-soname libvmexeccapi_arm.so target/release/libvmexeccapi_arm.so -capi-osx-amd64: capi +# A prerequisite, not an inline check in the recipe: under .NOTPARALLEL, make +# runs prerequisites in order and stops at the first failure, so listing this +# before `capi` below rejects a non-macOS host before the (potentially +# lengthy) cargo build starts, rather than after it. +check-macos: + @test "$(UNAME_S)" = "Darwin" || { echo "This target requires a macOS host (produces a Mach-O .dylib)." >&2; exit 1; } + +capi-osx-amd64: check-macos capi mv target/release/libmultiversx_chain_vm_executor_c_api.dylib target/release/libvmexeccapi.dylib install_name_tool -id @rpath/libvmexeccapi.dylib target/release/libvmexeccapi.dylib -capi-osx-arm: capi +capi-osx-arm: check-macos capi mv target/release/libmultiversx_chain_vm_executor_c_api.dylib target/release/libvmexeccapi_arm.dylib install_name_tool -id @rpath/libvmexeccapi_arm.dylib target/release/libvmexeccapi_arm.dylib +# --- Local reproduction of the CI build matrix ------------------------------- +# The four targets above are what CI runs natively, one per runner. The targets +# below drive the same builds from a single host: the two Linux libraries build +# in containers (any Docker host, cross-arch via buildx/QEMU), the way the +# libvmexeccapi-build-linux-arm64 workflow does. The two macOS libraries have no +# such option — Apple's terms don't allow macOS in a container, which is why CI +# itself uses real macos-15-intel/macos-latest runners rather than Docker for +# them — so they only run on a macOS host, and fail fast with an explanation +# everywhere else. + +capi-osx-amd64-cross: + @test "$(UNAME_S)" = "Darwin" || { \ + echo "capi-osx-amd64-cross requires a macOS host: cross-compiling to Darwin" >&2; \ + echo "needs Apple's linker/SDK, which Docker and a plain Linux toolchain don't" >&2; \ + echo "have. Run this on a Mac, or rely on the CI runner." >&2; \ + exit 1; \ + } + rustup target add x86_64-apple-darwin + cargo build -p multiversx-chain-vm-executor-c-api --release --target x86_64-apple-darwin + cp target/x86_64-apple-darwin/release/libmultiversx_chain_vm_executor_c_api.dylib target/x86_64-apple-darwin/release/libvmexeccapi.dylib + install_name_tool -id @rpath/libvmexeccapi.dylib target/x86_64-apple-darwin/release/libvmexeccapi.dylib + +capi-linux-amd64-docker: + docker buildx build --platform linux/amd64 --file Docker/linux.dockerfile \ + --build-arg MAKE_TARGET=capi-linux-amd64 --build-arg ARTIFACT_NAME=libvmexeccapi.so \ + --tag mx-builder-amd64 --load . + mkdir -p $(CI_LOCAL_DIR) + docker run --platform linux/amd64 --rm mx-builder-amd64 cat /data/libvmexeccapi.so > $(CI_LOCAL_DIR)/libvmexeccapi.so + +capi-linux-arm64-docker: + docker buildx build --platform linux/arm64 --file Docker/linux.dockerfile \ + --build-arg MAKE_TARGET=capi-linux-arm --build-arg ARTIFACT_NAME=libvmexeccapi_arm.so \ + --tag mx-builder-arm64 --load . + mkdir -p $(CI_LOCAL_DIR) + docker run --platform linux/arm64 --rm mx-builder-arm64 cat /data/libvmexeccapi_arm.so > $(CI_LOCAL_DIR)/libvmexeccapi_arm.so + +ci-local: capi-linux-amd64-docker capi-linux-arm64-docker +ifeq ($(UNAME_S),Darwin) +ci-local: capi-osx-arm capi-osx-amd64-cross +endif + mkdir -p $(CI_LOCAL_DIR) + cp c-api/libvmexeccapi.h $(CI_LOCAL_DIR)/libvmexeccapi.h + @if [ "$(UNAME_S)" = "Darwin" ]; then \ + cp target/release/libvmexeccapi_arm.dylib $(CI_LOCAL_DIR)/libvmexeccapi_arm.dylib; \ + cp target/x86_64-apple-darwin/release/libvmexeccapi.dylib $(CI_LOCAL_DIR)/libvmexeccapi.dylib; \ + else \ + echo "--- Not on macOS: skipping libvmexeccapi.dylib / libvmexeccapi_arm.dylib" \ + "(no container or cross-compile path exists for macOS; see README) ---"; \ + fi + @echo "--- CI artifacts reproduced in $(CI_LOCAL_DIR) ---" + @ls -1 $(CI_LOCAL_DIR) + clean: cargo clean - rm target/release/libvmexeccapi.so - rm target/release/libvmexeccapi_arm.so - rm target/release/libvmexeccapi.dylib - rm target/release/libvmexeccapi_arm.dylib - rm c-api/libvmexeccapi.h + rm -f target/release/libvmexeccapi.so + rm -f target/release/libvmexeccapi_arm.so + rm -f target/release/libvmexeccapi.dylib + rm -f target/release/libvmexeccapi_arm.dylib + rm -f c-api/libvmexeccapi.h + rm -f target/x86_64-apple-darwin/release/libvmexeccapi.dylib + rm -rf $(CI_LOCAL_DIR) diff --git a/README.md b/README.md index 0d3a852..55016eb 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,41 @@ VM wasmer 2.2 executor + specialized C API to be used from Go. Call `make capi` in the root to get the binary and the C header. + +## Reproducing the CI artifacts locally + +CI builds one library per platform, each on its own runner. `make ci-local` +reproduces as many of the four as your host can produce, and collects them, +together with the generated header, in `target/ci-local`: + +| Artifact | Built by | Needs | +| --- | --- | --- | +| `libvmexeccapi.so` | `linux/amd64` container (`capi-linux-amd64-docker`) | Docker | +| `libvmexeccapi_arm.so` | `linux/arm64` container (`capi-linux-arm64-docker`) | Docker | +| `libvmexeccapi_arm.dylib` | native (`capi-osx-arm`) | a macOS host | +| `libvmexeccapi.dylib` | cross-compiled to `x86_64-apple-darwin` (`capi-osx-amd64-cross`) | a macOS host | + +The two container targets build under `Docker/linux.dockerfile`, the same file +the `libvmexeccapi-build-linux-arm64` workflow uses, parameterized by +`MAKE_TARGET`/`ARTIFACT_NAME`; the `rust` base image is multi-arch, so +`--platform` alone selects amd64 or arm64. They need a running Docker daemon +with buildx, and the non-native arch needs QEMU registered (Docker Desktop does +this automatically; on plain Docker Engine, run +`docker run --privileged --rm tonistiigi/binfmt --install all` once). + +**The two macOS libraries can only be built on an actual macOS host.** There is +no Docker equivalent for them: Apple's terms don't allow macOS to run in a +container, which is exactly why CI itself uses real `macos-15-intel` / +`macos-latest` runners rather than Docker for those two matrix entries, and why +plain cross-compilation to `x86_64-apple-darwin` only works when the host +already has Apple's linker/SDK (i.e. is itself a Mac). + +Running `make ci-local` on Linux (or any non-macOS host) therefore builds only +`libvmexeccapi.so` and `libvmexeccapi_arm.so`, skips the two `.dylib`s with an +explanatory message, and still succeeds. Invoking a macOS-only target directly +on such a host (`capi-osx-arm`, `capi-osx-amd64`, `capi-osx-amd64-cross`) fails +fast with an error saying so, rather than a cryptic `install_name_tool: command +not found`. + +The Rust version is pinned in `rust-toolchain.toml`, the workflow files and +`Docker/linux.dockerfile`; all must be bumped together. diff --git a/c-api/build.rs b/c-api/build.rs index a2a8266..92e5df2 100644 --- a/c-api/build.rs +++ b/c-api/build.rs @@ -1,6 +1,6 @@ extern crate cbindgen; -use cbindgen::{Builder, Language}; +use cbindgen::{Builder, Language, Style}; use std::{env, fs, path::PathBuf}; const HEADER_FILE_NAME: &str = "libvmexeccapi"; @@ -19,6 +19,11 @@ fn main() { Builder::new() .with_crate(crate_dir) .with_language(Language::C) + // Keep the historical formatting: no line wrapping, `typedef struct { ... } name;` + // without a tag. Both differ from the cbindgen defaults and would otherwise rewrite + // the whole header on every re-generation. + .with_line_length(usize::MAX) + .with_style(Style::Both) .generate() .expect("Unable to generate C bindings") .write_to_file(out_wasmer_header_file.as_path()); diff --git a/c-api/libvmexeccapi.h b/c-api/libvmexeccapi.h index b973840..f183140 100644 --- a/c-api/libvmexeccapi.h +++ b/c-api/libvmexeccapi.h @@ -42,160 +42,33 @@ typedef struct vm_exec_vm_hook_c_func_pointers { void (*signal_error_func_ptr)(void *context, int32_t message_offset, int32_t message_length); void (*get_external_balance_func_ptr)(void *context, int32_t address_offset, int32_t result_offset); int32_t (*get_block_hash_func_ptr)(void *context, int64_t nonce, int32_t result_offset); - int32_t (*get_esdt_balance_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len, - int64_t nonce, - int32_t result_offset); - int32_t (*get_esdt_nft_name_length_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len, - int64_t nonce); - int32_t (*get_esdt_nft_attribute_length_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len, - int64_t nonce); - int32_t (*get_esdt_nft_uri_length_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len, - int64_t nonce); - int32_t (*get_esdt_token_data_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len, - int64_t nonce, - int32_t value_handle, - int32_t properties_offset, - int32_t hash_offset, - int32_t name_offset, - int32_t attributes_offset, - int32_t creator_offset, - int32_t royalties_handle, - int32_t uris_offset); + int32_t (*get_esdt_balance_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len, int64_t nonce, int32_t result_offset); + int32_t (*get_esdt_nft_name_length_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len, int64_t nonce); + int32_t (*get_esdt_nft_attribute_length_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len, int64_t nonce); + int32_t (*get_esdt_nft_uri_length_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len, int64_t nonce); + int32_t (*get_esdt_token_data_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len, int64_t nonce, int32_t value_handle, int32_t properties_offset, int32_t hash_offset, int32_t name_offset, int32_t attributes_offset, int32_t creator_offset, int32_t royalties_handle, int32_t uris_offset); int64_t (*get_esdt_local_roles_func_ptr)(void *context, int32_t token_id_handle); int32_t (*validate_token_identifier_func_ptr)(void *context, int32_t token_id_handle); - int32_t (*transfer_value_func_ptr)(void *context, - int32_t dest_offset, - int32_t value_offset, - int32_t data_offset, - int32_t length); - int32_t (*transfer_value_execute_func_ptr)(void *context, - int32_t dest_offset, - int32_t value_offset, - int64_t gas_limit, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*transfer_esdt_execute_func_ptr)(void *context, - int32_t dest_offset, - int32_t token_id_offset, - int32_t token_id_len, - int32_t value_offset, - int64_t gas_limit, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*transfer_esdt_nft_execute_func_ptr)(void *context, - int32_t dest_offset, - int32_t token_id_offset, - int32_t token_id_len, - int32_t value_offset, - int64_t nonce, - int64_t gas_limit, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*multi_transfer_esdt_nft_execute_func_ptr)(void *context, - int32_t dest_offset, - int32_t num_token_transfers, - int32_t token_transfers_args_length_offset, - int32_t token_transfer_data_offset, - int64_t gas_limit, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*create_async_call_func_ptr)(void *context, - int32_t dest_offset, - int32_t value_offset, - int32_t data_offset, - int32_t data_length, - int32_t success_offset, - int32_t success_length, - int32_t error_offset, - int32_t error_length, - int64_t gas, - int64_t extra_gas_for_callback); - int32_t (*set_async_context_callback_func_ptr)(void *context, - int32_t callback, - int32_t callback_length, - int32_t data, - int32_t data_length, - int64_t gas); - void (*upgrade_contract_func_ptr)(void *context, - int32_t dest_offset, - int64_t gas_limit, - int32_t value_offset, - int32_t code_offset, - int32_t code_metadata_offset, - int32_t length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - void (*upgrade_from_source_contract_func_ptr)(void *context, - int32_t dest_offset, - int64_t gas_limit, - int32_t value_offset, - int32_t source_contract_address_offset, - int32_t code_metadata_offset, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - void (*delete_contract_func_ptr)(void *context, - int32_t dest_offset, - int64_t gas_limit, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - void (*async_call_func_ptr)(void *context, - int32_t dest_offset, - int32_t value_offset, - int32_t data_offset, - int32_t length); + int32_t (*transfer_value_func_ptr)(void *context, int32_t dest_offset, int32_t value_offset, int32_t data_offset, int32_t length); + int32_t (*transfer_value_execute_func_ptr)(void *context, int32_t dest_offset, int32_t value_offset, int64_t gas_limit, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*transfer_esdt_execute_func_ptr)(void *context, int32_t dest_offset, int32_t token_id_offset, int32_t token_id_len, int32_t value_offset, int64_t gas_limit, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*transfer_esdt_nft_execute_func_ptr)(void *context, int32_t dest_offset, int32_t token_id_offset, int32_t token_id_len, int32_t value_offset, int64_t nonce, int64_t gas_limit, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*multi_transfer_esdt_nft_execute_func_ptr)(void *context, int32_t dest_offset, int32_t num_token_transfers, int32_t token_transfers_args_length_offset, int32_t token_transfer_data_offset, int64_t gas_limit, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*create_async_call_func_ptr)(void *context, int32_t dest_offset, int32_t value_offset, int32_t data_offset, int32_t data_length, int32_t success_offset, int32_t success_length, int32_t error_offset, int32_t error_length, int64_t gas, int64_t extra_gas_for_callback); + int32_t (*set_async_context_callback_func_ptr)(void *context, int32_t callback, int32_t callback_length, int32_t data, int32_t data_length, int64_t gas); + void (*upgrade_contract_func_ptr)(void *context, int32_t dest_offset, int64_t gas_limit, int32_t value_offset, int32_t code_offset, int32_t code_metadata_offset, int32_t length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + void (*upgrade_from_source_contract_func_ptr)(void *context, int32_t dest_offset, int64_t gas_limit, int32_t value_offset, int32_t source_contract_address_offset, int32_t code_metadata_offset, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + void (*delete_contract_func_ptr)(void *context, int32_t dest_offset, int64_t gas_limit, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + void (*async_call_func_ptr)(void *context, int32_t dest_offset, int32_t value_offset, int32_t data_offset, int32_t length); int32_t (*get_argument_length_func_ptr)(void *context, int32_t id); int32_t (*get_argument_func_ptr)(void *context, int32_t id, int32_t arg_offset); int32_t (*get_function_func_ptr)(void *context, int32_t function_offset); int32_t (*get_num_arguments_func_ptr)(void *context); - int32_t (*storage_store_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int32_t data_offset, - int32_t data_length); + int32_t (*storage_store_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int32_t data_offset, int32_t data_length); int32_t (*storage_load_length_func_ptr)(void *context, int32_t key_offset, int32_t key_length); - int32_t (*storage_load_from_address_func_ptr)(void *context, - int32_t address_offset, - int32_t key_offset, - int32_t key_length, - int32_t data_offset); - int32_t (*storage_load_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int32_t data_offset); - int32_t (*set_storage_lock_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int64_t lock_timestamp); + int32_t (*storage_load_from_address_func_ptr)(void *context, int32_t address_offset, int32_t key_offset, int32_t key_length, int32_t data_offset); + int32_t (*storage_load_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int32_t data_offset); + int32_t (*set_storage_lock_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int64_t lock_timestamp); int64_t (*get_storage_lock_func_ptr)(void *context, int32_t key_offset, int32_t key_length); int32_t (*is_storage_locked_func_ptr)(void *context, int32_t key_offset, int32_t key_length); int32_t (*clear_storage_lock_func_ptr)(void *context, int32_t key_offset, int32_t key_length); @@ -205,37 +78,18 @@ typedef struct vm_exec_vm_hook_c_func_pointers { int32_t (*get_esdt_value_func_ptr)(void *context, int32_t result_offset); int32_t (*get_esdt_value_by_index_func_ptr)(void *context, int32_t result_offset, int32_t index); int32_t (*get_esdt_token_name_func_ptr)(void *context, int32_t result_offset); - int32_t (*get_esdt_token_name_by_index_func_ptr)(void *context, - int32_t result_offset, - int32_t index); + int32_t (*get_esdt_token_name_by_index_func_ptr)(void *context, int32_t result_offset, int32_t index); int64_t (*get_esdt_token_nonce_func_ptr)(void *context); int64_t (*get_esdt_token_nonce_by_index_func_ptr)(void *context, int32_t index); - int64_t (*get_current_esdt_nft_nonce_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len); + int64_t (*get_current_esdt_nft_nonce_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len); int32_t (*get_esdt_token_type_func_ptr)(void *context); int32_t (*get_esdt_token_type_by_index_func_ptr)(void *context, int32_t index); int32_t (*get_num_esdt_transfers_func_ptr)(void *context); - int32_t (*get_call_value_token_name_func_ptr)(void *context, - int32_t call_value_offset, - int32_t token_name_offset); - int32_t (*get_call_value_token_name_by_index_func_ptr)(void *context, - int32_t call_value_offset, - int32_t token_name_offset, - int32_t index); + int32_t (*get_call_value_token_name_func_ptr)(void *context, int32_t call_value_offset, int32_t token_name_offset); + int32_t (*get_call_value_token_name_by_index_func_ptr)(void *context, int32_t call_value_offset, int32_t token_name_offset, int32_t index); int32_t (*is_reserved_function_name_func_ptr)(void *context, int32_t name_handle); - void (*write_log_func_ptr)(void *context, - int32_t data_pointer, - int32_t data_length, - int32_t topic_ptr, - int32_t num_topics); - void (*write_event_log_func_ptr)(void *context, - int32_t num_topics, - int32_t topic_lengths_offset, - int32_t topic_offset, - int32_t data_offset, - int32_t data_length); + void (*write_log_func_ptr)(void *context, int32_t data_pointer, int32_t data_length, int32_t topic_ptr, int32_t num_topics); + void (*write_event_log_func_ptr)(void *context, int32_t num_topics, int32_t topic_lengths_offset, int32_t topic_offset, int32_t data_offset, int32_t data_length); int64_t (*get_block_timestamp_func_ptr)(void *context); int64_t (*get_block_timestamp_ms_func_ptr)(void *context); int64_t (*get_block_nonce_func_ptr)(void *context); @@ -254,51 +108,11 @@ typedef struct vm_exec_vm_hook_c_func_pointers { int64_t (*epoch_start_block_nonce_func_ptr)(void *context); int64_t (*epoch_start_block_round_func_ptr)(void *context); void (*finish_func_ptr)(void *context, int32_t pointer, int32_t length); - int32_t (*execute_on_same_context_func_ptr)(void *context, - int64_t gas_limit, - int32_t address_offset, - int32_t value_offset, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*execute_on_dest_context_func_ptr)(void *context, - int64_t gas_limit, - int32_t address_offset, - int32_t value_offset, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*execute_read_only_func_ptr)(void *context, - int64_t gas_limit, - int32_t address_offset, - int32_t function_offset, - int32_t function_length, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*create_contract_func_ptr)(void *context, - int64_t gas_limit, - int32_t value_offset, - int32_t code_offset, - int32_t code_metadata_offset, - int32_t length, - int32_t result_offset, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); - int32_t (*deploy_from_source_contract_func_ptr)(void *context, - int64_t gas_limit, - int32_t value_offset, - int32_t source_contract_address_offset, - int32_t code_metadata_offset, - int32_t result_address_offset, - int32_t num_arguments, - int32_t arguments_length_offset, - int32_t data_offset); + int32_t (*execute_on_same_context_func_ptr)(void *context, int64_t gas_limit, int32_t address_offset, int32_t value_offset, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*execute_on_dest_context_func_ptr)(void *context, int64_t gas_limit, int32_t address_offset, int32_t value_offset, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*execute_read_only_func_ptr)(void *context, int64_t gas_limit, int32_t address_offset, int32_t function_offset, int32_t function_length, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*create_contract_func_ptr)(void *context, int64_t gas_limit, int32_t value_offset, int32_t code_offset, int32_t code_metadata_offset, int32_t length, int32_t result_offset, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); + int32_t (*deploy_from_source_contract_func_ptr)(void *context, int64_t gas_limit, int32_t value_offset, int32_t source_contract_address_offset, int32_t code_metadata_offset, int32_t result_address_offset, int32_t num_arguments, int32_t arguments_length_offset, int32_t data_offset); int32_t (*get_num_return_data_func_ptr)(void *context); int32_t (*get_return_data_size_func_ptr)(void *context, int32_t result_id); int32_t (*get_return_data_func_ptr)(void *context, int32_t result_id, int32_t data_offset); @@ -320,596 +134,183 @@ typedef struct vm_exec_vm_hook_c_func_pointers { void (*managed_get_prev_block_random_seed_func_ptr)(void *context, int32_t result_handle); void (*managed_get_return_data_func_ptr)(void *context, int32_t result_id, int32_t result_handle); void (*managed_get_multi_esdt_call_value_func_ptr)(void *context, int32_t multi_call_value_handle); - void (*managed_get_all_transfers_call_value_func_ptr)(void *context, - int32_t transfer_call_values_list_handle); - void (*managed_get_back_transfers_func_ptr)(void *context, - int32_t esdt_transfers_value_handle, - int32_t egld_value_handle); - void (*managed_get_esdt_balance_func_ptr)(void *context, - int32_t address_handle, - int32_t token_id_handle, - int64_t nonce, - int32_t value_handle); - void (*managed_get_esdt_token_data_func_ptr)(void *context, - int32_t address_handle, - int32_t token_id_handle, - int64_t nonce, - int32_t value_handle, - int32_t properties_handle, - int32_t hash_handle, - int32_t name_handle, - int32_t attributes_handle, - int32_t creator_handle, - int32_t royalties_handle, - int32_t uris_handle); - void (*managed_get_esdt_token_type_func_ptr)(void *context, - int32_t address_handle, - int32_t token_id_handle, - int64_t nonce, - int32_t type_handle); - void (*managed_async_call_func_ptr)(void *context, - int32_t dest_handle, - int32_t value_handle, - int32_t function_handle, - int32_t arguments_handle); - int32_t (*managed_create_async_call_func_ptr)(void *context, - int32_t dest_handle, - int32_t value_handle, - int32_t function_handle, - int32_t arguments_handle, - int32_t success_offset, - int32_t success_length, - int32_t error_offset, - int32_t error_length, - int64_t gas, - int64_t extra_gas_for_callback, - int32_t callback_closure_handle); + void (*managed_get_all_transfers_call_value_func_ptr)(void *context, int32_t transfer_call_values_list_handle); + void (*managed_get_back_transfers_func_ptr)(void *context, int32_t esdt_transfers_value_handle, int32_t egld_value_handle); + void (*managed_get_esdt_balance_func_ptr)(void *context, int32_t address_handle, int32_t token_id_handle, int64_t nonce, int32_t value_handle); + void (*managed_get_esdt_token_data_func_ptr)(void *context, int32_t address_handle, int32_t token_id_handle, int64_t nonce, int32_t value_handle, int32_t properties_handle, int32_t hash_handle, int32_t name_handle, int32_t attributes_handle, int32_t creator_handle, int32_t royalties_handle, int32_t uris_handle); + void (*managed_get_esdt_token_type_func_ptr)(void *context, int32_t address_handle, int32_t token_id_handle, int64_t nonce, int32_t type_handle); + void (*managed_async_call_func_ptr)(void *context, int32_t dest_handle, int32_t value_handle, int32_t function_handle, int32_t arguments_handle); + int32_t (*managed_create_async_call_func_ptr)(void *context, int32_t dest_handle, int32_t value_handle, int32_t function_handle, int32_t arguments_handle, int32_t success_offset, int32_t success_length, int32_t error_offset, int32_t error_length, int64_t gas, int64_t extra_gas_for_callback, int32_t callback_closure_handle); void (*managed_get_callback_closure_func_ptr)(void *context, int32_t callback_closure_handle); - void (*managed_upgrade_from_source_contract_func_ptr)(void *context, - int32_t dest_handle, - int64_t gas, - int32_t value_handle, - int32_t address_handle, - int32_t code_metadata_handle, - int32_t arguments_handle, - int32_t result_handle); - void (*managed_upgrade_contract_func_ptr)(void *context, - int32_t dest_handle, - int64_t gas, - int32_t value_handle, - int32_t code_handle, - int32_t code_metadata_handle, - int32_t arguments_handle, - int32_t result_handle); - void (*managed_delete_contract_func_ptr)(void *context, - int32_t dest_handle, - int64_t gas_limit, - int32_t arguments_handle); - int32_t (*managed_deploy_from_source_contract_func_ptr)(void *context, - int64_t gas, - int32_t value_handle, - int32_t address_handle, - int32_t code_metadata_handle, - int32_t arguments_handle, - int32_t result_address_handle, - int32_t result_handle); - int32_t (*managed_create_contract_func_ptr)(void *context, - int64_t gas, - int32_t value_handle, - int32_t code_handle, - int32_t code_metadata_handle, - int32_t arguments_handle, - int32_t result_address_handle, - int32_t result_handle); - int32_t (*managed_execute_read_only_func_ptr)(void *context, - int64_t gas, - int32_t address_handle, - int32_t function_handle, - int32_t arguments_handle, - int32_t result_handle); - int32_t (*managed_execute_on_same_context_func_ptr)(void *context, - int64_t gas, - int32_t address_handle, - int32_t value_handle, - int32_t function_handle, - int32_t arguments_handle, - int32_t result_handle); - int32_t (*managed_execute_on_dest_context_func_ptr)(void *context, - int64_t gas, - int32_t address_handle, - int32_t value_handle, - int32_t function_handle, - int32_t arguments_handle, - int32_t result_handle); - int32_t (*managed_execute_on_dest_context_with_error_return_func_ptr)(void *context, - int64_t gas, - int32_t address_handle, - int32_t value_handle, - int32_t function_handle, - int32_t arguments_handle, - int32_t result_handle); - int32_t (*managed_multi_transfer_esdt_nft_execute_func_ptr)(void *context, - int32_t dst_handle, - int32_t token_transfers_handle, - int64_t gas_limit, - int32_t function_handle, - int32_t arguments_handle); - int32_t (*managed_multi_transfer_esdt_nft_execute_with_return_func_ptr)(void *context, - int32_t dst_handle, - int32_t token_transfers_handle, - int64_t gas_limit, - int32_t function_handle, - int32_t arguments_handle); - int32_t (*managed_multi_transfer_esdt_nft_execute_by_user_func_ptr)(void *context, - int32_t user_handle, - int32_t dst_handle, - int32_t token_transfers_handle, - int64_t gas_limit, - int32_t function_handle, - int32_t arguments_handle); - int32_t (*managed_transfer_value_execute_func_ptr)(void *context, - int32_t dst_handle, - int32_t value_handle, - int64_t gas_limit, - int32_t function_handle, - int32_t arguments_handle); - int32_t (*managed_is_esdt_frozen_func_ptr)(void *context, - int32_t address_handle, - int32_t token_id_handle, - int64_t nonce); + void (*managed_upgrade_from_source_contract_func_ptr)(void *context, int32_t dest_handle, int64_t gas, int32_t value_handle, int32_t address_handle, int32_t code_metadata_handle, int32_t arguments_handle, int32_t result_handle); + void (*managed_upgrade_contract_func_ptr)(void *context, int32_t dest_handle, int64_t gas, int32_t value_handle, int32_t code_handle, int32_t code_metadata_handle, int32_t arguments_handle, int32_t result_handle); + void (*managed_delete_contract_func_ptr)(void *context, int32_t dest_handle, int64_t gas_limit, int32_t arguments_handle); + int32_t (*managed_deploy_from_source_contract_func_ptr)(void *context, int64_t gas, int32_t value_handle, int32_t address_handle, int32_t code_metadata_handle, int32_t arguments_handle, int32_t result_address_handle, int32_t result_handle); + int32_t (*managed_create_contract_func_ptr)(void *context, int64_t gas, int32_t value_handle, int32_t code_handle, int32_t code_metadata_handle, int32_t arguments_handle, int32_t result_address_handle, int32_t result_handle); + int32_t (*managed_execute_read_only_func_ptr)(void *context, int64_t gas, int32_t address_handle, int32_t function_handle, int32_t arguments_handle, int32_t result_handle); + int32_t (*managed_execute_on_same_context_func_ptr)(void *context, int64_t gas, int32_t address_handle, int32_t value_handle, int32_t function_handle, int32_t arguments_handle, int32_t result_handle); + int32_t (*managed_execute_on_dest_context_func_ptr)(void *context, int64_t gas, int32_t address_handle, int32_t value_handle, int32_t function_handle, int32_t arguments_handle, int32_t result_handle); + int32_t (*managed_execute_on_dest_context_with_error_return_func_ptr)(void *context, int64_t gas, int32_t address_handle, int32_t value_handle, int32_t function_handle, int32_t arguments_handle, int32_t result_handle); + int32_t (*managed_multi_transfer_esdt_nft_execute_func_ptr)(void *context, int32_t dst_handle, int32_t token_transfers_handle, int64_t gas_limit, int32_t function_handle, int32_t arguments_handle); + int32_t (*managed_multi_transfer_esdt_nft_execute_with_return_func_ptr)(void *context, int32_t dst_handle, int32_t token_transfers_handle, int64_t gas_limit, int32_t function_handle, int32_t arguments_handle); + int32_t (*managed_multi_transfer_esdt_nft_execute_by_user_func_ptr)(void *context, int32_t user_handle, int32_t dst_handle, int32_t token_transfers_handle, int64_t gas_limit, int32_t function_handle, int32_t arguments_handle); + int32_t (*managed_transfer_value_execute_func_ptr)(void *context, int32_t dst_handle, int32_t value_handle, int64_t gas_limit, int32_t function_handle, int32_t arguments_handle); + int32_t (*managed_is_esdt_frozen_func_ptr)(void *context, int32_t address_handle, int32_t token_id_handle, int64_t nonce); int32_t (*managed_is_esdt_limited_transfer_func_ptr)(void *context, int32_t token_id_handle); int32_t (*managed_is_esdt_paused_func_ptr)(void *context, int32_t token_id_handle); void (*managed_buffer_to_hex_func_ptr)(void *context, int32_t source_handle, int32_t dest_handle); - void (*managed_get_code_metadata_func_ptr)(void *context, - int32_t address_handle, - int32_t response_handle); - void (*managed_get_code_hash_func_ptr)(void *context, - int32_t address_handle, - int32_t code_hash_handle); + void (*managed_get_code_metadata_func_ptr)(void *context, int32_t address_handle, int32_t response_handle); + void (*managed_get_code_hash_func_ptr)(void *context, int32_t address_handle, int32_t code_hash_handle); int32_t (*managed_is_builtin_function_func_ptr)(void *context, int32_t function_name_handle); - int32_t (*big_float_new_from_parts_func_ptr)(void *context, - int32_t integral_part, - int32_t fractional_part, - int32_t exponent); + int32_t (*big_float_new_from_parts_func_ptr)(void *context, int32_t integral_part, int32_t fractional_part, int32_t exponent); int32_t (*big_float_new_from_frac_func_ptr)(void *context, int64_t numerator, int64_t denominator); int32_t (*big_float_new_from_sci_func_ptr)(void *context, int64_t significand, int64_t exponent); - void (*big_float_add_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_float_sub_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_float_mul_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_float_div_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); + void (*big_float_add_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_float_sub_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_float_mul_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_float_div_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); void (*big_float_neg_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); void (*big_float_clone_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); int32_t (*big_float_cmp_func_ptr)(void *context, int32_t op1_handle, int32_t op2_handle); void (*big_float_abs_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); int32_t (*big_float_sign_func_ptr)(void *context, int32_t op_handle); void (*big_float_sqrt_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); - void (*big_float_pow_func_ptr)(void *context, - int32_t destination_handle, - int32_t op_handle, - int32_t exponent); + void (*big_float_pow_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle, int32_t exponent); void (*big_float_floor_func_ptr)(void *context, int32_t dest_big_int_handle, int32_t op_handle); void (*big_float_ceil_func_ptr)(void *context, int32_t dest_big_int_handle, int32_t op_handle); void (*big_float_truncate_func_ptr)(void *context, int32_t dest_big_int_handle, int32_t op_handle); void (*big_float_set_int64_func_ptr)(void *context, int32_t destination_handle, int64_t value); int32_t (*big_float_is_int_func_ptr)(void *context, int32_t op_handle); - void (*big_float_set_big_int_func_ptr)(void *context, - int32_t destination_handle, - int32_t big_int_handle); + void (*big_float_set_big_int_func_ptr)(void *context, int32_t destination_handle, int32_t big_int_handle); void (*big_float_get_const_pi_func_ptr)(void *context, int32_t destination_handle); void (*big_float_get_const_e_func_ptr)(void *context, int32_t destination_handle); - void (*big_int_get_unsigned_argument_func_ptr)(void *context, - int32_t id, - int32_t destination_handle); + void (*big_int_get_unsigned_argument_func_ptr)(void *context, int32_t id, int32_t destination_handle); void (*big_int_get_signed_argument_func_ptr)(void *context, int32_t id, int32_t destination_handle); - int32_t (*big_int_storage_store_unsigned_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int32_t source_handle); - int32_t (*big_int_storage_load_unsigned_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int32_t destination_handle); + int32_t (*big_int_storage_store_unsigned_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int32_t source_handle); + int32_t (*big_int_storage_load_unsigned_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int32_t destination_handle); void (*big_int_get_call_value_func_ptr)(void *context, int32_t destination_handle); void (*big_int_get_esdt_call_value_func_ptr)(void *context, int32_t destination); - void (*big_int_get_esdt_call_value_by_index_func_ptr)(void *context, - int32_t destination_handle, - int32_t index); - void (*big_int_get_external_balance_func_ptr)(void *context, - int32_t address_offset, - int32_t result); - void (*big_int_get_esdt_external_balance_func_ptr)(void *context, - int32_t address_offset, - int32_t token_id_offset, - int32_t token_id_len, - int64_t nonce, - int32_t result_handle); + void (*big_int_get_esdt_call_value_by_index_func_ptr)(void *context, int32_t destination_handle, int32_t index); + void (*big_int_get_external_balance_func_ptr)(void *context, int32_t address_offset, int32_t result); + void (*big_int_get_esdt_external_balance_func_ptr)(void *context, int32_t address_offset, int32_t token_id_offset, int32_t token_id_len, int64_t nonce, int32_t result_handle); int32_t (*big_int_new_func_ptr)(void *context, int64_t small_value); int32_t (*big_int_unsigned_byte_length_func_ptr)(void *context, int32_t reference_handle); int32_t (*big_int_signed_byte_length_func_ptr)(void *context, int32_t reference_handle); - int32_t (*big_int_get_unsigned_bytes_func_ptr)(void *context, - int32_t reference_handle, - int32_t byte_offset); - int32_t (*big_int_get_signed_bytes_func_ptr)(void *context, - int32_t reference_handle, - int32_t byte_offset); - void (*big_int_set_unsigned_bytes_func_ptr)(void *context, - int32_t destination_handle, - int32_t byte_offset, - int32_t byte_length); - void (*big_int_set_signed_bytes_func_ptr)(void *context, - int32_t destination_handle, - int32_t byte_offset, - int32_t byte_length); + int32_t (*big_int_get_unsigned_bytes_func_ptr)(void *context, int32_t reference_handle, int32_t byte_offset); + int32_t (*big_int_get_signed_bytes_func_ptr)(void *context, int32_t reference_handle, int32_t byte_offset); + void (*big_int_set_unsigned_bytes_func_ptr)(void *context, int32_t destination_handle, int32_t byte_offset, int32_t byte_length); + void (*big_int_set_signed_bytes_func_ptr)(void *context, int32_t destination_handle, int32_t byte_offset, int32_t byte_length); int32_t (*big_int_is_int64_func_ptr)(void *context, int32_t destination_handle); int64_t (*big_int_get_int64_func_ptr)(void *context, int32_t destination_handle); void (*big_int_set_int64_func_ptr)(void *context, int32_t destination_handle, int64_t value); - void (*big_int_add_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_sub_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_mul_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_tdiv_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_tmod_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_ediv_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_emod_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); + void (*big_int_add_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_sub_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_mul_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_tdiv_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_tmod_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_ediv_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_emod_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); void (*big_int_sqrt_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); - void (*big_int_pow_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); + void (*big_int_pow_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); int32_t (*big_int_log2_func_ptr)(void *context, int32_t op1_handle); void (*big_int_abs_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); void (*big_int_neg_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); int32_t (*big_int_sign_func_ptr)(void *context, int32_t op_handle); int32_t (*big_int_cmp_func_ptr)(void *context, int32_t op1_handle, int32_t op2_handle); void (*big_int_not_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle); - void (*big_int_and_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_or_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_xor_func_ptr)(void *context, - int32_t destination_handle, - int32_t op1_handle, - int32_t op2_handle); - void (*big_int_shr_func_ptr)(void *context, - int32_t destination_handle, - int32_t op_handle, - int32_t bits); - void (*big_int_shl_func_ptr)(void *context, - int32_t destination_handle, - int32_t op_handle, - int32_t bits); + void (*big_int_and_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_or_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_xor_func_ptr)(void *context, int32_t destination_handle, int32_t op1_handle, int32_t op2_handle); + void (*big_int_shr_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle, int32_t bits); + void (*big_int_shl_func_ptr)(void *context, int32_t destination_handle, int32_t op_handle, int32_t bits); void (*big_int_finish_unsigned_func_ptr)(void *context, int32_t reference_handle); void (*big_int_finish_signed_func_ptr)(void *context, int32_t reference_handle); - void (*big_int_to_string_func_ptr)(void *context, - int32_t big_int_handle, - int32_t destination_handle); + void (*big_int_to_string_func_ptr)(void *context, int32_t big_int_handle, int32_t destination_handle); int32_t (*mbuffer_new_func_ptr)(void *context); int32_t (*mbuffer_new_from_bytes_func_ptr)(void *context, int32_t data_offset, int32_t data_length); int32_t (*mbuffer_get_length_func_ptr)(void *context, int32_t m_buffer_handle); - int32_t (*mbuffer_get_bytes_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t result_offset); - int32_t (*mbuffer_get_byte_slice_func_ptr)(void *context, - int32_t source_handle, - int32_t starting_position, - int32_t slice_length, - int32_t result_offset); - int32_t (*mbuffer_copy_byte_slice_func_ptr)(void *context, - int32_t source_handle, - int32_t starting_position, - int32_t slice_length, - int32_t destination_handle); + int32_t (*mbuffer_get_bytes_func_ptr)(void *context, int32_t m_buffer_handle, int32_t result_offset); + int32_t (*mbuffer_get_byte_slice_func_ptr)(void *context, int32_t source_handle, int32_t starting_position, int32_t slice_length, int32_t result_offset); + int32_t (*mbuffer_copy_byte_slice_func_ptr)(void *context, int32_t source_handle, int32_t starting_position, int32_t slice_length, int32_t destination_handle); int32_t (*mbuffer_eq_func_ptr)(void *context, int32_t m_buffer_handle1, int32_t m_buffer_handle2); - int32_t (*mbuffer_set_bytes_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t data_offset, - int32_t data_length); - int32_t (*mbuffer_set_byte_slice_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t starting_position, - int32_t data_length, - int32_t data_offset); + int32_t (*mbuffer_set_bytes_func_ptr)(void *context, int32_t m_buffer_handle, int32_t data_offset, int32_t data_length); + int32_t (*mbuffer_set_byte_slice_func_ptr)(void *context, int32_t m_buffer_handle, int32_t starting_position, int32_t data_length, int32_t data_offset); int32_t (*mbuffer_append_func_ptr)(void *context, int32_t accumulator_handle, int32_t data_handle); - int32_t (*mbuffer_append_bytes_func_ptr)(void *context, - int32_t accumulator_handle, - int32_t data_offset, - int32_t data_length); - int32_t (*mbuffer_to_big_int_unsigned_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t big_int_handle); - int32_t (*mbuffer_to_big_int_signed_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t big_int_handle); - int32_t (*mbuffer_from_big_int_unsigned_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t big_int_handle); - int32_t (*mbuffer_from_big_int_signed_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t big_int_handle); + int32_t (*mbuffer_append_bytes_func_ptr)(void *context, int32_t accumulator_handle, int32_t data_offset, int32_t data_length); + int32_t (*mbuffer_to_big_int_unsigned_func_ptr)(void *context, int32_t m_buffer_handle, int32_t big_int_handle); + int32_t (*mbuffer_to_big_int_signed_func_ptr)(void *context, int32_t m_buffer_handle, int32_t big_int_handle); + int32_t (*mbuffer_from_big_int_unsigned_func_ptr)(void *context, int32_t m_buffer_handle, int32_t big_int_handle); + int32_t (*mbuffer_from_big_int_signed_func_ptr)(void *context, int32_t m_buffer_handle, int32_t big_int_handle); int64_t (*mbuffer_to_small_int_unsigned_func_ptr)(void *context, int32_t m_buffer_handle); int64_t (*mbuffer_to_small_int_signed_func_ptr)(void *context, int32_t m_buffer_handle); - void (*mbuffer_from_small_int_unsigned_func_ptr)(void *context, - int32_t m_buffer_handle, - int64_t value); - void (*mbuffer_from_small_int_signed_func_ptr)(void *context, - int32_t m_buffer_handle, - int64_t value); - int32_t (*mbuffer_to_big_float_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t big_float_handle); - int32_t (*mbuffer_from_big_float_func_ptr)(void *context, - int32_t m_buffer_handle, - int32_t big_float_handle); + void (*mbuffer_from_small_int_unsigned_func_ptr)(void *context, int32_t m_buffer_handle, int64_t value); + void (*mbuffer_from_small_int_signed_func_ptr)(void *context, int32_t m_buffer_handle, int64_t value); + int32_t (*mbuffer_to_big_float_func_ptr)(void *context, int32_t m_buffer_handle, int32_t big_float_handle); + int32_t (*mbuffer_from_big_float_func_ptr)(void *context, int32_t m_buffer_handle, int32_t big_float_handle); int32_t (*mbuffer_storage_store_func_ptr)(void *context, int32_t key_handle, int32_t source_handle); - int32_t (*mbuffer_storage_load_func_ptr)(void *context, - int32_t key_handle, - int32_t destination_handle); - void (*mbuffer_storage_load_from_address_func_ptr)(void *context, - int32_t address_handle, - int32_t key_handle, - int32_t destination_handle); + int32_t (*mbuffer_storage_load_func_ptr)(void *context, int32_t key_handle, int32_t destination_handle); + void (*mbuffer_storage_load_from_address_func_ptr)(void *context, int32_t address_handle, int32_t key_handle, int32_t destination_handle); int32_t (*mbuffer_get_argument_func_ptr)(void *context, int32_t id, int32_t destination_handle); int32_t (*mbuffer_finish_func_ptr)(void *context, int32_t source_handle); int32_t (*mbuffer_set_random_func_ptr)(void *context, int32_t destination_handle, int32_t length); int32_t (*managed_map_new_func_ptr)(void *context); - int32_t (*managed_map_put_func_ptr)(void *context, - int32_t m_map_handle, - int32_t key_handle, - int32_t value_handle); - int32_t (*managed_map_get_func_ptr)(void *context, - int32_t m_map_handle, - int32_t key_handle, - int32_t out_value_handle); - int32_t (*managed_map_remove_func_ptr)(void *context, - int32_t m_map_handle, - int32_t key_handle, - int32_t out_value_handle); + int32_t (*managed_map_put_func_ptr)(void *context, int32_t m_map_handle, int32_t key_handle, int32_t value_handle); + int32_t (*managed_map_get_func_ptr)(void *context, int32_t m_map_handle, int32_t key_handle, int32_t out_value_handle); + int32_t (*managed_map_remove_func_ptr)(void *context, int32_t m_map_handle, int32_t key_handle, int32_t out_value_handle); int32_t (*managed_map_contains_func_ptr)(void *context, int32_t m_map_handle, int32_t key_handle); int64_t (*small_int_get_unsigned_argument_func_ptr)(void *context, int32_t id); int64_t (*small_int_get_signed_argument_func_ptr)(void *context, int32_t id); void (*small_int_finish_unsigned_func_ptr)(void *context, int64_t value); void (*small_int_finish_signed_func_ptr)(void *context, int64_t value); - int32_t (*small_int_storage_store_unsigned_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int64_t value); - int32_t (*small_int_storage_store_signed_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int64_t value); - int64_t (*small_int_storage_load_unsigned_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length); - int64_t (*small_int_storage_load_signed_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length); + int32_t (*small_int_storage_store_unsigned_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int64_t value); + int32_t (*small_int_storage_store_signed_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int64_t value); + int64_t (*small_int_storage_load_unsigned_func_ptr)(void *context, int32_t key_offset, int32_t key_length); + int64_t (*small_int_storage_load_signed_func_ptr)(void *context, int32_t key_offset, int32_t key_length); int64_t (*int64get_argument_func_ptr)(void *context, int32_t id); void (*int64finish_func_ptr)(void *context, int64_t value); - int32_t (*int64storage_store_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int64_t value); + int32_t (*int64storage_store_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int64_t value); int64_t (*int64storage_load_func_ptr)(void *context, int32_t key_offset, int32_t key_length); - int32_t (*sha256_func_ptr)(void *context, - int32_t data_offset, - int32_t length, - int32_t result_offset); + int32_t (*sha256_func_ptr)(void *context, int32_t data_offset, int32_t length, int32_t result_offset); int32_t (*managed_sha256_func_ptr)(void *context, int32_t input_handle, int32_t output_handle); - int32_t (*keccak256_func_ptr)(void *context, - int32_t data_offset, - int32_t length, - int32_t result_offset); + int32_t (*keccak256_func_ptr)(void *context, int32_t data_offset, int32_t length, int32_t result_offset); int32_t (*managed_keccak256_func_ptr)(void *context, int32_t input_handle, int32_t output_handle); - int32_t (*ripemd160_func_ptr)(void *context, - int32_t data_offset, - int32_t length, - int32_t result_offset); + int32_t (*ripemd160_func_ptr)(void *context, int32_t data_offset, int32_t length, int32_t result_offset); int32_t (*managed_ripemd160_func_ptr)(void *context, int32_t input_handle, int32_t output_handle); - int32_t (*verify_bls_func_ptr)(void *context, - int32_t key_offset, - int32_t message_offset, - int32_t message_length, - int32_t sig_offset); - int32_t (*managed_verify_bls_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle); - int32_t (*verify_ed25519_func_ptr)(void *context, - int32_t key_offset, - int32_t message_offset, - int32_t message_length, - int32_t sig_offset); - int32_t (*managed_verify_ed25519_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle); - int32_t (*verify_custom_secp256k1_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int32_t message_offset, - int32_t message_length, - int32_t sig_offset, - int32_t hash_type); - int32_t (*managed_verify_custom_secp256k1_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle, - int32_t hash_type); - int32_t (*verify_secp256k1_func_ptr)(void *context, - int32_t key_offset, - int32_t key_length, - int32_t message_offset, - int32_t message_length, - int32_t sig_offset); - int32_t (*managed_verify_secp256k1_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle); - int32_t (*encode_secp256k1_der_signature_func_ptr)(void *context, - int32_t r_offset, - int32_t r_length, - int32_t s_offset, - int32_t s_length, - int32_t sig_offset); - int32_t (*managed_encode_secp256k1_der_signature_func_ptr)(void *context, - int32_t r_handle, - int32_t s_handle, - int32_t sig_handle); - void (*add_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t fst_point_xhandle, - int32_t fst_point_yhandle, - int32_t snd_point_xhandle, - int32_t snd_point_yhandle); - void (*double_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t point_xhandle, - int32_t point_yhandle); - int32_t (*is_on_curve_ec_func_ptr)(void *context, - int32_t ec_handle, - int32_t point_xhandle, - int32_t point_yhandle); - int32_t (*scalar_base_mult_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t data_offset, - int32_t length); - int32_t (*managed_scalar_base_mult_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t data_handle); - int32_t (*scalar_mult_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t point_xhandle, - int32_t point_yhandle, - int32_t data_offset, - int32_t length); - int32_t (*managed_scalar_mult_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t point_xhandle, - int32_t point_yhandle, - int32_t data_handle); - int32_t (*marshal_ec_func_ptr)(void *context, - int32_t x_pair_handle, - int32_t y_pair_handle, - int32_t ec_handle, - int32_t result_offset); - int32_t (*managed_marshal_ec_func_ptr)(void *context, - int32_t x_pair_handle, - int32_t y_pair_handle, - int32_t ec_handle, - int32_t result_handle); - int32_t (*marshal_compressed_ec_func_ptr)(void *context, - int32_t x_pair_handle, - int32_t y_pair_handle, - int32_t ec_handle, - int32_t result_offset); - int32_t (*managed_marshal_compressed_ec_func_ptr)(void *context, - int32_t x_pair_handle, - int32_t y_pair_handle, - int32_t ec_handle, - int32_t result_handle); - int32_t (*unmarshal_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t data_offset, - int32_t length); - int32_t (*managed_unmarshal_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t data_handle); - int32_t (*unmarshal_compressed_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t data_offset, - int32_t length); - int32_t (*managed_unmarshal_compressed_ec_func_ptr)(void *context, - int32_t x_result_handle, - int32_t y_result_handle, - int32_t ec_handle, - int32_t data_handle); - int32_t (*generate_key_ec_func_ptr)(void *context, - int32_t x_pub_key_handle, - int32_t y_pub_key_handle, - int32_t ec_handle, - int32_t result_offset); - int32_t (*managed_generate_key_ec_func_ptr)(void *context, - int32_t x_pub_key_handle, - int32_t y_pub_key_handle, - int32_t ec_handle, - int32_t result_handle); + int32_t (*verify_bls_func_ptr)(void *context, int32_t key_offset, int32_t message_offset, int32_t message_length, int32_t sig_offset); + int32_t (*managed_verify_bls_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle); + int32_t (*verify_ed25519_func_ptr)(void *context, int32_t key_offset, int32_t message_offset, int32_t message_length, int32_t sig_offset); + int32_t (*managed_verify_ed25519_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle); + int32_t (*verify_custom_secp256k1_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int32_t message_offset, int32_t message_length, int32_t sig_offset, int32_t hash_type); + int32_t (*managed_verify_custom_secp256k1_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle, int32_t hash_type); + int32_t (*verify_secp256k1_func_ptr)(void *context, int32_t key_offset, int32_t key_length, int32_t message_offset, int32_t message_length, int32_t sig_offset); + int32_t (*managed_verify_secp256k1_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle); + int32_t (*encode_secp256k1_der_signature_func_ptr)(void *context, int32_t r_offset, int32_t r_length, int32_t s_offset, int32_t s_length, int32_t sig_offset); + int32_t (*managed_encode_secp256k1_der_signature_func_ptr)(void *context, int32_t r_handle, int32_t s_handle, int32_t sig_handle); + void (*add_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t fst_point_xhandle, int32_t fst_point_yhandle, int32_t snd_point_xhandle, int32_t snd_point_yhandle); + void (*double_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t point_xhandle, int32_t point_yhandle); + int32_t (*is_on_curve_ec_func_ptr)(void *context, int32_t ec_handle, int32_t point_xhandle, int32_t point_yhandle); + int32_t (*scalar_base_mult_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t data_offset, int32_t length); + int32_t (*managed_scalar_base_mult_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t data_handle); + int32_t (*scalar_mult_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t point_xhandle, int32_t point_yhandle, int32_t data_offset, int32_t length); + int32_t (*managed_scalar_mult_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t point_xhandle, int32_t point_yhandle, int32_t data_handle); + int32_t (*marshal_ec_func_ptr)(void *context, int32_t x_pair_handle, int32_t y_pair_handle, int32_t ec_handle, int32_t result_offset); + int32_t (*managed_marshal_ec_func_ptr)(void *context, int32_t x_pair_handle, int32_t y_pair_handle, int32_t ec_handle, int32_t result_handle); + int32_t (*marshal_compressed_ec_func_ptr)(void *context, int32_t x_pair_handle, int32_t y_pair_handle, int32_t ec_handle, int32_t result_offset); + int32_t (*managed_marshal_compressed_ec_func_ptr)(void *context, int32_t x_pair_handle, int32_t y_pair_handle, int32_t ec_handle, int32_t result_handle); + int32_t (*unmarshal_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t data_offset, int32_t length); + int32_t (*managed_unmarshal_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t data_handle); + int32_t (*unmarshal_compressed_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t data_offset, int32_t length); + int32_t (*managed_unmarshal_compressed_ec_func_ptr)(void *context, int32_t x_result_handle, int32_t y_result_handle, int32_t ec_handle, int32_t data_handle); + int32_t (*generate_key_ec_func_ptr)(void *context, int32_t x_pub_key_handle, int32_t y_pub_key_handle, int32_t ec_handle, int32_t result_offset); + int32_t (*managed_generate_key_ec_func_ptr)(void *context, int32_t x_pub_key_handle, int32_t y_pub_key_handle, int32_t ec_handle, int32_t result_handle); int32_t (*create_ec_func_ptr)(void *context, int32_t data_offset, int32_t data_length); int32_t (*managed_create_ec_func_ptr)(void *context, int32_t data_handle); int32_t (*get_curve_length_ec_func_ptr)(void *context, int32_t ec_handle); int32_t (*get_priv_key_byte_length_ec_func_ptr)(void *context, int32_t ec_handle); - int32_t (*elliptic_curve_get_values_func_ptr)(void *context, - int32_t ec_handle, - int32_t field_order_handle, - int32_t base_point_order_handle, - int32_t eq_constant_handle, - int32_t x_base_point_handle, - int32_t y_base_point_handle); - int32_t (*managed_verify_secp256r1_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle); - int32_t (*managed_verify_blssignature_share_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle); - int32_t (*managed_verify_blsaggregated_signature_func_ptr)(void *context, - int32_t key_handle, - int32_t message_handle, - int32_t sig_handle); + int32_t (*elliptic_curve_get_values_func_ptr)(void *context, int32_t ec_handle, int32_t field_order_handle, int32_t base_point_order_handle, int32_t eq_constant_handle, int32_t x_base_point_handle, int32_t y_base_point_handle); + int32_t (*managed_verify_secp256r1_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle); + int32_t (*managed_verify_blssignature_share_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle); + int32_t (*managed_verify_blsaggregated_signature_func_ptr)(void *context, int32_t key_handle, int32_t message_handle, int32_t sig_handle); } vm_exec_vm_hook_c_func_pointers; typedef struct vm_exec_compilation_options_t { @@ -931,8 +332,7 @@ typedef struct vm_exec_opcode_cost_t { * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_set_breakpoint_value(const struct vm_exec_instance_t *instance_ptr, - uint64_t value); +enum vm_exec_result_t vm_exec_instance_set_breakpoint_value(const struct vm_exec_instance_t *instance_ptr, uint64_t value); /** * Returns the runtime breakpoint value from the given instance. @@ -980,8 +380,7 @@ int vm_exec_last_error_message(char *dest_buffer, int dest_buffer_len); * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_new_executor(struct vm_exec_executor_t **executor, - struct vm_exec_vm_hook_c_func_pointers **vm_hook_pointers_ptr_ptr); +enum vm_exec_result_t vm_exec_new_executor(struct vm_exec_executor_t **executor, struct vm_exec_vm_hook_c_func_pointers **vm_hook_pointers_ptr_ptr); /** * Forces reinstalling the sighandlers. @@ -1006,8 +405,7 @@ void vm_force_sighandler_reinstall(void); * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_executor_set_vm_hooks_ptr(struct vm_exec_executor_t *executor_ptr, - void *vm_hooks_ptr); +enum vm_exec_result_t vm_exec_executor_set_vm_hooks_ptr(struct vm_exec_executor_t *executor_ptr, void *vm_hooks_ptr); /** * Destroys a VM executor object. @@ -1027,11 +425,7 @@ void vm_exec_executor_destroy(struct vm_exec_executor_t *executor_ptr); * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_new_instance(struct vm_exec_executor_t *executor_ptr, - struct vm_exec_instance_t **instance_ptr_ptr, - uint8_t *wasm_bytes_ptr, - uint32_t wasm_bytes_len, - const struct vm_exec_compilation_options_t *options_ptr); +enum vm_exec_result_t vm_exec_new_instance(struct vm_exec_executor_t *executor_ptr, struct vm_exec_instance_t **instance_ptr_ptr, uint8_t *wasm_bytes_ptr, uint32_t wasm_bytes_len, const struct vm_exec_compilation_options_t *options_ptr); /** * Calls an exported function of a WebAssembly instance by `name` @@ -1052,8 +446,7 @@ enum vm_exec_result_t vm_exec_new_instance(struct vm_exec_executor_t *executor_p * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_call(struct vm_exec_instance_t *instance_ptr, - const char *func_name_ptr); +enum vm_exec_result_t vm_exec_instance_call(struct vm_exec_instance_t *instance_ptr, const char *func_name_ptr); /** * Checks that all public module functions (SC endpoints) have no arguments or results. @@ -1073,8 +466,7 @@ enum vm_exec_result_t vm_check_signatures(struct vm_exec_instance_t *instance_pt * * C API function, works with raw object pointers. */ -int vm_exec_instance_has_function(struct vm_exec_instance_t *instance_ptr, - const char *func_name_ptr); +int vm_exec_instance_has_function(struct vm_exec_instance_t *instance_ptr, const char *func_name_ptr); /** * Checks whether SC has an endpoint with given name. @@ -1083,8 +475,7 @@ int vm_exec_instance_has_function(struct vm_exec_instance_t *instance_ptr, * * C API function, works with raw object pointers. */ -int vm_exec_instance_has_imported_function(struct vm_exec_instance_t *instance_ptr, - const char *func_name_ptr); +int vm_exec_instance_has_imported_function(struct vm_exec_instance_t *instance_ptr, const char *func_name_ptr); /** * Required to be able to extract all SC endpoint names. See `vm_exported_function_names`. @@ -1108,9 +499,7 @@ int vm_exported_function_names_length(struct vm_exec_instance_t *instance_ptr); * * C API function, works with raw object pointers. */ -int vm_exported_function_names(struct vm_exec_instance_t *instance_ptr, - char *dest_buffer, - int dest_buffer_len); +int vm_exported_function_names(struct vm_exec_instance_t *instance_ptr, char *dest_buffer, int dest_buffer_len); /** * Frees memory for the given `vm_exec_instance_t`. @@ -1142,9 +531,7 @@ enum vm_exec_result_t vm_exec_instance_reset(struct vm_exec_instance_t *instance * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_cache(const struct vm_exec_instance_t *instance_ptr, - const uint8_t **cache_bytes_ptr, - uint32_t *cache_bytes_len); +enum vm_exec_result_t vm_exec_instance_cache(const struct vm_exec_instance_t *instance_ptr, const uint8_t **cache_bytes_ptr, uint32_t *cache_bytes_len); /** * Creates a new VM executor instance from cache. @@ -1155,11 +542,7 @@ enum vm_exec_result_t vm_exec_instance_cache(const struct vm_exec_instance_t *in * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_from_cache(struct vm_exec_executor_t *executor_ptr, - struct vm_exec_instance_t **instance_ptr_ptr, - uint8_t *cache_bytes_ptr, - uint32_t cache_bytes_len, - const struct vm_exec_compilation_options_t *options_ptr); +enum vm_exec_result_t vm_exec_instance_from_cache(struct vm_exec_executor_t *executor_ptr, struct vm_exec_instance_t **instance_ptr_ptr, uint8_t *cache_bytes_ptr, uint32_t cache_bytes_len, const struct vm_exec_compilation_options_t *options_ptr); /** * Sets the log level. @@ -1204,8 +587,7 @@ uint8_t *vm_exec_instance_memory_data(struct vm_exec_instance_t *instance_ptr); * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_memory_grow(struct vm_exec_instance_t *instance_ptr, - uint32_t by_num_pages); +enum vm_exec_result_t vm_exec_instance_memory_grow(struct vm_exec_instance_t *instance_ptr, uint32_t by_num_pages); /** * Sets the opcode costs for the given executor. @@ -1218,8 +600,7 @@ enum vm_exec_result_t vm_exec_instance_memory_grow(struct vm_exec_instance_t *in * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_set_opcode_costs(struct vm_exec_executor_t *executor_ptr, - const struct vm_exec_opcode_cost_t *opcode_cost_ptr); +enum vm_exec_result_t vm_exec_set_opcode_costs(struct vm_exec_executor_t *executor_ptr, const struct vm_exec_opcode_cost_t *opcode_cost_ptr); /** * Sets the number of points(gas) limit for the given instance. @@ -1232,8 +613,7 @@ enum vm_exec_result_t vm_exec_set_opcode_costs(struct vm_exec_executor_t *execut * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_set_points_limit(const struct vm_exec_instance_t *instance_ptr, - uint64_t limit); +enum vm_exec_result_t vm_exec_instance_set_points_limit(const struct vm_exec_instance_t *instance_ptr, uint64_t limit); /** * Sets the number of points(gas) for the given instance. @@ -1246,8 +626,7 @@ enum vm_exec_result_t vm_exec_instance_set_points_limit(const struct vm_exec_ins * * C API function, works with raw object pointers. */ -enum vm_exec_result_t vm_exec_instance_set_points_used(const struct vm_exec_instance_t *instance_ptr, - uint64_t points); +enum vm_exec_result_t vm_exec_instance_set_points_used(const struct vm_exec_instance_t *instance_ptr, uint64_t points); /** * Returns the number of points(gas) used by the given instance. diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 292fe49..e000fd2 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "stable" +channel = "1.98"