Skip to content

Commit bddd394

Browse files
committed
pass in complete transaction to filter func
1 parent a8ef87f commit bddd394

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

crates/rbuilder/src/live_builder/order_input/blob_type_order_filter.rs

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1-
use alloy_eips::eip7594::BlobTransactionSidecarVariant;
1+
use alloy_eips::{eip7594::BlobTransactionSidecarVariant, Typed2718};
22

33
use crate::{
44
live_builder::order_input::replaceable_order_sink::ReplaceableOrderSink,
5-
primitives::{BundleReplacementData, Order, ShareBundleReplacementKey},
5+
primitives::{
6+
BundleReplacementData, Order, ShareBundleReplacementKey,
7+
TransactionSignedEcRecoveredWithBlobs,
8+
},
69
};
710

811
/// Filters out Orders with incorrect blobs (pre/post fusaka).
@@ -25,42 +28,45 @@ impl<FilterFunc> std::fmt::Debug for BlobTypeOrderFilter<FilterFunc> {
2528
/// Filters out EIP-7594 style blobs, supports only EIP-4844 style.
2629
pub fn new_pre_fusaka(
2730
sink: Box<dyn ReplaceableOrderSink>,
28-
) -> BlobTypeOrderFilter<impl Fn(&BlobTransactionSidecarVariant) -> bool + Send + Sync> {
29-
BlobTypeOrderFilter::new(sink, |blob| {
30-
matches!(blob, BlobTransactionSidecarVariant::Eip4844(_))
31+
) -> BlobTypeOrderFilter<impl Fn(&TransactionSignedEcRecoveredWithBlobs) -> bool + Send + Sync> {
32+
BlobTypeOrderFilter::new(sink, |tx| {
33+
if tx.is_eip4844() {
34+
matches!(*tx.blobs_sidecar, BlobTransactionSidecarVariant::Eip4844(_))
35+
} else {
36+
true
37+
}
3138
})
3239
}
3340

3441
/// Filters out EIP-4844 style, supports only EIP-7594 style blobs.
3542
pub fn new_fusaka(
3643
sink: Box<dyn ReplaceableOrderSink>,
37-
) -> BlobTypeOrderFilter<impl Fn(&BlobTransactionSidecarVariant) -> bool + Send + Sync> {
38-
BlobTypeOrderFilter::new(sink, |blob| match blob {
39-
BlobTransactionSidecarVariant::Eip4844(sidecar) => {
40-
if sidecar.blobs.len() > 0 {
41-
false
42-
} else {
43-
true
44-
}
44+
) -> BlobTypeOrderFilter<impl Fn(&TransactionSignedEcRecoveredWithBlobs) -> bool + Send + Sync> {
45+
BlobTypeOrderFilter::new(sink, |tx| {
46+
if tx.is_eip4844() {
47+
matches!(*tx.blobs_sidecar, BlobTransactionSidecarVariant::Eip7594(_))
48+
} else {
49+
true
4550
}
46-
BlobTransactionSidecarVariant::Eip7594(_sidecar) => true,
4751
})
4852
}
4953

50-
impl<FilterFunc: Fn(&BlobTransactionSidecarVariant) -> bool> BlobTypeOrderFilter<FilterFunc> {
54+
impl<FilterFunc: Fn(&TransactionSignedEcRecoveredWithBlobs) -> bool>
55+
BlobTypeOrderFilter<FilterFunc>
56+
{
5157
fn new(sink: Box<dyn ReplaceableOrderSink>, filter_func: FilterFunc) -> Self {
5258
Self { sink, filter_func }
5359
}
5460
}
5561

56-
impl<FilterFunc: Fn(&BlobTransactionSidecarVariant) -> bool + Send + Sync> ReplaceableOrderSink
57-
for BlobTypeOrderFilter<FilterFunc>
62+
impl<FilterFunc: Fn(&TransactionSignedEcRecoveredWithBlobs) -> bool + Send + Sync>
63+
ReplaceableOrderSink for BlobTypeOrderFilter<FilterFunc>
5864
{
5965
fn insert_order(&mut self, order: Order) -> bool {
6066
if order
6167
.list_txs()
6268
.iter()
63-
.all(|(tx, _)| (self.filter_func)(tx.blobs_sidecar.as_ref()))
69+
.all(|(tx, _)| (self.filter_func)(tx))
6470
{
6571
self.sink.insert_order(order)
6672
} else {

0 commit comments

Comments
 (0)