Skip to content

Commit a967a16

Browse files
committed
moved transactionDispatcher to MinaBaseLayer
1 parent 0ceb431 commit a967a16

File tree

3 files changed

+37
-20
lines changed

3 files changed

+37
-20
lines changed

packages/sequencer/src/protocol/baselayer/MinaBaseLayer.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,23 @@ export interface MinaBaseLayerConfig {
4242
| LocalMinaBaseLayerConfig
4343
| LightnetMinaBaseLayerConfig
4444
| RemoteMinaBaseLayerConfig;
45+
/**
46+
* Configuration for the L1 transaction dispatcher (polling + status checks).
47+
* Defaults are applied internally.
48+
*/
49+
transactionDispatcher?: {
50+
pollIntervalMs?: number;
51+
statusCheckIntervalMs?: number;
52+
inclusionTimeoutMs?: number;
53+
};
4554
}
4655

56+
const DEFAULT_L1_TRANSACTION_DISPATCHER_CONFIG = {
57+
pollIntervalMs: 5000,
58+
statusCheckIntervalMs: 5000,
59+
inclusionTimeoutMs: 10 * 60 * 1000,
60+
} as const;
61+
4762
@sequencerModule()
4863
export class MinaBaseLayer
4964
extends SequencerModule<MinaBaseLayerConfig>
@@ -78,6 +93,13 @@ export class MinaBaseLayer
7893
useClass: MinaTransactionSender,
7994
},
8095

96+
L1TransactionDispatcherConfig: {
97+
useValue: {
98+
...DEFAULT_L1_TRANSACTION_DISPATCHER_CONFIG,
99+
...(this.config.transactionDispatcher ?? {}),
100+
},
101+
},
102+
81103
OutgoingMessageAdapter: {
82104
useClass: DefaultOutgoingMessageAdapter,
83105
},

packages/sequencer/src/settlement/transactions/L1TransactionDispatcher.ts

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,14 @@ import { MinaSigner } from "../MinaSigner";
1111
import { L1TransactionRetryStrategy } from "./L1TransactionRetryStrategy";
1212
import { TxStatusWaiter } from "./TxStatusWaiter";
1313
import { checkZkappTransactionStatus } from "./ZkappTransactionStatus";
14+
import { MinaBaseLayer } from "../../protocol/baselayer/MinaBaseLayer";
1415

1516
export interface DispatcherConfig {
1617
pollIntervalMs?: number;
1718
statusCheckIntervalMs?: number;
1819
inclusionTimeoutMs?: number;
1920
}
2021

21-
const DEFAULT_CONFIG: Required<DispatcherConfig> = {
22-
pollIntervalMs: 5000,
23-
statusCheckIntervalMs: 5000,
24-
inclusionTimeoutMs: 10 * 60 * 1000,
25-
};
26-
2722
@injectable()
2823
export class L1TransactionDispatcher {
2924
private pollingTimeout?: NodeJS.Timeout;
@@ -41,22 +36,12 @@ export class L1TransactionDispatcher {
4136
private readonly retryStrategy: L1TransactionRetryStrategy,
4237
@inject("SettlementSigner") private readonly signer: MinaSigner,
4338
private readonly waiter: TxStatusWaiter,
44-
private readonly dispatcherConfig: DispatcherConfig = {}
39+
@inject("L1TransactionDispatcherConfig")
40+
private readonly config: Required<DispatcherConfig>,
41+
@inject("MinaBaseLayer")
42+
private readonly baseLayer: MinaBaseLayer
4543
) {}
4644

47-
private get config(): Required<DispatcherConfig> {
48-
return {
49-
pollIntervalMs:
50-
this.dispatcherConfig.pollIntervalMs ?? DEFAULT_CONFIG.pollIntervalMs,
51-
statusCheckIntervalMs:
52-
this.dispatcherConfig.statusCheckIntervalMs ??
53-
DEFAULT_CONFIG.statusCheckIntervalMs,
54-
inclusionTimeoutMs:
55-
this.dispatcherConfig.inclusionTimeoutMs ??
56-
DEFAULT_CONFIG.inclusionTimeoutMs,
57-
};
58-
}
59-
6045
public start() {
6146
this.startPolling();
6247
}
@@ -198,6 +183,15 @@ export class L1TransactionDispatcher {
198183
return;
199184
}
200185

186+
// don't check status on local chain
187+
if (!this.baseLayer.isLocalBlockChain()) {
188+
await this.pendingStorage.update(record.id, {
189+
status: "included",
190+
});
191+
this.waiter.notifyIncluded(record.id, record.hash);
192+
return;
193+
}
194+
201195
// Single status check (no long blocking loops)
202196
const result = await checkZkappTransactionStatus(record.hash);
203197
if (result.success) {

packages/sequencer/test/settlement/Settlement-only.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ export const settlementOnlyTestFn = (
127127
FeeStrategy: {},
128128
SettlementModule: {},
129129
SequencerStartupModule: {},
130+
L1TransactionRetryStrategy: {},
130131

131132
TaskQueue: {
132133
simulatedDuration: 0,

0 commit comments

Comments
 (0)