Skip to content

Conversation

@7suyash7
Copy link
Contributor

Closes - #16469

Introduces a more flexible approach to handling TxType in transaction announcements received from peers. The previous mechanism was strictly hardcoded to reject and penalise announcements of unknown transaction types.

A new configurable system has been introduced for TransactionManager's handling of Transactions.

  1. AnnouncementFilteringPolicy Trait:

    • A new trait AnnouncementFilteringPolicy defines how to handle an announced transaction based on its type, hash, and size.
  2. Policy Implementations:

    • StrictAnnouncementFilter: Replicates the original behavior. If TxType::try_from(ty_byte) fails, it returns Reject { penalize_peer: true }. This remains the default behavior.
    • RelaxedAnnouncementFilter: If TxType::try_from(ty_byte) fails, it returns Ignore. This allows the node to be more tolerant of new or future transaction types without penalising the peer.
  3. Configuration:

    • A new announcement_filter_kind: AnnouncementFilterKind field has been added to TransactionsManagerConfig.
    • AnnouncementFilterKind is an enum with Strict (default) and Relaxed variants, allowing node operators to choose the desired behaviour.
  4. NetworkPolicies Struct:

    • A new struct NetworkPolicies<PropPolicy, AnnouncePolicy> now combines the existing TransactionPropagationPolicy with the new AnnouncementFilteringPolicy.
    • TransactionsManager has been refactored to be generic over these policies and use the NetworkPolicies struct.

Signed-off-by: 7suyash7 <[email protected]>
Copy link
Collaborator

@mattsse mattsse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice, this is a great start, left some suggestions/ideas.


/// An `AnnouncementFilteringPolicy` that enforces strict validation of transaction types.
#[derive(Debug, Clone, Default)]
pub struct StrictAnnouncementFilter;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can make this generic over T: IsTyped2718 with a phantomtype then this can be TypedAnnouncementfilter<TxType>

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, now we have TypedStrictFilter<T: TryFrom<u8> + ...>(PhantomData<T>) and TypedRelaxedFilter<T: TryFrom<u8> + ...>(PhantomData<T>) and then type aliases for common use.

Comment on lines 203 to 225
/// An `AnnouncementFilteringPolicy` that is more permissive towards unknown transaction types.
///
/// Allows for handling of new or future transaction types that a local node may not yet fully
/// support or recognize.
#[derive(Debug, Clone, Default)]
pub struct RelaxedAnnouncementFilter;

impl AnnouncementFilteringPolicy for RelaxedAnnouncementFilter {
fn decide_on_announcement(&self, ty: u8, hash: &B256, size: usize) -> AnnouncementAcceptance {
match TxType::try_from(ty) {
Ok(_valid_type) => AnnouncementAcceptance::Accept,
Err(_) => {
tracing::trace!(target: "net::tx::policy::relaxed",
%ty,
%size,
%hash,
"Unknown transaction type in announcement. Ignoring entry."
);
AnnouncementAcceptance::Ignore
}
}
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

Comment on lines 227 to 242
/// A container for policies that govern the behaviour of the `TransactionManager`.
///
/// This struct bundles different policies, such as how transactions are propagated and how incoming
/// transaction announcements are filtered.
#[derive(Debug, Clone)]
pub struct NetworkPolicies<P, A>
where
P: TransactionPropagationPolicy,
A: AnnouncementFilteringPolicy,
{
/// Policy determining to which peers transactions are propagated.
pub propagation: P,
/// Policy determining how incoming transaction announcements are filtered,
/// especially concerning transaction types.
pub announcement_filter: A,
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unsure if this container type is very useful if we configure this in Transactionmanager individually via generics

config: TransactionsManagerConfig,
/// The policy to use when propagating transactions.
propagation_policy: P,
policies: NetworkPolicies<PropPolicy, AnnouncePolicy>,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah I see, here this does make sense, but we could also just use two fields instead of introducing a container type just for this

Comment on lines 247 to 248
PropPolicy: TransactionPropagationPolicy = TransactionPropagationKind,
AnnouncePolicy: AnnouncementFilteringPolicy = StrictAnnouncementFilter,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the alternative to this would be to bundle these two into one singe trait acts like NetworkworPolicies but combines both into one trait

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

based on this and the
trait Policies { type propagte; type Announcements } idea that you mentioned above, I refactored TransactionsManager to be generic over a single policy bundle trait. A new pub trait Policies with types for Propagation and Announcements policies, and a concrete pub struct NetworkPolicies<P, A> that implements this Policies trait. So now, the TransactionsManager is generic as TransactionsManager<Pool, N, PBundle: Policies>

@github-project-automation github-project-automation bot moved this from Backlog to In Progress in Reth Tracker May 27, 2025
@mattsse
Copy link
Collaborator

mattsse commented May 27, 2025

@7suyash7 if you have more specific questions, feel free to ping on tg @mattsse

@mattsse mattsse added the A-networking Related to networking in general label May 27, 2025
Copy link
Collaborator

@mattsse mattsse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great stuff, ty

left some structual nits, but otherwise this is on track

/// the [`TransactionsManager`](super::TransactionsManager).
///
/// This trait allows for different collections of policies to be used interchangeably.
pub trait Policies: Send + Sync + Debug + 'static {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice, I like this a lot.

just some naming bikeshed,
let's name this NetworkPolicies or TransactionPolicies

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Named it TransactionPolicies

/// the [`TransactionsManager`](super::TransactionsManager).
///
/// This trait allows for different collections of policies to be used interchangeably.
pub trait Policies: Send + Sync + Debug + 'static {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd also like to move this to policy.rs

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!

Comment on lines 292 to 294
where
P: TransactionPropagationPolicy,
A: AnnouncementFilteringPolicy,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can relax the bounds here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment on lines 283 to 285
where
P: TransactionPropagationPolicy,
A: AnnouncementFilteringPolicy,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

here as well

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Signed-off-by: 7suyash7 <[email protected]>
@7suyash7 7suyash7 requested a review from mattsse May 29, 2025 06:14
Copy link
Collaborator

@mattsse mattsse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very nice @7suyash7

a followup would be either moving

https://github.com/paradigmxyz/reth/blob/main/crates/net/network/src/transactions/validation.rs#L30-L30

into the policies entirely, or better removing and inlining it entirely.

I think we should be able to get rid of the entire validation.rs file?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is very good

mattsse and others added 2 commits June 4, 2025 17:15
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
@mattsse mattsse added this pull request to the merge queue Jun 4, 2025
Merged via the queue into paradigmxyz:main with commit ad8c2c5 Jun 4, 2025
45 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in Reth Tracker Jun 4, 2025
greged93 added a commit to scroll-tech/reth that referenced this pull request Jun 16, 2025
* docs: add some docs about TaskExecutor (paradigmxyz#16327)

* chore: Replace reth-provider with reth-storage-api in reth-rpc-api (paradigmxyz#16322)

* feat: include SpecId in PrecompileCache keys (paradigmxyz#16241)

* feat: introduce Receipt69 variant (paradigmxyz#15827)

Co-authored-by: Matthias Seitz <[email protected]>

* chore(hive): disable eth suite of devp2p sim (paradigmxyz#16341)

* feat(perp): optimize OpTxpool 2718 bytes encoding (paradigmxyz#16336)

* chore: bump alloy 1.0.4 (paradigmxyz#16345)

* feat(primitive-traits): relax mem size implementations for 4844 txs with sidecars (paradigmxyz#16349)

* chore: bump inspectors (paradigmxyz#16342)

* feat(ethereum-primitives): `PooledTransactionVariant` alias (paradigmxyz#16351)

* chore: add `clippy-op-dev` make script (paradigmxyz#16352)

* chore: `RecoveredBlock` -> `Block` (paradigmxyz#16321)

Co-authored-by: Roman Krasiuk <[email protected]>

* chore: bump alloy (paradigmxyz#16355)

* chore: bump version 1.4.2 (paradigmxyz#16357)

* ci: do not dry run by default in `release.yml` (paradigmxyz#16358)

* chore: Add configuration option to enable/disable HTTP response compression (paradigmxyz#16348)

Co-authored-by: Matthias Seitz <[email protected]>

* ci: check `dry_run` against `true` in release workflow (paradigmxyz#16360)

* chore: bump version 1.4.3 (paradigmxyz#16359)

* ci: do not trigger release workflow on `dry_run*` branches (paradigmxyz#16361)

* feat: add BlockRangeUpdate message for eth/69 (paradigmxyz#16346)

Co-authored-by: Matthias Seitz <[email protected]>

* feat(stages): reduce index history progress logging frequency (paradigmxyz#16290)

Co-authored-by: Alexey Shekhirin <[email protected]>

* chore: re-export node-builder as builder (paradigmxyz#16363)

* feat(txpool): use `BlobTransactionSidecarVariant` (paradigmxyz#16356)

* feat: Implement conversion from built-in transaction envelopes into `Extended` (paradigmxyz#16366)

* refactor(examples): Replace redundant type definitions with a `CustomTransaction` alias in the `custom_node` example (paradigmxyz#16367)

* feat(txpool): properly validate sidecar according to the active fork (paradigmxyz#16370)

* feat(txpool): activate osaka in tx validator (paradigmxyz#16371)

* refactor(examples): Split `evm` module into submodules in the `custom_node` example (paradigmxyz#16380)

* feat(examples): Add `CustomTxEnv` for EVM that supports conversions from the extended transaction envelope in the `custom_node` example (paradigmxyz#16381)

* feat(node): bump Hoodi gas limit to 60M (paradigmxyz#16379)

* feat(trie): decode proofs in multiproof task (paradigmxyz#16098)

Co-authored-by: Alexey Shekhirin <[email protected]>

* chore(deps): bump alloy-evm (paradigmxyz#16385)

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* chore: Move subscription_task_spawner into EthPubSubInner (paradigmxyz#16383)

* feat: relax OpNetworkBuilder type constraints (paradigmxyz#16387)

* fix(ipc): Improve server code correctness, logging, and doc comments (paradigmxyz#16372)

* chore: fixed broken link (paradigmxyz#16365)

* chore: Refactoring manual clone for opPoolBuilder (paradigmxyz#16392)

* fix: `InvalidTimestamp` display (paradigmxyz#16395)

Signed-off-by: Gregory Edison <[email protected]>

* feat(examples): Add `CustomEvm` for the execution of `CustomTransaction` in the `custom_node` example (paradigmxyz#16394)

* chore(book): Bump `alloy-hardforks` and `alloy-op-harfroks` (paradigmxyz#16300)

* feat: Genericise `stateless_validation` API so that it is not fixed to `Eth` types (paradigmxyz#16328)

Co-authored-by: Matthias Seitz <[email protected]>

* feat: relax OpEthApi type constraints (paradigmxyz#16398)

* fix: forward sequencer error (paradigmxyz#16401)

* feat: configure tracing layers (paradigmxyz#16126)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: eth69 status message support (paradigmxyz#16099)

Co-authored-by: Matthias Seitz <[email protected]>

* feat(examples): Implement `EvmFactory` for `CustomEvm` in `custom_node` example (paradigmxyz#16404)

* feat: relax OpEthApiBuilder type constraints (paradigmxyz#16410)

* fix(RPC): Ensure `eth_getTransactionCount` returns correct nonce for 'pending' tag (paradigmxyz#16407)

* feat(tasks): enable graceful shutdown request via TaskExecutor (paradigmxyz#16386)

Signed-off-by: 7suyash7 <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* chore: Add `ClientInput` struct to `reth-stateless` (paradigmxyz#16320)

* feat: fix tasks metrics (paradigmxyz#16406)

* fix: grammar in multiple files (paradigmxyz#16403)

* refactor: use `impl IntoIterator` for transaction batches and streamline validation calls (paradigmxyz#16408)

* chore: Implementing get_by_versioned_hashes_v2 for InMemoryBlobStre a… (paradigmxyz#16390)

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <[email protected]>

* feat(examples): Make `CustomEvmTransaction` local and implement `FromRecoveredTx` and `FromTxWithEncoded` in `custom_node` example (paradigmxyz#16415)

* refactor(examples): Use `OpEvm` from `op-alloy-evm` instead of `op-revm` for `CustomEvm` in `custom_node` example (paradigmxyz#16417)

* fix: rewrite estimate loop condition (paradigmxyz#16413)

* ci: fix system icons width in release.yml (paradigmxyz#16420)

* feat(net): Add update_block_range to NetworkSyncUpdater (paradigmxyz#16422)

Signed-off-by: 7suyash7 <[email protected]>

* feat: relax OpExecutorBuilder type constraints (paradigmxyz#16423)

* feat: make max EthMessageID dependent on the EthVersion (paradigmxyz#16405)

Co-authored-by: Matthias Seitz <[email protected]>

* ci: run op-kurtosis every 6hrs (paradigmxyz#16432)

* ci: run kurtosis every 6h (paradigmxyz#16433)

* perf: spawn range query on blocking (paradigmxyz#16434)

* chore: bump revm and op-alloy (paradigmxyz#16429)

Co-authored-by: Ishika Choudhury <[email protected]>

* feat: add get_recovered_transaction helper (paradigmxyz#16436)

* feat(examples): Implement `BlockAssembler` and `BlockExecutor` for custom blocks in `custom_node` example (paradigmxyz#16435)

* feat(optimism): Remove all bounds on `BlockAssemblerInput` for header (paradigmxyz#16442)

* feat!: Add `StatelessTrie` abstraction (paradigmxyz#16419)

* refactor(examples): Rename `CustomTxEnv` => `PaymentTxEnv` and `CustomEvmTransaction` => `CustomTxEnv` (paradigmxyz#16443)

* chore: simplify deposit check (paradigmxyz#16452)

* chore: rm OpPrimitives bound (paradigmxyz#16450)

* chore: make clippy happy (paradigmxyz#16455)

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* docs: added parent_beacon_block_root requirement and corrected build-block (paradigmxyz#16453)

* chore: add clone impl for engine api types (paradigmxyz#16454)

* refactor: remove reth dependencies and instead use reth_ethereum (paradigmxyz#16416)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: rm outdated unreachable patterns (paradigmxyz#16457)

* chore: bump alloy 1.0.7 (paradigmxyz#16456)

* feat: add HistoricalRpcClient for forwarding legacy RPC requests (paradigmxyz#16447)

Co-authored-by: Matthias Seitz <[email protected]>

* ci: remove concurrency from bench (paradigmxyz#16458)

* chore(deps): weekly `cargo update` (paradigmxyz#16460)

Co-authored-by: github-merge-queue <[email protected]>

* fix(db): correct ClientVersion serialization size tracking (paradigmxyz#16427)

* feat: add receipts_by_block_range to ReceiptsProvider (paradigmxyz#16449)

* refactor: unify versioned_hashes for BlobTransactionSidecarVarient (paradigmxyz#16461)

* chore: run hive every 6h (paradigmxyz#16472)

* feat: add exex feature to op-reth (paradigmxyz#16459)

* fix: check encoded size (paradigmxyz#16473)

* chore: add manual clone impl (paradigmxyz#16475)

* fix: propagate `--sequencer-headers` to `SequencerClient` (paradigmxyz#16474)

* chore: relax executiondata bound (paradigmxyz#16478)

* revert: "fix: check encoded size" (paradigmxyz#16488)

* feat(examples): Add `CustomExecutorBuilder` and implement `ExecutorBuilder` for it in `custom_node` example (paradigmxyz#16444)

* chore: bump op-alloy to  0.17.2 (paradigmxyz#16492)

* feat(optimism): Replace `OpTransactionSigned` bound on the `Block` associated to `OpEngineValidator` with a generic (paradigmxyz#16486)

* feat(optimism): Replace `OpChainSpec` inside `OpEngineValidator` with a generic (paradigmxyz#16489)

* feat(optimism): Replace `OpEthApi` requirement of `OpReceipt` with a `DepositReceipt` trait bound (paradigmxyz#16490)

* test: add receipt support to MockEthProvider (paradigmxyz#16494)

* feat(rpc): add EthStateCache::get_receipts_and_maybe_block_exact (paradigmxyz#16484)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: Change getBlockDetails arg to BlockNumberOrTag (paradigmxyz#16378)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: simplify rpc ro primitive block impls (paradigmxyz#16487)

* chore: add debug trace for on_new_head (paradigmxyz#16471)

* fix: support tags for ots_getheaderbynumber (paradigmxyz#16497)

* docs: Replace GitFlic URL with official GitHub repository for libmdbx (paradigmxyz#16496)

* chore: support tagged block numbers for all ots endpoints (paradigmxyz#16501)

* refactor: refactored the fill fn to use Transaction::from_transaction() (paradigmxyz#16504)

* feat(optimism): Remove fixed `alloy_consensus::Header` type from `OpPayloadPrimitives` (paradigmxyz#16505)

* chore: relax payloadtypes impl (paradigmxyz#16507)

* chore: include addr in error message (paradigmxyz#16515)

* test: include remaining actions in e2e ProduceBlocks (paradigmxyz#16516)

* feat(rpc): add debug_stateRootWithUpdates method (paradigmxyz#16353)

* feat(optimism): add metrics to miner to track max DA size throttle values (paradigmxyz#16514)

Co-authored-by: Matthias Seitz <[email protected]>

* test: add CreateFork e2e action (paradigmxyz#16520)

* fix(engine): recompute trie updates for forked blocks (paradigmxyz#16500)

* ci: use Wine OpenSUSE repository in Dockerfile for Windows (paradigmxyz#16528)

* test: add ReorgTo e2e action (paradigmxyz#16526)

* chore: bumped alloy to 1.0.9 (paradigmxyz#16527)

* feat(optimism): Add generic `Header` into `OpPayloadPrimitives` (paradigmxyz#16529)

Co-authored-by: Arsenii Kulikov <[email protected]>

* chore: removed otterscan_api_truncate_input function (paradigmxyz#16530)

* chore: relax OpBlock bound (paradigmxyz#16522)

* feat: add helper for obtaining the engineapi launcher (paradigmxyz#16517)

* docs: improve documentation clarity in pool.rs (paradigmxyz#16533)

* chore: add missing receipt type conversion (paradigmxyz#16534)

* test: add deep reorg e2e test (paradigmxyz#16531)

* feat(rpc): Export Validation Blocklist Hash (paradigmxyz#16513)

* chore: added EthStateCache::maybe_block_and_receipts (paradigmxyz#16540)

* ci: use HTTPS and increase timeouts for APT in Dockerfiles (paradigmxyz#16546)

Co-authored-by: Federico Gimenez <[email protected]>

* feat: bump to 1.4.4 (paradigmxyz#16549)

* feat(examples): Replace `()` with appropriate component builders in `custom_node` example (paradigmxyz#16445)

Co-authored-by: Arsenii Kulikov <[email protected]>

* feat(examples): Replace `CustomNetworkBuilder` using `OpNetworkBuilder` with custom generics (paradigmxyz#16551)

* feat(examples): Replace `CustomPoolBuilder` using `OpPoolBuilder` with custom generics in `custom_node` example (paradigmxyz#16552)

* feat: configure multiple fallback ubuntu mirrors for win cross-build (paradigmxyz#16550)

* feat(examples): Replace redundant type definitions with a `CustomPooledTransaction` alias in the `custom_node` example (paradigmxyz#16554)

* feat(Makefile): add reth-bench and install-reth-bench makefile targets (paradigmxyz#16553)

* chore: add serde support for CanonStateNotification (paradigmxyz#16557)

* feat: bump to 1.4.5 (paradigmxyz#16561)

* revert: fix(engine): recompute trie updates for forked blocks (paradigmxyz#16500) (paradigmxyz#16565)

* feat(examples): Replace `CustomConsensusBuilder` using `OpConsensusBuilder` with custom generics in `custom_node` example (paradigmxyz#16560)

* feat: bump to 1.4.6 (paradigmxyz#16566)

* chore: added map helper fns for OpAddOns (paradigmxyz#16541)

* feat(e2e): add helper functions for FCU status checks (paradigmxyz#16548)

Signed-off-by: 7suyash7 <[email protected]>

* feat(optimism): Remove bounds on `EthChainSpec` and `Hardforks` for `OpEngineValidator` (paradigmxyz#16574)

Co-authored-by: Arsenii Kulikov <[email protected]>

* revert: ci: deduplicate changelog in release notes (paradigmxyz#16294) (paradigmxyz#16563)

* test: set TreeConfig for nodes in e2e tests (paradigmxyz#16572)

* feat(engine): allow configuring tree to always use state root fallback (paradigmxyz#16569)

* chore: Remove Withdrawals Provider (paradigmxyz#16538)

* chore: make clippy happy (paradigmxyz#16581)

* chore: put dev name last (paradigmxyz#16585)

* chore(deps): weekly `cargo update` (paradigmxyz#16587)

Co-authored-by: github-merge-queue <[email protected]>

* chore: rm some clones (paradigmxyz#16588)

* chore: simplify `NetworkPrimitives` (paradigmxyz#16556)

* feat(optimism): Remove bounds on `EthChainSpec` and `Hardforks` for `ChainSpec` in the `evm` crate (paradigmxyz#16576)

Co-authored-by: Arsenii Kulikov <[email protected]>

* deps: revm `24.0.1` (paradigmxyz#16604)

* chore: bump version to 1.4.7 (paradigmxyz#16606)

* refactor: replace generics with Node types for `OpExecutorBuilder` (paradigmxyz#16601)

Co-authored-by: Arsenii Kulikov <[email protected]>

* test(e2e): set test_state_root_fallback for deep reorg test (paradigmxyz#16573)

* ci: special treatment for release candidate tags (paradigmxyz#16603)

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix(era): Use the `url` as the index page for HTTP hosts (paradigmxyz#16555)

* docs(net): replace 404 link message.rs (paradigmxyz#16597)

* refactor: relax `OpAddOns` trait bounds (paradigmxyz#16582)

* feat: fix tx da scaling  (paradigmxyz#16558)

* feat: fixed  missing blocktimestamp in logs subscription (paradigmxyz#16598)

* chore: make clippy happy (paradigmxyz#16611)

* chore: Remove OmmersProvider (paradigmxyz#16539)

* feat: 🐛 fix using latest header (paradigmxyz#16614)

* fix: wrap forkid entry for eth key (paradigmxyz#16616)

* refactor(e2e): split actions.rs into submodule (paradigmxyz#16609)

* feat: impl compress decompress for customheader (paradigmxyz#16617)

* feat(`OpAddOns`): relax trait bounds for generic engine validators (paradigmxyz#16615)

* feat: enable external `EngineApi` access (paradigmxyz#16248)

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* feat(rpc): Add `Primitives` associated type to `TransactionCompat` trait (paradigmxyz#16626)

* chore: update Grafana dashboard (paradigmxyz#16575)

* refactor: extract common pool setup logic for Eth and Op nodes (paradigmxyz#16607)

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Arsenii Kulikov <[email protected]>

* chore: include target and latest in error message (paradigmxyz#16630)

* chore: removed alloy_consensus::Header constraint in setup_without_db  (paradigmxyz#16623)

* feat: make `NewBlock` message generic (paradigmxyz#16627)

* feat(`OpEngineValidator`): `pub` `chain_spec` (paradigmxyz#16638)

* chore: add minSuggestedPriorityFee check to OpEthapi (paradigmxyz#16637)

Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* chore: make `BuildOutcome::map_payload` pub (paradigmxyz#16636)

* fix: check additional settings when enabling discv5 (paradigmxyz#16643)

* fix(engine): recompute trie updates for forked blocks (paradigmxyz#16568)

* feat: json ChainNotification subscription endpoint (paradigmxyz#16644)

* feat(txpool): EIP-7825 max gas limit check (paradigmxyz#16648)

* perf(engine): do not use state root task for non-empty revert state (paradigmxyz#16631)

* feat: configure interval for trusted peer DNS resolution (paradigmxyz#16647)

* ci: use different names for latest and RC Docker jobs (paradigmxyz#16654)

* perf: use already recovered signer (paradigmxyz#16640)

* chore: bump default gas limit 60M mainnet (paradigmxyz#16650)

* chore: add Hoodi to docker compose files, fix checkpoint sync URLs (paradigmxyz#16653)

* feat: trigger resolution task when multiple connection failures occur for a trusted peer (paradigmxyz#16652)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: downgrade warn log (paradigmxyz#16649)

* refactor: unify pending_block fn (paradigmxyz#16596)

* chore: used Opstorage impl for optimism (paradigmxyz#16594)

Co-authored-by: Arsenii Kulikov <[email protected]>

* chore: bump version 1.4.8 (paradigmxyz#16655)

* feat(txns): Implement flexible TxType filtering policy in TransactionManager (paradigmxyz#16495)

Signed-off-by: 7suyash7 <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* ci: check Cargo version against Git tag in release.yml (paradigmxyz#16657)

* ci: remove build-release-binaries.yml workflow (paradigmxyz#16658)

* feat: make RpcAddOns::launch_add_ons_with composable (paradigmxyz#16646)

* feat: Added Socket Address to the network discovery error (paradigmxyz#16659)

* refactor: simplify `--dev` setup (paradigmxyz#16662)

* chore: relax primtives types bound (paradigmxyz#16663)

* refactor(txns): inline validation logic and remove validation.rs (paradigmxyz#16668)

Signed-off-by: 7suyash7 <[email protected]>

* feat(era): Implement retry policy for HTTP client downloader (paradigmxyz#16664)

* feat(GasOracle): new function to compute median (paradigmxyz#16645)

Co-authored-by: Matthias Seitz <[email protected]>

* perf: remove some clones around `eth_call` (paradigmxyz#16665)

* chore(ci): unpin teku image for kurtosis-op ethereum-package (paradigmxyz#16670)

* chore: Add metrics for supervisor RPC error (paradigmxyz#16111)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: extract engine tests to separate file (paradigmxyz#16671)

* docs: Fix typos in documentation and README (paradigmxyz#16677)

* feat: cross-compile to RISC-V (paradigmxyz#16426)

Co-authored-by: Alexey Shekhirin <[email protected]>

* ci: do not check version for release dry runs (paradigmxyz#16679)

* chore: add remaining snap request trait functions (paradigmxyz#16682)

* feat(test): rewrite test_engine_tree_fcu_canon_chain_insertion using e2e framework (paradigmxyz#16678)

* refactor: replace unbounded HashMap with LruMap in precompile cache (paradigmxyz#16326)

Co-authored-by: Ayushdubey86 <[email protected]>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: Alexey Shekhirin <[email protected]>

* fix: use correct sender_id_or_create as intended (paradigmxyz#16684)

* perf(engine): enable precompile cache by default (paradigmxyz#16685)

* feat: introduced  NoopPayloadServiceBuilder (paradigmxyz#16667)

Co-authored-by: Arsenii Kulikov <[email protected]>

* chore: remove noisy log (paradigmxyz#16691)

* fix: ensure that downloader sync gap is only set once (paradigmxyz#16693)

* perf(pipeline): speed up fork unwinding with exponential backoff (paradigmxyz#16622)

Signed-off-by: 7suyash7 <[email protected]>
Co-authored-by: Arsenii Kulikov <[email protected]>

* fix: correctly set sync gap (paradigmxyz#16695)

* feat(test): rewrite test_engine_tree_fcu_reorg_with_all_blocks using e2e framework (paradigmxyz#16692)

* feat: add always-process-payload-attributes-on-canonical-head config (paradigmxyz#16676)

* feat: introduce supported range to Peer info (paradigmxyz#16687)

Co-authored-by: Matthias Seitz <[email protected]>

* chore: revert docker compose volume renames (paradigmxyz#16688)

* feat(test): rewrite test_engine_tree_valid_forks_with_older_canonical_head using e2e framework (paradigmxyz#16699)

* feat(stages): Add ERA pre-merge history import stage (paradigmxyz#16008)

Co-authored-by: Arsenii Kulikov <[email protected]>

* feat: add block range hint to BlockBodies download request (paradigmxyz#16703)

Co-authored-by: Matthias Seitz <[email protected]>

* feat(test): rewrite test_engine_tree_valid_and_invalid_forks_with_older_canonical_head_e2e using e2e framework (paradigmxyz#16705)

* chore: remove accidentally commited files (paradigmxyz#16708)

* chore: depreacte ethexecutorbuilder (paradigmxyz#16709)

* chore: re-export all types in node mod (paradigmxyz#16710)

* chore: re-export cli-util crate (paradigmxyz#16711)

* feat: added Body::contains_transaction(&TxHash) (paradigmxyz#16715)

* feat: fn that replaces and merges network module's endpoints (paradigmxyz#16619)

Signed-off-by: Aliaksei Misiukevich <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>

* perf: remove redundant clones (paradigmxyz#16716)

* feat: added closure and relaxed setup_without_evm function (paradigmxyz#16720)

* test: multi-node support in e2e testsuite (paradigmxyz#16725)

* feat(rpc): Implement `TransactionCompat` for generic RPC response builder (paradigmxyz#16694)

* feat: remove preemptive excess blob gas check (paradigmxyz#16729)

* chore(ci): update hive expected failures (paradigmxyz#16737)

* chore: keep .git folder in docker (paradigmxyz#16733)

* chore: make ethpool alias generic over tx (paradigmxyz#16713)

* chore: relax eth network builder (paradigmxyz#16714)

* feat: Add info logs for beginning of newPayload requests  (paradigmxyz#16463)

* feat: missing tx implementations

Signed-off-by: Gregory Edison <[email protected]>

* feat: changes related to rpc api changes

Signed-off-by: Gregory Edison <[email protected]>

* feat: misc updates

Signed-off-by: Gregory Edison <[email protected]>

* feat: fix lints

Signed-off-by: Gregory Edison <[email protected]>

* feat: fix lints + release

Signed-off-by: Gregory Edison <[email protected]>

---------

Signed-off-by: Gregory Edison <[email protected]>
Signed-off-by: 7suyash7 <[email protected]>
Signed-off-by: Aliaksei Misiukevich <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: Femi Bankole <[email protected]>
Co-authored-by: Federico Gimenez <[email protected]>
Co-authored-by: stevencartavia <[email protected]>
Co-authored-by: fantasyup <[email protected]>
Co-authored-by: Roman Krasiuk <[email protected]>
Co-authored-by: kevaundray <[email protected]>
Co-authored-by: Alexey Shekhirin <[email protected]>
Co-authored-by: AlexYue <[email protected]>
Co-authored-by: Shourya Chaudhry <[email protected]>
Co-authored-by: Max Bytefield <[email protected]>
Co-authored-by: Roman Hodulák <[email protected]>
Co-authored-by: Dan Cline <[email protected]>
Co-authored-by: Arsenii Kulikov <[email protected]>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: Torprius <[email protected]>
Co-authored-by: Oleg <[email protected]>
Co-authored-by: Ayush Dubey <[email protected]>
Co-authored-by: Emilia Hane <[email protected]>
Co-authored-by: Denis Kolodin <[email protected]>
Co-authored-by: Shane K Moore <[email protected]>
Co-authored-by: Acat <[email protected]>
Co-authored-by: Suyash Nayan <[email protected]>
Co-authored-by: Solar Mithril <[email protected]>
Co-authored-by: crStiv <[email protected]>
Co-authored-by: Ishika Choudhury <[email protected]>
Co-authored-by: Merkel Tranjes <[email protected]>
Co-authored-by: Veer Chaurasia <[email protected]>
Co-authored-by: DaniPopes <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue <[email protected]>
Co-authored-by: Bilog WEB3 <[email protected]>
Co-authored-by: Soubhik Singha Mahapatra <[email protected]>
Co-authored-by: HxSimo <[email protected]>
Co-authored-by: Louis Brown <[email protected]>
Co-authored-by: Alex Pikme <[email protected]>
Co-authored-by: cakevm <[email protected]>
Co-authored-by: Haardik <[email protected]>
Co-authored-by: strmfos <[email protected]>
Co-authored-by: Ethan Nguyen <[email protected]>
Co-authored-by: Federico Gimenez <[email protected]>
Co-authored-by: Léa Narzis <[email protected]>
Co-authored-by: Tbelleng <[email protected]>
Co-authored-by: Hai | RISE <[email protected]>
Co-authored-by: Muhammed Kadir Yücel <[email protected]>
Co-authored-by: Odinson <[email protected]>
Co-authored-by: Mablr <[email protected]>
Co-authored-by: futreall <[email protected]>
Co-authored-by: Leonardo Arias <[email protected]>
Co-authored-by: gejeduck <[email protected]>
Co-authored-by: Rohit Singh Rathaur <[email protected]>
Co-authored-by: Ayushdubey86 <[email protected]>
Co-authored-by: Igor Markelov <[email protected]>
Co-authored-by: Aliaksei Misiukevich <[email protected]>
Co-authored-by: Udoagwa Franklin <[email protected]>
PeaStew pushed a commit to NeuraProtocol/reth-new-consensus that referenced this pull request Jun 24, 2025
…Manager (paradigmxyz#16495)

Signed-off-by: 7suyash7 <[email protected]>
Co-authored-by: Matthias Seitz <[email protected]>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-networking Related to networking in general

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants