@@ -8,7 +8,7 @@ use reth_node_api::{FullNodeComponents, NodeTypes};
8
8
use reth_optimism_primitives:: { OpPrimitives , OpReceipt , OpTransactionSigned } ;
9
9
use reth_primitives:: { Block , RecoveredBlock } ;
10
10
use reth_provider:: { Chain , ExecutionOutcome } ;
11
- use tracing:: { info, warn} ;
11
+ use tracing:: { info, warn, error } ;
12
12
13
13
use crate :: { metrics:: OpRBuilderMetrics , tx_signer:: Signer } ;
14
14
@@ -147,19 +147,51 @@ fn decode_chain_into_builder_txs(
147
147
. blocks_and_receipts ( )
148
148
// Get all receipts
149
149
. map ( |( block, receipts) | {
150
+ error ! (
151
+ block_number = block. number,
152
+ tx_count = block. body( ) . transactions. len( ) ,
153
+ "Processing block transactions"
154
+ ) ;
155
+
150
156
let has_builder_tx =
151
157
block
152
158
. body ( )
153
159
. transactions
154
160
. iter ( )
155
161
. zip ( receipts. iter ( ) )
156
162
. any ( move |( tx, receipt) | {
157
- receipt. status ( )
158
- && tx. input ( ) . starts_with ( OP_BUILDER_TX_PREFIX )
159
- && tx. recover_signer ( ) . is_ok_and ( |signer| {
160
- builder_signer. is_some_and ( |bs| signer == bs. address )
161
- } )
163
+ let starts_with_prefix = tx. input ( ) . starts_with ( OP_BUILDER_TX_PREFIX ) ;
164
+ let is_successful = receipt. status ( ) ;
165
+ let sender_recovery = tx. recover_signer ( ) ;
166
+ error ! (
167
+ tx_hash = ?tx. hash( ) ,
168
+ sender_recovery = ?sender_recovery,
169
+ "Transaction builder check details"
170
+ ) ;
171
+ let sender_matches = sender_recovery. is_ok_and ( |signer| {
172
+ builder_signer. is_some_and ( |bs| signer == bs. address )
173
+ } ) ;
174
+
175
+ error ! (
176
+ tx_hash = ?tx. hash( ) ,
177
+ starts_with_prefix,
178
+ is_successful,
179
+ sender_matches,
180
+ expected_signer = ?builder_signer. as_ref( ) . map( |s| s. address) ,
181
+ "Transaction builder check details"
182
+ ) ;
183
+
184
+ is_successful && starts_with_prefix && sender_matches
162
185
} ) ;
186
+
187
+ if !has_builder_tx && builder_signer. is_some ( ) {
188
+ error ! (
189
+ block_number = block. number,
190
+ expected_signer = ?builder_signer. as_ref( ) . map( |s| s. address) ,
191
+ "No builder transactions found in block"
192
+ ) ;
193
+ }
194
+
163
195
( block, has_builder_tx)
164
196
} )
165
197
. collect ( )
0 commit comments