diff --git a/tracing/shared/primitives/ext/src/lib.rs b/tracing/shared/primitives/ext/src/lib.rs index 2e0fe897..8762573a 100644 --- a/tracing/shared/primitives/ext/src/lib.rs +++ b/tracing/shared/primitives/ext/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright 2019-2022 PureStake Inc. +// Copyright 2019-2025 PureStake Inc. // This file is part of Moonbeam. // Moonbeam is free software: you can redistribute it and/or modify @@ -23,7 +23,10 @@ //! - Host functions will decode the input and emit an event `with` environmental. #![cfg_attr(not(feature = "std"), no_std)] -use sp_runtime_interface::runtime_interface; +use sp_runtime_interface::{ + pass_by::{AllocateAndReturnByCodec, PassFatPointerAndRead}, + runtime_interface, +}; use parity_scale_codec::Decode; use sp_std::vec::Vec; @@ -32,20 +35,20 @@ use evm_tracing_events::{Event, EvmEvent, GasometerEvent, RuntimeEvent, StepEven #[runtime_interface] pub trait MoonbeamExt { - fn raw_step(&mut self, _data: Vec) {} + fn raw_step(&mut self, _data: PassFatPointerAndRead>) {} - fn raw_gas(&mut self, _data: Vec) {} + fn raw_gas(&mut self, _data: PassFatPointerAndRead>) {} - fn raw_return_value(&mut self, _data: Vec) {} + fn raw_return_value(&mut self, _data: PassFatPointerAndRead>) {} - fn call_list_entry(&mut self, _index: u32, _value: Vec) {} + fn call_list_entry(&mut self, _index: u32, _value: PassFatPointerAndRead>) {} fn call_list_new(&mut self) {} // New design, proxy events. /// An `Evm` event proxied by the Moonbeam runtime to this host function. /// evm -> moonbeam_runtime -> host. - fn evm_event(&mut self, event: Vec) { + fn evm_event(&mut self, event: PassFatPointerAndRead>) { if let Ok(event) = EvmEvent::decode(&mut &event[..]) { Event::Evm(event).emit(); } @@ -53,7 +56,7 @@ pub trait MoonbeamExt { /// A `Gasometer` event proxied by the Moonbeam runtime to this host function. /// evm_gasometer -> moonbeam_runtime -> host. - fn gasometer_event(&mut self, event: Vec) { + fn gasometer_event(&mut self, event: PassFatPointerAndRead>) { if let Ok(event) = GasometerEvent::decode(&mut &event[..]) { Event::Gasometer(event).emit(); } @@ -61,7 +64,7 @@ pub trait MoonbeamExt { /// A `Runtime` event proxied by the Moonbeam runtime to this host function. /// evm_runtime -> moonbeam_runtime -> host. - fn runtime_event(&mut self, event: Vec) { + fn runtime_event(&mut self, event: PassFatPointerAndRead>) { if let Ok(event) = RuntimeEvent::decode(&mut &event[..]) { Event::Runtime(event).emit(); } @@ -70,7 +73,7 @@ pub trait MoonbeamExt { /// Allow the tracing module in the runtime to know how to filter Step event /// content, as cloning the entire data is expensive and most of the time /// not necessary. - fn step_event_filter(&self) -> StepEventFilter { + fn step_event_filter(&self) -> AllocateAndReturnByCodec { evm_tracing_events::step_event_filter().unwrap_or_default() } diff --git a/tracing/shared/primitives/rpc/evm-tracing-events/Cargo.toml b/tracing/shared/primitives/rpc/evm-tracing-events/Cargo.toml index fc5d6d2f..4466763b 100644 --- a/tracing/shared/primitives/rpc/evm-tracing-events/Cargo.toml +++ b/tracing/shared/primitives/rpc/evm-tracing-events/Cargo.toml @@ -9,7 +9,6 @@ repository = 'https://github.com/PureStake/moonbeam/' [dependencies] parity-scale-codec = { workspace = true } -sp-runtime-interface = { workspace = true } ethereum = { workspace = true, features = ["with-scale"] } ethereum-types = { workspace = true } diff --git a/tracing/shared/primitives/rpc/evm-tracing-events/src/lib.rs b/tracing/shared/primitives/rpc/evm-tracing-events/src/lib.rs index af65a88f..f712c508 100644 --- a/tracing/shared/primitives/rpc/evm-tracing-events/src/lib.rs +++ b/tracing/shared/primitives/rpc/evm-tracing-events/src/lib.rs @@ -43,7 +43,6 @@ use ::evm::Opcode; use alloc::vec::Vec; use parity_scale_codec::{Decode, Encode}; use ethereum_types::{H160, U256}; -use sp_runtime_interface::pass_by::PassByCodec; environmental::environmental!(listener: dyn Listener + 'static); @@ -54,7 +53,7 @@ pub fn using R>(l: &mut (dyn Listener + 'static), f: F) -> R { /// Allow to configure which data of the Step event /// we want to keep or discard. Not discarding the data requires cloning the data /// in the runtime which have a significant cost for each step. -#[derive(Clone, Copy, Eq, PartialEq, Debug, Encode, Decode, Default, PassByCodec)] +#[derive(Clone, Copy, Eq, PartialEq, Debug, Encode, Decode, Default)] pub struct StepEventFilter { pub enable_stack: bool, pub enable_memory: bool,