feat(exex): derive serde ser/deser for ExExNotification (#8963)

This commit is contained in:
Alexey Shekhirin
2024-06-20 11:33:53 +01:00
committed by GitHub
parent 8b6ca877d6
commit 554e8b1913
18 changed files with 48 additions and 12 deletions

3
Cargo.lock generated
View File

@ -7174,6 +7174,7 @@ dependencies = [
"reth-primitives",
"reth-trie",
"revm",
"serde",
]
[[package]]
@ -7193,6 +7194,7 @@ dependencies = [
"reth-provider",
"reth-tasks",
"reth-tracing",
"serde",
"tokio",
"tokio-util",
]
@ -8440,6 +8442,7 @@ dependencies = [
"reth-storage-errors",
"reth-trie-common",
"revm",
"serde",
"serde_json",
"similar-asserts",
"tokio",

View File

@ -36,7 +36,7 @@ proptest-derive.workspace = true
[features]
default = ["std", "serde"]
std = ["thiserror-no-std/std"]
serde = ["dep:serde"]
arbitrary = ["dep:arbitrary", "dep:proptest", "dep:proptest-derive"]
optimism = []
serde = ["dep:serde"]
std = ["thiserror-no-std/std"]

View File

@ -18,10 +18,13 @@ reth-trie.workspace = true
revm.workspace = true
serde = { workspace = true, optional = true }
[dev-dependencies]
reth-primitives = { workspace = true, features = ["test-utils"] }
alloy-primitives.workspace = true
alloy-eips.workspace = true
[features]
optimism = ["dep:reth-chainspec"]
optimism = ["dep:reth-chainspec"]
serde = ["dep:serde", "reth-trie/serde", "revm/serde"]

View File

@ -21,6 +21,7 @@ use std::{borrow::Cow, collections::BTreeMap, fmt, ops::RangeInclusive};
///
/// A chain of blocks should not be empty.
#[derive(Clone, Debug, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Chain {
/// All blocks in this chain.
blocks: BTreeMap<BlockNumber, SealedBlockWithSenders>,

View File

@ -14,6 +14,7 @@ use std::collections::HashMap;
/// The `ExecutionOutcome` structure aggregates the state changes over an arbitrary number of
/// blocks, capturing the resulting state, receipts, and requests following the execution.
#[derive(Default, Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ExecutionOutcome {
/// Bundle state with reverts.
pub bundle: BundleState,

View File

@ -32,3 +32,8 @@ tokio-util.workspace = true
## misc
eyre.workspace = true
metrics.workspace = true
serde = { workspace = true, optional = true }
[features]
default = []
serde = ["dep:serde", "reth-provider/serde"]

View File

@ -4,6 +4,7 @@ use reth_provider::{CanonStateNotification, Chain};
/// Notifications sent to an `ExEx`.
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ExExNotification {
/// Chain got committed without a reorg, and only the new chain is returned.
ChainCommitted {

View File

@ -52,5 +52,5 @@ reth-tracing.workspace = true
[features]
default = ["serde"]
test-utils = ["dep:rand"]
serde = ["dep:serde"]
test-utils = ["dep:rand"]

View File

@ -45,10 +45,11 @@ async-stream.workspace = true
[features]
default = ["serde"]
serde = ["dep:serde"]
arbitrary = [
"reth-primitives/arbitrary",
"dep:arbitrary",
"dep:proptest",
"dep:proptest-derive",
]
serde = ["dep:serde"]

View File

@ -63,7 +63,6 @@ async-stream.workspace = true
[features]
default = ["serde"]
serde = ["dep:serde"]
arbitrary = [
"reth-primitives/arbitrary",
"dep:arbitrary",
@ -71,6 +70,7 @@ arbitrary = [
"dep:proptest-derive",
]
optimism = ["reth-primitives/optimism"]
serde = ["dep:serde"]
[[test]]
name = "fuzz_roundtrip"

View File

@ -95,9 +95,9 @@ criterion = { workspace = true, features = ["async_tokio", "html_reports"] }
[features]
default = ["serde"]
geth-tests = []
serde = ["dep:serde", "dep:humantime-serde", "secp256k1/serde", "enr/serde", "dep:serde_json"]
test-utils = ["reth-provider/test-utils", "dep:tempfile", "reth-transaction-pool/test-utils"]
geth-tests = []
[[bench]]
name = "bench"

View File

@ -34,7 +34,7 @@ mod error;
pub use error::{GotExpected, GotExpectedBoxed};
mod log;
pub use log::{logs_bloom, Log};
pub use log::{logs_bloom, Log, LogData};
mod storage;
pub use storage::StorageEntry;

View File

@ -1,5 +1,5 @@
use alloy_primitives::Bloom;
pub use alloy_primitives::Log;
pub use alloy_primitives::{Log, LogData};
/// Calculate receipt logs bloom.
pub fn logs_bloom<'a>(logs: impl IntoIterator<Item = &'a Log>) -> Bloom {

View File

@ -11,6 +11,7 @@ use proptest::strategy::Strategy;
#[cfg(feature = "zstd-codec")]
use reth_codecs::CompactZstd;
use reth_codecs::{add_arbitrary_tests, main_codec, Compact};
use serde::{Deserialize, Serialize};
#[cfg(not(feature = "std"))]
use alloc::{vec, vec::Vec};
@ -66,7 +67,19 @@ impl Receipt {
}
/// A collection of receipts organized as a two-dimensional vector.
#[derive(Clone, Debug, PartialEq, Eq, Default, From, Deref, DerefMut, IntoIterator)]
#[derive(
Clone,
Debug,
PartialEq,
Eq,
Default,
Serialize,
Deserialize,
From,
Deref,
DerefMut,
IntoIterator,
)]
pub struct Receipts {
/// A two-dimensional vector of optional `Receipt` instances.
pub receipt_vec: Vec<Vec<Option<Receipt>>>,

View File

@ -73,5 +73,6 @@ assert_matches.workspace = true
rand.workspace = true
[features]
test-utils = ["alloy-rlp", "reth-db/test-utils", "reth-nippy-jar/test-utils"]
optimism = ["reth-primitives/optimism", "reth-execution-types/optimism"]
serde = ["reth-execution-types/serde"]
test-utils = ["alloy-rlp", "reth-db/test-utils", "reth-nippy-jar/test-utils"]

View File

@ -67,9 +67,9 @@ serde_json.workspace = true
[features]
default = ["serde"]
arbitrary = ["proptest", "reth-primitives/arbitrary"]
serde = ["dep:serde"]
test-utils = ["rand", "paste", "serde"]
arbitrary = ["proptest", "reth-primitives/arbitrary"]
[[bench]]
name = "truncate"

View File

@ -40,6 +40,9 @@ metrics = { workspace = true, optional = true }
# `test-utils` feature
triehash = { version = "0.8", optional = true }
# `serde` feature
serde = { workspace = true, optional = true }
[dev-dependencies]
# reth
reth-chainspec.workspace = true
@ -67,6 +70,7 @@ criterion.workspace = true
[features]
metrics = ["reth-metrics", "dep:metrics"]
serde = ["dep:serde"]
test-utils = ["triehash", "reth-trie-common/test-utils"]
[[bench]]

View File

@ -13,6 +13,7 @@ use std::collections::{hash_map::IntoIter, HashMap, HashSet};
/// The key of a trie node.
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TrieKey {
/// A node in the account trie.
AccountNode(StoredNibbles),
@ -24,6 +25,7 @@ pub enum TrieKey {
/// The operation to perform on the trie.
#[derive(PartialEq, Eq, Debug, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TrieOp {
/// Delete the node entry.
Delete,
@ -40,6 +42,7 @@ impl TrieOp {
/// The aggregation of trie updates.
#[derive(Debug, Default, Clone, PartialEq, Eq, Deref)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TrieUpdates {
trie_operations: HashMap<TrieKey, TrieOp>,
}