Skip to content

Commit 0419fcc

Browse files
committed
Fixed linting, refactored typing
1 parent 0c83274 commit 0419fcc

File tree

2 files changed

+43
-17
lines changed

2 files changed

+43
-17
lines changed

packages/sequencer/src/protocol/production/sequencing/BlockProductionService.ts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@ import {
1515
} from "@proto-kit/protocol";
1616
import { Field } from "o1js";
1717
import { log } from "@proto-kit/common";
18+
import { match } from "ts-pattern";
1819

19-
import { Block, BlockWithResult } from "../../../storage/model/Block";
20+
import {
21+
Block,
22+
BlockWithResult,
23+
TransactionExecutionResult,
24+
} from "../../../storage/model/Block";
2025
import { CachedStateService } from "../../../state/state/CachedStateService";
2126
import { PendingTransaction } from "../../../mempool/PendingTransaction";
2227
import { AsyncStateService } from "../../../state/async/AsyncStateService";
@@ -27,9 +32,16 @@ import { trace } from "../../../logging/trace";
2732
import {
2833
BlockTrackers,
2934
executeWithExecutionContext,
35+
TransactionExecutionResultStatus,
3036
TransactionExecutionService,
3137
} from "./TransactionExecutionService";
3238

39+
function isIncludedTxs(
40+
x: TransactionExecutionResultStatus
41+
): x is { status: "included"; result: TransactionExecutionResult } {
42+
return x.status === "included";
43+
}
44+
3345
@injectable()
3446
@scoped(Lifecycle.ContainerScoped)
3547
export class BlockProductionService {
@@ -146,8 +158,12 @@ export class BlockProductionService {
146158
return undefined;
147159
}
148160

161+
const includedTransactions = executionResults
162+
.filter(isIncludedTxs)
163+
.map((x) => x.result);
164+
149165
const block: Omit<Block, "hash"> = {
150-
transactions: executionResults.map((x) => x.result),
166+
transactions: includedTransactions,
151167
transactionsHash: newBlockState.transactionList.commitment,
152168
fromEternalTransactionsHash: lastBlock.toEternalTransactionsHash,
153169
toEternalTransactionsHash:
@@ -169,10 +185,17 @@ export class BlockProductionService {
169185

170186
const hash = Block.hash(block);
171187

172-
const includedTxs = executionResults.map((x) => ({
173-
hash: x.result.tx.hash().toString(),
174-
type: x.status,
175-
}));
188+
const includedTxs = executionResults.map((x) => {
189+
const txHash = match(x)
190+
.with({ status: "included" }, ({ result }) => result.tx)
191+
.otherwise(({ tx }) => tx)
192+
.hash()
193+
.toString();
194+
return {
195+
hash: txHash,
196+
type: x.status,
197+
};
198+
});
176199

177200
return {
178201
block: {

packages/sequencer/src/protocol/production/sequencing/TransactionExecutionService.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,14 @@ function traceLogSTs(msg: string, stateTransitions: StateTransition<any>[]) {
197197
);
198198
}
199199

200+
export type TransactionExecutionResultStatus =
201+
| {
202+
result: TransactionExecutionResult;
203+
status: "included";
204+
}
205+
| { tx: PendingTransaction; status: "skipped" }
206+
| { tx: PendingTransaction; status: "shouldRemove" };
207+
200208
@injectable()
201209
@scoped(Lifecycle.ContainerScoped)
202210
export class TransactionExecutionService {
@@ -319,23 +327,18 @@ export class TransactionExecutionService {
319327
);
320328
}
321329

330+
// eslint-disable-next-line sonarjs/cognitive-complexity
322331
public async createExecutionTraces(
323332
asyncStateService: CachedStateService,
324333
transactions: PendingTransaction[],
325334
networkState: NetworkState,
326335
state: BlockTrackers
327336
): Promise<{
328337
blockState: BlockTrackers;
329-
executionResults: {
330-
result: TransactionExecutionResult;
331-
status: "included" | "skipped" | "shouldRemove";
332-
}[];
338+
executionResults: TransactionExecutionResultStatus[];
333339
}> {
334340
let blockState = state;
335-
const executionResults: {
336-
result: TransactionExecutionResult;
337-
status: "included" | "skipped" | "shouldRemove";
338-
}[] = [];
341+
const executionResults: TransactionExecutionResultStatus[] = [];
339342

340343
const networkStateHash = networkState.hash();
341344

@@ -367,7 +370,7 @@ export class TransactionExecutionService {
367370
`Error in inclusion of tx, ${actionMessage}: Protocol hooks not executable: ${executionTrace.statusMessage ?? "unknown reason"}`
368371
);
369372
executionResults.push({
370-
result: executionTrace,
373+
tx,
371374
status: shouldRemove ? "shouldRemove" : "skipped",
372375
});
373376
} else {
@@ -377,9 +380,9 @@ export class TransactionExecutionService {
377380
executionResults.push({ result: executionTrace, status: "included" });
378381
}
379382
} catch (error) {
380-
console.log("error", error);
381383
if (error instanceof Error) {
382-
log.error("Error in inclusion of tx, skipping", error);
384+
log.error("Error in inclusion of tx, dropping", error);
385+
executionResults.push({ tx, status: "shouldRemove" });
383386
}
384387
}
385388
}

0 commit comments

Comments
 (0)