mirror of
https://github.com/pezkuwichain/revive-differential-tests.git
synced 2026-04-22 21:57:58 +00:00
6f4aa731ab
* Add support for wrapper types * Move `FilesWithExtensionIterator` to `core::common` * Remove unneeded use of two `HashMap`s * Make metadata structs more typed * Impl new_from for wrapper types * Implement the new input handling logic * Fix edge-case in input handling * Ignore macro doc comment tests * Correct comment * Fix edge-case in deployment order * Handle calldata better * Allow for the use of function signatures * Add support for exceptions * Cached nonce allocator * Fix tests * Add support for address replacement * Cleanup implementation * Cleanup mutability * Wire up address replacement with rest of code * Implement caller replacement * Switch to callframe trace for exceptions * Add a way to skip tests if they don't match the target * Handle values from the metadata files * Remove address replacement * Correct the arguments * Remove empty impl * Remove address replacement * Correct the arguments * Remove empty impl * Fix size_requirement underflow * Add support for wildcards in exceptions * Fix calldata construction of single calldata * Better handling for length in equivalency checks * Make initial balance a constant * Fix size_requirement underflow * Add support for wildcards in exceptions * Fix calldata construction of single calldata * Better handling for length in equivalency checks * Fix tests
50 lines
2.1 KiB
Rust
50 lines
2.1 KiB
Rust
//! This crate implements all node interactions.
|
|
|
|
use alloy::eips::BlockNumberOrTag;
|
|
use alloy::primitives::{Address, BlockHash, BlockNumber, BlockTimestamp, ChainId, U256};
|
|
use alloy::rpc::types::trace::geth::{DiffMode, GethDebugTracingOptions, GethTrace};
|
|
use alloy::rpc::types::{TransactionReceipt, TransactionRequest};
|
|
use anyhow::Result;
|
|
|
|
mod blocking_executor;
|
|
pub use blocking_executor::*;
|
|
|
|
/// An interface for all interactions with Ethereum compatible nodes.
|
|
pub trait EthereumNode {
|
|
/// Execute the [TransactionRequest] and return a [TransactionReceipt].
|
|
fn execute_transaction(&self, transaction: TransactionRequest) -> Result<TransactionReceipt>;
|
|
|
|
/// Trace the transaction in the [TransactionReceipt] and return a [GethTrace].
|
|
fn trace_transaction(
|
|
&self,
|
|
receipt: &TransactionReceipt,
|
|
trace_options: GethDebugTracingOptions,
|
|
) -> Result<GethTrace>;
|
|
|
|
/// Returns the state diff of the transaction hash in the [TransactionReceipt].
|
|
fn state_diff(&self, receipt: &TransactionReceipt) -> Result<DiffMode>;
|
|
|
|
/// Returns the ID of the chain that the node is on.
|
|
fn chain_id(&self) -> Result<ChainId>;
|
|
|
|
// TODO: This is currently a u128 due to Kitchensink needing more than 64 bits for its gas limit
|
|
// when we implement the changes to the gas we need to adjust this to be a u64.
|
|
/// Returns the gas limit of the specified block.
|
|
fn block_gas_limit(&self, number: BlockNumberOrTag) -> Result<u128>;
|
|
|
|
/// Returns the coinbase of the specified block.
|
|
fn block_coinbase(&self, number: BlockNumberOrTag) -> Result<Address>;
|
|
|
|
/// Returns the difficulty of the specified block.
|
|
fn block_difficulty(&self, number: BlockNumberOrTag) -> Result<U256>;
|
|
|
|
/// Returns the hash of the specified block.
|
|
fn block_hash(&self, number: BlockNumberOrTag) -> Result<BlockHash>;
|
|
|
|
/// Returns the timestamp of the specified block,
|
|
fn block_timestamp(&self, number: BlockNumberOrTag) -> Result<BlockTimestamp>;
|
|
|
|
/// Returns the number of the last block.
|
|
fn last_block_number(&self) -> Result<BlockNumber>;
|
|
}
|