the state diff method belongs to node interactions (#20)

Signed-off-by: Cyrill Leutwiler <bigcyrill@hotmail.com>
This commit is contained in:
xermicus
2025-06-05 09:50:54 +02:00
committed by GitHub
parent 3b26e1e1d6
commit c8eb8cf7b0
4 changed files with 27 additions and 28 deletions
+4 -1
View File
@@ -1,6 +1,6 @@
//! This crate implements all node interactions.
use alloy::rpc::types::trace::geth::GethTrace;
use alloy::rpc::types::trace::geth::{DiffMode, GethTrace};
use alloy::rpc::types::{TransactionReceipt, TransactionRequest};
use tokio_runtime::TO_TOKIO;
@@ -18,4 +18,7 @@ pub trait EthereumNode {
/// Trace the transaction in the [TransactionReceipt] and return a [GethTrace].
fn trace_transaction(&self, transaction: TransactionReceipt) -> anyhow::Result<GethTrace>;
/// Returns the state diff of the transaction hash in the [TransactionReceipt].
fn state_diff(&self, transaction: TransactionReceipt) -> anyhow::Result<DiffMode>;
}
+13 -13
View File
@@ -185,6 +185,19 @@ impl EthereumNode for Instance {
.await?)
}))
}
fn state_diff(
&self,
transaction: alloy::rpc::types::TransactionReceipt,
) -> anyhow::Result<DiffMode> {
match self
.trace_transaction(transaction)?
.try_into_pre_state_frame()?
{
PreStateFrame::Diff(diff) => Ok(diff),
_ => anyhow::bail!("expected a diff mode trace"),
}
}
}
impl Node for Instance {
@@ -219,19 +232,6 @@ impl Node for Instance {
Ok(())
}
fn state_diff(
&self,
transaction: alloy::rpc::types::TransactionReceipt,
) -> anyhow::Result<DiffMode> {
match self
.trace_transaction(transaction)?
.try_into_pre_state_frame()?
{
PreStateFrame::Diff(diff) => Ok(diff),
_ => anyhow::bail!("expected a diff mode trace"),
}
}
fn version(&self) -> anyhow::Result<String> {
let output = Command::new(&self.geth)
.arg("--version")
+10 -10
View File
@@ -279,6 +279,16 @@ impl EthereumNode for KitchensinkNode {
.await?)
}))
}
fn state_diff(&self, transaction: TransactionReceipt) -> anyhow::Result<DiffMode> {
match self
.trace_transaction(transaction)?
.try_into_pre_state_frame()?
{
PreStateFrame::Diff(diff) => Ok(diff),
_ => anyhow::bail!("expected a diff mode trace"),
}
}
}
impl Node for KitchensinkNode {
@@ -317,16 +327,6 @@ impl Node for KitchensinkNode {
self.init(&genesis)?.spawn_process()
}
fn state_diff(&self, transaction: TransactionReceipt) -> anyhow::Result<DiffMode> {
match self
.trace_transaction(transaction)?
.try_into_pre_state_frame()?
{
PreStateFrame::Diff(diff) => Ok(diff),
_ => anyhow::bail!("expected a diff mode trace"),
}
}
fn version(&self) -> anyhow::Result<String> {
let output = Command::new(&self.substrate_binary)
.arg("--version")
-4
View File
@@ -1,6 +1,5 @@
//! This crate implements the testing nodes.
use alloy::rpc::types::{TransactionReceipt, trace::geth::DiffMode};
use revive_dt_config::Arguments;
use revive_dt_node_interaction::EthereumNode;
@@ -29,9 +28,6 @@ pub trait Node: EthereumNode {
/// Returns the nodes connection string.
fn connection_string(&self) -> String;
/// Returns the state diff of the transaction hash in the [TransactionReceipt].
fn state_diff(&self, transaction: TransactionReceipt) -> anyhow::Result<DiffMode>;
/// Returns the node version.
fn version(&self) -> anyhow::Result<String>;
}