use crate::errors::InvokeError;
use crate::internal_prelude::*;
use crate::system::system_modules::costing::*;
use crate::vm::wasm::*;
use radix_engine_interface::api::actor_api::EventFlags;
use sbor::rust::vec::Vec;
pub struct NoOpWasmRuntime<'a> {
pub fee_reserve: SystemLoanFeeReserve,
pub wasm_execution_units_consumed: &'a mut u64,
pub fee_table: FeeTable,
}
impl<'a> NoOpWasmRuntime<'a> {
pub fn new(
fee_reserve: SystemLoanFeeReserve,
wasm_execution_units_consumed: &'a mut u64,
) -> Self {
Self {
fee_reserve,
wasm_execution_units_consumed,
fee_table: FeeTable::latest(),
}
}
}
#[allow(unused_variables)]
impl<'a> WasmRuntime for NoOpWasmRuntime<'a> {
fn allocate_buffer(
&mut self,
buffer: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn buffer_consume(
&mut self,
buffer_id: BufferId,
) -> Result<Vec<u8>, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn object_call(
&mut self,
receiver: Vec<u8>,
ident: Vec<u8>,
args: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn object_call_module(
&mut self,
receiver: Vec<u8>,
module_id: u32,
ident: Vec<u8>,
args: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn object_call_direct(
&mut self,
receiver: Vec<u8>,
ident: Vec<u8>,
args: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn blueprint_call(
&mut self,
package_address: Vec<u8>,
blueprint_name: Vec<u8>,
ident: Vec<u8>,
args: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn object_new(
&mut self,
blueprint_name: Vec<u8>,
object_states: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn address_allocate(
&mut self,
package_address: Vec<u8>,
blueprint_name: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn address_get_reservation_address(
&mut self,
node_id: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn globalize_object(
&mut self,
node_id: Vec<u8>,
modules: Vec<u8>,
address: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_store_new(
&mut self,
schema: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_store_open_entry(
&mut self,
node_id: Vec<u8>,
offset: Vec<u8>,
flags: u32,
) -> Result<SubstateHandle, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_entry_get(
&mut self,
handle: u32,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_entry_set(
&mut self,
handle: u32,
data: Vec<u8>,
) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_entry_remove(
&mut self,
handle: u32,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_entry_close(&mut self, handle: u32) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn key_value_store_remove_entry(
&mut self,
node_id: Vec<u8>,
key: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn actor_open_field(
&mut self,
object_handle: u32,
field: u8,
flags: u32,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn field_entry_read(&mut self, handle: u32) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn field_entry_write(
&mut self,
handle: u32,
data: Vec<u8>,
) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn field_entry_close(&mut self, _handle: u32) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn actor_get_node_id(&mut self, _handle: u32) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn actor_get_package_address(&mut self) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn actor_get_blueprint_name(&mut self) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn consume_wasm_execution_units(
&mut self,
n: u32,
) -> Result<(), InvokeError<WasmRuntimeError>> {
self.wasm_execution_units_consumed.add_assign(n as u64);
self.fee_reserve
.consume_execution(
self.fee_table
.run_wasm_code_cost(&PACKAGE_PACKAGE, "none", n),
)
.map_err(|e| InvokeError::SelfError(WasmRuntimeError::FeeReserveError(e)))
}
fn instance_of(
&mut self,
component_id: Vec<u8>,
package_address: Vec<u8>,
blueprint_name: Vec<u8>,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn blueprint_id(
&mut self,
component_id: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn get_outer_object(
&mut self,
node_id: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn actor_emit_event(
&mut self,
event_name: Vec<u8>,
event: Vec<u8>,
event_flags: EventFlags,
) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn sys_log(
&mut self,
level: Vec<u8>,
message: Vec<u8>,
) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn sys_panic(&mut self, message: Vec<u8>) -> Result<(), InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn sys_get_transaction_hash(&mut self) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn sys_bech32_encode_address(
&mut self,
address: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn sys_generate_ruid(&mut self) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_execution_cost_unit_limit(
&mut self,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_execution_cost_unit_price(
&mut self,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_finalization_cost_unit_limit(
&mut self,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_finalization_cost_unit_price(
&mut self,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_usd_price(&mut self) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_tip_percentage(&mut self) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn costing_get_fee_balance(&mut self) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_bls12381_v1_verify(
&mut self,
message: Vec<u8>,
public_key: Vec<u8>,
signature: Vec<u8>,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_bls12381_v1_aggregate_verify(
&mut self,
pub_keys_and_msgs: Vec<u8>,
signature: Vec<u8>,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_bls12381_v1_fast_aggregate_verify(
&mut self,
message: Vec<u8>,
public_keys: Vec<u8>,
signature: Vec<u8>,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_bls12381_g2_signature_aggregate(
&mut self,
signatures: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_keccak256_hash(
&mut self,
data: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_blake2b_256_hash(
&mut self,
data: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_ed25519_verify(
&mut self,
message: Vec<u8>,
public_key: Vec<u8>,
signature: Vec<u8>,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_secp256k1_ecdsa_verify(
&mut self,
message: Vec<u8>,
public_key: Vec<u8>,
signature: Vec<u8>,
) -> Result<u32, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_secp256k1_ecdsa_verify_and_key_recover(
&mut self,
message: Vec<u8>,
signature: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
fn crypto_utils_secp256k1_ecdsa_verify_and_key_recover_uncompressed(
&mut self,
message: Vec<u8>,
signature: Vec<u8>,
) -> Result<Buffer, InvokeError<WasmRuntimeError>> {
Err(InvokeError::SelfError(WasmRuntimeError::NotImplemented))
}
}