From cfdd5fb9eec08bb7f98d0b29f4786be7db2351ed Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 7 Jun 2024 10:23:06 +0000 Subject: [PATCH 1/8] IsBuiltinFunctionName vmhook --- c-api/src/capi_vm_hook_pointers.rs | 1 + c-api/src/capi_vm_hooks.rs | 4 ++++ vm-executor-wasmer/src/wasmer_imports.rs | 6 ++++++ vm-executor/src/vm_hooks.rs | 6 ++++++ 4 files changed, 17 insertions(+) diff --git a/c-api/src/capi_vm_hook_pointers.rs b/c-api/src/capi_vm_hook_pointers.rs index 7280a14..8c58388 100644 --- a/c-api/src/capi_vm_hook_pointers.rs +++ b/c-api/src/capi_vm_hook_pointers.rs @@ -63,6 +63,7 @@ pub struct vm_exec_vm_hook_c_func_pointers { pub get_num_esdt_transfers_func_ptr: extern "C" fn(context: *mut c_void) -> i32, pub get_call_value_token_name_func_ptr: extern "C" fn(context: *mut c_void, call_value_offset: i32, token_name_offset: i32) -> i32, pub get_call_value_token_name_by_index_func_ptr: extern "C" fn(context: *mut c_void, call_value_offset: i32, token_name_offset: i32, index: i32) -> i32, + pub is_builtin_function_name_func_ptr: extern "C" fn(context: *mut c_void, name_offset: i32, name_length: i32) -> i32, pub write_log_func_ptr: extern "C" fn(context: *mut c_void, data_pointer: i32, data_length: i32, topic_ptr: i32, num_topics: i32), pub write_event_log_func_ptr: extern "C" fn(context: *mut c_void, num_topics: i32, topic_lengths_offset: i32, topic_offset: i32, data_offset: i32, data_length: i32), pub get_block_timestamp_func_ptr: extern "C" fn(context: *mut c_void) -> i64, diff --git a/c-api/src/capi_vm_hooks.rs b/c-api/src/capi_vm_hooks.rs index 09fb97f..a76bc77 100644 --- a/c-api/src/capi_vm_hooks.rs +++ b/c-api/src/capi_vm_hooks.rs @@ -251,6 +251,10 @@ impl multiversx_chain_vm_executor::VMHooks for CapiVMHooks { (self.c_func_pointers_ptr.get_call_value_token_name_by_index_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(call_value_offset), self.convert_mem_ptr(token_name_offset), index) } + fn is_builtin_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { + (self.c_func_pointers_ptr.is_builtin_function_name_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(name_offset), self.convert_mem_length(name_length)) + } + fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32) { (self.c_func_pointers_ptr.write_log_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(data_pointer), self.convert_mem_length(data_length), self.convert_mem_ptr(topic_ptr), num_topics) } diff --git a/vm-executor-wasmer/src/wasmer_imports.rs b/vm-executor-wasmer/src/wasmer_imports.rs index 345686f..69b360d 100644 --- a/vm-executor-wasmer/src/wasmer_imports.rs +++ b/vm-executor-wasmer/src/wasmer_imports.rs @@ -275,6 +275,11 @@ fn wasmer_import_get_call_value_token_name_by_index(env: &VMHooksWrapper, call_v env.vm_hooks.get_call_value_token_name_by_index(env.convert_mem_ptr(call_value_offset), env.convert_mem_ptr(token_name_offset), index) } +#[rustfmt::skip] +fn wasmer_import_is_builtin_function_name(env: &VMHooksWrapper, name_offset: i32, name_length: i32) -> i32 { + env.vm_hooks.is_builtin_function_name(env.convert_mem_ptr(name_offset), env.convert_mem_length(name_length)) +} + #[rustfmt::skip] fn wasmer_import_write_log(env: &VMHooksWrapper, data_pointer: i32, data_length: i32, topic_ptr: i32, num_topics: i32) { env.vm_hooks.write_log(env.convert_mem_ptr(data_pointer), env.convert_mem_length(data_length), env.convert_mem_ptr(topic_ptr), num_topics) @@ -1371,6 +1376,7 @@ pub fn generate_import_object(store: &Store, env: &VMHooksWrapper) -> ImportObje "getNumESDTTransfers" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_num_esdt_transfers), "getCallValueTokenName" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_call_value_token_name), "getCallValueTokenNameByIndex" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_call_value_token_name_by_index), + "isBuiltinFunctionName" => Function::new_native_with_env(store, env.clone(), wasmer_import_is_builtin_function_name), "writeLog" => Function::new_native_with_env(store, env.clone(), wasmer_import_write_log), "writeEventLog" => Function::new_native_with_env(store, env.clone(), wasmer_import_write_event_log), "getBlockTimestamp" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_block_timestamp), diff --git a/vm-executor/src/vm_hooks.rs b/vm-executor/src/vm_hooks.rs index 33bc97e..6259205 100644 --- a/vm-executor/src/vm_hooks.rs +++ b/vm-executor/src/vm_hooks.rs @@ -66,6 +66,7 @@ pub trait VMHooks: core::fmt::Debug + 'static { fn get_num_esdt_transfers(&self) -> i32; fn get_call_value_token_name(&self, call_value_offset: MemPtr, token_name_offset: MemPtr) -> i32; fn get_call_value_token_name_by_index(&self, call_value_offset: MemPtr, token_name_offset: MemPtr, index: i32) -> i32; + fn is_builtin_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32; fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32); fn write_event_log(&self, num_topics: i32, topic_lengths_offset: MemPtr, topic_offset: MemPtr, data_offset: MemPtr, data_length: MemLength); fn get_block_timestamp(&self) -> i64; @@ -541,6 +542,11 @@ impl VMHooks for VMHooksDefault { 0 } + fn is_builtin_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { + println!("Called: is_builtin_function_name"); + 0 + } + fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32) { println!("Called: write_log"); } From 378bf83c9511472a36a5427f67630f8f3c64ca37 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 7 Jun 2024 10:35:47 +0000 Subject: [PATCH 2/8] install rust step in action --- .github/workflows/libvmexeccapi-build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/libvmexeccapi-build.yml b/.github/workflows/libvmexeccapi-build.yml index 6e57182..3e99065 100644 --- a/.github/workflows/libvmexeccapi-build.yml +++ b/.github/workflows/libvmexeccapi-build.yml @@ -26,6 +26,11 @@ jobs: artifact_name: libvmexeccapi_arm make_target: capi-osx-arm steps: + - name: Install rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: stable + - name: Checkout uses: actions/checkout@v4 From 5ddd0f0ce10e7aba3572bd51ceda68695fdd66f9 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 7 Jun 2024 10:49:52 +0000 Subject: [PATCH 3/8] IsBuiltinFunctionName vmhook --- c-api/libvmexeccapi.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/c-api/libvmexeccapi.h b/c-api/libvmexeccapi.h index a5e6235..7c74024 100644 --- a/c-api/libvmexeccapi.h +++ b/c-api/libvmexeccapi.h @@ -91,6 +91,7 @@ typedef struct { 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 (*is_builtin_function_name_func_ptr)(void *context, int32_t name_offset, int32_t name_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); @@ -121,6 +122,8 @@ typedef struct { void (*managed_sc_address_func_ptr)(void *context, int32_t destination_handle); void (*managed_owner_address_func_ptr)(void *context, int32_t destination_handle); void (*managed_caller_func_ptr)(void *context, int32_t destination_handle); + void (*managed_get_original_caller_addr_func_ptr)(void *context, int32_t destination_handle); + void (*managed_get_relayer_addr_func_ptr)(void *context, int32_t destination_handle); void (*managed_signal_error_func_ptr)(void *context, int32_t err_handle); void (*managed_write_log_func_ptr)(void *context, int32_t topics_handle, int32_t data_handle); void (*managed_get_original_tx_hash_func_ptr)(void *context, int32_t result_handle); @@ -144,6 +147,7 @@ typedef struct { 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_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_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); From f9a97ab9827eca6324c71547cfcd75819c366b45 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 7 Jun 2024 10:51:28 +0000 Subject: [PATCH 4/8] update rust to 1.77 --- .github/workflows/libvmexeccapi-build.yml | 2 +- Docker/arm64.dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/libvmexeccapi-build.yml b/.github/workflows/libvmexeccapi-build.yml index 3e99065..d27e0e1 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: stable + toolchain: "1.77" - name: Checkout uses: actions/checkout@v4 diff --git a/Docker/arm64.dockerfile b/Docker/arm64.dockerfile index 316c730..0f2f776 100644 --- a/Docker/arm64.dockerfile +++ b/Docker/arm64.dockerfile @@ -1,4 +1,4 @@ -FROM arm64v8/rust:1.76.0 +FROM arm64v8/rust:1.77.0 RUN apt-get update && apt-get install -y \ wget \ From 864d7ec370037ee45edfd1a74b236b604ec0621c Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 7 Jun 2024 10:53:24 +0000 Subject: [PATCH 5/8] update rust to 1.77 --- .github/workflows/rust-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index fa8a949..5a88d1d 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -15,7 +15,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: default: true - toolchain: stable + toolchain: "1.77" - name: Run rust tests run: cargo test clippy_check: From d74a889aa0042e5a8efc8eb814760fd82e741eba Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Fri, 7 Jun 2024 10:56:07 +0000 Subject: [PATCH 6/8] update rust to 1.77 --- .github/workflows/rust-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 5a88d1d..2210ed6 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -17,7 +17,7 @@ jobs: default: true toolchain: "1.77" - name: Run rust tests - run: cargo test + run: cargo +1.77 test clippy_check: permissions: write-all name: Clippy linter check From 816eb1fc1e3ef490500b3ad45bdda2fd1d4b0741 Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Mon, 10 Jun 2024 06:55:23 +0000 Subject: [PATCH 7/8] rename to IsReservedFunctionName --- c-api/libvmexeccapi.h | 2 +- c-api/src/capi_vm_hook_pointers.rs | 2 +- c-api/src/capi_vm_hooks.rs | 4 ++-- vm-executor-wasmer/src/wasmer_imports.rs | 6 +++--- vm-executor/src/vm_hooks.rs | 6 +++--- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/c-api/libvmexeccapi.h b/c-api/libvmexeccapi.h index 7c74024..de4f96a 100644 --- a/c-api/libvmexeccapi.h +++ b/c-api/libvmexeccapi.h @@ -91,7 +91,7 @@ typedef struct { 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 (*is_builtin_function_name_func_ptr)(void *context, int32_t name_offset, int32_t name_length); + int32_t (*is_reserved_function_name_func_ptr)(void *context, int32_t name_offset, int32_t name_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); diff --git a/c-api/src/capi_vm_hook_pointers.rs b/c-api/src/capi_vm_hook_pointers.rs index 8c58388..b962c40 100644 --- a/c-api/src/capi_vm_hook_pointers.rs +++ b/c-api/src/capi_vm_hook_pointers.rs @@ -63,7 +63,7 @@ pub struct vm_exec_vm_hook_c_func_pointers { pub get_num_esdt_transfers_func_ptr: extern "C" fn(context: *mut c_void) -> i32, pub get_call_value_token_name_func_ptr: extern "C" fn(context: *mut c_void, call_value_offset: i32, token_name_offset: i32) -> i32, pub get_call_value_token_name_by_index_func_ptr: extern "C" fn(context: *mut c_void, call_value_offset: i32, token_name_offset: i32, index: i32) -> i32, - pub is_builtin_function_name_func_ptr: extern "C" fn(context: *mut c_void, name_offset: i32, name_length: i32) -> i32, + pub is_reserved_function_name_func_ptr: extern "C" fn(context: *mut c_void, name_offset: i32, name_length: i32) -> i32, pub write_log_func_ptr: extern "C" fn(context: *mut c_void, data_pointer: i32, data_length: i32, topic_ptr: i32, num_topics: i32), pub write_event_log_func_ptr: extern "C" fn(context: *mut c_void, num_topics: i32, topic_lengths_offset: i32, topic_offset: i32, data_offset: i32, data_length: i32), pub get_block_timestamp_func_ptr: extern "C" fn(context: *mut c_void) -> i64, diff --git a/c-api/src/capi_vm_hooks.rs b/c-api/src/capi_vm_hooks.rs index a76bc77..0a2f617 100644 --- a/c-api/src/capi_vm_hooks.rs +++ b/c-api/src/capi_vm_hooks.rs @@ -251,8 +251,8 @@ impl multiversx_chain_vm_executor::VMHooks for CapiVMHooks { (self.c_func_pointers_ptr.get_call_value_token_name_by_index_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(call_value_offset), self.convert_mem_ptr(token_name_offset), index) } - fn is_builtin_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { - (self.c_func_pointers_ptr.is_builtin_function_name_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(name_offset), self.convert_mem_length(name_length)) + fn is_reserved_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { + (self.c_func_pointers_ptr.is_reserved_function_name_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(name_offset), self.convert_mem_length(name_length)) } fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32) { diff --git a/vm-executor-wasmer/src/wasmer_imports.rs b/vm-executor-wasmer/src/wasmer_imports.rs index 69b360d..be92c90 100644 --- a/vm-executor-wasmer/src/wasmer_imports.rs +++ b/vm-executor-wasmer/src/wasmer_imports.rs @@ -276,8 +276,8 @@ fn wasmer_import_get_call_value_token_name_by_index(env: &VMHooksWrapper, call_v } #[rustfmt::skip] -fn wasmer_import_is_builtin_function_name(env: &VMHooksWrapper, name_offset: i32, name_length: i32) -> i32 { - env.vm_hooks.is_builtin_function_name(env.convert_mem_ptr(name_offset), env.convert_mem_length(name_length)) +fn wasmer_import_is_reserved_function_name(env: &VMHooksWrapper, name_offset: i32, name_length: i32) -> i32 { + env.vm_hooks.is_reserved_function_name(env.convert_mem_ptr(name_offset), env.convert_mem_length(name_length)) } #[rustfmt::skip] @@ -1376,7 +1376,7 @@ pub fn generate_import_object(store: &Store, env: &VMHooksWrapper) -> ImportObje "getNumESDTTransfers" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_num_esdt_transfers), "getCallValueTokenName" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_call_value_token_name), "getCallValueTokenNameByIndex" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_call_value_token_name_by_index), - "isBuiltinFunctionName" => Function::new_native_with_env(store, env.clone(), wasmer_import_is_builtin_function_name), + "isReservedFunctionName" => Function::new_native_with_env(store, env.clone(), wasmer_import_is_reserved_function_name), "writeLog" => Function::new_native_with_env(store, env.clone(), wasmer_import_write_log), "writeEventLog" => Function::new_native_with_env(store, env.clone(), wasmer_import_write_event_log), "getBlockTimestamp" => Function::new_native_with_env(store, env.clone(), wasmer_import_get_block_timestamp), diff --git a/vm-executor/src/vm_hooks.rs b/vm-executor/src/vm_hooks.rs index 6259205..5b9ac77 100644 --- a/vm-executor/src/vm_hooks.rs +++ b/vm-executor/src/vm_hooks.rs @@ -66,7 +66,7 @@ pub trait VMHooks: core::fmt::Debug + 'static { fn get_num_esdt_transfers(&self) -> i32; fn get_call_value_token_name(&self, call_value_offset: MemPtr, token_name_offset: MemPtr) -> i32; fn get_call_value_token_name_by_index(&self, call_value_offset: MemPtr, token_name_offset: MemPtr, index: i32) -> i32; - fn is_builtin_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32; + fn is_reserved_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32; fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32); fn write_event_log(&self, num_topics: i32, topic_lengths_offset: MemPtr, topic_offset: MemPtr, data_offset: MemPtr, data_length: MemLength); fn get_block_timestamp(&self) -> i64; @@ -542,8 +542,8 @@ impl VMHooks for VMHooksDefault { 0 } - fn is_builtin_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { - println!("Called: is_builtin_function_name"); + fn is_reserved_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { + println!("Called: is_reserved_function_name"); 0 } From 36cb3ffca653a6057a3d8790abd28cd5a54c984a Mon Sep 17 00:00:00 2001 From: Laurentiu Ciobanu Date: Thu, 13 Jun 2024 09:57:50 +0000 Subject: [PATCH 8/8] accept managed buffer handle instead of memory range for IsReservedFunctionName --- c-api/libvmexeccapi.h | 2 +- c-api/src/capi_vm_hook_pointers.rs | 2 +- c-api/src/capi_vm_hooks.rs | 4 ++-- vm-executor-wasmer/src/wasmer_imports.rs | 4 ++-- vm-executor/src/vm_hooks.rs | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/c-api/libvmexeccapi.h b/c-api/libvmexeccapi.h index de4f96a..f4f989a 100644 --- a/c-api/libvmexeccapi.h +++ b/c-api/libvmexeccapi.h @@ -91,7 +91,7 @@ typedef struct { 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 (*is_reserved_function_name_func_ptr)(void *context, int32_t name_offset, int32_t name_length); + 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); int64_t (*get_block_timestamp_func_ptr)(void *context); diff --git a/c-api/src/capi_vm_hook_pointers.rs b/c-api/src/capi_vm_hook_pointers.rs index b962c40..4202ec0 100644 --- a/c-api/src/capi_vm_hook_pointers.rs +++ b/c-api/src/capi_vm_hook_pointers.rs @@ -63,7 +63,7 @@ pub struct vm_exec_vm_hook_c_func_pointers { pub get_num_esdt_transfers_func_ptr: extern "C" fn(context: *mut c_void) -> i32, pub get_call_value_token_name_func_ptr: extern "C" fn(context: *mut c_void, call_value_offset: i32, token_name_offset: i32) -> i32, pub get_call_value_token_name_by_index_func_ptr: extern "C" fn(context: *mut c_void, call_value_offset: i32, token_name_offset: i32, index: i32) -> i32, - pub is_reserved_function_name_func_ptr: extern "C" fn(context: *mut c_void, name_offset: i32, name_length: i32) -> i32, + pub is_reserved_function_name_func_ptr: extern "C" fn(context: *mut c_void, name_handle: i32) -> i32, pub write_log_func_ptr: extern "C" fn(context: *mut c_void, data_pointer: i32, data_length: i32, topic_ptr: i32, num_topics: i32), pub write_event_log_func_ptr: extern "C" fn(context: *mut c_void, num_topics: i32, topic_lengths_offset: i32, topic_offset: i32, data_offset: i32, data_length: i32), pub get_block_timestamp_func_ptr: extern "C" fn(context: *mut c_void) -> i64, diff --git a/c-api/src/capi_vm_hooks.rs b/c-api/src/capi_vm_hooks.rs index 0a2f617..53659c4 100644 --- a/c-api/src/capi_vm_hooks.rs +++ b/c-api/src/capi_vm_hooks.rs @@ -251,8 +251,8 @@ impl multiversx_chain_vm_executor::VMHooks for CapiVMHooks { (self.c_func_pointers_ptr.get_call_value_token_name_by_index_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(call_value_offset), self.convert_mem_ptr(token_name_offset), index) } - fn is_reserved_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { - (self.c_func_pointers_ptr.is_reserved_function_name_func_ptr)(self.vm_hooks_ptr, self.convert_mem_ptr(name_offset), self.convert_mem_length(name_length)) + fn is_reserved_function_name(&self, name_handle: i32) -> i32 { + (self.c_func_pointers_ptr.is_reserved_function_name_func_ptr)(self.vm_hooks_ptr, name_handle) } fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32) { diff --git a/vm-executor-wasmer/src/wasmer_imports.rs b/vm-executor-wasmer/src/wasmer_imports.rs index be92c90..484676e 100644 --- a/vm-executor-wasmer/src/wasmer_imports.rs +++ b/vm-executor-wasmer/src/wasmer_imports.rs @@ -276,8 +276,8 @@ fn wasmer_import_get_call_value_token_name_by_index(env: &VMHooksWrapper, call_v } #[rustfmt::skip] -fn wasmer_import_is_reserved_function_name(env: &VMHooksWrapper, name_offset: i32, name_length: i32) -> i32 { - env.vm_hooks.is_reserved_function_name(env.convert_mem_ptr(name_offset), env.convert_mem_length(name_length)) +fn wasmer_import_is_reserved_function_name(env: &VMHooksWrapper, name_handle: i32) -> i32 { + env.vm_hooks.is_reserved_function_name(name_handle) } #[rustfmt::skip] diff --git a/vm-executor/src/vm_hooks.rs b/vm-executor/src/vm_hooks.rs index 5b9ac77..88a14eb 100644 --- a/vm-executor/src/vm_hooks.rs +++ b/vm-executor/src/vm_hooks.rs @@ -66,7 +66,7 @@ pub trait VMHooks: core::fmt::Debug + 'static { fn get_num_esdt_transfers(&self) -> i32; fn get_call_value_token_name(&self, call_value_offset: MemPtr, token_name_offset: MemPtr) -> i32; fn get_call_value_token_name_by_index(&self, call_value_offset: MemPtr, token_name_offset: MemPtr, index: i32) -> i32; - fn is_reserved_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32; + fn is_reserved_function_name(&self, name_handle: i32) -> i32; fn write_log(&self, data_pointer: MemPtr, data_length: MemLength, topic_ptr: MemPtr, num_topics: i32); fn write_event_log(&self, num_topics: i32, topic_lengths_offset: MemPtr, topic_offset: MemPtr, data_offset: MemPtr, data_length: MemLength); fn get_block_timestamp(&self) -> i64; @@ -542,7 +542,7 @@ impl VMHooks for VMHooksDefault { 0 } - fn is_reserved_function_name(&self, name_offset: MemPtr, name_length: MemLength) -> i32 { + fn is_reserved_function_name(&self, name_handle: i32) -> i32 { println!("Called: is_reserved_function_name"); 0 }