@aztec/bot 5.0.0-nightly.20260610 → 5.0.0-nightly.20260612
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/amm_bot.d.ts +3 -2
- package/dest/amm_bot.d.ts.map +1 -1
- package/dest/amm_bot.js +2 -2
- package/dest/bot.d.ts +3 -2
- package/dest/bot.d.ts.map +1 -1
- package/dest/bot.js +2 -2
- package/dest/cross_chain_bot.d.ts +5 -3
- package/dest/cross_chain_bot.d.ts.map +1 -1
- package/dest/cross_chain_bot.js +7 -6
- package/dest/factory.d.ts +3 -2
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +21 -37
- package/dest/runner.d.ts +3 -2
- package/dest/runner.d.ts.map +1 -1
- package/dest/runner.js +6 -4
- package/package.json +15 -15
- package/src/amm_bot.ts +3 -0
- package/src/bot.ts +3 -0
- package/src/cross_chain_bot.ts +6 -2
- package/src/factory.ts +18 -15
- package/src/runner.ts +26 -3
package/dest/amm_bot.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
|
2
2
|
import type { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
3
3
|
import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
4
4
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
5
6
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
7
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
7
8
|
import { BaseBot } from './base_bot.js';
|
|
@@ -16,7 +17,7 @@ export declare class AmmBot extends BaseBot {
|
|
|
16
17
|
readonly token0: TokenContract;
|
|
17
18
|
readonly token1: TokenContract;
|
|
18
19
|
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, amm: AMMContract, token0: TokenContract, token1: TokenContract, config: BotConfig);
|
|
19
|
-
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<AmmBot>;
|
|
20
|
+
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore, syncChainTip?: BlockTag): Promise<AmmBot>;
|
|
20
21
|
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
21
22
|
protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
|
|
22
23
|
getAmmBalances(): Promise<Balances>;
|
|
@@ -29,4 +30,4 @@ export declare class AmmBot extends BaseBot {
|
|
|
29
30
|
private getPrivateBalanceFor;
|
|
30
31
|
}
|
|
31
32
|
export {};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1tX2JvdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FtbV9ib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakYsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFLakQsS0FBSyxRQUFRLEdBQUc7SUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUM7QUFFbkQscUJBQWEsTUFBTyxTQUFRLE9BQU87YUFLZixHQUFHLEVBQUUsV0FBVzthQUNoQixNQUFNLEVBQUUsYUFBYTthQUNyQixNQUFNLEVBQUUsYUFBYTtJQU52QyxTQUFTLGFBQ1AsSUFBSSxFQUFFLFNBQVMsRUFDZixNQUFNLEVBQUUsY0FBYyxFQUN0QixxQkFBcUIsRUFBRSxZQUFZLEVBQ25CLEdBQUcsRUFBRSxXQUFXLEVBQ2hCLE1BQU0sRUFBRSxhQUFhLEVBQ3JCLE1BQU0sRUFBRSxhQUFhLEVBQ3JDLE1BQU0sRUFBRSxTQUFTLEVBR2xCO0lBRUQsT0FBYSxNQUFNLENBQ2pCLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGNBQWMsRUFBRSxjQUFjLEdBQUcsU0FBUyxFQUMxQyxLQUFLLEVBQUUsUUFBUSxFQUNmLFlBQVksQ0FBQyxFQUFFLFFBQVEsR0FDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVVqQjtJQUVELFVBQWdCLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0E2Qy9EO0lBRUQsVUFBeUIsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR3BGO0lBRU0sY0FBYyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FFekM7SUFFWSxXQUFXLElBQUksT0FBTyxDQUFDO1FBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQztRQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7UUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFBO0tBQUUsQ0FBQyxDQU10RztZQUVhLG1CQUFtQjtZQUtuQixvQkFBb0I7Q0FTbkMifQ==
|
package/dest/amm_bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amm_bot.d.ts","sourceRoot":"","sources":["../src/amm_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,qBAAa,MAAO,SAAQ,OAAO;aAKf,GAAG,EAAE,WAAW;aAChB,MAAM,EAAE,aAAa;aACrB,MAAM,EAAE,aAAa;IANvC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrC,MAAM,EAAE,SAAS,EAGlB;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,
|
|
1
|
+
{"version":3,"file":"amm_bot.d.ts","sourceRoot":"","sources":["../src/amm_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,KAAK,QAAQ,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,qBAAa,MAAO,SAAQ,OAAO;aAKf,GAAG,EAAE,WAAW;aAChB,MAAM,EAAE,aAAa;aACrB,MAAM,EAAE,aAAa;IANvC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EACnB,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrC,MAAM,EAAE,SAAS,EAGlB;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,MAAM,CAAC,CAUjB;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6C/D;IAED,UAAyB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;IAEM,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,CAEzC;IAEY,WAAW,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAA;KAAE,CAAC,CAMtG;YAEa,mBAAmB;YAKnB,oBAAoB;CASnC"}
|
package/dest/amm_bot.js
CHANGED
|
@@ -12,8 +12,8 @@ export class AmmBot extends BaseBot {
|
|
|
12
12
|
constructor(node, wallet, defaultAccountAddress, amm, token0, token1, config){
|
|
13
13
|
super(node, wallet, defaultAccountAddress, config), this.amm = amm, this.token0 = token0, this.token1 = token1;
|
|
14
14
|
}
|
|
15
|
-
static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
|
|
16
|
-
const { defaultAccountAddress, token0, token1, amm } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin).setupAmm();
|
|
15
|
+
static async create(config, wallet, aztecNode, aztecNodeAdmin, store, syncChainTip) {
|
|
16
|
+
const { defaultAccountAddress, token0, token1, amm } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin, syncChainTip).setupAmm();
|
|
17
17
|
return new AmmBot(aztecNode, wallet, defaultAccountAddress, amm, token0, token1, config);
|
|
18
18
|
}
|
|
19
19
|
async createAndSendTx(logCtx) {
|
package/dest/bot.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
|
2
2
|
import { TxHash } from '@aztec/aztec.js/tx';
|
|
3
3
|
import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
|
|
4
4
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
5
6
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
7
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
7
8
|
import { BaseBot } from './base_bot.js';
|
|
@@ -11,7 +12,7 @@ export declare class Bot extends BaseBot {
|
|
|
11
12
|
readonly token: TokenContract | PrivateTokenContract;
|
|
12
13
|
readonly recipient: AztecAddress;
|
|
13
14
|
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, token: TokenContract | PrivateTokenContract, recipient: AztecAddress, config: BotConfig);
|
|
14
|
-
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<Bot>;
|
|
15
|
+
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore, syncChainTip?: BlockTag): Promise<Bot>;
|
|
15
16
|
updateConfig(config: Partial<BotConfig>): void;
|
|
16
17
|
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
17
18
|
getBalances(): Promise<{
|
|
@@ -25,4 +26,4 @@ export declare class Bot extends BaseBot {
|
|
|
25
26
|
};
|
|
26
27
|
}>;
|
|
27
28
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtqRCxxQkFBYSxHQUFJLFNBQVEsT0FBTzthQUtaLEtBQUssRUFBRSxhQUFhLEdBQUcsb0JBQW9CO2FBQzNDLFNBQVMsRUFBRSxZQUFZO0lBTHpDLFNBQVMsYUFDUCxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLHFCQUFxQixFQUFFLFlBQVksRUFDbkIsS0FBSyxFQUFFLGFBQWEsR0FBRyxvQkFBb0IsRUFDM0MsU0FBUyxFQUFFLFlBQVksRUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFHbEI7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEVBQ2YsWUFBWSxDQUFDLEVBQUUsUUFBUSxHQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLENBVWQ7SUFFTSxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFHN0M7SUFFRCxVQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBMEIvRDtJQUVZLFdBQVc7Ozs7Ozs7OztPQWtCdkI7Q0FDRiJ9
|
package/dest/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,qBAAa,GAAI,SAAQ,OAAO;aAKZ,KAAK,EAAE,aAAa,GAAG,oBAAoB;aAC3C,SAAS,EAAE,YAAY;IALzC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EACnB,KAAK,EAAE,aAAa,GAAG,oBAAoB,EAC3C,SAAS,EAAE,YAAY,EACvC,MAAM,EAAE,SAAS,EAGlB;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,
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,qBAAa,GAAI,SAAQ,OAAO;aAKZ,KAAK,EAAE,aAAa,GAAG,oBAAoB;aAC3C,SAAS,EAAE,YAAY;IALzC,SAAS,aACP,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EACnB,KAAK,EAAE,aAAa,GAAG,oBAAoB,EAC3C,SAAS,EAAE,YAAY,EACvC,MAAM,EAAE,SAAS,EAGlB;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,GAAG,CAAC,CAUd;IAEM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,QAG7C;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B/D;IAEY,WAAW;;;;;;;;;OAkBvB;CACF"}
|
package/dest/bot.js
CHANGED
|
@@ -10,8 +10,8 @@ export class Bot extends BaseBot {
|
|
|
10
10
|
constructor(node, wallet, defaultAccountAddress, token, recipient, config){
|
|
11
11
|
super(node, wallet, defaultAccountAddress, config), this.token = token, this.recipient = recipient;
|
|
12
12
|
}
|
|
13
|
-
static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
|
|
14
|
-
const { defaultAccountAddress, token, recipient } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin).setup();
|
|
13
|
+
static async create(config, wallet, aztecNode, aztecNodeAdmin, store, syncChainTip) {
|
|
14
|
+
const { defaultAccountAddress, token, recipient } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin, syncChainTip).setup();
|
|
15
15
|
return new Bot(aztecNode, wallet, defaultAccountAddress, token, recipient, config);
|
|
16
16
|
}
|
|
17
17
|
updateConfig(config) {
|
|
@@ -28,6 +28,7 @@ import type { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
|
28
28
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
29
29
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
30
30
|
import type { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
31
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
31
32
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
32
33
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
33
34
|
import { BaseBot } from './base_bot.js';
|
|
@@ -41,14 +42,15 @@ export declare class CrossChainBot extends BaseBot {
|
|
|
41
42
|
private readonly inboxAddress;
|
|
42
43
|
private readonly rollupVersion;
|
|
43
44
|
private readonly store;
|
|
45
|
+
private readonly syncChainTip?;
|
|
44
46
|
private l2ToL1Sent;
|
|
45
47
|
private l1ToL2Consumed;
|
|
46
48
|
private pendingSeedPromise;
|
|
47
|
-
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, contract: TestContract, l1Client: ExtendedViemWalletClient, l1Recipient: EthAddress, inboxAddress: EthAddress, rollupVersion: bigint, store: BotStore, config: BotConfig);
|
|
48
|
-
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore): Promise<CrossChainBot>;
|
|
49
|
+
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, contract: TestContract, l1Client: ExtendedViemWalletClient, l1Recipient: EthAddress, inboxAddress: EthAddress, rollupVersion: bigint, store: BotStore, config: BotConfig, syncChainTip?: "checkpointed" | "finalized" | "latest" | "proposed" | "proven" | undefined);
|
|
50
|
+
static create(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore, syncChainTip?: BlockTag): Promise<CrossChainBot>;
|
|
49
51
|
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
50
52
|
protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
|
|
51
53
|
private getReadyL1ToL2Message;
|
|
52
54
|
private seedNewL1ToL2Message;
|
|
53
55
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NfY2hhaW5fYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY3Jvc3NfY2hhaW5fYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc3QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQXdCLE1BQU0sa0JBQWtCLENBQUM7QUFLdkUseUVBQXFFO0FBQ3JFLHFCQUFhLGFBQWMsU0FBUSxPQUFPO0lBU3RDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQUN6QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXO0lBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM3QixPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWE7SUFDOUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBRXRCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBZmhDLE9BQU8sQ0FBQyxVQUFVLENBQUs7SUFDdkIsT0FBTyxDQUFDLGNBQWMsQ0FBSztJQUMzQixPQUFPLENBQUMsa0JBQWtCLENBQTRCO0lBRXRELFNBQVMsYUFDUCxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLHFCQUFxQixFQUFFLFlBQVksRUFDbEIsUUFBUSxFQUFFLFlBQVksRUFDdEIsUUFBUSxFQUFFLHdCQUF3QixFQUNsQyxXQUFXLEVBQUUsVUFBVSxFQUN2QixZQUFZLEVBQUUsVUFBVSxFQUN4QixhQUFhLEVBQUUsTUFBTSxFQUNyQixLQUFLLEVBQUUsUUFBUSxFQUNoQyxNQUFNLEVBQUUsU0FBUyxFQUNBLFlBQVksQ0FBQyw2RUFBVSxFQUd6QztJQUVELE9BQWEsTUFBTSxDQUNqQixNQUFNLEVBQUUsU0FBUyxFQUNqQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFDMUMsS0FBSyxFQUFFLFFBQVEsRUFDZixZQUFZLENBQUMsRUFBRSxRQUFRLEdBQ3RCLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FzQnhCO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQWlEL0Q7SUFFRCxVQUF5QixTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0F3QnBGO1lBR2EscUJBQXFCO1lBb0JyQixvQkFBb0I7Q0FVbkMifQ==
|
|
@@ -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,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,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;
|
|
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,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,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,CAiD/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
|
@@ -37,22 +37,23 @@ import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
|
37
37
|
inboxAddress;
|
|
38
38
|
rollupVersion;
|
|
39
39
|
store;
|
|
40
|
+
syncChainTip;
|
|
40
41
|
l2ToL1Sent;
|
|
41
42
|
l1ToL2Consumed;
|
|
42
43
|
pendingSeedPromise;
|
|
43
|
-
constructor(node, wallet, defaultAccountAddress, contract, l1Client, l1Recipient, inboxAddress, rollupVersion, store, config){
|
|
44
|
-
super(node, wallet, defaultAccountAddress, config), this.contract = contract, this.l1Client = l1Client, this.l1Recipient = l1Recipient, this.inboxAddress = inboxAddress, this.rollupVersion = rollupVersion, this.store = store, this.l2ToL1Sent = 0, this.l1ToL2Consumed = 0;
|
|
44
|
+
constructor(node, wallet, defaultAccountAddress, contract, l1Client, l1Recipient, inboxAddress, rollupVersion, store, config, syncChainTip){
|
|
45
|
+
super(node, wallet, defaultAccountAddress, config), this.contract = contract, this.l1Client = l1Client, this.l1Recipient = l1Recipient, this.inboxAddress = inboxAddress, this.rollupVersion = rollupVersion, this.store = store, this.syncChainTip = syncChainTip, this.l2ToL1Sent = 0, this.l1ToL2Consumed = 0;
|
|
45
46
|
}
|
|
46
|
-
static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
|
|
47
|
+
static async create(config, wallet, aztecNode, aztecNodeAdmin, store, syncChainTip) {
|
|
47
48
|
if (config.followChain === 'NONE') {
|
|
48
49
|
throw new Error(`CrossChainBot requires followChain to be set (got NONE)`);
|
|
49
50
|
}
|
|
50
|
-
const factory = new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin);
|
|
51
|
+
const factory = new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin, syncChainTip);
|
|
51
52
|
const { defaultAccountAddress, contract, l1Client, rollupVersion } = await factory.setupCrossChain();
|
|
52
53
|
const l1Recipient = EthAddress.fromString(l1Client.account.address);
|
|
53
54
|
const { l1ContractAddresses } = await aztecNode.getNodeInfo();
|
|
54
55
|
const inboxAddress = EthAddress.fromString(l1ContractAddresses.inboxAddress.toString());
|
|
55
|
-
return new CrossChainBot(aztecNode, wallet, defaultAccountAddress, contract, l1Client, l1Recipient, inboxAddress, rollupVersion, store, config);
|
|
56
|
+
return new CrossChainBot(aztecNode, wallet, defaultAccountAddress, contract, l1Client, l1Recipient, inboxAddress, rollupVersion, store, config, syncChainTip);
|
|
56
57
|
}
|
|
57
58
|
async createAndSendTx(logCtx) {
|
|
58
59
|
const pendingMessages = await this.store.getUnconsumedL1ToL2Messages();
|
|
@@ -119,7 +120,7 @@ import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
|
119
120
|
/** Finds the oldest pending message that is ready for consumption. */ async getReadyL1ToL2Message(pendingMessages) {
|
|
120
121
|
const now = Date.now();
|
|
121
122
|
for (const msg of pendingMessages){
|
|
122
|
-
const ready = await isL1ToL2MessageReady(this.node, Fr.fromHexString(msg.msgHash));
|
|
123
|
+
const ready = await isL1ToL2MessageReady(this.node, Fr.fromHexString(msg.msgHash), this.syncChainTip);
|
|
123
124
|
if (ready) {
|
|
124
125
|
return msg;
|
|
125
126
|
}
|
package/dest/factory.d.ts
CHANGED
|
@@ -14,8 +14,9 @@ export declare class BotFactory {
|
|
|
14
14
|
private readonly store;
|
|
15
15
|
private readonly aztecNode;
|
|
16
16
|
private readonly aztecNodeAdmin?;
|
|
17
|
+
private readonly syncChainTip?;
|
|
17
18
|
private log;
|
|
18
|
-
constructor(config: BotConfig, wallet: EmbeddedWallet, store: BotStore, aztecNode: AztecNode, aztecNodeAdmin?: AztecNodeAdmin | undefined);
|
|
19
|
+
constructor(config: BotConfig, wallet: EmbeddedWallet, store: BotStore, aztecNode: AztecNode, aztecNodeAdmin?: AztecNodeAdmin | undefined, syncChainTip?: "checkpointed" | "finalized" | "latest" | "proposed" | "proven" | undefined);
|
|
19
20
|
/**
|
|
20
21
|
* Initializes a new bot by setting up the sender account, registering the recipient,
|
|
21
22
|
* deploying the token contract, and minting tokens if necessary.
|
|
@@ -66,4 +67,4 @@ export declare class BotFactory {
|
|
|
66
67
|
private getMinFees;
|
|
67
68
|
private withNoMinTxsPerBlock;
|
|
68
69
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBcUJ6RCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSWxFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUEyQixNQUFNLGFBQWEsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVFqRCxxQkFBYSxVQUFVO0lBSW5CLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQ3RCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQVJoQyxPQUFPLENBQUMsR0FBRyxDQUF1QjtJQUVsQyxZQUNtQixNQUFNLEVBQUUsU0FBUyxFQUNqQixNQUFNLEVBQUUsY0FBYyxFQUN0QixLQUFLLEVBQUUsUUFBUSxFQUNmLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLGNBQWMsQ0FBQyw0QkFBZ0IsRUFDL0IsWUFBWSxDQUFDLDZFQUFVLEVBS3pDO0lBRUQ7OztPQUdHO0lBQ1UsS0FBSyxJQUFJLE9BQU8sQ0FBQztRQUM1QixNQUFNLEVBQUUsY0FBYyxDQUFDO1FBQ3ZCLHFCQUFxQixFQUFFLFlBQVksQ0FBQztRQUNwQyxLQUFLLEVBQUUsYUFBYSxHQUFHLG9CQUFvQixDQUFDO1FBQzVDLElBQUksRUFBRSxTQUFTLENBQUM7UUFDaEIsU0FBUyxFQUFFLFlBQVksQ0FBQztLQUN6QixDQUFDLENBT0Q7SUFFWSxRQUFRLElBQUksT0FBTyxDQUFDO1FBQy9CLE1BQU0sRUFBRSxjQUFjLENBQUM7UUFDdkIscUJBQXFCLEVBQUUsWUFBWSxDQUFDO1FBQ3BDLEdBQUcsRUFBRSxXQUFXLENBQUM7UUFDakIsTUFBTSxFQUFFLGFBQWEsQ0FBQztRQUN0QixNQUFNLEVBQUUsYUFBYSxDQUFDO1FBQ3RCLElBQUksRUFBRSxTQUFTLENBQUM7S0FDakIsQ0FBQyxDQTRCRDtJQUVEOzs7T0FHRztJQUNVLGVBQWUsSUFBSSxPQUFPLENBQUM7UUFDdEMsTUFBTSxFQUFFLGNBQWMsQ0FBQztRQUN2QixxQkFBcUIsRUFBRSxZQUFZLENBQUM7UUFDcEMsUUFBUSxFQUFFLFlBQVksQ0FBQztRQUN2QixJQUFJLEVBQUUsU0FBUyxDQUFDO1FBQ2hCLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQztRQUNuQyxhQUFhLEVBQUUsTUFBTSxDQUFDO0tBQ3ZCLENBQUMsQ0E0REQ7WUFFYSxpQkFBaUI7WUFXakIsWUFBWTtZQVdaLDBCQUEwQjtZQXVDMUIsZ0JBQWdCO1lBZWhCLGlDQUFpQztZQWNqQyx5Q0FBeUM7WUFrQnpDLGdCQUFnQjtZQTRCaEIsVUFBVTtZQXlDVixrQkFBa0I7WUFhbEIsZ0JBQWdCO1lBMkJoQixPQUFPO1lBK0ZQLHdCQUF3QjtZQThEeEIscUJBQXFCO1lBb0RyQixVQUFVO1lBaURWLHNCQUFzQjtZQTRCdEIsZ0JBQWdCO1lBaUNoQixVQUFVO1lBWVYsb0JBQW9CO0NBZW5DIn0=
|
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,2BAA2B,CAAC;AAqBzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAItE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAqBzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAItE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIlE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,KAAK,SAAS,EAA2B,MAAM,aAAa,CAAC;AAEtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQjD,qBAAa,UAAU;IAInB,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;IARhC,OAAO,CAAC,GAAG,CAAuB;IAElC,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,CAOD;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,CA4BD;IAED;;;OAGG;IACU,eAAe,IAAI,OAAO,CAAC;QACtC,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,CA4DD;YAEa,iBAAiB;YAWjB,YAAY;YAWZ,0BAA0B;YAuC1B,gBAAgB;YAehB,iCAAiC;YAcjC,yCAAyC;YAkBzC,gBAAgB;YA4BhB,UAAU;YAyCV,kBAAkB;YAalB,gBAAgB;YA2BhB,OAAO;YA+FP,wBAAwB;YA8DxB,qBAAqB;YAoDrB,UAAU;YAiDV,sBAAsB;YA4BtB,gBAAgB;YAiChB,UAAU;YAYV,oBAAoB;CAenC"}
|
package/dest/factory.js
CHANGED
|
@@ -19,7 +19,7 @@ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
|
19
19
|
import { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
|
|
20
20
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
21
21
|
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
22
|
-
import { GasFees,
|
|
22
|
+
import { GasFees, ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
23
23
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
24
24
|
import { SupportedTokenContracts } from './config.js';
|
|
25
25
|
import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
@@ -34,13 +34,15 @@ export class BotFactory {
|
|
|
34
34
|
store;
|
|
35
35
|
aztecNode;
|
|
36
36
|
aztecNodeAdmin;
|
|
37
|
+
syncChainTip;
|
|
37
38
|
log;
|
|
38
|
-
constructor(config, wallet, store, aztecNode, aztecNodeAdmin){
|
|
39
|
+
constructor(config, wallet, store, aztecNode, aztecNodeAdmin, syncChainTip){
|
|
39
40
|
this.config = config;
|
|
40
41
|
this.wallet = wallet;
|
|
41
42
|
this.store = store;
|
|
42
43
|
this.aztecNode = aztecNode;
|
|
43
44
|
this.aztecNodeAdmin = aztecNodeAdmin;
|
|
45
|
+
this.syncChainTip = syncChainTip;
|
|
44
46
|
this.log = createLogger('bot');
|
|
45
47
|
// Set fee padding on the wallet so that all transactions during setup
|
|
46
48
|
// (token deploy, minting, etc.) use the configured padding, not the default.
|
|
@@ -117,7 +119,8 @@ export class BotFactory {
|
|
|
117
119
|
this.log.info(`Waiting for first L1→L2 message to be ready...`);
|
|
118
120
|
const firstMsg = allMessages[0];
|
|
119
121
|
await waitForL1ToL2MessageReady(this.aztecNode, Fr.fromHexString(firstMsg.msgHash), {
|
|
120
|
-
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds
|
|
122
|
+
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds,
|
|
123
|
+
chainTip: this.syncChainTip
|
|
121
124
|
});
|
|
122
125
|
this.log.info(`First L1→L2 message is ready`);
|
|
123
126
|
}
|
|
@@ -403,19 +406,13 @@ export class BotFactory {
|
|
|
403
406
|
if (useClaim && mnemonicOrPrivateKey) {
|
|
404
407
|
const claim = await this.getOrCreateBridgeClaim(sender);
|
|
405
408
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(sender, claim);
|
|
406
|
-
const { estimatedGas } = await deploy.simulate({
|
|
407
|
-
...deployOpts,
|
|
408
|
-
fee: {
|
|
409
|
-
estimateGas: true,
|
|
410
|
-
paymentMethod
|
|
411
|
-
}
|
|
412
|
-
});
|
|
413
409
|
const maxFeesPerGas = (await this.getMinFees()).mul(1 + this.config.minFeePadding);
|
|
414
|
-
|
|
415
|
-
|
|
410
|
+
// Leave gas limits unset so the wallet derives them from its own simulation and clamps to the
|
|
411
|
+
// network's per-tx admission limits.
|
|
412
|
+
const gasSettings = {
|
|
416
413
|
maxFeesPerGas,
|
|
417
414
|
maxPriorityFeesPerGas: GasFees.empty()
|
|
418
|
-
}
|
|
415
|
+
};
|
|
419
416
|
await this.withNoMinTxsPerBlock(async ()=>{
|
|
420
417
|
const { txHash } = await deploy.send({
|
|
421
418
|
...deployOpts,
|
|
@@ -432,21 +429,12 @@ export class BotFactory {
|
|
|
432
429
|
});
|
|
433
430
|
await this.store.deleteBridgeClaim(sender);
|
|
434
431
|
} else {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
estimateGas: true
|
|
439
|
-
}
|
|
440
|
-
});
|
|
441
|
-
this.log.info(`Deploying contract ${name} at ${address.toString()}`, {
|
|
442
|
-
estimatedGas
|
|
443
|
-
});
|
|
432
|
+
this.log.info(`Deploying contract ${name} at ${address.toString()}`);
|
|
433
|
+
// Gas limits are left unset so the wallet derives them from its own simulation and clamps to the
|
|
434
|
+
// network's per-tx admission limits.
|
|
444
435
|
await this.withNoMinTxsPerBlock(async ()=>{
|
|
445
436
|
const { txHash } = await deploy.send({
|
|
446
437
|
...deployOpts,
|
|
447
|
-
fee: {
|
|
448
|
-
gasSettings: estimatedGas
|
|
449
|
-
},
|
|
450
438
|
wait: NO_WAIT
|
|
451
439
|
});
|
|
452
440
|
this.log.info(`Sent contract ${name} setup tx with hash ${txHash.toString()}`);
|
|
@@ -485,18 +473,12 @@ export class BotFactory {
|
|
|
485
473
|
while(balance < FEE_JUICE_TOP_UP_TARGET){
|
|
486
474
|
const claim = await this.bridgeL1FeeJuice(account);
|
|
487
475
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(account, claim);
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
estimateGas: true,
|
|
492
|
-
paymentMethod
|
|
493
|
-
}
|
|
494
|
-
});
|
|
495
|
-
const gasSettings = GasSettings.from({
|
|
496
|
-
...estimatedGas,
|
|
476
|
+
// Leave gas limits unset so the wallet derives them from its own simulation and clamps to the
|
|
477
|
+
// network's per-tx admission limits.
|
|
478
|
+
const gasSettings = {
|
|
497
479
|
maxFeesPerGas,
|
|
498
480
|
maxPriorityFeesPerGas: GasFees.empty()
|
|
499
|
-
}
|
|
481
|
+
};
|
|
500
482
|
await this.withNoMinTxsPerBlock(async ()=>{
|
|
501
483
|
const { txHash } = await minimalInteraction.send({
|
|
502
484
|
from: account,
|
|
@@ -568,7 +550,8 @@ export class BotFactory {
|
|
|
568
550
|
try {
|
|
569
551
|
const messageHash = Fr.fromHexString(existingClaim.claim.messageHash);
|
|
570
552
|
await this.withNoMinTxsPerBlock(()=>waitForL1ToL2MessageReady(this.aztecNode, messageHash, {
|
|
571
|
-
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds
|
|
553
|
+
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds,
|
|
554
|
+
chainTip: this.syncChainTip
|
|
572
555
|
}));
|
|
573
556
|
return existingClaim.claim;
|
|
574
557
|
} catch (err) {
|
|
@@ -596,7 +579,8 @@ export class BotFactory {
|
|
|
596
579
|
const mintAmount = await portal.getTokenManager().getMintAmount();
|
|
597
580
|
const claim = await portal.bridgeTokensPublic(recipient, mintAmount, true);
|
|
598
581
|
await this.withNoMinTxsPerBlock(()=>waitForL1ToL2MessageReady(this.aztecNode, Fr.fromHexString(claim.messageHash), {
|
|
599
|
-
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds
|
|
582
|
+
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds,
|
|
583
|
+
chainTip: this.syncChainTip
|
|
600
584
|
}));
|
|
601
585
|
this.log.info(`Created a claim for ${mintAmount} L1 fee juice to ${recipient}.`, claim);
|
|
602
586
|
return claim;
|
package/dest/runner.d.ts
CHANGED
|
@@ -13,13 +13,14 @@ export declare class BotRunner implements BotRunnerApi, Traceable {
|
|
|
13
13
|
private readonly telemetry;
|
|
14
14
|
private readonly aztecNodeAdmin;
|
|
15
15
|
private readonly store;
|
|
16
|
+
private readonly syncChainTip?;
|
|
16
17
|
private log;
|
|
17
18
|
private bot?;
|
|
18
19
|
private runningPromise;
|
|
19
20
|
private consecutiveErrors;
|
|
20
21
|
private healthy;
|
|
21
22
|
readonly tracer: Tracer;
|
|
22
|
-
constructor(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore);
|
|
23
|
+
constructor(config: BotConfig, wallet: EmbeddedWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin: AztecNodeAdmin | undefined, store: BotStore, syncChainTip?: "checkpointed" | "finalized" | "latest" | "proposed" | "proven" | undefined);
|
|
23
24
|
/** Initializes the bot if needed. Blocks until the bot setup is finished. */
|
|
24
25
|
setup(): Promise<void>;
|
|
25
26
|
private doSetup;
|
|
@@ -50,4 +51,4 @@ export declare class BotRunner implements BotRunnerApi, Traceable {
|
|
|
50
51
|
/** Returns the bot sender address. */
|
|
51
52
|
getInfo(): Promise<BotInfo>;
|
|
52
53
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSXRELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZHLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLHFCQUFhLFNBQVUsWUFBVyxZQUFZLEVBQUUsU0FBUzs7SUFVckQsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO0lBQzFCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWM7SUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQ3RCLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO0lBZmhDLE9BQU8sQ0FBQyxHQUFHLENBQXVCO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBbUI7SUFDL0IsT0FBTyxDQUFDLGNBQWMsQ0FBaUI7SUFDdkMsT0FBTyxDQUFDLGlCQUFpQixDQUFLO0lBQzlCLE9BQU8sQ0FBQyxPQUFPLENBQVE7SUFFdkIsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUNVLE1BQU0sRUFBRSxTQUFTLEVBQ1IsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsU0FBUyxFQUFFLGVBQWUsRUFDMUIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEVBQ2YsWUFBWSxDQUFDLDZFQUFVLEVBS3pDO0lBRUQsNkVBQTZFO0lBQ2hFLEtBQUssa0JBSWpCO1lBR2EsT0FBTztJQU1yQjs7O09BR0c7SUFDVSxLQUFLLGtCQU1qQjtJQUVEOztPQUVHO0lBQ1UsSUFBSSxrQkFPaEI7SUFFTSxTQUFTLFlBRWY7SUFFRCwwQ0FBMEM7SUFDbkMsU0FBUyxZQUVmO0lBRUQ7OztPQUdHO0lBQ1UsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLGlCQWFwQztJQUVEOzs7T0FHRztJQUNVLEdBQUcsa0JBc0JmO0lBRUQscURBQXFEO0lBQzlDLFNBQVMsdUJBR2Y7SUFFRCxzQ0FBc0M7SUFDekIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FNdkM7Q0F3RUYifQ==
|
package/dest/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,qBAAa,SAAU,YAAW,YAAY,EAAE,SAAS;;IAUrD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAfhC,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,GAAG,CAAC,CAAmB;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,OAAO,CAAQ;IAEvB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACU,MAAM,EAAE,SAAS,EACR,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,KAAK,EAAE,QAAQ,EACf,YAAY,CAAC,6EAAU,EAKzC;IAED,6EAA6E;IAChE,KAAK,kBAIjB;YAGa,OAAO;IAMrB;;;OAGG;IACU,KAAK,kBAMjB;IAED;;OAEG;IACU,IAAI,kBAOhB;IAEM,SAAS,YAEf;IAED,0CAA0C;IACnC,SAAS,YAEf;IAED;;;OAGG;IACU,MAAM,CAAC,MAAM,EAAE,SAAS,iBAapC;IAED;;;OAGG;IACU,GAAG,kBAsBf;IAED,qDAAqD;IAC9C,SAAS,uBAGf;IAED,sCAAsC;IACzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAMvC;CAwEF"}
|
package/dest/runner.js
CHANGED
|
@@ -386,6 +386,7 @@ export class BotRunner {
|
|
|
386
386
|
telemetry;
|
|
387
387
|
aztecNodeAdmin;
|
|
388
388
|
store;
|
|
389
|
+
syncChainTip;
|
|
389
390
|
static{
|
|
390
391
|
({ e: [_call_work, _initProto] } = _apply_decs_2203_r(this, [
|
|
391
392
|
[
|
|
@@ -428,13 +429,14 @@ export class BotRunner {
|
|
|
428
429
|
consecutiveErrors;
|
|
429
430
|
healthy;
|
|
430
431
|
tracer;
|
|
431
|
-
constructor(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store){
|
|
432
|
+
constructor(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store, syncChainTip){
|
|
432
433
|
this.config = config;
|
|
433
434
|
this.wallet = wallet;
|
|
434
435
|
this.aztecNode = aztecNode;
|
|
435
436
|
this.telemetry = telemetry;
|
|
436
437
|
this.aztecNodeAdmin = aztecNodeAdmin;
|
|
437
438
|
this.store = store;
|
|
439
|
+
this.syncChainTip = syncChainTip;
|
|
438
440
|
this.log = (_initProto(this), createLogger('bot'));
|
|
439
441
|
this.consecutiveErrors = 0;
|
|
440
442
|
this.healthy = true;
|
|
@@ -538,13 +540,13 @@ export class BotRunner {
|
|
|
538
540
|
try {
|
|
539
541
|
switch(this.config.botMode){
|
|
540
542
|
case 'crosschain':
|
|
541
|
-
this.bot = CrossChainBot.create(this.config, this.wallet, this.aztecNode, this.aztecNodeAdmin, this.store);
|
|
543
|
+
this.bot = CrossChainBot.create(this.config, this.wallet, this.aztecNode, this.aztecNodeAdmin, this.store, this.syncChainTip);
|
|
542
544
|
break;
|
|
543
545
|
case 'amm':
|
|
544
|
-
this.bot = AmmBot.create(this.config, this.wallet, this.aztecNode, this.aztecNodeAdmin, this.store);
|
|
546
|
+
this.bot = AmmBot.create(this.config, this.wallet, this.aztecNode, this.aztecNodeAdmin, this.store, this.syncChainTip);
|
|
545
547
|
break;
|
|
546
548
|
case 'transfer':
|
|
547
|
-
this.bot = Bot.create(this.config, this.wallet, this.aztecNode, this.aztecNodeAdmin, this.store);
|
|
549
|
+
this.bot = Bot.create(this.config, this.wallet, this.aztecNode, this.aztecNodeAdmin, this.store, this.syncChainTip);
|
|
548
550
|
break;
|
|
549
551
|
default:
|
|
550
552
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/bot",
|
|
3
|
-
"version": "5.0.0-nightly.
|
|
3
|
+
"version": "5.0.0-nightly.20260612",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -54,20 +54,20 @@
|
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@aztec/accounts": "5.0.0-nightly.
|
|
58
|
-
"@aztec/aztec.js": "5.0.0-nightly.
|
|
59
|
-
"@aztec/entrypoints": "5.0.0-nightly.
|
|
60
|
-
"@aztec/ethereum": "5.0.0-nightly.
|
|
61
|
-
"@aztec/foundation": "5.0.0-nightly.
|
|
62
|
-
"@aztec/kv-store": "5.0.0-nightly.
|
|
63
|
-
"@aztec/l1-artifacts": "5.0.0-nightly.
|
|
64
|
-
"@aztec/noir-contracts.js": "5.0.0-nightly.
|
|
65
|
-
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.
|
|
66
|
-
"@aztec/noir-test-contracts.js": "5.0.0-nightly.
|
|
67
|
-
"@aztec/protocol-contracts": "5.0.0-nightly.
|
|
68
|
-
"@aztec/stdlib": "5.0.0-nightly.
|
|
69
|
-
"@aztec/telemetry-client": "5.0.0-nightly.
|
|
70
|
-
"@aztec/wallets": "5.0.0-nightly.
|
|
57
|
+
"@aztec/accounts": "5.0.0-nightly.20260612",
|
|
58
|
+
"@aztec/aztec.js": "5.0.0-nightly.20260612",
|
|
59
|
+
"@aztec/entrypoints": "5.0.0-nightly.20260612",
|
|
60
|
+
"@aztec/ethereum": "5.0.0-nightly.20260612",
|
|
61
|
+
"@aztec/foundation": "5.0.0-nightly.20260612",
|
|
62
|
+
"@aztec/kv-store": "5.0.0-nightly.20260612",
|
|
63
|
+
"@aztec/l1-artifacts": "5.0.0-nightly.20260612",
|
|
64
|
+
"@aztec/noir-contracts.js": "5.0.0-nightly.20260612",
|
|
65
|
+
"@aztec/noir-protocol-circuits-types": "5.0.0-nightly.20260612",
|
|
66
|
+
"@aztec/noir-test-contracts.js": "5.0.0-nightly.20260612",
|
|
67
|
+
"@aztec/protocol-contracts": "5.0.0-nightly.20260612",
|
|
68
|
+
"@aztec/stdlib": "5.0.0-nightly.20260612",
|
|
69
|
+
"@aztec/telemetry-client": "5.0.0-nightly.20260612",
|
|
70
|
+
"@aztec/wallets": "5.0.0-nightly.20260612",
|
|
71
71
|
"source-map-support": "^0.5.21",
|
|
72
72
|
"tslib": "^2.4.0",
|
|
73
73
|
"viem": "npm:@aztec/viem@2.38.2",
|
package/src/amm_bot.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
|
5
5
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
6
6
|
import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
7
7
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
8
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
8
9
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
9
10
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
10
11
|
|
|
@@ -37,6 +38,7 @@ export class AmmBot extends BaseBot {
|
|
|
37
38
|
aztecNode: AztecNode,
|
|
38
39
|
aztecNodeAdmin: AztecNodeAdmin | undefined,
|
|
39
40
|
store: BotStore,
|
|
41
|
+
syncChainTip?: BlockTag,
|
|
40
42
|
): Promise<AmmBot> {
|
|
41
43
|
const { defaultAccountAddress, token0, token1, amm } = await new BotFactory(
|
|
42
44
|
config,
|
|
@@ -44,6 +46,7 @@ export class AmmBot extends BaseBot {
|
|
|
44
46
|
store,
|
|
45
47
|
aztecNode,
|
|
46
48
|
aztecNodeAdmin,
|
|
49
|
+
syncChainTip,
|
|
47
50
|
).setupAmm();
|
|
48
51
|
return new AmmBot(aztecNode, wallet, defaultAccountAddress, amm, token0, token1, config);
|
|
49
52
|
}
|
package/src/bot.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { TxHash } from '@aztec/aztec.js/tx';
|
|
|
4
4
|
import { times } from '@aztec/foundation/collection';
|
|
5
5
|
import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
|
|
6
6
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
7
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
7
8
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
8
9
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
9
10
|
|
|
@@ -33,6 +34,7 @@ export class Bot extends BaseBot {
|
|
|
33
34
|
aztecNode: AztecNode,
|
|
34
35
|
aztecNodeAdmin: AztecNodeAdmin | undefined,
|
|
35
36
|
store: BotStore,
|
|
37
|
+
syncChainTip?: BlockTag,
|
|
36
38
|
): Promise<Bot> {
|
|
37
39
|
const { defaultAccountAddress, token, recipient } = await new BotFactory(
|
|
38
40
|
config,
|
|
@@ -40,6 +42,7 @@ export class Bot extends BaseBot {
|
|
|
40
42
|
store,
|
|
41
43
|
aztecNode,
|
|
42
44
|
aztecNodeAdmin,
|
|
45
|
+
syncChainTip,
|
|
43
46
|
).setup();
|
|
44
47
|
return new Bot(aztecNode, wallet, defaultAccountAddress, token, recipient, config);
|
|
45
48
|
}
|
package/src/cross_chain_bot.ts
CHANGED
|
@@ -31,6 +31,7 @@ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
|
31
31
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
32
32
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
33
33
|
import type { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
34
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
34
35
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
35
36
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
36
37
|
|
|
@@ -60,6 +61,7 @@ export class CrossChainBot extends BaseBot {
|
|
|
60
61
|
private readonly rollupVersion: bigint,
|
|
61
62
|
private readonly store: BotStore,
|
|
62
63
|
config: BotConfig,
|
|
64
|
+
private readonly syncChainTip?: BlockTag,
|
|
63
65
|
) {
|
|
64
66
|
super(node, wallet, defaultAccountAddress, config);
|
|
65
67
|
}
|
|
@@ -70,11 +72,12 @@ export class CrossChainBot extends BaseBot {
|
|
|
70
72
|
aztecNode: AztecNode,
|
|
71
73
|
aztecNodeAdmin: AztecNodeAdmin | undefined,
|
|
72
74
|
store: BotStore,
|
|
75
|
+
syncChainTip?: BlockTag,
|
|
73
76
|
): Promise<CrossChainBot> {
|
|
74
77
|
if (config.followChain === 'NONE') {
|
|
75
78
|
throw new Error(`CrossChainBot requires followChain to be set (got NONE)`);
|
|
76
79
|
}
|
|
77
|
-
const factory = new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin);
|
|
80
|
+
const factory = new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin, syncChainTip);
|
|
78
81
|
const { defaultAccountAddress, contract, l1Client, rollupVersion } = await factory.setupCrossChain();
|
|
79
82
|
const l1Recipient = EthAddress.fromString(l1Client.account!.address);
|
|
80
83
|
const { l1ContractAddresses } = await aztecNode.getNodeInfo();
|
|
@@ -90,6 +93,7 @@ export class CrossChainBot extends BaseBot {
|
|
|
90
93
|
rollupVersion,
|
|
91
94
|
store,
|
|
92
95
|
config,
|
|
96
|
+
syncChainTip,
|
|
93
97
|
);
|
|
94
98
|
}
|
|
95
99
|
|
|
@@ -176,7 +180,7 @@ export class CrossChainBot extends BaseBot {
|
|
|
176
180
|
): Promise<PendingL1ToL2Message | undefined> {
|
|
177
181
|
const now = Date.now();
|
|
178
182
|
for (const msg of pendingMessages) {
|
|
179
|
-
const ready = await isL1ToL2MessageReady(this.node, Fr.fromHexString(msg.msgHash));
|
|
183
|
+
const ready = await isL1ToL2MessageReady(this.node, Fr.fromHexString(msg.msgHash), this.syncChainTip);
|
|
180
184
|
if (ready) {
|
|
181
185
|
return msg;
|
|
182
186
|
}
|
package/src/factory.ts
CHANGED
|
@@ -29,8 +29,9 @@ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
|
29
29
|
import { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
|
|
30
30
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
31
31
|
import { TestContract } from '@aztec/noir-test-contracts.js/Test';
|
|
32
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
32
33
|
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
33
|
-
import { GasFees,
|
|
34
|
+
import { GasFees, ManaUsageEstimate } from '@aztec/stdlib/gas';
|
|
34
35
|
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
35
36
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
36
37
|
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
@@ -54,6 +55,7 @@ export class BotFactory {
|
|
|
54
55
|
private readonly store: BotStore,
|
|
55
56
|
private readonly aztecNode: AztecNode,
|
|
56
57
|
private readonly aztecNodeAdmin?: AztecNodeAdmin,
|
|
58
|
+
private readonly syncChainTip?: BlockTag,
|
|
57
59
|
) {
|
|
58
60
|
// Set fee padding on the wallet so that all transactions during setup
|
|
59
61
|
// (token deploy, minting, etc.) use the configured padding, not the default.
|
|
@@ -174,6 +176,7 @@ export class BotFactory {
|
|
|
174
176
|
const firstMsg = allMessages[0];
|
|
175
177
|
await waitForL1ToL2MessageReady(this.aztecNode, Fr.fromHexString(firstMsg.msgHash), {
|
|
176
178
|
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds,
|
|
179
|
+
chainTip: this.syncChainTip,
|
|
177
180
|
});
|
|
178
181
|
this.log.info(`First L1→L2 message is ready`);
|
|
179
182
|
}
|
|
@@ -524,13 +527,13 @@ export class BotFactory {
|
|
|
524
527
|
if (useClaim && mnemonicOrPrivateKey) {
|
|
525
528
|
const claim = await this.getOrCreateBridgeClaim(sender!);
|
|
526
529
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(sender!, claim);
|
|
527
|
-
const { estimatedGas } = await deploy.simulate({ ...deployOpts, fee: { estimateGas: true, paymentMethod } });
|
|
528
530
|
const maxFeesPerGas = (await this.getMinFees()).mul(1 + this.config.minFeePadding);
|
|
529
|
-
|
|
530
|
-
|
|
531
|
+
// Leave gas limits unset so the wallet derives them from its own simulation and clamps to the
|
|
532
|
+
// network's per-tx admission limits.
|
|
533
|
+
const gasSettings = {
|
|
531
534
|
maxFeesPerGas,
|
|
532
535
|
maxPriorityFeesPerGas: GasFees.empty(),
|
|
533
|
-
}
|
|
536
|
+
};
|
|
534
537
|
await this.withNoMinTxsPerBlock(async () => {
|
|
535
538
|
const { txHash } = await deploy.send({ ...deployOpts, fee: { gasSettings, paymentMethod }, wait: NO_WAIT });
|
|
536
539
|
this.log.info(
|
|
@@ -540,10 +543,11 @@ export class BotFactory {
|
|
|
540
543
|
});
|
|
541
544
|
await this.store.deleteBridgeClaim(sender!);
|
|
542
545
|
} else {
|
|
543
|
-
|
|
544
|
-
|
|
546
|
+
this.log.info(`Deploying contract ${name} at ${address.toString()}`);
|
|
547
|
+
// Gas limits are left unset so the wallet derives them from its own simulation and clamps to the
|
|
548
|
+
// network's per-tx admission limits.
|
|
545
549
|
await this.withNoMinTxsPerBlock(async () => {
|
|
546
|
-
const { txHash } = await deploy.send({ ...deployOpts,
|
|
550
|
+
const { txHash } = await deploy.send({ ...deployOpts, wait: NO_WAIT });
|
|
547
551
|
this.log.info(`Sent contract ${name} setup tx with hash ${txHash.toString()}`);
|
|
548
552
|
return waitForTx(this.aztecNode, txHash, { timeout: this.config.txMinedWaitSeconds });
|
|
549
553
|
});
|
|
@@ -591,15 +595,12 @@ export class BotFactory {
|
|
|
591
595
|
while (balance < FEE_JUICE_TOP_UP_TARGET) {
|
|
592
596
|
const claim = await this.bridgeL1FeeJuice(account);
|
|
593
597
|
const paymentMethod = new FeeJuicePaymentMethodWithClaim(account, claim);
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
});
|
|
598
|
-
const gasSettings = GasSettings.from({
|
|
599
|
-
...estimatedGas!,
|
|
598
|
+
// Leave gas limits unset so the wallet derives them from its own simulation and clamps to the
|
|
599
|
+
// network's per-tx admission limits.
|
|
600
|
+
const gasSettings = {
|
|
600
601
|
maxFeesPerGas,
|
|
601
602
|
maxPriorityFeesPerGas: GasFees.empty(),
|
|
602
|
-
}
|
|
603
|
+
};
|
|
603
604
|
|
|
604
605
|
await this.withNoMinTxsPerBlock(async () => {
|
|
605
606
|
const { txHash } = await minimalInteraction.send({
|
|
@@ -677,6 +678,7 @@ export class BotFactory {
|
|
|
677
678
|
await this.withNoMinTxsPerBlock(() =>
|
|
678
679
|
waitForL1ToL2MessageReady(this.aztecNode, messageHash, {
|
|
679
680
|
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds,
|
|
681
|
+
chainTip: this.syncChainTip,
|
|
680
682
|
}),
|
|
681
683
|
);
|
|
682
684
|
return existingClaim.claim;
|
|
@@ -715,6 +717,7 @@ export class BotFactory {
|
|
|
715
717
|
await this.withNoMinTxsPerBlock(() =>
|
|
716
718
|
waitForL1ToL2MessageReady(this.aztecNode, Fr.fromHexString(claim.messageHash), {
|
|
717
719
|
timeoutSeconds: this.config.l1ToL2MessageTimeoutSeconds,
|
|
720
|
+
chainTip: this.syncChainTip,
|
|
718
721
|
}),
|
|
719
722
|
);
|
|
720
723
|
|
package/src/runner.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { createLogger } from '@aztec/aztec.js/log';
|
|
|
2
2
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
3
3
|
import { omit } from '@aztec/foundation/collection';
|
|
4
4
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
5
|
+
import type { BlockTag } from '@aztec/stdlib/block';
|
|
5
6
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
7
|
import { type TelemetryClient, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
|
|
7
8
|
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
@@ -30,6 +31,7 @@ export class BotRunner implements BotRunnerApi, Traceable {
|
|
|
30
31
|
private readonly telemetry: TelemetryClient,
|
|
31
32
|
private readonly aztecNodeAdmin: AztecNodeAdmin | undefined,
|
|
32
33
|
private readonly store: BotStore,
|
|
34
|
+
private readonly syncChainTip?: BlockTag,
|
|
33
35
|
) {
|
|
34
36
|
this.tracer = telemetry.getTracer('Bot');
|
|
35
37
|
|
|
@@ -149,13 +151,34 @@ export class BotRunner implements BotRunnerApi, Traceable {
|
|
|
149
151
|
try {
|
|
150
152
|
switch (this.config.botMode) {
|
|
151
153
|
case 'crosschain':
|
|
152
|
-
this.bot = CrossChainBot.create(
|
|
154
|
+
this.bot = CrossChainBot.create(
|
|
155
|
+
this.config,
|
|
156
|
+
this.wallet,
|
|
157
|
+
this.aztecNode,
|
|
158
|
+
this.aztecNodeAdmin,
|
|
159
|
+
this.store,
|
|
160
|
+
this.syncChainTip,
|
|
161
|
+
);
|
|
153
162
|
break;
|
|
154
163
|
case 'amm':
|
|
155
|
-
this.bot = AmmBot.create(
|
|
164
|
+
this.bot = AmmBot.create(
|
|
165
|
+
this.config,
|
|
166
|
+
this.wallet,
|
|
167
|
+
this.aztecNode,
|
|
168
|
+
this.aztecNodeAdmin,
|
|
169
|
+
this.store,
|
|
170
|
+
this.syncChainTip,
|
|
171
|
+
);
|
|
156
172
|
break;
|
|
157
173
|
case 'transfer':
|
|
158
|
-
this.bot = Bot.create(
|
|
174
|
+
this.bot = Bot.create(
|
|
175
|
+
this.config,
|
|
176
|
+
this.wallet,
|
|
177
|
+
this.aztecNode,
|
|
178
|
+
this.aztecNodeAdmin,
|
|
179
|
+
this.store,
|
|
180
|
+
this.syncChainTip,
|
|
181
|
+
);
|
|
159
182
|
break;
|
|
160
183
|
default: {
|
|
161
184
|
const _exhaustive: never = this.config.botMode;
|