@aztec-labs/bot 6.0.0-rc.1 → 6.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.d.ts +21 -12
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +17 -18
- package/dest/cross_chain_bot.d.ts +2 -2
- package/dest/cross_chain_bot.d.ts.map +1 -1
- package/dest/cross_chain_bot.js +2 -1
- package/dest/factory.d.ts +1 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +2 -2
- package/dest/inbox_bot.d.ts +31 -6
- package/dest/inbox_bot.d.ts.map +1 -1
- package/dest/inbox_bot.js +91 -20
- package/dest/inbox_bot_metrics.d.ts +2 -2
- package/dest/inbox_bot_metrics.d.ts.map +1 -1
- package/dest/inbox_bot_metrics.js +1 -0
- package/dest/store/inbox_store.d.ts +3 -1
- package/dest/store/inbox_store.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/config.ts +30 -25
- package/src/cross_chain_bot.ts +5 -2
- package/src/factory.ts +5 -2
- package/src/inbox_bot.ts +100 -24
- package/src/inbox_bot_metrics.ts +1 -0
package/dest/config.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export type BotInboxConsumeMode = (typeof BotInboxConsumeMode)[number];
|
|
|
14
14
|
export declare const MAX_INBOX_MESSAGES_PER_BUCKET = 256;
|
|
15
15
|
/** Largest number of messages that fit in a single Inbox bucket, plus the one that rolls it over. */
|
|
16
16
|
export declare const MAX_INBOX_MESSAGES_PER_BATCH: number;
|
|
17
|
+
/** Effective `l1ToL2SeedCount` for every other mode when the operator did not set one. */
|
|
18
|
+
export declare const DEFAULT_L1_TO_L2_SEED_COUNT = 1;
|
|
17
19
|
export declare enum SupportedTokenContracts {
|
|
18
20
|
TokenContract = "TokenContract",
|
|
19
21
|
PrivateTokenContract = "PrivateTokenContract"
|
|
@@ -71,8 +73,11 @@ export type BotConfig = {
|
|
|
71
73
|
botMode: BotMode;
|
|
72
74
|
/** Number of L2→L1 messages per tx (crosschain mode). */
|
|
73
75
|
l2ToL1MessagesPerTx: number;
|
|
74
|
-
/**
|
|
75
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Max L1→L2 messages to keep in-flight (crosschain and inbox modes). Optional so the mode-specific default can
|
|
78
|
+
* tell an unset value from an explicit one; {@link applyInboxModeDefaults} resolves it.
|
|
79
|
+
*/
|
|
80
|
+
l1ToL2SeedCount?: number;
|
|
76
81
|
/** How many L1→L2 messages the inbox bot sends per atomic L1 batch (inbox mode). */
|
|
77
82
|
inboxMessagesPerBatch: number;
|
|
78
83
|
/** Which L2 domain the inbox bot consumes its messages through (inbox mode). */
|
|
@@ -117,7 +122,7 @@ export declare const BotConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
|
117
122
|
transfer: "transfer";
|
|
118
123
|
}>>;
|
|
119
124
|
l2ToL1MessagesPerTx: z.ZodDefault<z.ZodNumber>;
|
|
120
|
-
l1ToL2SeedCount: z.
|
|
125
|
+
l1ToL2SeedCount: z.ZodOptional<z.ZodNumber>;
|
|
121
126
|
inboxMessagesPerBatch: z.ZodDefault<z.ZodNumber>;
|
|
122
127
|
inboxConsumeMode: z.ZodDefault<z.ZodEnum<{
|
|
123
128
|
mixed: "mixed";
|
|
@@ -145,7 +150,7 @@ export declare const BotConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
|
145
150
|
stopWhenUnhealthy: boolean;
|
|
146
151
|
botMode: "amm" | "crosschain" | "inbox" | "transfer";
|
|
147
152
|
l2ToL1MessagesPerTx: number;
|
|
148
|
-
l1ToL2SeedCount
|
|
153
|
+
l1ToL2SeedCount?: number | undefined;
|
|
149
154
|
inboxMessagesPerBatch: number;
|
|
150
155
|
inboxConsumeMode: "mixed" | "private" | "public";
|
|
151
156
|
inboxSaturationIntervalSeconds: number;
|
|
@@ -187,7 +192,7 @@ export declare const BotConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
|
187
192
|
stopWhenUnhealthy: boolean;
|
|
188
193
|
botMode: "amm" | "crosschain" | "inbox" | "transfer";
|
|
189
194
|
l2ToL1MessagesPerTx: number;
|
|
190
|
-
l1ToL2SeedCount
|
|
195
|
+
l1ToL2SeedCount?: number | undefined;
|
|
191
196
|
inboxMessagesPerBatch: number;
|
|
192
197
|
inboxConsumeMode: "mixed" | "private" | "public";
|
|
193
198
|
inboxSaturationIntervalSeconds: number;
|
|
@@ -197,15 +202,19 @@ export declare const BotConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
|
197
202
|
export declare const botConfigMappings: ConfigMappingsType<BotConfig>;
|
|
198
203
|
export declare function getBotConfigFromEnv(): BotConfig;
|
|
199
204
|
export declare function getBotDefaultConfig(): BotConfig;
|
|
205
|
+
/** A {@link BotConfig} whose mode-dependent defaults have been resolved, so consumers read plain values. */
|
|
206
|
+
export type ResolvedBotConfig = BotConfig & {
|
|
207
|
+
l1ToL2SeedCount: number;
|
|
208
|
+
};
|
|
200
209
|
/**
|
|
201
|
-
* Returns the config with
|
|
202
|
-
* `getBotDefaultConfig()` and the transfer/amm/crosschain paths are unaffected.
|
|
210
|
+
* Returns the config with mode-dependent defaults applied.
|
|
203
211
|
*
|
|
204
|
-
* Inbox mode needs a far larger outstanding-message allowance than crosschain's single in-flight message.
|
|
205
|
-
*
|
|
206
|
-
*
|
|
212
|
+
* Inbox mode needs a far larger outstanding-message allowance than crosschain's single in-flight message. The
|
|
213
|
+
* default is applied from the absence of a value rather than from it matching the general default: an operator who
|
|
214
|
+
* explicitly asks for one in-flight message in inbox mode gets one, and is then told by
|
|
215
|
+
* {@link assertValidInboxConfig} that it cannot drive a batch, instead of silently running with 512.
|
|
207
216
|
*/
|
|
208
|
-
export declare function applyInboxModeDefaults(config: BotConfig):
|
|
217
|
+
export declare function applyInboxModeDefaults(config: BotConfig): ResolvedBotConfig;
|
|
209
218
|
/**
|
|
210
219
|
* Throws a descriptive error if the config cannot drive the inbox bot. Values are never silently clamped: an
|
|
211
220
|
* operator who asks for an impossible configuration is told, rather than getting a bot that quietly stalls.
|
|
@@ -213,4 +222,4 @@ export declare function applyInboxModeDefaults(config: BotConfig): BotConfig;
|
|
|
213
222
|
export declare function assertValidInboxConfig(config: BotConfig): void;
|
|
214
223
|
export declare function getVersions(): Partial<ComponentsVersions>;
|
|
215
224
|
export {};
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixXQUFXLEVBVVosTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHekQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBRXZGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixRQUFBLE1BQU0sY0FBYyx5REFBMEQsQ0FBQztBQUMvRSxLQUFLLGNBQWMsR0FBRyxDQUFDLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdEQsUUFBQSxNQUFNLE9BQU8scURBQXNELENBQUM7QUFDcEUsS0FBSyxPQUFPLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXhDLFFBQUEsTUFBTSxtQkFBbUIseUNBQTBDLENBQUM7QUFDcEUsbUVBQW1FO0FBQ25FLE1BQU0sTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUV2RSxvR0FBb0c7QUFDcEcsZUFBTyxNQUFNLDZCQUE2QixNQUE4QixDQUFDO0FBRXpFLHFHQUFxRztBQUNyRyxlQUFPLE1BQU0sNEJBQTRCLFFBQW9DLENBQUM7QUFLOUUsMEZBQTBGO0FBQzFGLGVBQU8sTUFBTSwyQkFBMkIsSUFBSSxDQUFDO0FBRTdDLG9CQUFZLHVCQUF1QjtJQUNqQyxhQUFhLGtCQUFrQjtJQUMvQixvQkFBb0IseUJBQXlCO0NBQzlDO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUN0Qiw2REFBNkQ7SUFDN0Qs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
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,kBAAkB,EACvB,WAAW,EAUZ,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAGzD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,6BAA6B,CAAC;AAEvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,cAAc,yDAA0D,CAAC;AAC/E,KAAK,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,QAAA,MAAM,OAAO,qDAAsD,CAAC;AACpE,KAAK,OAAO,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAExC,QAAA,MAAM,mBAAmB,yCAA0C,CAAC;AACpE,mEAAmE;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,oGAAoG;AACpG,eAAO,MAAM,6BAA6B,MAA8B,CAAC;AAEzE,qGAAqG;AACrG,eAAO,MAAM,4BAA4B,QAAoC,CAAC;AAK9E,oBAAY,uBAAuB;IACjC,aAAa,kBAAkB;IAC/B,oBAAoB,yBAAyB;CAC9C;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,gCAAgC;IAChC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,mEAAmE;IACnE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC9C,uEAAuE;IACvE,2BAA2B,EAAE,MAAM,CAAC;IACpC,kDAAkD;IAClD,gBAAgB,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAC9C,6DAA6D;IAC7D,UAAU,EAAE,EAAE,GAAG,SAAS,CAAC;IAC3B,iDAAiD;IACjD,SAAS,EAAE,EAAE,CAAC;IACd,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,gBAAgB,EAAE,WAAW,CAAC;IAC9B,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,EAAE,cAAc,CAAC;IAC5B,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,sBAAsB,EAAE,OAAO,CAAC;IAChC,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4BAA4B;IAC5B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,2DAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dest/config.js
CHANGED
|
@@ -25,7 +25,8 @@ const BotInboxConsumeMode = [
|
|
|
25
25
|
];
|
|
26
26
|
/** Largest number of messages a single Inbox bucket holds before the next message rolls it over. */ export const MAX_INBOX_MESSAGES_PER_BUCKET = MAX_L1_TO_L2_MSGS_PER_BLOCK;
|
|
27
27
|
/** Largest number of messages that fit in a single Inbox bucket, plus the one that rolls it over. */ export const MAX_INBOX_MESSAGES_PER_BATCH = MAX_INBOX_MESSAGES_PER_BUCKET + 1;
|
|
28
|
-
/** Effective `l1ToL2SeedCount` for inbox mode when the operator
|
|
28
|
+
/** Effective `l1ToL2SeedCount` for inbox mode when the operator did not set one. */ const INBOX_DEFAULT_L1_TO_L2_SEED_COUNT = 512;
|
|
29
|
+
/** Effective `l1ToL2SeedCount` for every other mode when the operator did not set one. */ export const DEFAULT_L1_TO_L2_SEED_COUNT = 1;
|
|
29
30
|
export var SupportedTokenContracts = /*#__PURE__*/ function(SupportedTokenContracts) {
|
|
30
31
|
SupportedTokenContracts["TokenContract"] = "TokenContract";
|
|
31
32
|
SupportedTokenContracts["PrivateTokenContract"] = "PrivateTokenContract";
|
|
@@ -58,7 +59,7 @@ export const BotConfigSchema = zodFor()(z.object({
|
|
|
58
59
|
stopWhenUnhealthy: z.boolean(),
|
|
59
60
|
botMode: z.enum(BotMode).default('transfer'),
|
|
60
61
|
l2ToL1MessagesPerTx: z.number().int().nonnegative().default(1),
|
|
61
|
-
l1ToL2SeedCount: z.number().int().nonnegative().
|
|
62
|
+
l1ToL2SeedCount: z.number().int().nonnegative().optional(),
|
|
62
63
|
inboxMessagesPerBatch: z.number().int().min(1).max(MAX_INBOX_MESSAGES_PER_BATCH).default(4),
|
|
63
64
|
inboxConsumeMode: z.enum(BotInboxConsumeMode).default('mixed'),
|
|
64
65
|
inboxSaturationIntervalSeconds: z.number().int().nonnegative().default(86400),
|
|
@@ -232,8 +233,8 @@ export const botConfigMappings = {
|
|
|
232
233
|
},
|
|
233
234
|
l1ToL2SeedCount: {
|
|
234
235
|
env: 'BOT_L1_TO_L2_SEED_COUNT',
|
|
235
|
-
description: 'Max L1→L2 messages to keep in-flight (crosschain and inbox modes)',
|
|
236
|
-
...
|
|
236
|
+
description: 'Max L1→L2 messages to keep in-flight (crosschain and inbox modes). Defaults to ' + `${DEFAULT_L1_TO_L2_SEED_COUNT}, or ${INBOX_DEFAULT_L1_TO_L2_SEED_COUNT} in inbox mode.`,
|
|
237
|
+
...optionalNumberConfigHelper()
|
|
237
238
|
},
|
|
238
239
|
inboxMessagesPerBatch: {
|
|
239
240
|
env: 'BOT_INBOX_MESSAGES_PER_BATCH',
|
|
@@ -268,20 +269,17 @@ export function getBotDefaultConfig() {
|
|
|
268
269
|
return getDefaultConfig(botConfigMappings);
|
|
269
270
|
}
|
|
270
271
|
/**
|
|
271
|
-
* Returns the config with
|
|
272
|
-
* `getBotDefaultConfig()` and the transfer/amm/crosschain paths are unaffected.
|
|
272
|
+
* Returns the config with mode-dependent defaults applied.
|
|
273
273
|
*
|
|
274
|
-
* Inbox mode needs a far larger outstanding-message allowance than crosschain's single in-flight message.
|
|
275
|
-
*
|
|
276
|
-
*
|
|
274
|
+
* Inbox mode needs a far larger outstanding-message allowance than crosschain's single in-flight message. The
|
|
275
|
+
* default is applied from the absence of a value rather than from it matching the general default: an operator who
|
|
276
|
+
* explicitly asks for one in-flight message in inbox mode gets one, and is then told by
|
|
277
|
+
* {@link assertValidInboxConfig} that it cannot drive a batch, instead of silently running with 512.
|
|
277
278
|
*/ export function applyInboxModeDefaults(config) {
|
|
278
|
-
|
|
279
|
-
return config;
|
|
280
|
-
}
|
|
281
|
-
const defaults = getBotDefaultConfig();
|
|
279
|
+
const modeDefault = config.botMode === 'inbox' ? INBOX_DEFAULT_L1_TO_L2_SEED_COUNT : DEFAULT_L1_TO_L2_SEED_COUNT;
|
|
282
280
|
return {
|
|
283
281
|
...config,
|
|
284
|
-
l1ToL2SeedCount: config.l1ToL2SeedCount
|
|
282
|
+
l1ToL2SeedCount: config.l1ToL2SeedCount ?? modeDefault
|
|
285
283
|
};
|
|
286
284
|
}
|
|
287
285
|
/**
|
|
@@ -300,11 +298,12 @@ export function getBotDefaultConfig() {
|
|
|
300
298
|
if (!Number.isInteger(config.inboxSaturationIntervalSeconds) || config.inboxSaturationIntervalSeconds < 0) {
|
|
301
299
|
throw new Error(`Inbox bot requires a nonnegative integer inboxSaturationIntervalSeconds (got ${config.inboxSaturationIntervalSeconds})`);
|
|
302
300
|
}
|
|
303
|
-
|
|
304
|
-
|
|
301
|
+
const l1ToL2SeedCount = config.l1ToL2SeedCount ?? INBOX_DEFAULT_L1_TO_L2_SEED_COUNT;
|
|
302
|
+
if (l1ToL2SeedCount < config.inboxMessagesPerBatch) {
|
|
303
|
+
throw new Error(`Inbox bot requires l1ToL2SeedCount (${l1ToL2SeedCount}) to be at least inboxMessagesPerBatch (${config.inboxMessagesPerBatch}), otherwise the outstanding-message cap blocks production`);
|
|
305
304
|
}
|
|
306
|
-
if (config.inboxSaturationIntervalSeconds > 0 &&
|
|
307
|
-
throw new Error(`Inbox bot with saturation enabled requires l1ToL2SeedCount to be at least ${MAX_INBOX_MESSAGES_PER_BATCH} (got ${
|
|
305
|
+
if (config.inboxSaturationIntervalSeconds > 0 && l1ToL2SeedCount < MAX_INBOX_MESSAGES_PER_BATCH) {
|
|
306
|
+
throw new Error(`Inbox bot with saturation enabled requires l1ToL2SeedCount to be at least ${MAX_INBOX_MESSAGES_PER_BATCH} (got ${l1ToL2SeedCount}), otherwise a saturation batch can never fit under the outstanding-message cap`);
|
|
308
307
|
}
|
|
309
308
|
}
|
|
310
309
|
export function getVersions() {
|
|
@@ -32,7 +32,7 @@ import type { BlockTag } from '@aztec-labs/stdlib/block';
|
|
|
32
32
|
import type { AztecNode, AztecNodeAdmin } from '@aztec-labs/stdlib/interfaces/client';
|
|
33
33
|
import type { EmbeddedWallet } from '@aztec-labs/wallets/embedded';
|
|
34
34
|
import { BaseBot } from './base_bot.js';
|
|
35
|
-
import type
|
|
35
|
+
import { type BotConfig } from './config.js';
|
|
36
36
|
import type { BotStore } from './store/index.js';
|
|
37
37
|
/** Bot that exercises both L2→L1 and L1→L2 cross-chain messaging. */
|
|
38
38
|
export declare class CrossChainBot extends BaseBot {
|
|
@@ -53,4 +53,4 @@ export declare class CrossChainBot extends BaseBot {
|
|
|
53
53
|
private getReadyL1ToL2Message;
|
|
54
54
|
private seedNewL1ToL2Message;
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3Jvc3NfY2hhaW5fYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHOUQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBK0IsTUFBTSxhQUFhLENBQUM7QUFHMUUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUF3QixNQUFNLGtCQUFrQixDQUFDO0FBS3ZFLHlFQUFxRTtBQUNyRSxxQkFBYSxhQUFjLFNBQVEsT0FBTztJQVN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhO0lBQzlCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSztJQUV0QixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQWZoQyxPQUFPLENBQUMsVUFBVSxDQUFLO0lBQ3ZCLE9BQU8sQ0FBQyxjQUFjLENBQUs7SUFDM0IsT0FBTyxDQUFDLGtCQUFrQixDQUE0QjtJQUV0RCxTQUFTLGFBQ1AsSUFBSSxFQUFFLFNBQVMsRUFDZixNQUFNLEVBQUUsY0FBYyxFQUN0QixxQkFBcUIsRUFBRSxZQUFZLEVBQ2xCLFFBQVEsRUFBRSxZQUFZLEVBQ3RCLFFBQVEsRUFBRSx3QkFBd0IsRUFDbEMsV0FBVyxFQUFFLFVBQVUsRUFDdkIsWUFBWSxFQUFFLFVBQVUsRUFDeEIsYUFBYSxFQUFFLE1BQU0sRUFDckIsS0FBSyxFQUFFLFFBQVEsRUFDaEMsTUFBTSxFQUFFLFNBQVMsRUFDQSxZQUFZLENBQUMsNkVBQVUsRUFHekM7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEVBQ2YsWUFBWSxDQUFDLEVBQUUsUUFBUSxHQUN0QixPQUFPLENBQUMsYUFBYSxDQUFDLENBc0J4QjtJQUVELFVBQWdCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FvRC9EO0lBRUQsVUFBeUIsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBd0JwRjtZQUdhLHFCQUFxQjtZQW9CckIsb0JBQW9CO0NBVW5DIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross_chain_bot.d.ts","sourceRoot":"","sources":["../src/cross_chain_bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cross_chain_bot.d.ts","sourceRoot":"","sources":["../src/cross_chain_bot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,aAAa,CAAC;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,kBAAkB,CAAC;AAKvE,yEAAqE;AACrE,qBAAa,aAAc,SAAQ,OAAO;IAStC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAEtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAfhC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;IAEtD,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,wBAAwB,EAClC,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,UAAU,EACxB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,QAAQ,EAChC,MAAM,EAAE,SAAS,EACA,YAAY,CAAC,6EAAU,EAGzC;IAED,OAAa,MAAM,CACjB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,EACf,YAAY,CAAC,EAAE,QAAQ,GACtB,OAAO,CAAC,aAAa,CAAC,CAsBxB;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoD/D;IAED,UAAyB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpF;YAGa,qBAAqB;YAoBrB,oBAAoB;CAUnC"}
|
package/dest/cross_chain_bot.js
CHANGED
|
@@ -27,6 +27,7 @@ import { isL1ToL2MessageReady } from '@aztec-labs/aztec.js/messaging';
|
|
|
27
27
|
import { Fr } from '@aztec-labs/foundation/curves/bn254';
|
|
28
28
|
import { EthAddress } from '@aztec-labs/foundation/eth-address';
|
|
29
29
|
import { BaseBot } from './base_bot.js';
|
|
30
|
+
import { DEFAULT_L1_TO_L2_SEED_COUNT } from './config.js';
|
|
30
31
|
import { BotFactory } from './factory.js';
|
|
31
32
|
import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
32
33
|
/** Stale message threshold: messages older than this are removed. */ const STALE_MESSAGE_THRESHOLD_MS = 2 * 60 * 60 * 1000; // 2 hours
|
|
@@ -58,7 +59,7 @@ import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
|
58
59
|
async createAndSendTx(logCtx) {
|
|
59
60
|
const pendingMessages = await this.store.getUnconsumedL1ToL2Messages();
|
|
60
61
|
// Send an L1→L2 message if we're below the threshold and not already seeding one
|
|
61
|
-
if (pendingMessages.length < this.config.l1ToL2SeedCount && !this.pendingSeedPromise) {
|
|
62
|
+
if (pendingMessages.length < (this.config.l1ToL2SeedCount ?? DEFAULT_L1_TO_L2_SEED_COUNT) && !this.pendingSeedPromise) {
|
|
62
63
|
this.pendingSeedPromise = this.seedNewL1ToL2Message().catch((err)=>this.log.warn(`Failed to seed L1→L2 message: ${err}`, logCtx)).finally(()=>{
|
|
63
64
|
this.pendingSeedPromise = undefined;
|
|
64
65
|
});
|
package/dest/factory.d.ts
CHANGED
|
@@ -77,4 +77,4 @@ export declare class BotFactory {
|
|
|
77
77
|
private bridgeL1FeeJuice;
|
|
78
78
|
protected withNoMinTxsPerBlock<T>(fn: () => Promise<T>): Promise<T>;
|
|
79
79
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBb0I5RCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSTNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3ZFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUF3RCxNQUFNLGFBQWEsQ0FBQztBQUVuRyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU9qRCxxQkFBYSxVQUFVO0lBU25CLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQ3RCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQWJoQyxPQUFPLENBQUMsR0FBRyxDQUF1QjtJQUVsQyxnR0FBZ0c7SUFDaEcsT0FBTyxDQUFDLHFCQUFxQixDQUFLO0lBQ2xDLHNHQUFzRztJQUN0RyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBdUM7SUFFbkUsWUFDbUIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsS0FBSyxFQUFFLFFBQVEsRUFDZixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLENBQUMsNEJBQWdCLEVBQy9CLFlBQVksQ0FBQyw2RUFBVSxFQUt6QztJQUVEOzs7T0FHRztJQUNVLEtBQUssSUFBSSxPQUFPLENBQUM7UUFDNUIsTUFBTSxFQUFFLGNBQWMsQ0FBQztRQUN2QixxQkFBcUIsRUFBRSxZQUFZLENBQUM7UUFDcEMsS0FBSyxFQUFFLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QyxJQUFJLEVBQUUsU0FBUyxDQUFDO1FBQ2hCLFNBQVMsRUFBRSxZQUFZLENBQUM7S0FDekIsQ0FBQyxDQVFEO0lBRVksUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUMvQixNQUFNLEVBQUUsY0FBYyxDQUFDO1FBQ3ZCLHFCQUFxQixFQUFFLFlBQVksQ0FBQztRQUNwQyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxhQUFhLENBQUM7UUFDdEIsTUFBTSxFQUFFLGFBQWEsQ0FBQztRQUN0QixJQUFJLEVBQUUsU0FBUyxDQUFDO0tBQ2pCLENBQUMsQ0FtQ0Q7SUFFRDs7Ozs7O09BTUc7SUFDVSxlQUFlLENBQUMsT0FBTyxHQUFFO1FBQUUsWUFBWSxDQUFDLEVBQUUsT0FBTyxDQUFDO1FBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQU8sR0FBRyxPQUFPLENBQUM7UUFDckcsTUFBTSxFQUFFLGNBQWMsQ0FBQztRQUN2QixxQkFBcUIsRUFBRSxZQUFZLENBQUM7UUFDcEMsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUN2QixJQUFJLEVBQUUsU0FBUyxDQUFDO1FBQ2hCLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQztRQUNuQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0tBQ3ZCLENBQUMsQ0E2RUQ7WUFFYSxrQkFBa0I7WUFTbEIsWUFBWTtZQWtCWixnQkFBZ0I7WUFhaEIsMEJBQTBCO1lBZTFCLFVBQVU7WUF5Q1Ysa0JBQWtCO1lBYWxCLGlCQUFpQjtZQVNqQixrQkFBa0I7WUFRbEIsZ0JBQWdCO1lBYWhCLGVBQWU7WUFzRWYsd0JBQXdCO0lBMkJ0Qyx5R0FBeUc7SUFDekcsT0FBTyxDQUFDLHNCQUFzQjtZQWNoQixxQkFBcUI7WUFnQ3JCLFVBQVU7WUFpRFYsc0JBQXNCO1lBd0J0QixnQkFBZ0I7SUFnQzlCLFVBQWdCLG9CQUFvQixDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQStCeEU7Q0FDRiJ9
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAoB9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAoB9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAI3E,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,KAAK,SAAS,EAAwD,MAAM,aAAa,CAAC;AAEnG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAOjD,qBAAa,UAAU;IASnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAbhC,OAAO,CAAC,GAAG,CAAuB;IAElC,gGAAgG;IAChG,OAAO,CAAC,qBAAqB,CAAK;IAClC,sGAAsG;IACtG,OAAO,CAAC,mBAAmB,CAAC,CAAuC;IAEnE,YACmB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,4BAAgB,EAC/B,YAAY,CAAC,6EAAU,EAKzC;IAED;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC;QAC5B,MAAM,EAAE,cAAc,CAAC;QACvB,qBAAqB,EAAE,YAAY,CAAC;QACpC,KAAK,EAAE,aAAa,GAAG,oBAAoB,CAAC;QAC5C,IAAI,EAAE,SAAS,CAAC;QAChB,SAAS,EAAE,YAAY,CAAC;KACzB,CAAC,CAQD;IAEY,QAAQ,IAAI,OAAO,CAAC;QAC/B,MAAM,EAAE,cAAc,CAAC;QACvB,qBAAqB,EAAE,YAAY,CAAC;QACpC,GAAG,EAAE,WAAW,CAAC;QACjB,MAAM,EAAE,aAAa,CAAC;QACtB,MAAM,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC,CAmCD;IAED;;;;;;OAMG;IACU,eAAe,CAAC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC;QACrG,MAAM,EAAE,cAAc,CAAC;QACvB,qBAAqB,EAAE,YAAY,CAAC;QACpC,QAAQ,EAAE,YAAY,CAAC;QACvB,IAAI,EAAE,SAAS,CAAC;QAChB,QAAQ,EAAE,wBAAwB,CAAC;QACnC,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CA6ED;YAEa,kBAAkB;YASlB,YAAY;YAkBZ,gBAAgB;YAahB,0BAA0B;YAe1B,UAAU;YAyCV,kBAAkB;YAalB,iBAAiB;YASjB,kBAAkB;YAQlB,gBAAgB;YAahB,eAAe;YAsEf,wBAAwB;IA2BtC,yGAAyG;IACzG,OAAO,CAAC,sBAAsB;YAchB,qBAAqB;YAgCrB,UAAU;YAiDV,sBAAsB;YAwBtB,gBAAgB;IAgC9B,UAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA+BxE;CACF"}
|
package/dest/factory.js
CHANGED
|
@@ -18,7 +18,7 @@ import { AMMContract } from '@aztec-labs/noir-contracts.js/AMM';
|
|
|
18
18
|
import { PrivateTokenContract } from '@aztec-labs/noir-contracts.js/PrivateToken';
|
|
19
19
|
import { TokenContract } from '@aztec-labs/noir-contracts.js/Token';
|
|
20
20
|
import { TestContract } from '@aztec-labs/noir-test-contracts.js/Test';
|
|
21
|
-
import { SupportedTokenContracts } from './config.js';
|
|
21
|
+
import { DEFAULT_L1_TO_L2_SEED_COUNT, SupportedTokenContracts } from './config.js';
|
|
22
22
|
import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
23
23
|
import { getBalances, getPrivateBalance, isStandardTokenContract } from './utils.js';
|
|
24
24
|
const MINT_BALANCE = 1e12;
|
|
@@ -144,7 +144,7 @@ export class BotFactory {
|
|
|
144
144
|
const pendingMessages = await this.store.getUnconsumedL1ToL2Messages();
|
|
145
145
|
// Seed initial L1→L2 messages if pipeline is empty. The seeds are sent one at a time: they share the
|
|
146
146
|
// bot's L1 account, so concurrent sends would race on the L1 nonce.
|
|
147
|
-
const seedCount = Math.max(0, this.config.l1ToL2SeedCount - pendingMessages.length);
|
|
147
|
+
const seedCount = Math.max(0, (this.config.l1ToL2SeedCount ?? DEFAULT_L1_TO_L2_SEED_COUNT) - pendingMessages.length);
|
|
148
148
|
const inboxAddress = EthAddress.fromString(l1ContractAddresses.inboxAddress.toString());
|
|
149
149
|
for(let i = 0; i < seedCount; i++){
|
|
150
150
|
await seedL1ToL2Message(l1Client, inboxAddress, contractAddress, rollupVersion, this.store, this.log);
|
package/dest/inbox_bot.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { AztecNode, AztecNodeAdmin } from '@aztec-labs/stdlib/interfaces/cl
|
|
|
5
5
|
import { type TelemetryClient } from '@aztec-labs/telemetry-client';
|
|
6
6
|
import type { EmbeddedWallet } from '@aztec-labs/wallets/embedded';
|
|
7
7
|
import type { BotLifecycle } from './base_bot.js';
|
|
8
|
-
import { type BotConfig } from './config.js';
|
|
8
|
+
import { type BotConfig, type ResolvedBotConfig } from './config.js';
|
|
9
9
|
import { type InboxBotMode } from './inbox_bot_metrics.js';
|
|
10
10
|
import { type InboxL1Producer } from './inbox_l1_producer.js';
|
|
11
11
|
import { type InboxL2Consumer } from './inbox_l2_consumer.js';
|
|
@@ -22,7 +22,7 @@ export interface InboxBotDeps {
|
|
|
22
22
|
consumers: InboxL2Consumers;
|
|
23
23
|
store: InboxStore;
|
|
24
24
|
telemetry: TelemetryClient;
|
|
25
|
-
config:
|
|
25
|
+
config: ResolvedBotConfig;
|
|
26
26
|
dateProvider?: DateProvider;
|
|
27
27
|
syncChainTip?: BlockTag;
|
|
28
28
|
}
|
|
@@ -49,7 +49,7 @@ export declare class InboxBot implements BotLifecycle {
|
|
|
49
49
|
readonly node: AztecNode;
|
|
50
50
|
readonly wallet: EmbeddedWallet;
|
|
51
51
|
readonly defaultAccountAddress: AztecAddress;
|
|
52
|
-
config:
|
|
52
|
+
config: ResolvedBotConfig;
|
|
53
53
|
private readonly contractAddress;
|
|
54
54
|
private readonly producer;
|
|
55
55
|
private readonly consumers;
|
|
@@ -68,7 +68,15 @@ export declare class InboxBot implements BotLifecycle {
|
|
|
68
68
|
private stepInFlight;
|
|
69
69
|
private consumeStepInFlight;
|
|
70
70
|
private consecutiveProductionFailures;
|
|
71
|
-
|
|
71
|
+
/** Consecutive consumption *polls* that threw. Reset by a poll that completes. */
|
|
72
|
+
private consecutivePollFailures;
|
|
73
|
+
/**
|
|
74
|
+
* Consecutive failures of asynchronous consumption work — attempts and replay probes — counted when they settle,
|
|
75
|
+
* whichever poll started them. Kept apart from the poll streak because a poll finishes long before the jobs it
|
|
76
|
+
* dispatched do: resetting one streak for both lets a bot fail one background job per poll forever without ever
|
|
77
|
+
* reaching the unhealthy threshold.
|
|
78
|
+
*/
|
|
79
|
+
private consecutiveBackgroundFailures;
|
|
72
80
|
/**
|
|
73
81
|
* Consumption attempts running in the background, keyed by message id. Membership is what guarantees a message
|
|
74
82
|
* never has two attempts in flight, whatever the persisted state says.
|
|
@@ -189,7 +197,24 @@ export declare class InboxBot implements BotLifecycle {
|
|
|
189
197
|
*/
|
|
190
198
|
private runReplayProbe;
|
|
191
199
|
private runReplayProbeInSpan;
|
|
192
|
-
|
|
200
|
+
/** Records a failure of the consumption poll itself, which a later completed poll clears. */
|
|
201
|
+
private registerPollFailure;
|
|
202
|
+
/**
|
|
203
|
+
* Records a failure of asynchronous consumption work. Only a background operation that actually succeeds clears
|
|
204
|
+
* this streak, so a job that fails once per poll still reaches the unhealthy threshold.
|
|
205
|
+
*/
|
|
206
|
+
private registerBackgroundFailure;
|
|
207
|
+
/**
|
|
208
|
+
* Records that a background attempt or probe reached its expected outcome, clearing the background streak.
|
|
209
|
+
*
|
|
210
|
+
* The streak is shared by every concurrent attempt and probe on purpose, so one success clears failures from other
|
|
211
|
+
* jobs in flight. Health answers whether background consumption is making progress at all, not whether each job
|
|
212
|
+
* is: a bot with one lane succeeding still consumes messages and stays healthy, and each failure is still logged as
|
|
213
|
+
* an error.
|
|
214
|
+
*/
|
|
215
|
+
private registerBackgroundSuccess;
|
|
216
|
+
/** Recomputes consumption health from both streaks, and exits if the operator asked an unhealthy bot to stop. */
|
|
217
|
+
private updateConsumptionHealth;
|
|
193
218
|
private registerProductionFailure;
|
|
194
219
|
/**
|
|
195
220
|
* Exits when the operator asked an unhealthy bot to stop, mirroring `BotRunner`: a container that only fails
|
|
@@ -208,4 +233,4 @@ export declare class InboxBot implements BotLifecycle {
|
|
|
208
233
|
private recordL1Batch;
|
|
209
234
|
private recordSaturationRun;
|
|
210
235
|
}
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5ib3hfYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBUW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBa0IsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3RGLE9BQU8sRUFBeUIsS0FBSyxlQUFlLEVBQWMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RyxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUNMLEtBQUssU0FBUyxFQUdkLEtBQUssaUJBQWlCLEVBR3ZCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFTTCxLQUFLLFlBQVksRUFTbEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXVCLE1BQU0sd0JBQXdCLENBQUM7QUFDbkYsT0FBTyxFQUVMLEtBQUssZUFBZSxFQU1yQixNQUFNLHdCQUF3QixDQUFDO0FBWWhDLE9BQU8sRUFLTCxLQUFLLFVBQVUsRUFFaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQW1HakQsNEdBQTRHO0FBQzVHLE1BQU0sV0FBVyxZQUFZO0lBQzNCLElBQUksRUFBRSxTQUFTLENBQUM7SUFDaEIsTUFBTSxFQUFFLGNBQWMsQ0FBQztJQUN2QixxQkFBcUIsRUFBRSxZQUFZLENBQUM7SUFDcEMsMkdBQTJHO0lBQzNHLGVBQWUsRUFB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
|
package/dest/inbox_bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox_bot.d.ts","sourceRoot":"","sources":["../src/inbox_bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAQnE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtF,OAAO,EAAyB,KAAK,eAAe,EAAc,MAAM,8BAA8B,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"inbox_bot.d.ts","sourceRoot":"","sources":["../src/inbox_bot.ts"],"names":[],"mappings":"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"}
|
package/dest/inbox_bot.js
CHANGED
|
@@ -121,7 +121,13 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
121
121
|
/** Guards the single L1 submission the bot allows in flight, however the step was triggered. */ stepInFlight = false;
|
|
122
122
|
consumeStepInFlight = false;
|
|
123
123
|
consecutiveProductionFailures = 0;
|
|
124
|
-
|
|
124
|
+
/** Consecutive consumption *polls* that threw. Reset by a poll that completes. */ consecutivePollFailures = 0;
|
|
125
|
+
/**
|
|
126
|
+
* Consecutive failures of asynchronous consumption work — attempts and replay probes — counted when they settle,
|
|
127
|
+
* whichever poll started them. Kept apart from the poll streak because a poll finishes long before the jobs it
|
|
128
|
+
* dispatched do: resetting one streak for both lets a bot fail one background job per poll forever without ever
|
|
129
|
+
* reaching the unhealthy threshold.
|
|
130
|
+
*/ consecutiveBackgroundFailures = 0;
|
|
125
131
|
/**
|
|
126
132
|
* Consumption attempts running in the background, keyed by message id. Membership is what guarantees a message
|
|
127
133
|
* never has two attempts in flight, whatever the persisted state says.
|
|
@@ -819,10 +825,12 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
819
825
|
...active
|
|
820
826
|
]);
|
|
821
827
|
await this.scanReplayProbes();
|
|
822
|
-
this
|
|
823
|
-
|
|
828
|
+
// Only the poll's own streak: the jobs this poll dispatched have not settled, and a poll that did nothing
|
|
829
|
+
// is no evidence that the background work which has been failing has recovered.
|
|
830
|
+
this.consecutivePollFailures = 0;
|
|
831
|
+
this.updateConsumptionHealth();
|
|
824
832
|
} catch (err) {
|
|
825
|
-
this.
|
|
833
|
+
this.registerPollFailure(err);
|
|
826
834
|
} finally{
|
|
827
835
|
this.consumeStepInFlight = false;
|
|
828
836
|
}
|
|
@@ -1077,9 +1085,16 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1077
1085
|
*
|
|
1078
1086
|
* `maxPendingTxs` gates the L2 submissions this makes, the way it gates the other bots through `BotRunner`; the
|
|
1079
1087
|
* node is asked only once a message is actually about to be dispatched.
|
|
1088
|
+
*
|
|
1089
|
+
* The pool count is a reading of the past: a job dispatched by this poll does not appear in it until its
|
|
1090
|
+
* transaction reaches the node, which is several awaits away. Availability is therefore computed once and spent
|
|
1091
|
+
* as jobs are launched, with every in-flight attempt counted against the cap. Attempts that have not submitted
|
|
1092
|
+
* yet are counted too, which is conservative in the only safe direction: until the code tracks submitted and
|
|
1093
|
+
* unsubmitted jobs apart, undercounting availability dispatches fewer messages, while overcounting floods a pool
|
|
1094
|
+
* the operator capped on purpose.
|
|
1080
1095
|
*/ async dispatchAttempts(candidates) {
|
|
1081
1096
|
const seen = new Set();
|
|
1082
|
-
let
|
|
1097
|
+
let available;
|
|
1083
1098
|
for (const candidate of candidates){
|
|
1084
1099
|
if (seen.has(candidate.messageId) || this.attemptsInFlight.has(candidate.messageId)) {
|
|
1085
1100
|
continue;
|
|
@@ -1098,18 +1113,29 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1098
1113
|
if (this.attemptsInFlight.size >= MAX_CONCURRENT_CONSUMPTION_ATTEMPTS) {
|
|
1099
1114
|
return;
|
|
1100
1115
|
}
|
|
1101
|
-
if (
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1116
|
+
if (this.config.maxPendingTxs > 0) {
|
|
1117
|
+
if (available === undefined) {
|
|
1118
|
+
const pendingTxCount = await this.node.getPendingTxCount();
|
|
1119
|
+
available = this.config.maxPendingTxs - pendingTxCount - this.attemptsInFlight.size;
|
|
1120
|
+
if (available <= 0) {
|
|
1121
|
+
this.log.debug(`Not dispatching inbox consumption attempts, the node is at its pending transaction cap`, {
|
|
1122
|
+
pendingTxCount,
|
|
1123
|
+
attemptsInFlight: this.attemptsInFlight.size,
|
|
1124
|
+
maxPendingTxs: this.config.maxPendingTxs
|
|
1125
|
+
});
|
|
1126
|
+
return;
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
if (available <= 0) {
|
|
1130
|
+
this.log.debug(`Stopping inbox consumption dispatch, the pending transaction budget is spent`, {
|
|
1131
|
+
maxPendingTxs: this.config.maxPendingTxs,
|
|
1132
|
+
attemptsInFlight: this.attemptsInFlight.size
|
|
1108
1133
|
});
|
|
1109
1134
|
return;
|
|
1110
1135
|
}
|
|
1136
|
+
available--;
|
|
1111
1137
|
}
|
|
1112
|
-
const job = this.runConsumptionAttempt(message).catch((err)=>this.
|
|
1138
|
+
const job = this.runConsumptionAttempt(message).catch((err)=>this.registerBackgroundFailure(err)).finally(()=>this.attemptsInFlight.delete(message.messageId));
|
|
1113
1139
|
this.attemptsInFlight.set(message.messageId, job);
|
|
1114
1140
|
}
|
|
1115
1141
|
}
|
|
@@ -1178,6 +1204,7 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1178
1204
|
batchId: preparing.batchId,
|
|
1179
1205
|
txHash: txHash.toString()
|
|
1180
1206
|
});
|
|
1207
|
+
this.registerBackgroundSuccess();
|
|
1181
1208
|
return;
|
|
1182
1209
|
}
|
|
1183
1210
|
this.log.verbose(`Sent inbox consumption transaction`, {
|
|
@@ -1188,6 +1215,10 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1188
1215
|
globalLeafIndex: sent.globalLeafIndex
|
|
1189
1216
|
});
|
|
1190
1217
|
await this.checkAnchorAdvanced(sent, txHash);
|
|
1218
|
+
// The job succeeds once the submission is recorded, not when its receipt later reaches the completion policy,
|
|
1219
|
+
// which can take many blocks and would let failures on either side of it add up as consecutive. It is cleared
|
|
1220
|
+
// only here, after every step, so a job that fails after its send still counts as failed.
|
|
1221
|
+
this.registerBackgroundSuccess();
|
|
1191
1222
|
}
|
|
1192
1223
|
/**
|
|
1193
1224
|
* The wallet chooses the anchor block when it builds the transaction, which can be newer than the block the
|
|
@@ -1282,7 +1313,7 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1282
1313
|
});
|
|
1283
1314
|
}
|
|
1284
1315
|
if (reason === 'rpc') {
|
|
1285
|
-
this.
|
|
1316
|
+
this.registerBackgroundFailure(err);
|
|
1286
1317
|
}
|
|
1287
1318
|
}
|
|
1288
1319
|
/** Polls the receipts of consumption transactions already submitted, one message at a time. */ async pollConsumptionReceipts(messages) {
|
|
@@ -1437,6 +1468,7 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1437
1468
|
this.readinessBackfill.set(completed.messageId, this.dateProvider.now());
|
|
1438
1469
|
}
|
|
1439
1470
|
await this.recordMessageMilestone(completed, 'completed');
|
|
1471
|
+
this.registerBackgroundSuccess();
|
|
1440
1472
|
}
|
|
1441
1473
|
/**
|
|
1442
1474
|
* Checks that the consuming transaction's effects carry the nullifier this message's consumption must emit. A
|
|
@@ -1561,10 +1593,22 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1561
1593
|
this.log.warn(`Giving up on the replay probe for a batch whose nullifier never became visible`, {
|
|
1562
1594
|
batchId: batch.batchId
|
|
1563
1595
|
});
|
|
1596
|
+
// The check is recorded as failed before the batch is marked probed. Marking it probed alone would let a
|
|
1597
|
+
// run whose messages all reached a terminal success close as a success, with replay protection never
|
|
1598
|
+
// actually demonstrated.
|
|
1599
|
+
await this.recordCheck('replay_rejection', 'failed', {
|
|
1600
|
+
batchId: batch.batchId,
|
|
1601
|
+
messageId: spent.messageId,
|
|
1602
|
+
reason: 'probe_timeout'
|
|
1603
|
+
});
|
|
1604
|
+
this.recordFailure('replay_unproven', {
|
|
1605
|
+
batchId: batch.batchId,
|
|
1606
|
+
messageId: spent.messageId
|
|
1607
|
+
});
|
|
1564
1608
|
await this.store.recordBatchProbe(batch.batchId, 'replay');
|
|
1565
1609
|
continue;
|
|
1566
1610
|
}
|
|
1567
|
-
this.probesInFlight.set(batch.batchId, this.runReplayProbe(batch.batchId, spent).catch((err)=>this.
|
|
1611
|
+
this.probesInFlight.set(batch.batchId, this.runReplayProbe(batch.batchId, spent).catch((err)=>this.registerBackgroundFailure(err)).finally(()=>this.probesInFlight.delete(batch.batchId)));
|
|
1568
1612
|
}
|
|
1569
1613
|
}
|
|
1570
1614
|
/**
|
|
@@ -1615,6 +1659,7 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1615
1659
|
mode: opposite
|
|
1616
1660
|
});
|
|
1617
1661
|
await this.store.recordBatchProbe(batchId, 'replay');
|
|
1662
|
+
this.registerBackgroundSuccess();
|
|
1618
1663
|
} else {
|
|
1619
1664
|
this.log.warn(`Replay probe was inconclusive; it will be tried again`, {
|
|
1620
1665
|
batchId,
|
|
@@ -1637,14 +1682,40 @@ const INBOX_MESSAGE_ID_SPAN_ATTRIBUTE = 'aztec.bot.inbox.message_id';
|
|
|
1637
1682
|
});
|
|
1638
1683
|
await this.store.recordBatchProbe(batchId, 'replay');
|
|
1639
1684
|
}
|
|
1640
|
-
|
|
1641
|
-
this.
|
|
1685
|
+
/** Records a failure of the consumption poll itself, which a later completed poll clears. */ registerPollFailure(err) {
|
|
1686
|
+
this.consecutivePollFailures++;
|
|
1642
1687
|
this.log.error(`Inbox bot consumption step failed`, {
|
|
1643
|
-
|
|
1688
|
+
consecutivePollFailures: this.consecutivePollFailures,
|
|
1644
1689
|
err
|
|
1645
1690
|
});
|
|
1646
|
-
|
|
1647
|
-
|
|
1691
|
+
this.updateConsumptionHealth();
|
|
1692
|
+
}
|
|
1693
|
+
/**
|
|
1694
|
+
* Records a failure of asynchronous consumption work. Only a background operation that actually succeeds clears
|
|
1695
|
+
* this streak, so a job that fails once per poll still reaches the unhealthy threshold.
|
|
1696
|
+
*/ registerBackgroundFailure(err) {
|
|
1697
|
+
this.consecutiveBackgroundFailures++;
|
|
1698
|
+
this.log.error(`Inbox bot background consumption work failed`, {
|
|
1699
|
+
consecutiveBackgroundFailures: this.consecutiveBackgroundFailures,
|
|
1700
|
+
err
|
|
1701
|
+
});
|
|
1702
|
+
this.updateConsumptionHealth();
|
|
1703
|
+
}
|
|
1704
|
+
/**
|
|
1705
|
+
* Records that a background attempt or probe reached its expected outcome, clearing the background streak.
|
|
1706
|
+
*
|
|
1707
|
+
* The streak is shared by every concurrent attempt and probe on purpose, so one success clears failures from other
|
|
1708
|
+
* jobs in flight. Health answers whether background consumption is making progress at all, not whether each job
|
|
1709
|
+
* is: a bot with one lane succeeding still consumes messages and stays healthy, and each failure is still logged as
|
|
1710
|
+
* an error.
|
|
1711
|
+
*/ registerBackgroundSuccess() {
|
|
1712
|
+
this.consecutiveBackgroundFailures = 0;
|
|
1713
|
+
this.updateConsumptionHealth();
|
|
1714
|
+
}
|
|
1715
|
+
/** Recomputes consumption health from both streaks, and exits if the operator asked an unhealthy bot to stop. */ updateConsumptionHealth() {
|
|
1716
|
+
const limit = this.config.maxConsecutiveErrors;
|
|
1717
|
+
this.consumptionHealthy = limit <= 0 || this.consecutivePollFailures < limit && this.consecutiveBackgroundFailures < limit;
|
|
1718
|
+
if (!this.consumptionHealthy) {
|
|
1648
1719
|
this.exitIfUnhealthy();
|
|
1649
1720
|
}
|
|
1650
1721
|
}
|
|
@@ -41,7 +41,7 @@ export type InboxBotBlockRelation = (typeof InboxBotBlockRelations)[number];
|
|
|
41
41
|
export declare const InboxBotChecks: readonly ["unknown_message", "event_integrity", "index_match", "readiness_witness", "consumption_nullifier", "replay_rejection", "bucket_rollover"];
|
|
42
42
|
export type InboxBotCheck = (typeof InboxBotChecks)[number];
|
|
43
43
|
/** Bounded reason a message or batch failed. */
|
|
44
|
-
export declare const InboxBotReasons: readonly ["l1_submission", "l1_revert", "rpc", "simulation", "l2_drop", "l2_revert", "timeout", "api_inconsistency", "invalid_witness", "invalid_consumption", "replay_accepted", "bucket_mismatch", "reorg"];
|
|
44
|
+
export declare const InboxBotReasons: readonly ["l1_submission", "l1_revert", "rpc", "simulation", "l2_drop", "l2_revert", "timeout", "api_inconsistency", "invalid_witness", "invalid_consumption", "replay_accepted", "replay_unproven", "bucket_mismatch", "reorg"];
|
|
45
45
|
export type InboxBotReason = (typeof InboxBotReasons)[number];
|
|
46
46
|
/** Chain tip a readiness check is anchored at. */
|
|
47
47
|
export declare const InboxBotAnchorPolicies: readonly ["latest", "proposed", "checkpointed", "proven", "finalized"];
|
|
@@ -168,4 +168,4 @@ export declare class InboxBotMetrics {
|
|
|
168
168
|
private messageCountSeeds;
|
|
169
169
|
private checkSeeds;
|
|
170
170
|
}
|
|
171
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfYm90X21ldHJpY3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmJveF9ib3RfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQVFMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFHWixNQUFNLDhCQUE4QixDQUFDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCwrQ0FBK0M7QUFDL0MsZUFBTyxNQUFNLGFBQWEsZ0NBQWlDLENBQUM7QUFDNUQsTUFBTSxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQU8sYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFMUQsMENBQTBDO0FBQzFDLGVBQU8sTUFBTSxpQkFBaUIsbUNBQW9DLENBQUM7QUFDbkUsTUFBTSxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRWxFLCtEQUErRDtBQUMvRCxlQUFPLE1BQU0sY0FBYyxtSUFNakIsQ0FBQztBQUNYLE1BQU0sTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUFPLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVELG1DQUFtQztBQUNuQyxlQUFPLE1BQU0sa0JBQWtCLHdGQVFyQixDQUFDO0FBQ1gsTUFBTSxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXBFLHlGQUF5RjtBQUN6RixlQUFPLE1BQU0sc0JBQXNCLG1EQUFvRCxDQUFDO0FBQ3hGLE1BQU0sTUFBTSxxQkFBcUIsR0FBRyxDQUFDLE9BQU8sc0JBQXNCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1RSw4Q0FBOEM7QUFDOUMsZUFBTyxNQUFNLGNBQWMscUpBUWpCLENBQUM7QUFDWCxNQUFN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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox_bot_metrics.d.ts","sourceRoot":"","sources":["../src/inbox_bot_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAQL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,aAAa,gCAAiC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,mCAAoC,CAAC;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,+DAA+D;AAC/D,eAAO,MAAM,cAAc,mIAMjB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,mCAAmC;AACnC,eAAO,MAAM,kBAAkB,wFAQrB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,mDAAoD,CAAC;AACxF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,8CAA8C;AAC9C,eAAO,MAAM,cAAc,qJAQjB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,gDAAgD;AAChD,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"inbox_bot_metrics.d.ts","sourceRoot":"","sources":["../src/inbox_bot_metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,7 @@ export declare const InboxMessageRecordSchema: z.ZodObject<{
|
|
|
92
92
|
l2_revert: "l2_revert";
|
|
93
93
|
reorg: "reorg";
|
|
94
94
|
replay_accepted: "replay_accepted";
|
|
95
|
+
replay_unproven: "replay_unproven";
|
|
95
96
|
rpc: "rpc";
|
|
96
97
|
simulation: "simulation";
|
|
97
98
|
timeout: "timeout";
|
|
@@ -154,6 +155,7 @@ export declare const InboxBatchRecordSchema: z.ZodObject<{
|
|
|
154
155
|
l2_revert: "l2_revert";
|
|
155
156
|
reorg: "reorg";
|
|
156
157
|
replay_accepted: "replay_accepted";
|
|
158
|
+
replay_unproven: "replay_unproven";
|
|
157
159
|
rpc: "rpc";
|
|
158
160
|
simulation: "simulation";
|
|
159
161
|
timeout: "timeout";
|
|
@@ -357,4 +359,4 @@ export declare class InboxStore {
|
|
|
357
359
|
private requireBatch;
|
|
358
360
|
private requireMessage;
|
|
359
361
|
}
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5ib3hfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZS9pbmJveF9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFzQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFXeEIsT0FBTyxLQUFLLEVBQ1YsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osY0FBYyxFQUNkLGdCQUFnQixFQUNoQixhQUFhLEVBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQzs7Ozs7O0dBTUc7QUFDSCxlQUFPLE1BQU0sa0JBQWtCLGtIQVNyQixDQUFDO0FBQ1gsTUFBTSxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXBFLHFDQUFxQztBQUNyQyxlQUFPLE1BQU0sMEJBQTBCLCtDQUFnRCxDQUFDO0FBQ3hGLE1BQU0sTUFBTSx5QkFBeUIsR0FBRyxDQUFDLE9BQU8sMEJBQTBCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUVwRixnRUFBZ0U7QUFDaEUsd0JBQWdCLDJCQUEyQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsR0FBRyxLQUFLLElBQUkseUJBQXlCLENBRXhHO0FBRUQ7Ozs7O0dBS0c7QUFDSCxlQUFPLE1BQU0sZ0JBQWdCLHVEQUF3RCxDQUFDO0FBQ3RGLE1BQU0sTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFPLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFaEUsa0RBQWtEO0FBQ2xELGVBQU8sTUFBTSx5QkFBeUIsa0NBQW1DLENBQUM7QUFDMUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox_store.d.ts","sourceRoot":"","sources":["../../src/store/inbox_store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,kHASrB,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,qCAAqC;AACrC,eAAO,MAAM,0BAA0B,+CAAgD,CAAC;AACxF,MAAM,MAAM,yBAAyB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpF,gEAAgE;AAChE,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,GAAG,KAAK,IAAI,yBAAyB,CAExG;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,uDAAwD,CAAC;AACtF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,kCAAmC,CAAC;AAC1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMjF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"inbox_store.d.ts","sourceRoot":"","sources":["../../src/store/inbox_store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec-labs/bot",
|
|
3
|
-
"version": "6.0.0-rc.
|
|
3
|
+
"version": "6.0.0-rc.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -55,20 +55,20 @@
|
|
|
55
55
|
]
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@aztec-foundation/l1-artifacts": "6.0.0-rc.
|
|
59
|
-
"@aztec-labs/accounts": "6.0.0-rc.
|
|
60
|
-
"@aztec-labs/aztec.js": "6.0.0-rc.
|
|
61
|
-
"@aztec-labs/constants": "6.0.0-rc.
|
|
62
|
-
"@aztec-labs/ethereum": "6.0.0-rc.
|
|
63
|
-
"@aztec-labs/foundation": "6.0.0-rc.
|
|
64
|
-
"@aztec-labs/kv-store": "6.0.0-rc.
|
|
65
|
-
"@aztec-labs/noir-contracts.js": "6.0.0-rc.
|
|
66
|
-
"@aztec-labs/noir-protocol-circuits-types": "6.0.0-rc.
|
|
67
|
-
"@aztec-labs/noir-test-contracts.js": "6.0.0-rc.
|
|
68
|
-
"@aztec-labs/protocol-contracts": "6.0.0-rc.
|
|
69
|
-
"@aztec-labs/stdlib": "6.0.0-rc.
|
|
70
|
-
"@aztec-labs/telemetry-client": "6.0.0-rc.
|
|
71
|
-
"@aztec-labs/wallets": "6.0.0-rc.
|
|
58
|
+
"@aztec-foundation/l1-artifacts": "6.0.0-rc.6",
|
|
59
|
+
"@aztec-labs/accounts": "6.0.0-rc.3",
|
|
60
|
+
"@aztec-labs/aztec.js": "6.0.0-rc.3",
|
|
61
|
+
"@aztec-labs/constants": "6.0.0-rc.3",
|
|
62
|
+
"@aztec-labs/ethereum": "6.0.0-rc.3",
|
|
63
|
+
"@aztec-labs/foundation": "6.0.0-rc.3",
|
|
64
|
+
"@aztec-labs/kv-store": "6.0.0-rc.3",
|
|
65
|
+
"@aztec-labs/noir-contracts.js": "6.0.0-rc.3",
|
|
66
|
+
"@aztec-labs/noir-protocol-circuits-types": "6.0.0-rc.3",
|
|
67
|
+
"@aztec-labs/noir-test-contracts.js": "6.0.0-rc.3",
|
|
68
|
+
"@aztec-labs/protocol-contracts": "6.0.0-rc.3",
|
|
69
|
+
"@aztec-labs/stdlib": "6.0.0-rc.3",
|
|
70
|
+
"@aztec-labs/telemetry-client": "6.0.0-rc.3",
|
|
71
|
+
"@aztec-labs/wallets": "6.0.0-rc.3",
|
|
72
72
|
"source-map-support": "^0.5.21",
|
|
73
73
|
"tslib": "^2.4.0",
|
|
74
74
|
"viem": "npm:@aztec/viem@2.38.3",
|
package/src/config.ts
CHANGED
|
@@ -36,9 +36,12 @@ export const MAX_INBOX_MESSAGES_PER_BUCKET = MAX_L1_TO_L2_MSGS_PER_BLOCK;
|
|
|
36
36
|
/** Largest number of messages that fit in a single Inbox bucket, plus the one that rolls it over. */
|
|
37
37
|
export const MAX_INBOX_MESSAGES_PER_BATCH = MAX_INBOX_MESSAGES_PER_BUCKET + 1;
|
|
38
38
|
|
|
39
|
-
/** Effective `l1ToL2SeedCount` for inbox mode when the operator
|
|
39
|
+
/** Effective `l1ToL2SeedCount` for inbox mode when the operator did not set one. */
|
|
40
40
|
const INBOX_DEFAULT_L1_TO_L2_SEED_COUNT = 512;
|
|
41
41
|
|
|
42
|
+
/** Effective `l1ToL2SeedCount` for every other mode when the operator did not set one. */
|
|
43
|
+
export const DEFAULT_L1_TO_L2_SEED_COUNT = 1;
|
|
44
|
+
|
|
42
45
|
export enum SupportedTokenContracts {
|
|
43
46
|
TokenContract = 'TokenContract',
|
|
44
47
|
PrivateTokenContract = 'PrivateTokenContract',
|
|
@@ -97,8 +100,11 @@ export type BotConfig = {
|
|
|
97
100
|
botMode: BotMode;
|
|
98
101
|
/** Number of L2→L1 messages per tx (crosschain mode). */
|
|
99
102
|
l2ToL1MessagesPerTx: number;
|
|
100
|
-
/**
|
|
101
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Max L1→L2 messages to keep in-flight (crosschain and inbox modes). Optional so the mode-specific default can
|
|
105
|
+
* tell an unset value from an explicit one; {@link applyInboxModeDefaults} resolves it.
|
|
106
|
+
*/
|
|
107
|
+
l1ToL2SeedCount?: number;
|
|
102
108
|
/** How many L1→L2 messages the inbox bot sends per atomic L1 batch (inbox mode). */
|
|
103
109
|
inboxMessagesPerBatch: number;
|
|
104
110
|
/** Which L2 domain the inbox bot consumes its messages through (inbox mode). */
|
|
@@ -136,7 +142,7 @@ export const BotConfigSchema = zodFor<BotConfig>()(
|
|
|
136
142
|
stopWhenUnhealthy: z.boolean(),
|
|
137
143
|
botMode: z.enum(BotMode).default('transfer'),
|
|
138
144
|
l2ToL1MessagesPerTx: z.number().int().nonnegative().default(1),
|
|
139
|
-
l1ToL2SeedCount: z.number().int().nonnegative().
|
|
145
|
+
l1ToL2SeedCount: z.number().int().nonnegative().optional(),
|
|
140
146
|
inboxMessagesPerBatch: z.number().int().min(1).max(MAX_INBOX_MESSAGES_PER_BATCH).default(4),
|
|
141
147
|
inboxConsumeMode: z.enum(BotInboxConsumeMode).default('mixed'),
|
|
142
148
|
inboxSaturationIntervalSeconds: z.number().int().nonnegative().default(86400),
|
|
@@ -317,8 +323,10 @@ export const botConfigMappings: ConfigMappingsType<BotConfig> = {
|
|
|
317
323
|
},
|
|
318
324
|
l1ToL2SeedCount: {
|
|
319
325
|
env: 'BOT_L1_TO_L2_SEED_COUNT',
|
|
320
|
-
description:
|
|
321
|
-
|
|
326
|
+
description:
|
|
327
|
+
'Max L1→L2 messages to keep in-flight (crosschain and inbox modes). Defaults to ' +
|
|
328
|
+
`${DEFAULT_L1_TO_L2_SEED_COUNT}, or ${INBOX_DEFAULT_L1_TO_L2_SEED_COUNT} in inbox mode.`,
|
|
329
|
+
...optionalNumberConfigHelper(),
|
|
322
330
|
},
|
|
323
331
|
inboxMessagesPerBatch: {
|
|
324
332
|
env: 'BOT_INBOX_MESSAGES_PER_BATCH',
|
|
@@ -354,24 +362,20 @@ export function getBotDefaultConfig(): BotConfig {
|
|
|
354
362
|
return getDefaultConfig<BotConfig>(botConfigMappings);
|
|
355
363
|
}
|
|
356
364
|
|
|
365
|
+
/** A {@link BotConfig} whose mode-dependent defaults have been resolved, so consumers read plain values. */
|
|
366
|
+
export type ResolvedBotConfig = BotConfig & { l1ToL2SeedCount: number };
|
|
367
|
+
|
|
357
368
|
/**
|
|
358
|
-
* Returns the config with
|
|
359
|
-
* `getBotDefaultConfig()` and the transfer/amm/crosschain paths are unaffected.
|
|
369
|
+
* Returns the config with mode-dependent defaults applied.
|
|
360
370
|
*
|
|
361
|
-
* Inbox mode needs a far larger outstanding-message allowance than crosschain's single in-flight message.
|
|
362
|
-
*
|
|
363
|
-
*
|
|
371
|
+
* Inbox mode needs a far larger outstanding-message allowance than crosschain's single in-flight message. The
|
|
372
|
+
* default is applied from the absence of a value rather than from it matching the general default: an operator who
|
|
373
|
+
* explicitly asks for one in-flight message in inbox mode gets one, and is then told by
|
|
374
|
+
* {@link assertValidInboxConfig} that it cannot drive a batch, instead of silently running with 512.
|
|
364
375
|
*/
|
|
365
|
-
export function applyInboxModeDefaults(config: BotConfig):
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
}
|
|
369
|
-
const defaults = getBotDefaultConfig();
|
|
370
|
-
return {
|
|
371
|
-
...config,
|
|
372
|
-
l1ToL2SeedCount:
|
|
373
|
-
config.l1ToL2SeedCount === defaults.l1ToL2SeedCount ? INBOX_DEFAULT_L1_TO_L2_SEED_COUNT : config.l1ToL2SeedCount,
|
|
374
|
-
};
|
|
376
|
+
export function applyInboxModeDefaults(config: BotConfig): ResolvedBotConfig {
|
|
377
|
+
const modeDefault = config.botMode === 'inbox' ? INBOX_DEFAULT_L1_TO_L2_SEED_COUNT : DEFAULT_L1_TO_L2_SEED_COUNT;
|
|
378
|
+
return { ...config, l1ToL2SeedCount: config.l1ToL2SeedCount ?? modeDefault };
|
|
375
379
|
}
|
|
376
380
|
|
|
377
381
|
/**
|
|
@@ -399,14 +403,15 @@ export function assertValidInboxConfig(config: BotConfig): void {
|
|
|
399
403
|
`Inbox bot requires a nonnegative integer inboxSaturationIntervalSeconds (got ${config.inboxSaturationIntervalSeconds})`,
|
|
400
404
|
);
|
|
401
405
|
}
|
|
402
|
-
|
|
406
|
+
const l1ToL2SeedCount = config.l1ToL2SeedCount ?? INBOX_DEFAULT_L1_TO_L2_SEED_COUNT;
|
|
407
|
+
if (l1ToL2SeedCount < config.inboxMessagesPerBatch) {
|
|
403
408
|
throw new Error(
|
|
404
|
-
`Inbox bot requires l1ToL2SeedCount (${
|
|
409
|
+
`Inbox bot requires l1ToL2SeedCount (${l1ToL2SeedCount}) to be at least inboxMessagesPerBatch (${config.inboxMessagesPerBatch}), otherwise the outstanding-message cap blocks production`,
|
|
405
410
|
);
|
|
406
411
|
}
|
|
407
|
-
if (config.inboxSaturationIntervalSeconds > 0 &&
|
|
412
|
+
if (config.inboxSaturationIntervalSeconds > 0 && l1ToL2SeedCount < MAX_INBOX_MESSAGES_PER_BATCH) {
|
|
408
413
|
throw new Error(
|
|
409
|
-
`Inbox bot with saturation enabled requires l1ToL2SeedCount to be at least ${MAX_INBOX_MESSAGES_PER_BATCH} (got ${
|
|
414
|
+
`Inbox bot with saturation enabled requires l1ToL2SeedCount to be at least ${MAX_INBOX_MESSAGES_PER_BATCH} (got ${l1ToL2SeedCount}), otherwise a saturation batch can never fit under the outstanding-message cap`,
|
|
410
415
|
);
|
|
411
416
|
}
|
|
412
417
|
}
|
package/src/cross_chain_bot.ts
CHANGED
|
@@ -36,7 +36,7 @@ import type { AztecNode, AztecNodeAdmin } from '@aztec-labs/stdlib/interfaces/cl
|
|
|
36
36
|
import type { EmbeddedWallet } from '@aztec-labs/wallets/embedded';
|
|
37
37
|
|
|
38
38
|
import { BaseBot } from './base_bot.js';
|
|
39
|
-
import type
|
|
39
|
+
import { type BotConfig, DEFAULT_L1_TO_L2_SEED_COUNT } from './config.js';
|
|
40
40
|
import { BotFactory } from './factory.js';
|
|
41
41
|
import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
42
42
|
import type { BotStore, PendingL1ToL2Message } from './store/index.js';
|
|
@@ -101,7 +101,10 @@ export class CrossChainBot extends BaseBot {
|
|
|
101
101
|
const pendingMessages = await this.store.getUnconsumedL1ToL2Messages();
|
|
102
102
|
|
|
103
103
|
// Send an L1→L2 message if we're below the threshold and not already seeding one
|
|
104
|
-
if (
|
|
104
|
+
if (
|
|
105
|
+
pendingMessages.length < (this.config.l1ToL2SeedCount ?? DEFAULT_L1_TO_L2_SEED_COUNT) &&
|
|
106
|
+
!this.pendingSeedPromise
|
|
107
|
+
) {
|
|
105
108
|
this.pendingSeedPromise = this.seedNewL1ToL2Message()
|
|
106
109
|
.catch(err => this.log.warn(`Failed to seed L1→L2 message: ${err}`, logCtx))
|
|
107
110
|
.finally(() => {
|
package/src/factory.ts
CHANGED
|
@@ -33,7 +33,7 @@ import type { ContractInstanceWithAddress } from '@aztec-labs/stdlib/contract';
|
|
|
33
33
|
import type { AztecNode, AztecNodeAdmin } from '@aztec-labs/stdlib/interfaces/client';
|
|
34
34
|
import { EmbeddedWallet } from '@aztec-labs/wallets/embedded';
|
|
35
35
|
|
|
36
|
-
import { type BotConfig, SupportedTokenContracts } from './config.js';
|
|
36
|
+
import { type BotConfig, DEFAULT_L1_TO_L2_SEED_COUNT, SupportedTokenContracts } from './config.js';
|
|
37
37
|
import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
38
38
|
import type { BotStore } from './store/index.js';
|
|
39
39
|
import { getBalances, getPrivateBalance, isStandardTokenContract } from './utils.js';
|
|
@@ -183,7 +183,10 @@ export class BotFactory {
|
|
|
183
183
|
|
|
184
184
|
// Seed initial L1→L2 messages if pipeline is empty. The seeds are sent one at a time: they share the
|
|
185
185
|
// bot's L1 account, so concurrent sends would race on the L1 nonce.
|
|
186
|
-
const seedCount = Math.max(
|
|
186
|
+
const seedCount = Math.max(
|
|
187
|
+
0,
|
|
188
|
+
(this.config.l1ToL2SeedCount ?? DEFAULT_L1_TO_L2_SEED_COUNT) - pendingMessages.length,
|
|
189
|
+
);
|
|
187
190
|
const inboxAddress = EthAddress.fromString(l1ContractAddresses.inboxAddress.toString());
|
|
188
191
|
for (let i = 0; i < seedCount; i++) {
|
|
189
192
|
await seedL1ToL2Message(l1Client, inboxAddress, contractAddress, rollupVersion, this.store, this.log);
|
package/src/inbox_bot.ts
CHANGED
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
type BotConfig,
|
|
21
21
|
MAX_INBOX_MESSAGES_PER_BATCH,
|
|
22
22
|
MAX_INBOX_MESSAGES_PER_BUCKET,
|
|
23
|
+
type ResolvedBotConfig,
|
|
23
24
|
applyInboxModeDefaults,
|
|
24
25
|
assertValidInboxConfig,
|
|
25
26
|
} from './config.js';
|
|
@@ -182,7 +183,7 @@ export interface InboxBotDeps {
|
|
|
182
183
|
consumers: InboxL2Consumers;
|
|
183
184
|
store: InboxStore;
|
|
184
185
|
telemetry: TelemetryClient;
|
|
185
|
-
config:
|
|
186
|
+
config: ResolvedBotConfig;
|
|
186
187
|
dateProvider?: DateProvider;
|
|
187
188
|
syncChainTip?: BlockTag;
|
|
188
189
|
}
|
|
@@ -213,7 +214,7 @@ export class InboxBot implements BotLifecycle {
|
|
|
213
214
|
public readonly node: AztecNode;
|
|
214
215
|
public readonly wallet: EmbeddedWallet;
|
|
215
216
|
public readonly defaultAccountAddress: AztecAddress;
|
|
216
|
-
public config:
|
|
217
|
+
public config: ResolvedBotConfig;
|
|
217
218
|
|
|
218
219
|
private readonly contractAddress: AztecAddress;
|
|
219
220
|
private readonly producer: InboxL1Producer;
|
|
@@ -235,7 +236,15 @@ export class InboxBot implements BotLifecycle {
|
|
|
235
236
|
private stepInFlight = false;
|
|
236
237
|
private consumeStepInFlight = false;
|
|
237
238
|
private consecutiveProductionFailures = 0;
|
|
238
|
-
|
|
239
|
+
/** Consecutive consumption *polls* that threw. Reset by a poll that completes. */
|
|
240
|
+
private consecutivePollFailures = 0;
|
|
241
|
+
/**
|
|
242
|
+
* Consecutive failures of asynchronous consumption work — attempts and replay probes — counted when they settle,
|
|
243
|
+
* whichever poll started them. Kept apart from the poll streak because a poll finishes long before the jobs it
|
|
244
|
+
* dispatched do: resetting one streak for both lets a bot fail one background job per poll forever without ever
|
|
245
|
+
* reaching the unhealthy threshold.
|
|
246
|
+
*/
|
|
247
|
+
private consecutiveBackgroundFailures = 0;
|
|
239
248
|
/**
|
|
240
249
|
* Consumption attempts running in the background, keyed by message id. Membership is what guarantees a message
|
|
241
250
|
* never has two attempts in flight, whatever the persisted state says.
|
|
@@ -999,10 +1008,12 @@ export class InboxBot implements BotLifecycle {
|
|
|
999
1008
|
await this.dispatchAttempts([...observed, ...active]);
|
|
1000
1009
|
await this.scanReplayProbes();
|
|
1001
1010
|
|
|
1002
|
-
this
|
|
1003
|
-
|
|
1011
|
+
// Only the poll's own streak: the jobs this poll dispatched have not settled, and a poll that did nothing
|
|
1012
|
+
// is no evidence that the background work which has been failing has recovered.
|
|
1013
|
+
this.consecutivePollFailures = 0;
|
|
1014
|
+
this.updateConsumptionHealth();
|
|
1004
1015
|
} catch (err) {
|
|
1005
|
-
this.
|
|
1016
|
+
this.registerPollFailure(err);
|
|
1006
1017
|
} finally {
|
|
1007
1018
|
this.consumeStepInFlight = false;
|
|
1008
1019
|
}
|
|
@@ -1233,10 +1244,17 @@ export class InboxBot implements BotLifecycle {
|
|
|
1233
1244
|
*
|
|
1234
1245
|
* `maxPendingTxs` gates the L2 submissions this makes, the way it gates the other bots through `BotRunner`; the
|
|
1235
1246
|
* node is asked only once a message is actually about to be dispatched.
|
|
1247
|
+
*
|
|
1248
|
+
* The pool count is a reading of the past: a job dispatched by this poll does not appear in it until its
|
|
1249
|
+
* transaction reaches the node, which is several awaits away. Availability is therefore computed once and spent
|
|
1250
|
+
* as jobs are launched, with every in-flight attempt counted against the cap. Attempts that have not submitted
|
|
1251
|
+
* yet are counted too, which is conservative in the only safe direction: until the code tracks submitted and
|
|
1252
|
+
* unsubmitted jobs apart, undercounting availability dispatches fewer messages, while overcounting floods a pool
|
|
1253
|
+
* the operator capped on purpose.
|
|
1236
1254
|
*/
|
|
1237
1255
|
private async dispatchAttempts(candidates: InboxMessageRecord[]): Promise<void> {
|
|
1238
1256
|
const seen = new Set<string>();
|
|
1239
|
-
let
|
|
1257
|
+
let available: number | undefined;
|
|
1240
1258
|
for (const candidate of candidates) {
|
|
1241
1259
|
if (seen.has(candidate.messageId) || this.attemptsInFlight.has(candidate.messageId)) {
|
|
1242
1260
|
continue;
|
|
@@ -1256,19 +1274,30 @@ export class InboxBot implements BotLifecycle {
|
|
|
1256
1274
|
if (this.attemptsInFlight.size >= MAX_CONCURRENT_CONSUMPTION_ATTEMPTS) {
|
|
1257
1275
|
return;
|
|
1258
1276
|
}
|
|
1259
|
-
if (
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1277
|
+
if (this.config.maxPendingTxs > 0) {
|
|
1278
|
+
if (available === undefined) {
|
|
1279
|
+
const pendingTxCount = await this.node.getPendingTxCount();
|
|
1280
|
+
available = this.config.maxPendingTxs - pendingTxCount - this.attemptsInFlight.size;
|
|
1281
|
+
if (available <= 0) {
|
|
1282
|
+
this.log.debug(`Not dispatching inbox consumption attempts, the node is at its pending transaction cap`, {
|
|
1283
|
+
pendingTxCount,
|
|
1284
|
+
attemptsInFlight: this.attemptsInFlight.size,
|
|
1285
|
+
maxPendingTxs: this.config.maxPendingTxs,
|
|
1286
|
+
});
|
|
1287
|
+
return;
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
if (available <= 0) {
|
|
1291
|
+
this.log.debug(`Stopping inbox consumption dispatch, the pending transaction budget is spent`, {
|
|
1265
1292
|
maxPendingTxs: this.config.maxPendingTxs,
|
|
1293
|
+
attemptsInFlight: this.attemptsInFlight.size,
|
|
1266
1294
|
});
|
|
1267
1295
|
return;
|
|
1268
1296
|
}
|
|
1297
|
+
available--;
|
|
1269
1298
|
}
|
|
1270
1299
|
const job = this.runConsumptionAttempt(message)
|
|
1271
|
-
.catch(err => this.
|
|
1300
|
+
.catch(err => this.registerBackgroundFailure(err))
|
|
1272
1301
|
.finally(() => this.attemptsInFlight.delete(message.messageId));
|
|
1273
1302
|
this.attemptsInFlight.set(message.messageId, job);
|
|
1274
1303
|
}
|
|
@@ -1340,6 +1369,7 @@ export class InboxBot implements BotLifecycle {
|
|
|
1340
1369
|
batchId: preparing.batchId,
|
|
1341
1370
|
txHash: txHash.toString(),
|
|
1342
1371
|
});
|
|
1372
|
+
this.registerBackgroundSuccess();
|
|
1343
1373
|
return;
|
|
1344
1374
|
}
|
|
1345
1375
|
this.log.verbose(`Sent inbox consumption transaction`, {
|
|
@@ -1350,6 +1380,10 @@ export class InboxBot implements BotLifecycle {
|
|
|
1350
1380
|
globalLeafIndex: sent.globalLeafIndex,
|
|
1351
1381
|
});
|
|
1352
1382
|
await this.checkAnchorAdvanced(sent, txHash);
|
|
1383
|
+
// The job succeeds once the submission is recorded, not when its receipt later reaches the completion policy,
|
|
1384
|
+
// which can take many blocks and would let failures on either side of it add up as consecutive. It is cleared
|
|
1385
|
+
// only here, after every step, so a job that fails after its send still counts as failed.
|
|
1386
|
+
this.registerBackgroundSuccess();
|
|
1353
1387
|
}
|
|
1354
1388
|
|
|
1355
1389
|
/**
|
|
@@ -1448,7 +1482,7 @@ export class InboxBot implements BotLifecycle {
|
|
|
1448
1482
|
await this.store.transitionMessageFrom(message.messageId, ['preparing'], waiting, { attempts });
|
|
1449
1483
|
}
|
|
1450
1484
|
if (reason === 'rpc') {
|
|
1451
|
-
this.
|
|
1485
|
+
this.registerBackgroundFailure(err);
|
|
1452
1486
|
}
|
|
1453
1487
|
}
|
|
1454
1488
|
|
|
@@ -1602,6 +1636,7 @@ export class InboxBot implements BotLifecycle {
|
|
|
1602
1636
|
this.readinessBackfill.set(completed.messageId, this.dateProvider.now());
|
|
1603
1637
|
}
|
|
1604
1638
|
await this.recordMessageMilestone(completed, 'completed');
|
|
1639
|
+
this.registerBackgroundSuccess();
|
|
1605
1640
|
}
|
|
1606
1641
|
|
|
1607
1642
|
/**
|
|
@@ -1746,13 +1781,22 @@ export class InboxBot implements BotLifecycle {
|
|
|
1746
1781
|
this.log.warn(`Giving up on the replay probe for a batch whose nullifier never became visible`, {
|
|
1747
1782
|
batchId: batch.batchId,
|
|
1748
1783
|
});
|
|
1784
|
+
// The check is recorded as failed before the batch is marked probed. Marking it probed alone would let a
|
|
1785
|
+
// run whose messages all reached a terminal success close as a success, with replay protection never
|
|
1786
|
+
// actually demonstrated.
|
|
1787
|
+
await this.recordCheck('replay_rejection', 'failed', {
|
|
1788
|
+
batchId: batch.batchId,
|
|
1789
|
+
messageId: spent.messageId,
|
|
1790
|
+
reason: 'probe_timeout',
|
|
1791
|
+
});
|
|
1792
|
+
this.recordFailure('replay_unproven', { batchId: batch.batchId, messageId: spent.messageId });
|
|
1749
1793
|
await this.store.recordBatchProbe(batch.batchId, 'replay');
|
|
1750
1794
|
continue;
|
|
1751
1795
|
}
|
|
1752
1796
|
this.probesInFlight.set(
|
|
1753
1797
|
batch.batchId,
|
|
1754
1798
|
this.runReplayProbe(batch.batchId, spent)
|
|
1755
|
-
.catch(err => this.
|
|
1799
|
+
.catch(err => this.registerBackgroundFailure(err))
|
|
1756
1800
|
.finally(() => this.probesInFlight.delete(batch.batchId)),
|
|
1757
1801
|
);
|
|
1758
1802
|
}
|
|
@@ -1804,6 +1848,7 @@ export class InboxBot implements BotLifecycle {
|
|
|
1804
1848
|
if (isAlreadyNullifiedError(err)) {
|
|
1805
1849
|
await this.recordCheck('replay_rejection', 'passed', { batchId, messageId: message.messageId, mode: opposite });
|
|
1806
1850
|
await this.store.recordBatchProbe(batchId, 'replay');
|
|
1851
|
+
this.registerBackgroundSuccess();
|
|
1807
1852
|
} else {
|
|
1808
1853
|
this.log.warn(`Replay probe was inconclusive; it will be tried again`, {
|
|
1809
1854
|
batchId,
|
|
@@ -1820,17 +1865,48 @@ export class InboxBot implements BotLifecycle {
|
|
|
1820
1865
|
await this.store.recordBatchProbe(batchId, 'replay');
|
|
1821
1866
|
}
|
|
1822
1867
|
|
|
1823
|
-
|
|
1824
|
-
|
|
1868
|
+
/** Records a failure of the consumption poll itself, which a later completed poll clears. */
|
|
1869
|
+
private registerPollFailure(err: unknown): void {
|
|
1870
|
+
this.consecutivePollFailures++;
|
|
1825
1871
|
this.log.error(`Inbox bot consumption step failed`, {
|
|
1826
|
-
|
|
1872
|
+
consecutivePollFailures: this.consecutivePollFailures,
|
|
1827
1873
|
err,
|
|
1828
1874
|
});
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1875
|
+
this.updateConsumptionHealth();
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
/**
|
|
1879
|
+
* Records a failure of asynchronous consumption work. Only a background operation that actually succeeds clears
|
|
1880
|
+
* this streak, so a job that fails once per poll still reaches the unhealthy threshold.
|
|
1881
|
+
*/
|
|
1882
|
+
private registerBackgroundFailure(err: unknown): void {
|
|
1883
|
+
this.consecutiveBackgroundFailures++;
|
|
1884
|
+
this.log.error(`Inbox bot background consumption work failed`, {
|
|
1885
|
+
consecutiveBackgroundFailures: this.consecutiveBackgroundFailures,
|
|
1886
|
+
err,
|
|
1887
|
+
});
|
|
1888
|
+
this.updateConsumptionHealth();
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1891
|
+
/**
|
|
1892
|
+
* Records that a background attempt or probe reached its expected outcome, clearing the background streak.
|
|
1893
|
+
*
|
|
1894
|
+
* The streak is shared by every concurrent attempt and probe on purpose, so one success clears failures from other
|
|
1895
|
+
* jobs in flight. Health answers whether background consumption is making progress at all, not whether each job
|
|
1896
|
+
* is: a bot with one lane succeeding still consumes messages and stays healthy, and each failure is still logged as
|
|
1897
|
+
* an error.
|
|
1898
|
+
*/
|
|
1899
|
+
private registerBackgroundSuccess(): void {
|
|
1900
|
+
this.consecutiveBackgroundFailures = 0;
|
|
1901
|
+
this.updateConsumptionHealth();
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
/** Recomputes consumption health from both streaks, and exits if the operator asked an unhealthy bot to stop. */
|
|
1905
|
+
private updateConsumptionHealth(): void {
|
|
1906
|
+
const limit = this.config.maxConsecutiveErrors;
|
|
1907
|
+
this.consumptionHealthy =
|
|
1908
|
+
limit <= 0 || (this.consecutivePollFailures < limit && this.consecutiveBackgroundFailures < limit);
|
|
1909
|
+
if (!this.consumptionHealthy) {
|
|
1834
1910
|
this.exitIfUnhealthy();
|
|
1835
1911
|
}
|
|
1836
1912
|
}
|