1
- use alloy_eips:: eip7594:: BlobTransactionSidecarVariant ;
1
+ use alloy_eips:: { eip7594:: BlobTransactionSidecarVariant , Typed2718 } ;
2
2
3
3
use crate :: {
4
4
live_builder:: order_input:: replaceable_order_sink:: ReplaceableOrderSink ,
5
- primitives:: { BundleReplacementData , Order , ShareBundleReplacementKey } ,
5
+ primitives:: {
6
+ BundleReplacementData , Order , ShareBundleReplacementKey ,
7
+ TransactionSignedEcRecoveredWithBlobs ,
8
+ } ,
6
9
} ;
7
10
8
11
/// Filters out Orders with incorrect blobs (pre/post fusaka).
@@ -25,42 +28,45 @@ impl<FilterFunc> std::fmt::Debug for BlobTypeOrderFilter<FilterFunc> {
25
28
/// Filters out EIP-7594 style blobs, supports only EIP-4844 style.
26
29
pub fn new_pre_fusaka (
27
30
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
+ }
31
38
} )
32
39
}
33
40
34
41
/// Filters out EIP-4844 style, supports only EIP-7594 style blobs.
35
42
pub fn new_fusaka (
36
43
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
45
50
}
46
- BlobTransactionSidecarVariant :: Eip7594 ( _sidecar) => true ,
47
51
} )
48
52
}
49
53
50
- impl < FilterFunc : Fn ( & BlobTransactionSidecarVariant ) -> bool > BlobTypeOrderFilter < FilterFunc > {
54
+ impl < FilterFunc : Fn ( & TransactionSignedEcRecoveredWithBlobs ) -> bool >
55
+ BlobTypeOrderFilter < FilterFunc >
56
+ {
51
57
fn new ( sink : Box < dyn ReplaceableOrderSink > , filter_func : FilterFunc ) -> Self {
52
58
Self { sink, filter_func }
53
59
}
54
60
}
55
61
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 >
58
64
{
59
65
fn insert_order ( & mut self , order : Order ) -> bool {
60
66
if order
61
67
. list_txs ( )
62
68
. iter ( )
63
- . all ( |( tx, _) | ( self . filter_func ) ( tx. blobs_sidecar . as_ref ( ) ) )
69
+ . all ( |( tx, _) | ( self . filter_func ) ( tx) )
64
70
{
65
71
self . sink . insert_order ( order)
66
72
} else {
0 commit comments