@@ -9,33 +9,10 @@ namespace Nethermind.Evm.TransactionProcessing;
99
1010public interface ITransactionProcessor
1111{
12- /// <summary>
13- /// Execute transaction, commit state
14- /// </summary>
15- TransactionResult Execute ( Transaction transaction , ITxTracer txTracer ) ;
16-
17- /// <summary>
18- /// Call transaction, rollback state
19- /// </summary>
20- TransactionResult CallAndRestore ( Transaction transaction , ITxTracer txTracer ) ;
21-
22- /// <summary>
23- /// Execute transaction, keep the state uncommitted
24- /// </summary>
25- TransactionResult BuildUp ( Transaction transaction , ITxTracer txTracer ) ;
26-
27- /// <summary>
28- /// Call transaction, no validations, commit state
29- /// Will NOT charge gas from sender account, so stateDiff will miss gas fee
30- /// </summary>
31- TransactionResult Trace ( Transaction transaction , ITxTracer txTracer ) ;
32-
33- /// <summary>
34- /// Call transaction, no validations, don't commit state
35- /// Will NOT charge gas from sender account
36- /// </summary>
37- TransactionResult Warmup ( Transaction transaction , ITxTracer txTracer ) ;
38-
12+ TransactionResult Process (
13+ Transaction transaction ,
14+ ITxTracer txTracer ,
15+ ExecutionOptions options ) ;
3916
4017 void SetBlockExecutionContext ( BlockHeader blockHeader ) ;
4118 void SetBlockExecutionContext ( in BlockExecutionContext blockExecutionContext ) ;
@@ -49,44 +26,80 @@ bool TryCalculateBlobBaseFee(BlockHeader header, Transaction transaction,
4926
5027public static class ITransactionProcessorExtensions
5128{
52- public static TransactionResult Execute ( this ITransactionProcessor transactionProcessor , Transaction transaction , BlockHeader header , ITxTracer txTracer )
53- {
54- transactionProcessor . SetBlockExecutionContext ( header ) ;
55- return transactionProcessor . Execute ( transaction , txTracer ) ;
56- }
57-
58- public static TransactionResult CallAndRestore ( this ITransactionProcessor transactionProcessor , Transaction transaction , BlockHeader header , ITxTracer txTracer )
59- {
60- transactionProcessor . SetBlockExecutionContext ( header ) ;
61- return transactionProcessor . CallAndRestore ( transaction , txTracer ) ;
62- }
63-
64- public static TransactionResult Execute ( this ITransactionProcessor transactionProcessor , Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
65- {
66- transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
67- return transactionProcessor . Execute ( transaction , txTracer ) ;
68- }
69-
70- public static TransactionResult CallAndRestore ( this ITransactionProcessor transactionProcessor , Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
71- {
72- transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
73- return transactionProcessor . CallAndRestore ( transaction , txTracer ) ;
74- }
75-
76- public static TransactionResult BuildUp ( this ITransactionProcessor transactionProcessor , Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
77- {
78- transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
79- return transactionProcessor . BuildUp ( transaction , txTracer ) ;
80- }
81- public static TransactionResult Trace ( this ITransactionProcessor transactionProcessor , Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
82- {
83- transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
84- return transactionProcessor . Trace ( transaction , txTracer ) ;
85- }
86-
87- public static TransactionResult Warmup ( this ITransactionProcessor transactionProcessor , Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
29+ extension ( ITransactionProcessor transactionProcessor )
8830 {
89- transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
90- return transactionProcessor . Warmup ( transaction , txTracer ) ;
31+ /// <summary>
32+ /// Execute transaction, commit state.
33+ /// </summary>
34+ public TransactionResult Execute ( Transaction transaction , ITxTracer txTracer )
35+ => transactionProcessor . Process ( transaction , txTracer , ExecutionOptions . Commit ) ;
36+
37+ /// <summary>
38+ /// Call transaction, rollback state.
39+ /// </summary>
40+ public TransactionResult CallAndRestore ( Transaction transaction , ITxTracer txTracer )
41+ => transactionProcessor . Process ( transaction , txTracer , ExecutionOptions . CommitAndRestore ) ;
42+
43+ /// <summary>
44+ /// Execute transaction, keep the state uncommitted (block-building mode).
45+ /// </summary>
46+ public TransactionResult BuildUp ( Transaction transaction , ITxTracer txTracer )
47+ => transactionProcessor . Process ( transaction , txTracer , ExecutionOptions . BuildUp ) ;
48+
49+ /// <summary>
50+ /// Call transaction, no validations, commit state.
51+ /// Will NOT charge gas from sender account, so stateDiff will miss gas fee.
52+ /// </summary>
53+ public TransactionResult Trace ( Transaction transaction , ITxTracer txTracer )
54+ => transactionProcessor . Process ( transaction , txTracer , ExecutionOptions . SkipValidationAndCommit ) ;
55+
56+ /// <summary>
57+ /// Call transaction, no validations, don't commit state.
58+ /// Will NOT charge gas from sender account.
59+ /// </summary>
60+ public TransactionResult Warmup ( Transaction transaction , ITxTracer txTracer )
61+ => transactionProcessor . Process ( transaction , txTracer , ExecutionOptions . Warmup | ExecutionOptions . SkipValidation ) ;
62+
63+ public TransactionResult Execute ( Transaction transaction , BlockHeader header , ITxTracer txTracer )
64+ {
65+ transactionProcessor . SetBlockExecutionContext ( header ) ;
66+ return transactionProcessor . Execute ( transaction , txTracer ) ;
67+ }
68+
69+ public TransactionResult CallAndRestore ( Transaction transaction , BlockHeader header , ITxTracer txTracer )
70+ {
71+ transactionProcessor . SetBlockExecutionContext ( header ) ;
72+ return transactionProcessor . CallAndRestore ( transaction , txTracer ) ;
73+ }
74+
75+ public TransactionResult Execute ( Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
76+ {
77+ transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
78+ return transactionProcessor . Execute ( transaction , txTracer ) ;
79+ }
80+
81+ public TransactionResult CallAndRestore ( Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
82+ {
83+ transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
84+ return transactionProcessor . CallAndRestore ( transaction , txTracer ) ;
85+ }
86+
87+ public TransactionResult BuildUp ( Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
88+ {
89+ transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
90+ return transactionProcessor . BuildUp ( transaction , txTracer ) ;
91+ }
92+
93+ public TransactionResult Trace ( Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
94+ {
95+ transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
96+ return transactionProcessor . Trace ( transaction , txTracer ) ;
97+ }
98+
99+ public TransactionResult Warmup ( Transaction transaction , in BlockExecutionContext blockExecutionContext , ITxTracer txTracer )
100+ {
101+ transactionProcessor . SetBlockExecutionContext ( in blockExecutionContext ) ;
102+ return transactionProcessor . Warmup ( transaction , txTracer ) ;
103+ }
91104 }
92105}
0 commit comments