feat: move mev rpc types to alloy (#9108)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
jn
2024-07-08 08:59:17 -07:00
committed by GitHub
parent aaa27d6f5c
commit 2c2098c05c
9 changed files with 31 additions and 1060 deletions

14
Cargo.lock generated
View File

@ -465,6 +465,19 @@ dependencies = [
"thiserror",
]
[[package]]
name = "alloy-rpc-types-mev"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dd8624e01721deacad6bc9af75abdf2e99d248df0e1ad5f3f0bda0b3c1d50fd"
dependencies = [
"alloy-eips",
"alloy-primitives",
"alloy-serde",
"serde",
"serde_json",
]
[[package]]
name = "alloy-rpc-types-trace"
version = "0.1.4"
@ -8474,6 +8487,7 @@ dependencies = [
"alloy-rpc-types-anvil",
"alloy-rpc-types-beacon",
"alloy-rpc-types-engine",
"alloy-rpc-types-mev",
"alloy-rpc-types-trace",
"alloy-rpc-types-txpool",
"alloy-serde",

View File

@ -402,6 +402,7 @@ alloy-rpc-types-txpool = { version = "0.1", default-features = false }
alloy-serde = { version = "0.1", default-features = false }
alloy-rpc-types-engine = { version = "0.1", default-features = false }
alloy-rpc-types-eth = { version = "0.1", default-features = false }
alloy-rpc-types-mev = { version = "0.1", default-features = false }
alloy-rpc-types-trace = { version = "0.1", default-features = false }
alloy-genesis = { version = "0.1", default-features = false }
alloy-node-bindings = { version = "0.1", default-features = false }

View File

@ -1,5 +1,5 @@
use jsonrpsee::proc_macros::rpc;
use reth_rpc_types::{
use reth_rpc_types::mev::{
SendBundleRequest, SendBundleResponse, SimBundleOverrides, SimBundleResponse,
};

View File

@ -4,7 +4,7 @@
use jsonrpsee::proc_macros::rpc;
use reth_primitives::{Bytes, B256};
use reth_rpc_types::{
use reth_rpc_types::mev::{
CancelBundleRequest, CancelPrivateTransactionRequest, EthBundleHash, EthCallBundle,
EthCallBundleResponse, EthSendBundle, PrivateTransactionRequest,
};

View File

@ -16,17 +16,17 @@ workspace = true
# ethereum
alloy-primitives = { workspace = true, features = ["rand", "rlp", "serde"] }
alloy-rpc-types = { workspace = true, features = ["jsonrpsee-types"] }
alloy-rpc-types-anvil.workspace = true
alloy-rpc-types-trace.workspace = true
alloy-rpc-types-beacon.workspace = true
alloy-rpc-types-admin.workspace = true
alloy-rpc-types-anvil.workspace = true
alloy-rpc-types-beacon.workspace = true
alloy-rpc-types-mev.workspace = true
alloy-rpc-types-trace.workspace = true
alloy-rpc-types-txpool.workspace = true
alloy-serde.workspace = true
alloy-rpc-types-engine = { workspace = true, features = ["jsonrpsee-types"] }
# misc
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
jsonrpsee-types = { workspace = true, optional = true }
[dev-dependencies]
@ -38,6 +38,7 @@ proptest-derive.workspace = true
rand.workspace = true
similar-asserts.workspace = true
bytes.workspace = true
serde_json.workspace = true
[features]
default = ["jsonrpsee-types"]

View File

@ -11,7 +11,6 @@
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
#[allow(hidden_glob_reexports)]
mod eth;
mod mev;
mod peer;
mod rpc;
@ -29,15 +28,18 @@ pub mod trace {
pub use alloy_rpc_types_trace::*;
}
// re-export admin
pub use alloy_rpc_types_admin as admin;
// Anvil specific rpc types coming from alloy.
pub use alloy_rpc_types_anvil as anvil;
// re-export mev
pub use alloy_rpc_types_mev as mev;
// re-export beacon
pub use alloy_rpc_types_beacon as beacon;
// re-export admin
pub use alloy_rpc_types_admin as admin;
// re-export txpool
pub use alloy_rpc_types_txpool as txpool;
@ -51,6 +53,5 @@ pub use eth::{
transaction::{self, TransactionRequest, TypedTransactionRequest},
};
pub use mev::*;
pub use peer::*;
pub use rpc::*;

File diff suppressed because it is too large Load Diff

View File

@ -24,6 +24,7 @@ impl RpcModules {
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_module_versions_roundtrip() {
let s = r#"{"txpool":"1.0","trace":"1.0","eth":"1.0","web3":"1.0","net":"1.0"}"#;

View File

@ -10,7 +10,7 @@ use reth_primitives::{
PooledTransactionsElement, U256,
};
use reth_revm::database::StateProviderDatabase;
use reth_rpc_types::{EthCallBundle, EthCallBundleResponse, EthCallBundleTransactionResult};
use reth_rpc_types::mev::{EthCallBundle, EthCallBundleResponse, EthCallBundleTransactionResult};
use reth_tasks::pool::BlockingTaskGuard;
use revm::{
db::CacheDB,
@ -48,7 +48,7 @@ where
/// state, or it can be used to simulate a past block. The sender is responsible for signing the
/// transactions and using the correct nonce and ensuring validity
pub async fn call_bundle(&self, bundle: EthCallBundle) -> EthResult<EthCallBundleResponse> {
let EthCallBundle { txs, block_number, state_block_number, timestamp } = bundle;
let EthCallBundle { txs, block_number, state_block_number, timestamp, .. } = bundle;
if txs.is_empty() {
return Err(EthApiError::InvalidParams(
EthBundleError::EmptyBundleTransactions.to_string(),