@aztec/bot 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9
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 +9 -10
- package/dest/amm_bot.d.ts.map +1 -1
- package/dest/amm_bot.js +27 -20
- package/dest/base_bot.d.ts +12 -9
- package/dest/base_bot.d.ts.map +1 -1
- package/dest/base_bot.js +28 -29
- package/dest/bot.d.ts +9 -10
- package/dest/bot.d.ts.map +1 -1
- package/dest/bot.js +12 -10
- package/dest/config.d.ts +82 -63
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +61 -31
- package/dest/cross_chain_bot.d.ts +54 -0
- package/dest/cross_chain_bot.d.ts.map +1 -0
- package/dest/cross_chain_bot.js +140 -0
- package/dest/factory.d.ts +27 -34
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +271 -151
- package/dest/index.d.ts +3 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -0
- package/dest/interface.d.ts +2 -2
- package/dest/interface.d.ts.map +1 -1
- package/dest/interface.js +1 -1
- package/dest/l1_to_l2_seeding.d.ts +8 -0
- package/dest/l1_to_l2_seeding.d.ts.map +1 -0
- package/dest/l1_to_l2_seeding.js +63 -0
- package/dest/rpc.d.ts +1 -1
- package/dest/runner.d.ts +12 -13
- package/dest/runner.d.ts.map +1 -1
- package/dest/runner.js +445 -61
- package/dest/store/bot_store.d.ts +69 -0
- package/dest/store/bot_store.d.ts.map +1 -0
- package/dest/store/bot_store.js +138 -0
- package/dest/store/index.d.ts +2 -0
- package/dest/store/index.d.ts.map +1 -0
- package/dest/store/index.js +1 -0
- package/dest/utils.d.ts +4 -4
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +5 -5
- package/package.json +19 -13
- package/src/amm_bot.ts +40 -32
- package/src/base_bot.ts +27 -39
- package/src/bot.ts +25 -13
- package/src/config.ts +101 -72
- package/src/cross_chain_bot.ts +209 -0
- package/src/factory.ts +313 -177
- package/src/index.ts +2 -0
- package/src/interface.ts +1 -1
- package/src/l1_to_l2_seeding.ts +79 -0
- package/src/runner.ts +33 -24
- package/src/store/bot_store.ts +196 -0
- package/src/store/index.ts +1 -0
- package/src/utils.ts +10 -5
package/dest/amm_bot.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { AztecAddress
|
|
1
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
2
3
|
import type { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
3
4
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
|
-
import type { AztecNode, AztecNodeAdmin
|
|
5
|
+
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
5
7
|
import { BaseBot } from './base_bot.js';
|
|
6
8
|
import type { BotConfig } from './config.js';
|
|
9
|
+
import type { BotStore } from './store/index.js';
|
|
7
10
|
type Balances = {
|
|
8
11
|
token0: bigint;
|
|
9
12
|
token1: bigint;
|
|
@@ -12,13 +15,9 @@ export declare class AmmBot extends BaseBot {
|
|
|
12
15
|
readonly amm: AMMContract;
|
|
13
16
|
readonly token0: TokenContract;
|
|
14
17
|
readonly token1: TokenContract;
|
|
15
|
-
protected constructor(
|
|
16
|
-
static create(config: BotConfig,
|
|
17
|
-
|
|
18
|
-
node?: AztecNode;
|
|
19
|
-
nodeAdmin?: AztecNodeAdmin;
|
|
20
|
-
}): Promise<AmmBot>;
|
|
21
|
-
protected createAndSendTx(logCtx: object): Promise<SentTx>;
|
|
18
|
+
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
|
+
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
22
21
|
protected onTxMined(receipt: TxReceipt, logCtx: object): Promise<void>;
|
|
23
22
|
getAmmBalances(): Promise<Balances>;
|
|
24
23
|
getBalances(): Promise<{
|
|
@@ -30,4 +29,4 @@ export declare class AmmBot extends BaseBot {
|
|
|
30
29
|
private getPrivateBalanceFor;
|
|
31
30
|
}
|
|
32
31
|
export {};
|
|
33
|
-
//# sourceMappingURL=
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1tX2JvdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FtbV9ib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS2pELEtBQUssUUFBUSxHQUFHO0lBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDO0FBRW5ELHFCQUFhLE1BQU8sU0FBUSxPQUFPO2FBS2YsR0FBRyxFQUFFLFdBQVc7YUFDaEIsTUFBTSxFQUFFLGFBQWE7YUFDckIsTUFBTSxFQUFFLGFBQWE7SUFOdkMsU0FBUyxhQUNQLElBQUksRUFBRSxTQUFTLEVBQ2YsTUFBTSxFQUFFLGNBQWMsRUFDdEIscUJBQXFCLEVBQUUsWUFBWSxFQUNuQixHQUFHLEVBQUUsV0FBVyxFQUNoQixNQUFNLEVBQUUsYUFBYSxFQUNyQixNQUFNLEVBQUUsYUFBYSxFQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUdsQjtJQUVELE9BQWEsTUFBTSxDQUNqQixNQUFNLEVBQUUsU0FBUyxFQUNqQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLEVBQUUsY0FBYyxHQUFHLFNBQVMsRUFDMUMsS0FBSyxFQUFFLFFBQVEsR0FDZCxPQUFPLENBQUMsTUFBTSxDQUFDLENBU2pCO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTBDL0Q7SUFFRCxVQUF5QixTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHcEY7SUFFTSxjQUFjLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUV6QztJQUVZLFdBQVcsSUFBSSxPQUFPLENBQUM7UUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDO1FBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQztRQUFDLEdBQUcsRUFBRSxRQUFRLENBQUE7S0FBRSxDQUFDLENBTXRHO1lBRWEsbUJBQW1CO1lBTW5CLG9CQUFvQjtDQU1uQyJ9
|
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,
|
|
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,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEvD,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,GACd,OAAO,CAAC,MAAM,CAAC,CASjB;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C/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;YAMnB,oBAAoB;CAMnC"}
|
package/dest/amm_bot.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
2
3
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
3
4
|
import { BaseBot } from './base_bot.js';
|
|
4
5
|
import { BotFactory } from './factory.js';
|
|
@@ -8,12 +9,12 @@ export class AmmBot extends BaseBot {
|
|
|
8
9
|
amm;
|
|
9
10
|
token0;
|
|
10
11
|
token1;
|
|
11
|
-
constructor(
|
|
12
|
-
super(
|
|
12
|
+
constructor(node, wallet, defaultAccountAddress, amm, token0, token1, config){
|
|
13
|
+
super(node, wallet, defaultAccountAddress, config), this.amm = amm, this.token0 = token0, this.token1 = token1;
|
|
13
14
|
}
|
|
14
|
-
static async create(config,
|
|
15
|
-
const {
|
|
16
|
-
return new AmmBot(
|
|
15
|
+
static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
|
|
16
|
+
const { defaultAccountAddress, token0, token1, amm } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin).setupAmm();
|
|
17
|
+
return new AmmBot(aztecNode, wallet, defaultAccountAddress, amm, token0, token1, config);
|
|
17
18
|
}
|
|
18
19
|
async createAndSendTx(logCtx) {
|
|
19
20
|
const { feePaymentMethod } = this.config;
|
|
@@ -33,9 +34,9 @@ export class AmmBot extends BaseBot {
|
|
|
33
34
|
token1,
|
|
34
35
|
token0
|
|
35
36
|
];
|
|
36
|
-
const swapAuthwit = await wallet.createAuthWit({
|
|
37
|
+
const swapAuthwit = await wallet.createAuthWit(this.defaultAccountAddress, {
|
|
37
38
|
caller: amm.address,
|
|
38
|
-
|
|
39
|
+
call: await tokenIn.methods.transfer_to_public(this.defaultAccountAddress, amm.address, amountIn, authwitNonce).getFunctionCall()
|
|
39
40
|
});
|
|
40
41
|
const amountOutMin = await amm.methods.get_amount_out_for_exact_in(await tokenIn.methods.balance_of_public(amm.address).simulate({
|
|
41
42
|
from: this.defaultAccountAddress
|
|
@@ -44,15 +45,21 @@ export class AmmBot extends BaseBot {
|
|
|
44
45
|
}), amountIn).simulate({
|
|
45
46
|
from: this.defaultAccountAddress
|
|
46
47
|
});
|
|
47
|
-
const swapExactTokensInteraction = amm.methods.swap_exact_tokens_for_tokens(tokenIn.address, tokenOut.address, amountIn, amountOutMin, authwitNonce)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
const swapExactTokensInteraction = amm.methods.swap_exact_tokens_for_tokens(tokenIn.address, tokenOut.address, amountIn, amountOutMin, authwitNonce).with({
|
|
49
|
+
authWitnesses: [
|
|
50
|
+
swapAuthwit
|
|
51
|
+
]
|
|
52
|
+
});
|
|
53
|
+
const opts = await this.getSendMethodOpts(swapExactTokensInteraction);
|
|
54
|
+
this.log.verbose(`Sending transaction`, logCtx);
|
|
51
55
|
this.log.info(`Tx. Balances: ${jsonStringify(balances)}`, {
|
|
52
56
|
...logCtx,
|
|
53
57
|
balances
|
|
54
58
|
});
|
|
55
|
-
return
|
|
59
|
+
return swapExactTokensInteraction.send({
|
|
60
|
+
...opts,
|
|
61
|
+
wait: NO_WAIT
|
|
62
|
+
});
|
|
56
63
|
}
|
|
57
64
|
async onTxMined(receipt, logCtx) {
|
|
58
65
|
const balances = await this.getBalances();
|
|
@@ -68,26 +75,26 @@ export class AmmBot extends BaseBot {
|
|
|
68
75
|
return {
|
|
69
76
|
senderPublic: await this.getPublicBalanceFor(this.defaultAccountAddress),
|
|
70
77
|
senderPrivate: await this.getPrivateBalanceFor(this.defaultAccountAddress),
|
|
71
|
-
amm: await this.getPublicBalanceFor(this.amm.address)
|
|
78
|
+
amm: await this.getPublicBalanceFor(this.amm.address, this.defaultAccountAddress)
|
|
72
79
|
};
|
|
73
80
|
}
|
|
74
|
-
async getPublicBalanceFor(address) {
|
|
81
|
+
async getPublicBalanceFor(address, from) {
|
|
75
82
|
return {
|
|
76
83
|
token0: await this.token0.methods.balance_of_public(address).simulate({
|
|
77
|
-
from: address
|
|
84
|
+
from: from ?? address
|
|
78
85
|
}),
|
|
79
86
|
token1: await this.token1.methods.balance_of_public(address).simulate({
|
|
80
|
-
from: address
|
|
87
|
+
from: from ?? address
|
|
81
88
|
})
|
|
82
89
|
};
|
|
83
90
|
}
|
|
84
|
-
async getPrivateBalanceFor(address) {
|
|
91
|
+
async getPrivateBalanceFor(address, from) {
|
|
85
92
|
return {
|
|
86
93
|
token0: await this.token0.methods.balance_of_private(address).simulate({
|
|
87
|
-
from: address
|
|
94
|
+
from: from ?? address
|
|
88
95
|
}),
|
|
89
96
|
token1: await this.token1.methods.balance_of_private(address).simulate({
|
|
90
|
-
from: address
|
|
97
|
+
from: from ?? address
|
|
91
98
|
})
|
|
92
99
|
};
|
|
93
100
|
}
|
package/dest/base_bot.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type
|
|
1
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { BatchCall, ContractFunctionInteraction, type SendInteractionOptions } from '@aztec/aztec.js/contracts';
|
|
3
|
+
import { TxHash, TxReceipt } from '@aztec/aztec.js/tx';
|
|
4
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
5
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
3
6
|
import type { BotConfig } from './config.js';
|
|
4
7
|
export declare abstract class BaseBot {
|
|
5
|
-
readonly
|
|
6
|
-
readonly wallet:
|
|
8
|
+
readonly node: AztecNode;
|
|
9
|
+
readonly wallet: EmbeddedWallet;
|
|
7
10
|
readonly defaultAccountAddress: AztecAddress;
|
|
8
11
|
config: BotConfig;
|
|
9
|
-
protected log: import("@aztec/aztec.js").Logger;
|
|
12
|
+
protected log: import("@aztec/aztec.js/log").Logger;
|
|
10
13
|
protected attempts: number;
|
|
11
14
|
protected successes: number;
|
|
12
|
-
protected constructor(
|
|
15
|
+
protected constructor(node: AztecNode, wallet: EmbeddedWallet, defaultAccountAddress: AztecAddress, config: BotConfig);
|
|
13
16
|
run(): Promise<TxReceipt | TxHash>;
|
|
14
|
-
protected abstract createAndSendTx(logCtx: object): Promise<
|
|
17
|
+
protected abstract createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
15
18
|
protected onTxMined(_receipt: TxReceipt, _logCtx: object): Promise<void>;
|
|
16
|
-
protected getSendMethodOpts(
|
|
19
|
+
protected getSendMethodOpts(interaction: ContractFunctionInteraction | BatchCall): Promise<SendInteractionOptions>;
|
|
17
20
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZV9ib3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9iYXNlX2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHaEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUVqRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsOEJBQXNCLE9BQU87YUFPVCxJQUFJLEVBQUUsU0FBUzthQUNmLE1BQU0sRUFBRSxjQUFjO2FBQ3RCLHFCQUFxQixFQUFFLFlBQVk7SUFDNUMsTUFBTSxFQUFFLFNBQVM7SUFUMUIsU0FBUyxDQUFDLEdBQUcsdUNBQXVCO0lBRXBDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFLO0lBQy9CLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFLO0lBRWhDLFNBQVMsYUFDUyxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLHFCQUFxQixFQUFFLFlBQVksRUFDNUMsTUFBTSxFQUFFLFNBQVMsRUFDdEI7SUFFUyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0F5QjlDO0lBRUQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUd2RTtJQUVELFVBQWdCLGlCQUFpQixDQUMvQixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsU0FBUyxHQUNuRCxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FvQmpDO0NBQ0YifQ==
|
package/dest/base_bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base_bot.d.ts","sourceRoot":"","sources":["../src/base_bot.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"base_bot.d.ts","sourceRoot":"","sources":["../src/base_bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGhH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,8BAAsB,OAAO;aAOT,IAAI,EAAE,SAAS;aACf,MAAM,EAAE,cAAc;aACtB,qBAAqB,EAAE,YAAY;IAC5C,MAAM,EAAE,SAAS;IAT1B,SAAS,CAAC,GAAG,uCAAuB;IAEpC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAK;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAK;IAEhC,SAAS,aACS,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,qBAAqB,EAAE,YAAY,EAC5C,MAAM,EAAE,SAAS,EACtB;IAES,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAyB9C;IAED,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpE,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;IAED,UAAgB,iBAAiB,CAC/B,WAAW,EAAE,2BAA2B,GAAG,SAAS,GACnD,OAAO,CAAC,sBAAsB,CAAC,CAoBjC;CACF"}
|
package/dest/base_bot.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
+
import { waitForTx } from '@aztec/aztec.js/node';
|
|
3
|
+
import { TxStatus } from '@aztec/aztec.js/tx';
|
|
2
4
|
import { Gas } from '@aztec/stdlib/gas';
|
|
3
5
|
export class BaseBot {
|
|
4
|
-
|
|
6
|
+
node;
|
|
5
7
|
wallet;
|
|
6
8
|
defaultAccountAddress;
|
|
7
9
|
config;
|
|
8
10
|
log;
|
|
9
11
|
attempts;
|
|
10
12
|
successes;
|
|
11
|
-
constructor(
|
|
12
|
-
this.
|
|
13
|
+
constructor(node, wallet, defaultAccountAddress, config){
|
|
14
|
+
this.node = node;
|
|
13
15
|
this.wallet = wallet;
|
|
14
16
|
this.defaultAccountAddress = defaultAccountAddress;
|
|
15
17
|
this.config = config;
|
|
@@ -19,26 +21,24 @@ export class BaseBot {
|
|
|
19
21
|
}
|
|
20
22
|
async run() {
|
|
21
23
|
this.attempts++;
|
|
24
|
+
const { followChain, txMinedWaitSeconds } = this.config;
|
|
22
25
|
const logCtx = {
|
|
23
|
-
runId: Date.now() * 1000 + Math.floor(Math.random() * 1000)
|
|
26
|
+
runId: Date.now() * 1000 + Math.floor(Math.random() * 1000),
|
|
27
|
+
followChain,
|
|
28
|
+
txMinedWaitSeconds
|
|
24
29
|
};
|
|
25
|
-
const { followChain, txMinedWaitSeconds } = this.config;
|
|
26
30
|
this.log.verbose(`Creating tx`, logCtx);
|
|
27
|
-
const
|
|
28
|
-
const txHash = await tx.getTxHash();
|
|
31
|
+
const txHash = await this.createAndSendTx(logCtx);
|
|
29
32
|
if (followChain === 'NONE') {
|
|
30
33
|
this.log.info(`Transaction ${txHash.toString()} sent, not waiting for it to be mined`);
|
|
31
34
|
return txHash;
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
const waitForStatus = TxStatus[followChain];
|
|
37
|
+
this.log.verbose(`Awaiting tx ${txHash.toString()} to be on the ${followChain} chain`, logCtx);
|
|
38
|
+
const receipt = await waitForTx(this.node, txHash, {
|
|
39
|
+
timeout: txMinedWaitSeconds,
|
|
40
|
+
waitForStatus
|
|
36
41
|
});
|
|
37
|
-
if (followChain === 'PROVEN') {
|
|
38
|
-
await waitForProven(this.pxe, receipt, {
|
|
39
|
-
provenTimeout: txMinedWaitSeconds
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
42
|
this.successes++;
|
|
43
43
|
this.log.info(`Tx #${this.attempts} ${receipt.txHash} successfully mined in block ${receipt.blockNumber} (stats: ${this.successes}/${this.attempts} success)`, logCtx);
|
|
44
44
|
await this.onTxMined(receipt, logCtx);
|
|
@@ -48,10 +48,10 @@ export class BaseBot {
|
|
|
48
48
|
// no-op
|
|
49
49
|
return Promise.resolve();
|
|
50
50
|
}
|
|
51
|
-
getSendMethodOpts(
|
|
52
|
-
const { l2GasLimit, daGasLimit } = this.config;
|
|
53
|
-
|
|
54
|
-
let gasSettings
|
|
51
|
+
async getSendMethodOpts(interaction) {
|
|
52
|
+
const { l2GasLimit, daGasLimit, minFeePadding } = this.config;
|
|
53
|
+
this.wallet.setMinFeePadding(minFeePadding);
|
|
54
|
+
let gasSettings;
|
|
55
55
|
if (l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0) {
|
|
56
56
|
gasSettings = {
|
|
57
57
|
gasLimits: Gas.from({
|
|
@@ -59,22 +59,21 @@ export class BaseBot {
|
|
|
59
59
|
daGas: daGasLimit
|
|
60
60
|
})
|
|
61
61
|
};
|
|
62
|
-
estimateGas = false;
|
|
63
62
|
this.log.verbose(`Using gas limits ${l2GasLimit} L2 gas ${daGasLimit} DA gas`);
|
|
64
63
|
} else {
|
|
65
|
-
estimateGas = true;
|
|
66
64
|
this.log.verbose(`Estimating gas for transaction`);
|
|
65
|
+
({ estimatedGas: gasSettings } = await interaction.simulate({
|
|
66
|
+
fee: {
|
|
67
|
+
estimateGas: true
|
|
68
|
+
},
|
|
69
|
+
from: this.defaultAccountAddress
|
|
70
|
+
}));
|
|
67
71
|
}
|
|
68
|
-
const baseFeePadding = 2; // Send 3x the current base fee
|
|
69
72
|
return {
|
|
70
73
|
from: this.defaultAccountAddress,
|
|
71
74
|
fee: {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
gasSettings,
|
|
75
|
-
baseFeePadding
|
|
76
|
-
},
|
|
77
|
-
authWitnesses
|
|
75
|
+
gasSettings
|
|
76
|
+
}
|
|
78
77
|
};
|
|
79
78
|
}
|
|
80
79
|
}
|
package/dest/bot.d.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { TxHash } from '@aztec/aztec.js/tx';
|
|
2
3
|
import type { PrivateTokenContract } from '@aztec/noir-contracts.js/PrivateToken';
|
|
3
4
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
|
-
import type { AztecNode, AztecNodeAdmin
|
|
5
|
+
import type { AztecNode, AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
6
|
+
import type { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
5
7
|
import { BaseBot } from './base_bot.js';
|
|
6
8
|
import type { BotConfig } from './config.js';
|
|
9
|
+
import type { BotStore } from './store/index.js';
|
|
7
10
|
export declare class Bot extends BaseBot {
|
|
8
11
|
readonly token: TokenContract | PrivateTokenContract;
|
|
9
12
|
readonly recipient: AztecAddress;
|
|
10
|
-
protected constructor(
|
|
11
|
-
static create(config: BotConfig,
|
|
12
|
-
pxe?: PXE;
|
|
13
|
-
node?: AztecNode;
|
|
14
|
-
nodeAdmin?: AztecNodeAdmin;
|
|
15
|
-
}): Promise<Bot>;
|
|
13
|
+
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>;
|
|
16
15
|
updateConfig(config: Partial<BotConfig>): void;
|
|
17
|
-
protected createAndSendTx(logCtx: object): Promise<
|
|
16
|
+
protected createAndSendTx(logCtx: object): Promise<TxHash>;
|
|
18
17
|
getBalances(): Promise<{
|
|
19
18
|
sender: {
|
|
20
19
|
privateBalance: bigint;
|
|
@@ -26,4 +25,4 @@ export declare class Bot extends BaseBot {
|
|
|
26
25
|
};
|
|
27
26
|
}>;
|
|
28
27
|
}
|
|
29
|
-
//# sourceMappingURL=
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QyxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtqRCxxQkFBYSxHQUFJLFNBQVEsT0FBTzthQUtaLEtBQUssRUFBRSxhQUFhLEdBQUcsb0JBQW9CO2FBQzNDLFNBQVMsRUFBRSxZQUFZO0lBTHpDLFNBQVMsYUFDUCxJQUFJLEVBQUUsU0FBUyxFQUNmLE1BQU0sRUFBRSxjQUFjLEVBQ3RCLHFCQUFxQixFQUFFLFlBQVksRUFDbkIsS0FBSyxFQUFFLGFBQWEsR0FBRyxvQkFBb0IsRUFDM0MsU0FBUyxFQUFFLFlBQVksRUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFHbEI7SUFFRCxPQUFhLE1BQU0sQ0FDakIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsY0FBYyxFQUFFLGNBQWMsR0FBRyxTQUFTLEVBQzFDLEtBQUssRUFBRSxRQUFRLEdBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQVNkO0lBRU0sWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBRzdDO0lBRUQsVUFBZ0IsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTRCL0Q7SUFFWSxXQUFXOzs7Ozs7Ozs7T0FrQnZCO0NBQ0YifQ==
|
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,EAAE,
|
|
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,GACd,OAAO,CAAC,GAAG,CAAC,CASd;IAEM,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,QAG7C;IAED,UAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B/D;IAEY,WAAW;;;;;;;;;OAkBvB;CACF"}
|
package/dest/bot.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BatchCall } from '@aztec/aztec.js';
|
|
1
|
+
import { BatchCall, NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { times } from '@aztec/foundation/collection';
|
|
3
3
|
import { BaseBot } from './base_bot.js';
|
|
4
4
|
import { BotFactory } from './factory.js';
|
|
@@ -7,12 +7,12 @@ const TRANSFER_AMOUNT = 1;
|
|
|
7
7
|
export class Bot extends BaseBot {
|
|
8
8
|
token;
|
|
9
9
|
recipient;
|
|
10
|
-
constructor(
|
|
11
|
-
super(
|
|
10
|
+
constructor(node, wallet, defaultAccountAddress, token, recipient, config){
|
|
11
|
+
super(node, wallet, defaultAccountAddress, config), this.token = token, this.recipient = recipient;
|
|
12
12
|
}
|
|
13
|
-
static async create(config,
|
|
14
|
-
const {
|
|
15
|
-
return new Bot(
|
|
13
|
+
static async create(config, wallet, aztecNode, aztecNodeAdmin, store) {
|
|
14
|
+
const { defaultAccountAddress, token, recipient } = await new BotFactory(config, wallet, store, aztecNode, aztecNodeAdmin).setup();
|
|
15
|
+
return new Bot(aztecNode, wallet, defaultAccountAddress, token, recipient, config);
|
|
16
16
|
}
|
|
17
17
|
updateConfig(config) {
|
|
18
18
|
this.log.info(`Updating bot config ${Object.keys(config).join(', ')}`);
|
|
@@ -29,15 +29,17 @@ export class Bot extends BaseBot {
|
|
|
29
29
|
times(privateTransfersPerTx, ()=>token.methods.transfer(recipient, TRANSFER_AMOUNT)),
|
|
30
30
|
times(publicTransfersPerTx, ()=>token.methods.transfer_in_public(this.defaultAccountAddress, recipient, TRANSFER_AMOUNT, 0))
|
|
31
31
|
].flat() : times(privateTransfersPerTx, ()=>token.methods.transfer(TRANSFER_AMOUNT, this.defaultAccountAddress, recipient));
|
|
32
|
-
const opts = this.getSendMethodOpts();
|
|
33
32
|
const batch = new BatchCall(wallet, calls);
|
|
33
|
+
const opts = await this.getSendMethodOpts(batch);
|
|
34
34
|
this.log.verbose(`Simulating transaction with ${calls.length}`, logCtx);
|
|
35
35
|
await batch.simulate({
|
|
36
36
|
from: this.defaultAccountAddress
|
|
37
37
|
});
|
|
38
|
-
this.log.verbose(`
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
this.log.verbose(`Sending transaction`, logCtx);
|
|
39
|
+
return batch.send({
|
|
40
|
+
...opts,
|
|
41
|
+
wait: NO_WAIT
|
|
42
|
+
});
|
|
41
43
|
}
|
|
42
44
|
async getBalances() {
|
|
43
45
|
if (isStandardTokenContract(this.token)) {
|