mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
Changes to enable validation api extension (#4783)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@ -5454,6 +5454,7 @@ dependencies = [
|
||||
"reth-rpc-builder",
|
||||
"reth-rpc-engine-api",
|
||||
"reth-rpc-types",
|
||||
"reth-rpc-types-compat",
|
||||
"reth-snapshot",
|
||||
"reth-stages",
|
||||
"reth-tasks",
|
||||
|
||||
@ -36,6 +36,7 @@ reth-rpc-engine-api = { path = "../../crates/rpc/rpc-engine-api" }
|
||||
reth-rpc-builder = { path = "../../crates/rpc/rpc-builder" }
|
||||
reth-rpc = { path = "../../crates/rpc/rpc" }
|
||||
reth-rpc-types = { path = "../../crates/rpc/rpc-types" }
|
||||
reth-rpc-types-compat = { path = "../../crates/rpc/rpc-types-compat" }
|
||||
reth-rpc-api = { path = "../../crates/rpc/rpc-api" }
|
||||
reth-network = { path = "../../crates/net/network", features = ["serde"] }
|
||||
reth-network-api.workspace = true
|
||||
|
||||
@ -11,8 +11,8 @@ use clap::{
|
||||
use futures::TryFutureExt;
|
||||
use reth_network_api::{NetworkInfo, Peers};
|
||||
use reth_provider::{
|
||||
BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader, EvmEnvProvider,
|
||||
HeaderProvider, StateProviderFactory,
|
||||
AccountReader, BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader,
|
||||
EvmEnvProvider, HeaderProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc::{
|
||||
eth::{
|
||||
@ -188,6 +188,7 @@ impl RpcServerArgs {
|
||||
) -> eyre::Result<(RpcServerHandle, AuthServerHandle)>
|
||||
where
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ HeaderProvider
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
@ -254,6 +255,7 @@ impl RpcServerArgs {
|
||||
) -> Result<RpcServerHandle, RpcError>
|
||||
where
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ HeaderProvider
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
|
||||
@ -7,8 +7,8 @@ use reth_network_api::{NetworkInfo, Peers};
|
||||
use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService};
|
||||
use reth_primitives::ChainSpec;
|
||||
use reth_provider::{
|
||||
BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader, EvmEnvProvider,
|
||||
StateProviderFactory,
|
||||
AccountReader, BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader,
|
||||
EvmEnvProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc_builder::{RethModuleRegistry, TransportRpcModules};
|
||||
use reth_tasks::TaskSpawner;
|
||||
@ -49,6 +49,7 @@ pub trait RethNodeCommandConfig: fmt::Debug {
|
||||
where
|
||||
Conf: RethRpcConfig,
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider
|
||||
@ -173,6 +174,7 @@ impl<T: RethNodeCommandConfig> RethNodeCommandConfig for NoArgs<T> {
|
||||
where
|
||||
Conf: RethRpcConfig,
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider
|
||||
|
||||
@ -62,6 +62,11 @@ pub mod blockchain_tree {
|
||||
pub use reth_blockchain_tree::*;
|
||||
}
|
||||
|
||||
/// Re-exported from `reth_consensus_common`.
|
||||
pub mod consensus_common {
|
||||
pub use reth_consensus_common::*;
|
||||
}
|
||||
|
||||
/// Re-exported from `reth_revm`.
|
||||
pub mod revm {
|
||||
pub use reth_revm::*;
|
||||
@ -104,6 +109,16 @@ pub mod rpc {
|
||||
pub mod eth {
|
||||
pub use reth_rpc::eth::*;
|
||||
}
|
||||
|
||||
/// Re-exported from `reth_rpc::rpc`.
|
||||
pub mod result {
|
||||
pub use reth_rpc::result::*;
|
||||
}
|
||||
|
||||
/// Re-exported from `reth_rpc::eth`.
|
||||
pub mod compat {
|
||||
pub use reth_rpc_types_compat::*;
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "jemalloc", unix))]
|
||||
|
||||
@ -18,13 +18,13 @@
|
||||
//!
|
||||
//! ```
|
||||
//! use reth_network_api::{NetworkInfo, Peers};
|
||||
//! use reth_provider::{BlockReaderIdExt, ChainSpecProvider, CanonStateSubscriptions, StateProviderFactory, EvmEnvProvider, ChangeSetReader};
|
||||
//! use reth_provider::{AccountReader, BlockReaderIdExt, ChainSpecProvider, CanonStateSubscriptions, StateProviderFactory, EvmEnvProvider, ChangeSetReader};
|
||||
//! use reth_rpc_builder::{RethRpcModule, RpcModuleBuilder, RpcServerConfig, ServerBuilder, TransportRpcModuleConfig};
|
||||
//! use reth_tasks::TokioTaskExecutor;
|
||||
//! use reth_transaction_pool::TransactionPool;
|
||||
//! pub async fn launch<Provider, Pool, Network, Events>(provider: Provider, pool: Pool, network: Network, events: Events)
|
||||
//! where
|
||||
//! Provider: BlockReaderIdExt + ChainSpecProvider + ChangeSetReader + StateProviderFactory + EvmEnvProvider + Clone + Unpin + 'static,
|
||||
//! Provider: AccountReader + BlockReaderIdExt + ChainSpecProvider + ChangeSetReader + StateProviderFactory + EvmEnvProvider + Clone + Unpin + 'static,
|
||||
//! Pool: TransactionPool + Clone + 'static,
|
||||
//! Network: NetworkInfo + Peers + Clone + 'static,
|
||||
//! Events: CanonStateSubscriptions + Clone + 'static,
|
||||
@ -51,7 +51,7 @@
|
||||
//! ```
|
||||
//! use tokio::try_join;
|
||||
//! use reth_network_api::{NetworkInfo, Peers};
|
||||
//! use reth_provider::{BlockReaderIdExt, ChainSpecProvider, CanonStateSubscriptions, StateProviderFactory, EvmEnvProvider, ChangeSetReader};
|
||||
//! use reth_provider::{AccountReader, BlockReaderIdExt, ChainSpecProvider, CanonStateSubscriptions, StateProviderFactory, EvmEnvProvider, ChangeSetReader};
|
||||
//! use reth_rpc::JwtSecret;
|
||||
//! use reth_rpc_builder::{RethRpcModule, RpcModuleBuilder, RpcServerConfig, TransportRpcModuleConfig};
|
||||
//! use reth_tasks::TokioTaskExecutor;
|
||||
@ -60,7 +60,7 @@
|
||||
//! use reth_rpc_builder::auth::AuthServerConfig;
|
||||
//! pub async fn launch<Provider, Pool, Network, Events, EngineApi>(provider: Provider, pool: Pool, network: Network, events: Events, engine_api: EngineApi)
|
||||
//! where
|
||||
//! Provider: BlockReaderIdExt + ChainSpecProvider + ChangeSetReader + StateProviderFactory + EvmEnvProvider + Clone + Unpin + 'static,
|
||||
//! Provider: AccountReader + BlockReaderIdExt + ChainSpecProvider + ChangeSetReader + StateProviderFactory + EvmEnvProvider + Clone + Unpin + 'static,
|
||||
//! Pool: TransactionPool + Clone + 'static,
|
||||
//! Network: NetworkInfo + Peers + Clone + 'static,
|
||||
//! Events: CanonStateSubscriptions + Clone + 'static,
|
||||
@ -109,8 +109,8 @@ use jsonrpsee::{
|
||||
use reth_ipc::server::IpcServer;
|
||||
use reth_network_api::{NetworkInfo, Peers};
|
||||
use reth_provider::{
|
||||
BlockReader, BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader,
|
||||
EvmEnvProvider, StateProviderFactory,
|
||||
AccountReader, BlockReader, BlockReaderIdExt, CanonStateSubscriptions, ChainSpecProvider,
|
||||
ChangeSetReader, EvmEnvProvider, StateProviderFactory,
|
||||
};
|
||||
use reth_rpc::{
|
||||
eth::{
|
||||
@ -173,6 +173,7 @@ pub async fn launch<Provider, Pool, Network, Tasks, Events>(
|
||||
) -> Result<RpcServerHandle, RpcError>
|
||||
where
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider
|
||||
@ -318,6 +319,7 @@ impl<Provider, Pool, Network, Tasks, Events>
|
||||
RpcModuleBuilder<Provider, Pool, Network, Tasks, Events>
|
||||
where
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider
|
||||
@ -566,6 +568,7 @@ impl RpcModuleSelection {
|
||||
) -> RpcModule<()>
|
||||
where
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider
|
||||
@ -807,6 +810,7 @@ impl<Provider, Pool, Network, Tasks, Events>
|
||||
RethModuleRegistry<Provider, Pool, Network, Tasks, Events>
|
||||
where
|
||||
Provider: BlockReaderIdExt
|
||||
+ AccountReader
|
||||
+ StateProviderFactory
|
||||
+ EvmEnvProvider
|
||||
+ ChainSpecProvider
|
||||
|
||||
@ -21,7 +21,7 @@ mod work;
|
||||
pub use account::*;
|
||||
pub use block::*;
|
||||
pub use call::{Bundle, CallInput, CallInputError, CallRequest, EthCallResponse, StateContext};
|
||||
pub use engine::{ExecutionPayload, PayloadError};
|
||||
pub use engine::{ExecutionPayload, ExecutionPayloadV1, ExecutionPayloadV2, PayloadError};
|
||||
pub use fee::{FeeHistory, TxGasAndReward};
|
||||
pub use filter::*;
|
||||
pub use index::Index;
|
||||
|
||||
@ -54,4 +54,4 @@ pub use tracing_call::{TracingCallGuard, TracingCallPool};
|
||||
pub use txpool::TxPoolApi;
|
||||
pub use web3::Web3Api;
|
||||
|
||||
pub(crate) mod result;
|
||||
pub mod result;
|
||||
|
||||
@ -4,10 +4,11 @@ use crate::eth::error::EthApiError;
|
||||
use jsonrpsee::core::RpcResult;
|
||||
use reth_interfaces::RethResult;
|
||||
use reth_primitives::Block;
|
||||
use reth_rpc_types::engine::PayloadError;
|
||||
use std::fmt::Display;
|
||||
|
||||
/// Helper trait to easily convert various `Result` types into [`RpcResult`]
|
||||
pub(crate) trait ToRpcResult<Ok, Err> {
|
||||
pub trait ToRpcResult<Ok, Err> {
|
||||
/// Converts the error of the [Result] to an [RpcResult] via the `Err` [Display] impl.
|
||||
fn to_rpc_result(self) -> RpcResult<Ok>
|
||||
where
|
||||
@ -101,6 +102,7 @@ macro_rules! impl_to_rpc_result {
|
||||
};
|
||||
}
|
||||
|
||||
impl_to_rpc_result!(PayloadError);
|
||||
impl_to_rpc_result!(reth_interfaces::RethError);
|
||||
impl_to_rpc_result!(reth_network_api::NetworkError);
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
use crate::{
|
||||
BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
AccountReader, BlockHashReader, BlockIdReader, BlockNumReader, BlockReader, BlockReaderIdExt,
|
||||
BlockchainTreePendingStateProvider, BundleStateDataProvider, CanonChainTracker,
|
||||
CanonStateNotifications, CanonStateSubscriptions, ChainSpecProvider, ChangeSetReader,
|
||||
EvmEnvProvider, HeaderProvider, ProviderError, PruneCheckpointReader, ReceiptProvider,
|
||||
@ -14,7 +14,7 @@ use reth_interfaces::{
|
||||
};
|
||||
use reth_primitives::{
|
||||
stage::{StageCheckpoint, StageId},
|
||||
Address, Block, BlockHash, BlockHashOrNumber, BlockId, BlockNumHash, BlockNumber,
|
||||
Account, Address, Block, BlockHash, BlockHashOrNumber, BlockId, BlockNumHash, BlockNumber,
|
||||
BlockNumberOrTag, BlockWithSenders, ChainInfo, ChainSpec, Header, PruneCheckpoint, PrunePart,
|
||||
Receipt, SealedBlock, SealedBlockWithSenders, SealedHeader, TransactionMeta, TransactionSigned,
|
||||
TransactionSignedNoHash, TxHash, TxNumber, Withdrawal, B256, U256,
|
||||
@ -810,3 +810,14 @@ where
|
||||
self.database.provider()?.account_block_changeset(block_number)
|
||||
}
|
||||
}
|
||||
|
||||
impl<DB, Tree> AccountReader for BlockchainProvider<DB, Tree>
|
||||
where
|
||||
DB: Database + Sync + Send,
|
||||
Tree: Sync + Send,
|
||||
{
|
||||
/// Get basic account information.
|
||||
fn basic_account(&self, address: Address) -> RethResult<Option<Account>> {
|
||||
self.database.provider()?.basic_account(address)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user