Skip to content

Commit 62119ca

Browse files
authored
feat: simplify InspectorContext (#2036)
1 parent 249531c commit 62119ca

File tree

4 files changed

+38
-55
lines changed

4 files changed

+38
-55
lines changed

crates/inspector/src/inspector_context.rs

Lines changed: 32 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -14,37 +14,28 @@ use crate::{journal::JournalExtGetter, GetInspector, Inspector, InspectorCtx};
1414

1515
/// EVM context contains data that EVM needs for execution.
1616
#[derive(Clone, Debug)]
17-
pub struct InspectorContext<INSP, DB, CTX>
18-
where
19-
CTX: DatabaseGetter<Database = DB>,
20-
{
17+
pub struct InspectorContext<INSP, CTX> {
2118
pub inspector: INSP,
2219
pub inner: CTX,
2320
pub frame_input_stack: Vec<FrameInput>,
2421
}
2522

26-
impl<
27-
INSP: Inspector<CTX, EthInterpreter>,
28-
DB: Database,
29-
CTX: EthContext + DatabaseGetter<Database = DB>,
30-
> EthContext for InspectorContext<INSP, DB, CTX>
23+
impl<INSP: Inspector<CTX, EthInterpreter>, CTX: EthContext + DatabaseGetter> EthContext
24+
for InspectorContext<INSP, CTX>
3125
{
3226
}
3327

34-
impl<
35-
INSP: Inspector<CTX, EthInterpreter>,
36-
DB: Database,
37-
CTX: EthContext + DatabaseGetter<Database = DB>,
38-
> EthContext for &mut InspectorContext<INSP, DB, CTX>
28+
impl<INSP: Inspector<CTX, EthInterpreter>, CTX: EthContext + DatabaseGetter> EthContext
29+
for &mut InspectorContext<INSP, CTX>
3930
{
4031
}
4132

42-
impl<INSP, DB, CTX> InspectorContext<INSP, DB, CTX>
33+
impl<INSP, CTX> InspectorContext<INSP, CTX>
4334
where
4435
CTX: BlockGetter
4536
+ TransactionGetter
4637
+ CfgGetter
47-
+ DatabaseGetter<Database = DB>
38+
+ DatabaseGetter
4839
+ JournalGetter
4940
+ ErrorGetter
5041
+ Host,
@@ -58,10 +49,10 @@ where
5849
}
5950
}
6051

61-
impl<INSP, DB, CTX> InspectorCtx for InspectorContext<INSP, DB, CTX>
52+
impl<INSP, CTX> InspectorCtx for InspectorContext<INSP, CTX>
6253
where
6354
INSP: GetInspector<CTX, EthInterpreter>,
64-
CTX: DatabaseGetter<Database = DB>,
55+
CTX: DatabaseGetter,
6556
{
6657
type IT = EthInterpreter;
6758

@@ -146,9 +137,9 @@ where
146137
}
147138
}
148139

149-
impl<INSP, DB, CTX> CfgGetter for InspectorContext<INSP, DB, CTX>
140+
impl<INSP, CTX> CfgGetter for InspectorContext<INSP, CTX>
150141
where
151-
CTX: CfgGetter + DatabaseGetter<Database = DB>,
142+
CTX: CfgGetter + DatabaseGetter,
152143
{
153144
type Cfg = <CTX as CfgGetter>::Cfg;
154145

@@ -157,10 +148,9 @@ where
157148
}
158149
}
159150

160-
impl<INSP, DB, CTX> JournalGetter for InspectorContext<INSP, DB, CTX>
151+
impl<INSP, CTX> JournalGetter for InspectorContext<INSP, CTX>
161152
where
162-
CTX: JournalGetter + DatabaseGetter<Database = DB>,
163-
DB: Database,
153+
CTX: JournalGetter + DatabaseGetter,
164154
{
165155
type Journal = <CTX as JournalGetter>::Journal;
166156

@@ -173,20 +163,18 @@ where
173163
}
174164
}
175165

176-
impl<INSP: GetInspector<CTX, EthInterpreter>, DB: Database, CTX> Host
177-
for InspectorContext<INSP, DB, CTX>
166+
impl<INSP: GetInspector<CTX, EthInterpreter>, CTX> Host for InspectorContext<INSP, CTX>
178167
where
179-
CTX: Host + DatabaseGetter<Database = DB>,
168+
CTX: Host + DatabaseGetter,
180169
{
181-
fn set_error(&mut self, error: <DB as Database>::Error) {
170+
fn set_error(&mut self, error: <CTX::Database as Database>::Error) {
182171
self.inner.set_error(error);
183172
}
184173
}
185174

186-
impl<INSP, DB, CTX> DatabaseGetter for InspectorContext<INSP, DB, CTX>
175+
impl<INSP, CTX> DatabaseGetter for InspectorContext<INSP, CTX>
187176
where
188-
CTX: DatabaseGetter<Database = DB>,
189-
DB: Database,
177+
CTX: DatabaseGetter,
190178
{
191179
type Database = <CTX as DatabaseGetter>::Database;
192180

@@ -199,9 +187,9 @@ where
199187
}
200188
}
201189

202-
impl<INSP, DB, CTX> ErrorGetter for InspectorContext<INSP, DB, CTX>
190+
impl<INSP, CTX> ErrorGetter for InspectorContext<INSP, CTX>
203191
where
204-
CTX: ErrorGetter + JournalGetter<Database = DB>,
192+
CTX: ErrorGetter + JournalGetter,
205193
{
206194
type Error = <CTX as ErrorGetter>::Error;
207195

@@ -210,9 +198,9 @@ where
210198
}
211199
}
212200

213-
impl<INSP, DB, CTX> TransactionGetter for InspectorContext<INSP, DB, CTX>
201+
impl<INSP, CTX> TransactionGetter for InspectorContext<INSP, CTX>
214202
where
215-
CTX: TransactionGetter + DatabaseGetter<Database = DB>,
203+
CTX: TransactionGetter + DatabaseGetter,
216204
{
217205
type Transaction = <CTX as TransactionGetter>::Transaction;
218206

@@ -221,18 +209,18 @@ where
221209
}
222210
}
223211

224-
impl<INSP, DB, CTX> TransactionSetter for InspectorContext<INSP, DB, CTX>
212+
impl<INSP, CTX> TransactionSetter for InspectorContext<INSP, CTX>
225213
where
226-
CTX: TransactionSetter + DatabaseGetter<Database = DB>,
214+
CTX: TransactionSetter + DatabaseGetter,
227215
{
228216
fn set_tx(&mut self, tx: <Self as TransactionGetter>::Transaction) {
229217
self.inner.set_tx(tx);
230218
}
231219
}
232220

233-
impl<INSP, DB, CTX> BlockGetter for InspectorContext<INSP, DB, CTX>
221+
impl<INSP, CTX> BlockGetter for InspectorContext<INSP, CTX>
234222
where
235-
CTX: BlockGetter + DatabaseGetter<Database = DB>,
223+
CTX: BlockGetter + DatabaseGetter,
236224
{
237225
type Block = <CTX as BlockGetter>::Block;
238226

@@ -241,18 +229,18 @@ where
241229
}
242230
}
243231

244-
impl<INSP, DB, CTX> BlockSetter for InspectorContext<INSP, DB, CTX>
232+
impl<INSP, CTX> BlockSetter for InspectorContext<INSP, CTX>
245233
where
246-
CTX: BlockSetter + DatabaseGetter<Database = DB>,
234+
CTX: BlockSetter + DatabaseGetter,
247235
{
248236
fn set_block(&mut self, block: <Self as BlockGetter>::Block) {
249237
self.inner.set_block(block);
250238
}
251239
}
252240

253-
impl<INSP, DB, CTX> JournalExtGetter for InspectorContext<INSP, DB, CTX>
241+
impl<INSP, CTX> JournalExtGetter for InspectorContext<INSP, CTX>
254242
where
255-
CTX: JournalExtGetter + DatabaseGetter<Database = DB>,
243+
CTX: JournalExtGetter + DatabaseGetter,
256244
{
257245
type JournalExt = <CTX as JournalExtGetter>::JournalExt;
258246

@@ -261,9 +249,9 @@ where
261249
}
262250
}
263251

264-
impl<INSP, DB: Database, CTX> PerformantContextAccess for InspectorContext<INSP, DB, CTX>
252+
impl<INSP, CTX> PerformantContextAccess for InspectorContext<INSP, CTX>
265253
where
266-
CTX: PerformantContextAccess<Error = DB::Error> + DatabaseGetter<Database = DB>,
254+
CTX: PerformantContextAccess + DatabaseGetter,
267255
{
268256
type Error = <CTX as PerformantContextAccess>::Error;
269257

crates/optimism/src/l1block.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,8 @@ impl<BLOCK, TX, SPEC, DB: Database, JOURNAL: Journal<Database = DB>> L1BlockInfo
264264
}
265265
}
266266

267-
impl<INSP, DB, CTX: DatabaseGetter<Database = DB> + L1BlockInfoGetter> L1BlockInfoGetter
268-
for InspectorContext<INSP, DB, CTX>
267+
impl<INSP, CTX: DatabaseGetter + L1BlockInfoGetter> L1BlockInfoGetter
268+
for InspectorContext<INSP, CTX>
269269
{
270270
fn l1_block_info(&self) -> &L1BlockInfo {
271271
self.inner.l1_block_info()

crates/optimism/src/transaction/abstraction.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ impl<BLOCK, TX: Transaction, CFG, DB: Database, JOURNAL: Journal<Database = DB>,
3434
}
3535
}
3636

37-
impl<INSP, DB, CTX: DatabaseGetter<Database = DB> + OpTxGetter + TransactionGetter> OpTxGetter
38-
for InspectorContext<INSP, DB, CTX>
37+
impl<INSP, CTX: DatabaseGetter + OpTxGetter + TransactionGetter> OpTxGetter
38+
for InspectorContext<INSP, CTX>
3939
{
4040
type OpTransaction = <CTX as OpTxGetter>::OpTransaction;
4141

examples/cheatcode_inspector/src/main.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,7 @@ trait DatabaseExt: Journal {
287287
TxT: Transaction,
288288
CfgT: Cfg,
289289
PrecompileT: PrecompileProvider<
290-
Context = InspectorContext<
291-
InspectorT,
292-
InMemoryDB,
293-
Context<BlockT, TxT, CfgT, InMemoryDB, Backend>,
294-
>,
290+
Context = InspectorContext<InspectorT, Context<BlockT, TxT, CfgT, InMemoryDB, Backend>>,
295291
Output = InterpreterResult,
296292
Error = EVMError<Infallible, InvalidTransaction>,
297293
>;
@@ -387,7 +383,7 @@ where
387383
context
388384
.journal()
389385
.method_that_takes_inspector_as_argument::<&mut Self, BlockT, TxT, CfgT, EthPrecompileProvider<
390-
InspectorContext<&mut Self, InMemoryDB, Context<BlockT, TxT, CfgT, InMemoryDB, Backend>>,
386+
InspectorContext<&mut Self, Context<BlockT, TxT, CfgT, InMemoryDB, Backend>>,
391387
EVMError<Infallible, InvalidTransaction>,
392388
>>(
393389
Env {
@@ -486,7 +482,6 @@ where
486482

487483
let mut inspector_context = InspectorContext::<
488484
InspectorT,
489-
InMemoryDB,
490485
Context<BlockT, TxT, CfgT, InMemoryDB, Backend>,
491486
>::new(context, inspector);
492487

0 commit comments

Comments
 (0)