@aztec/bot 0.73.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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/bot.js +42 -21
- package/dest/config.js +50 -46
- package/dest/factory.js +51 -42
- package/dest/index.js +1 -2
- package/dest/interface.js +1 -2
- package/dest/rpc.js +7 -5
- package/dest/runner.js +151 -155
- package/dest/utils.js +5 -4
- package/package.json +12 -12
- package/src/index.ts +1 -1
- package/dest/bot.d.ts +0 -33
- package/dest/bot.d.ts.map +0 -1
- package/dest/config.d.ts +0 -162
- package/dest/config.d.ts.map +0 -1
- package/dest/factory.d.ts +0 -45
- package/dest/factory.d.ts.map +0 -1
- package/dest/index.d.ts +0 -6
- package/dest/index.d.ts.map +0 -1
- package/dest/interface.d.ts +0 -12
- package/dest/interface.d.ts.map +0 -1
- package/dest/rpc.d.ts +0 -10
- package/dest/rpc.d.ts.map +0 -1
- package/dest/runner.d.ts +0 -49
- package/dest/runner.d.ts.map +0 -1
- package/dest/utils.d.ts +0 -16
- package/dest/utils.d.ts.map +0 -1
package/dest/bot.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
import { BatchCall, FeeJuicePaymentMethod, NoFeePaymentMethod, createLogger
|
|
1
|
+
import { BatchCall, FeeJuicePaymentMethod, NoFeePaymentMethod, createLogger } from '@aztec/aztec.js';
|
|
2
2
|
import { Gas } from '@aztec/circuits.js';
|
|
3
3
|
import { timesParallel } from '@aztec/foundation/collection';
|
|
4
4
|
import { BotFactory } from './factory.js';
|
|
5
5
|
import { getBalances, getPrivateBalance, isStandardTokenContract } from './utils.js';
|
|
6
6
|
const TRANSFER_AMOUNT = 1;
|
|
7
7
|
export class Bot {
|
|
8
|
-
|
|
8
|
+
wallet;
|
|
9
|
+
token;
|
|
10
|
+
recipient;
|
|
11
|
+
config;
|
|
12
|
+
log;
|
|
13
|
+
attempts;
|
|
14
|
+
successes;
|
|
15
|
+
constructor(wallet, token, recipient, config){
|
|
9
16
|
this.wallet = wallet;
|
|
10
17
|
this.token = token;
|
|
11
18
|
this.recipient = recipient;
|
|
@@ -20,22 +27,26 @@ export class Bot {
|
|
|
20
27
|
}
|
|
21
28
|
updateConfig(config) {
|
|
22
29
|
this.log.info(`Updating bot config ${Object.keys(config).join(', ')}`);
|
|
23
|
-
this.config = {
|
|
30
|
+
this.config = {
|
|
31
|
+
...this.config,
|
|
32
|
+
...config
|
|
33
|
+
};
|
|
24
34
|
}
|
|
25
35
|
async run() {
|
|
26
36
|
this.attempts++;
|
|
27
|
-
const logCtx = {
|
|
37
|
+
const logCtx = {
|
|
38
|
+
runId: Date.now() * 1000 + Math.floor(Math.random() * 1000)
|
|
39
|
+
};
|
|
28
40
|
const { privateTransfersPerTx, publicTransfersPerTx, feePaymentMethod, followChain, txMinedWaitSeconds } = this.config;
|
|
29
41
|
const { token, recipient, wallet } = this;
|
|
30
42
|
const sender = wallet.getAddress();
|
|
31
43
|
this.log.verbose(`Preparing tx with ${feePaymentMethod} fee with ${privateTransfersPerTx} private and ${publicTransfersPerTx} public transfers`, logCtx);
|
|
32
44
|
const calls = [];
|
|
33
45
|
if (isStandardTokenContract(token)) {
|
|
34
|
-
calls.push(...
|
|
35
|
-
calls.push(...
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
calls.push(...(await timesParallel(privateTransfersPerTx, () => token.methods.transfer(TRANSFER_AMOUNT, sender, recipient).request())));
|
|
46
|
+
calls.push(...await timesParallel(privateTransfersPerTx, ()=>token.methods.transfer(recipient, TRANSFER_AMOUNT).request()));
|
|
47
|
+
calls.push(...await timesParallel(publicTransfersPerTx, ()=>token.methods.transfer_in_public(sender, recipient, TRANSFER_AMOUNT, 0).request()));
|
|
48
|
+
} else {
|
|
49
|
+
calls.push(...await timesParallel(privateTransfersPerTx, ()=>token.methods.transfer(TRANSFER_AMOUNT, sender, recipient).request()));
|
|
39
50
|
}
|
|
40
51
|
const opts = this.getSendMethodOpts();
|
|
41
52
|
const batch = new BatchCall(wallet, calls);
|
|
@@ -54,7 +65,7 @@ export class Bot {
|
|
|
54
65
|
const receipt = await tx.wait({
|
|
55
66
|
timeout: txMinedWaitSeconds,
|
|
56
67
|
provenTimeout: txMinedWaitSeconds,
|
|
57
|
-
proven: followChain === 'PROVEN'
|
|
68
|
+
proven: followChain === 'PROVEN'
|
|
58
69
|
});
|
|
59
70
|
this.log.info(`Tx #${this.attempts} ${receipt.txHash} successfully mined in block ${receipt.blockNumber} (stats: ${this.successes}/${this.attempts} success)`, logCtx);
|
|
60
71
|
this.successes++;
|
|
@@ -63,19 +74,18 @@ export class Bot {
|
|
|
63
74
|
if (isStandardTokenContract(this.token)) {
|
|
64
75
|
return {
|
|
65
76
|
sender: await getBalances(this.token, this.wallet.getAddress()),
|
|
66
|
-
recipient: await getBalances(this.token, this.recipient)
|
|
77
|
+
recipient: await getBalances(this.token, this.recipient)
|
|
67
78
|
};
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
79
|
+
} else {
|
|
70
80
|
return {
|
|
71
81
|
sender: {
|
|
72
82
|
privateBalance: await getPrivateBalance(this.token, this.wallet.getAddress()),
|
|
73
|
-
publicBalance: 0n
|
|
83
|
+
publicBalance: 0n
|
|
74
84
|
},
|
|
75
85
|
recipient: {
|
|
76
86
|
privateBalance: await getPrivateBalance(this.token, this.recipient),
|
|
77
|
-
publicBalance: 0n
|
|
78
|
-
}
|
|
87
|
+
publicBalance: 0n
|
|
88
|
+
}
|
|
79
89
|
};
|
|
80
90
|
}
|
|
81
91
|
}
|
|
@@ -85,17 +95,28 @@ export class Bot {
|
|
|
85
95
|
const paymentMethod = feePaymentMethod === 'fee_juice' ? new FeeJuicePaymentMethod(sender) : new NoFeePaymentMethod();
|
|
86
96
|
let gasSettings, estimateGas;
|
|
87
97
|
if (l2GasLimit !== undefined && l2GasLimit > 0 && daGasLimit !== undefined && daGasLimit > 0) {
|
|
88
|
-
gasSettings = {
|
|
98
|
+
gasSettings = {
|
|
99
|
+
gasLimits: Gas.from({
|
|
100
|
+
l2Gas: l2GasLimit,
|
|
101
|
+
daGas: daGasLimit
|
|
102
|
+
})
|
|
103
|
+
};
|
|
89
104
|
estimateGas = false;
|
|
90
105
|
this.log.verbose(`Using gas limits ${l2GasLimit} L2 gas ${daGasLimit} DA gas`);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
106
|
+
} else {
|
|
93
107
|
estimateGas = true;
|
|
94
108
|
this.log.verbose(`Estimating gas for transaction`);
|
|
95
109
|
}
|
|
96
110
|
const baseFeePadding = 2; // Send 3x the current base fee
|
|
97
111
|
this.log.verbose(skipPublicSimulation ? `Skipping public simulation` : `Simulating public transfers`);
|
|
98
|
-
return {
|
|
112
|
+
return {
|
|
113
|
+
fee: {
|
|
114
|
+
estimateGas,
|
|
115
|
+
paymentMethod,
|
|
116
|
+
gasSettings,
|
|
117
|
+
baseFeePadding
|
|
118
|
+
},
|
|
119
|
+
skipPublicSimulation
|
|
120
|
+
};
|
|
99
121
|
}
|
|
100
122
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2JvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULHFCQUFxQixFQUNyQixrQkFBa0IsRUFHbEIsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUs3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBRTFCLE1BQU0sT0FBTyxHQUFHO0lBTWQsWUFDa0IsTUFBYyxFQUNkLEtBQStDLEVBQy9DLFNBQXVCLEVBQ2hDLE1BQWlCO1FBSFIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQTBDO1FBQy9DLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDaEMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQVRsQixRQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsY0FBUyxHQUFXLENBQUMsQ0FBQztJQU8zQixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBaUIsRUFBRSxlQUFnRCxFQUFFO1FBQ3ZGLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hGLE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUs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
|
package/dest/config.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { Fr } from '@aztec/circuits.js';
|
|
2
|
-
import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper
|
|
2
|
+
import { booleanConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
|
|
3
3
|
import { schemas } from '@aztec/foundation/schemas';
|
|
4
4
|
import { z } from 'zod';
|
|
5
|
-
const BotFollowChain = [
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const BotFollowChain = [
|
|
6
|
+
'NONE',
|
|
7
|
+
'PENDING',
|
|
8
|
+
'PROVEN'
|
|
9
|
+
];
|
|
10
|
+
export var SupportedTokenContracts = /*#__PURE__*/ function(SupportedTokenContracts) {
|
|
8
11
|
SupportedTokenContracts["TokenContract"] = "TokenContract";
|
|
9
12
|
SupportedTokenContracts["EasyPrivateTokenContract"] = "EasyPrivateTokenContract";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
return SupportedTokenContracts;
|
|
14
|
+
}({});
|
|
15
|
+
export const BotConfigSchema = z.object({
|
|
13
16
|
nodeUrl: z.string().optional(),
|
|
14
17
|
pxeUrl: z.string().optional(),
|
|
15
18
|
senderPrivateKey: schemas.Fr,
|
|
@@ -18,7 +21,10 @@ export const BotConfigSchema = z
|
|
|
18
21
|
txIntervalSeconds: z.number(),
|
|
19
22
|
privateTransfersPerTx: z.number(),
|
|
20
23
|
publicTransfersPerTx: z.number(),
|
|
21
|
-
feePaymentMethod: z.union([
|
|
24
|
+
feePaymentMethod: z.union([
|
|
25
|
+
z.literal('fee_juice'),
|
|
26
|
+
z.literal('none')
|
|
27
|
+
]),
|
|
22
28
|
noStart: z.boolean(),
|
|
23
29
|
txMinedWaitSeconds: z.number(),
|
|
24
30
|
followChain: z.enum(BotFollowChain),
|
|
@@ -29,130 +35,129 @@ export const BotConfigSchema = z
|
|
|
29
35
|
daGasLimit: z.number().optional(),
|
|
30
36
|
contract: z.nativeEnum(SupportedTokenContracts),
|
|
31
37
|
maxConsecutiveErrors: z.number(),
|
|
32
|
-
stopWhenUnhealthy: z.boolean()
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}));
|
|
38
|
+
stopWhenUnhealthy: z.boolean()
|
|
39
|
+
}).transform((config)=>({
|
|
40
|
+
nodeUrl: undefined,
|
|
41
|
+
pxeUrl: undefined,
|
|
42
|
+
l2GasLimit: undefined,
|
|
43
|
+
daGasLimit: undefined,
|
|
44
|
+
...config
|
|
45
|
+
}));
|
|
41
46
|
export const botConfigMappings = {
|
|
42
47
|
nodeUrl: {
|
|
43
48
|
env: 'AZTEC_NODE_URL',
|
|
44
|
-
description: 'The URL to the Aztec node to check for tx pool status.'
|
|
49
|
+
description: 'The URL to the Aztec node to check for tx pool status.'
|
|
45
50
|
},
|
|
46
51
|
pxeUrl: {
|
|
47
52
|
env: 'BOT_PXE_URL',
|
|
48
|
-
description: 'URL to the PXE for sending txs, or undefined if an in-proc PXE is used.'
|
|
53
|
+
description: 'URL to the PXE for sending txs, or undefined if an in-proc PXE is used.'
|
|
49
54
|
},
|
|
50
55
|
senderPrivateKey: {
|
|
51
56
|
env: 'BOT_PRIVATE_KEY',
|
|
52
57
|
description: 'Signing private key for the sender account.',
|
|
53
|
-
parseEnv: (val)
|
|
54
|
-
defaultValue: Fr.random()
|
|
58
|
+
parseEnv: (val)=>Fr.fromHexString(val),
|
|
59
|
+
defaultValue: Fr.random()
|
|
55
60
|
},
|
|
56
61
|
recipientEncryptionSecret: {
|
|
57
62
|
env: 'BOT_RECIPIENT_ENCRYPTION_SECRET',
|
|
58
63
|
description: 'Encryption secret for a recipient account.',
|
|
59
|
-
parseEnv: (val)
|
|
60
|
-
defaultValue: Fr.fromHexString('0xcafecafe')
|
|
64
|
+
parseEnv: (val)=>Fr.fromHexString(val),
|
|
65
|
+
defaultValue: Fr.fromHexString('0xcafecafe')
|
|
61
66
|
},
|
|
62
67
|
tokenSalt: {
|
|
63
68
|
env: 'BOT_TOKEN_SALT',
|
|
64
69
|
description: 'Salt for the token contract deployment.',
|
|
65
|
-
parseEnv: (val)
|
|
66
|
-
defaultValue: Fr.fromHexString('1')
|
|
70
|
+
parseEnv: (val)=>Fr.fromHexString(val),
|
|
71
|
+
defaultValue: Fr.fromHexString('1')
|
|
67
72
|
},
|
|
68
73
|
txIntervalSeconds: {
|
|
69
74
|
env: 'BOT_TX_INTERVAL_SECONDS',
|
|
70
75
|
description: 'Every how many seconds should a new tx be sent.',
|
|
71
|
-
...numberConfigHelper(60)
|
|
76
|
+
...numberConfigHelper(60)
|
|
72
77
|
},
|
|
73
78
|
privateTransfersPerTx: {
|
|
74
79
|
env: 'BOT_PRIVATE_TRANSFERS_PER_TX',
|
|
75
80
|
description: 'How many private token transfers are executed per tx.',
|
|
76
|
-
...numberConfigHelper(1)
|
|
81
|
+
...numberConfigHelper(1)
|
|
77
82
|
},
|
|
78
83
|
publicTransfersPerTx: {
|
|
79
84
|
env: 'BOT_PUBLIC_TRANSFERS_PER_TX',
|
|
80
85
|
description: 'How many public token transfers are executed per tx.',
|
|
81
|
-
...numberConfigHelper(1)
|
|
86
|
+
...numberConfigHelper(1)
|
|
82
87
|
},
|
|
83
88
|
feePaymentMethod: {
|
|
84
89
|
env: 'BOT_FEE_PAYMENT_METHOD',
|
|
85
90
|
description: 'How to handle fee payments. (Options: fee_juice, none)',
|
|
86
|
-
parseEnv: val
|
|
87
|
-
defaultValue: 'none'
|
|
91
|
+
parseEnv: (val)=>val || undefined,
|
|
92
|
+
defaultValue: 'none'
|
|
88
93
|
},
|
|
89
94
|
noStart: {
|
|
90
95
|
env: 'BOT_NO_START',
|
|
91
96
|
description: 'True to not automatically setup or start the bot on initialization.',
|
|
92
|
-
...booleanConfigHelper()
|
|
97
|
+
...booleanConfigHelper()
|
|
93
98
|
},
|
|
94
99
|
txMinedWaitSeconds: {
|
|
95
100
|
env: 'BOT_TX_MINED_WAIT_SECONDS',
|
|
96
101
|
description: 'How long to wait for a tx to be mined before reporting an error.',
|
|
97
|
-
...numberConfigHelper(180)
|
|
102
|
+
...numberConfigHelper(180)
|
|
98
103
|
},
|
|
99
104
|
followChain: {
|
|
100
105
|
env: 'BOT_FOLLOW_CHAIN',
|
|
101
106
|
description: 'Which chain the bot follows',
|
|
102
107
|
defaultValue: 'NONE',
|
|
103
|
-
parseEnv(val) {
|
|
108
|
+
parseEnv (val) {
|
|
104
109
|
if (!BotFollowChain.includes(val.toUpperCase())) {
|
|
105
110
|
throw new Error(`Invalid value for BOT_FOLLOW_CHAIN: ${val}`);
|
|
106
111
|
}
|
|
107
112
|
return val;
|
|
108
|
-
}
|
|
113
|
+
}
|
|
109
114
|
},
|
|
110
115
|
maxPendingTxs: {
|
|
111
116
|
env: 'BOT_MAX_PENDING_TXS',
|
|
112
117
|
description: "Do not send a tx if the node's tx pool already has this many pending txs.",
|
|
113
|
-
...numberConfigHelper(128)
|
|
118
|
+
...numberConfigHelper(128)
|
|
114
119
|
},
|
|
115
120
|
flushSetupTransactions: {
|
|
116
121
|
env: 'BOT_FLUSH_SETUP_TRANSACTIONS',
|
|
117
122
|
description: 'Make a request for the sequencer to build a block after each setup transaction.',
|
|
118
|
-
...booleanConfigHelper(false)
|
|
123
|
+
...booleanConfigHelper(false)
|
|
119
124
|
},
|
|
120
125
|
skipPublicSimulation: {
|
|
121
126
|
env: 'BOT_SKIP_PUBLIC_SIMULATION',
|
|
122
127
|
description: 'Whether to skip public simulation of txs before sending them.',
|
|
123
|
-
...booleanConfigHelper(false)
|
|
128
|
+
...booleanConfigHelper(false)
|
|
124
129
|
},
|
|
125
130
|
l2GasLimit: {
|
|
126
131
|
env: 'BOT_L2_GAS_LIMIT',
|
|
127
132
|
description: 'L2 gas limit for the tx (empty to have the bot trigger an estimate gas).',
|
|
128
|
-
...optionalNumberConfigHelper()
|
|
133
|
+
...optionalNumberConfigHelper()
|
|
129
134
|
},
|
|
130
135
|
daGasLimit: {
|
|
131
136
|
env: 'BOT_DA_GAS_LIMIT',
|
|
132
137
|
description: 'DA gas limit for the tx (empty to have the bot trigger an estimate gas).',
|
|
133
|
-
...optionalNumberConfigHelper()
|
|
138
|
+
...optionalNumberConfigHelper()
|
|
134
139
|
},
|
|
135
140
|
contract: {
|
|
136
141
|
env: 'BOT_TOKEN_CONTRACT',
|
|
137
142
|
description: 'Token contract to use',
|
|
138
|
-
defaultValue:
|
|
139
|
-
parseEnv(val) {
|
|
143
|
+
defaultValue: "TokenContract",
|
|
144
|
+
parseEnv (val) {
|
|
140
145
|
if (!Object.values(SupportedTokenContracts).includes(val)) {
|
|
141
146
|
throw new Error(`Invalid value for BOT_TOKEN_CONTRACT: ${val}. Valid values: ${Object.values(SupportedTokenContracts).join(', ')}`);
|
|
142
147
|
}
|
|
143
148
|
return val;
|
|
144
|
-
}
|
|
149
|
+
}
|
|
145
150
|
},
|
|
146
151
|
maxConsecutiveErrors: {
|
|
147
152
|
env: 'BOT_MAX_CONSECUTIVE_ERRORS',
|
|
148
153
|
description: 'The maximum number of consecutive errors before the bot shuts down',
|
|
149
|
-
...numberConfigHelper(0)
|
|
154
|
+
...numberConfigHelper(0)
|
|
150
155
|
},
|
|
151
156
|
stopWhenUnhealthy: {
|
|
152
157
|
env: 'BOT_STOP_WHEN_UNHEALTHY',
|
|
153
158
|
description: 'Stops the bot if service becomes unhealthy',
|
|
154
|
-
...booleanConfigHelper(false)
|
|
155
|
-
}
|
|
159
|
+
...booleanConfigHelper(false)
|
|
160
|
+
}
|
|
156
161
|
};
|
|
157
162
|
export function getBotConfigFromEnv() {
|
|
158
163
|
return getConfigFromMappings(botConfigMappings);
|
|
@@ -160,4 +165,3 @@ export function getBotConfigFromEnv() {
|
|
|
160
165
|
export function getBotDefaultConfig() {
|
|
161
166
|
return getDefaultConfig(botConfigMappings);
|
|
162
167
|
}
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQiwwQkFBMEIsR0FDM0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQWUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4QixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFVLENBQUM7QUFHOUQsTUFBTSxDQUFOLElBQVksdUJBR1g7QUFIRCxXQUFZLHVCQUF1QjtJQUNqQywwREFBK0IsQ0FBQTtJQUMvQixnRkFBcUQsQ0FBQTtBQUN2RCxDQUFDLEVBSFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUdsQztBQTZDRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQztLQUM3QixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTtJQUM1Qix5QkFBeUIsRUFBRSxPQUFPLENBQUMsRUFBRTtJQUNyQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUU7SUFDckIsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUM3QixxQkFBcUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDaEMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFD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
|
package/dest/factory.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getSchnorrAccount } from '@aztec/accounts/schnorr';
|
|
2
|
-
import { BatchCall, createLogger, createPXEClient
|
|
2
|
+
import { BatchCall, createLogger, createPXEClient } from '@aztec/aztec.js';
|
|
3
3
|
import { Fr, deriveSigningKey } from '@aztec/circuits.js';
|
|
4
4
|
import { EasyPrivateTokenContract } from '@aztec/noir-contracts.js/EasyPrivateToken';
|
|
5
5
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
@@ -9,7 +9,11 @@ import { getBalances, getPrivateBalance, isStandardTokenContract } from './utils
|
|
|
9
9
|
const MINT_BALANCE = 1e12;
|
|
10
10
|
const MIN_BALANCE = 1e3;
|
|
11
11
|
export class BotFactory {
|
|
12
|
-
|
|
12
|
+
config;
|
|
13
|
+
pxe;
|
|
14
|
+
node;
|
|
15
|
+
log;
|
|
16
|
+
constructor(config, dependencies = {}){
|
|
13
17
|
this.config = config;
|
|
14
18
|
this.log = createLogger('bot');
|
|
15
19
|
if (config.flushSetupTransactions && !dependencies.node) {
|
|
@@ -25,24 +29,31 @@ export class BotFactory {
|
|
|
25
29
|
return;
|
|
26
30
|
}
|
|
27
31
|
this.log.info(`Using remote PXE at ${config.pxeUrl}`);
|
|
28
|
-
this.pxe = createPXEClient(config.pxeUrl, makeTracedFetch([
|
|
32
|
+
this.pxe = createPXEClient(config.pxeUrl, makeTracedFetch([
|
|
33
|
+
1,
|
|
34
|
+
2,
|
|
35
|
+
3
|
|
36
|
+
], false));
|
|
29
37
|
}
|
|
30
38
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
async setup() {
|
|
39
|
+
* Initializes a new bot by setting up the sender account, registering the recipient,
|
|
40
|
+
* deploying the token contract, and minting tokens if necessary.
|
|
41
|
+
*/ async setup() {
|
|
35
42
|
const recipient = await this.registerRecipient();
|
|
36
43
|
const wallet = await this.setupAccount();
|
|
37
44
|
const token = await this.setupToken(wallet);
|
|
38
45
|
await this.mintTokens(token);
|
|
39
|
-
return {
|
|
46
|
+
return {
|
|
47
|
+
wallet,
|
|
48
|
+
token,
|
|
49
|
+
pxe: this.pxe,
|
|
50
|
+
recipient
|
|
51
|
+
};
|
|
40
52
|
}
|
|
41
53
|
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
async setupAccount() {
|
|
54
|
+
* Checks if the sender account contract is initialized, and initializes it if necessary.
|
|
55
|
+
* @returns The sender wallet.
|
|
56
|
+
*/ async setupAccount() {
|
|
46
57
|
const salt = Fr.ONE;
|
|
47
58
|
const signingKey = deriveSigningKey(this.config.senderPrivateKey);
|
|
48
59
|
const account = await getSchnorrAccount(this.pxe, this.config.senderPrivateKey, signingKey, salt);
|
|
@@ -51,8 +62,7 @@ export class BotFactory {
|
|
|
51
62
|
this.log.info(`Account at ${account.getAddress().toString()} already initialized`);
|
|
52
63
|
const wallet = await account.register();
|
|
53
64
|
return wallet;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
65
|
+
} else {
|
|
56
66
|
this.log.info(`Initializing account at ${account.getAddress().toString()}`);
|
|
57
67
|
const sentTx = account.deploy();
|
|
58
68
|
const txHash = await sentTx.getTxHash();
|
|
@@ -62,44 +72,44 @@ export class BotFactory {
|
|
|
62
72
|
await this.node.flushTxs();
|
|
63
73
|
}
|
|
64
74
|
this.log.verbose('Waiting for account deployment to settle');
|
|
65
|
-
await sentTx.wait({
|
|
75
|
+
await sentTx.wait({
|
|
76
|
+
timeout: this.config.txMinedWaitSeconds
|
|
77
|
+
});
|
|
66
78
|
return account.getWallet();
|
|
67
79
|
}
|
|
68
80
|
}
|
|
69
81
|
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
async registerRecipient() {
|
|
82
|
+
* Registers the recipient for txs in the pxe.
|
|
83
|
+
*/ async registerRecipient() {
|
|
73
84
|
const recipient = await this.pxe.registerAccount(this.config.recipientEncryptionSecret, Fr.ONE);
|
|
74
85
|
return recipient.address;
|
|
75
86
|
}
|
|
76
87
|
/**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
async setupToken(wallet) {
|
|
88
|
+
* Checks if the token contract is deployed and deploys it if necessary.
|
|
89
|
+
* @param wallet - Wallet to deploy the token contract from.
|
|
90
|
+
* @returns The TokenContract instance.
|
|
91
|
+
*/ async setupToken(wallet) {
|
|
82
92
|
let deploy;
|
|
83
|
-
const deployOpts = {
|
|
93
|
+
const deployOpts = {
|
|
94
|
+
contractAddressSalt: this.config.tokenSalt,
|
|
95
|
+
universalDeploy: true
|
|
96
|
+
};
|
|
84
97
|
if (this.config.contract === SupportedTokenContracts.TokenContract) {
|
|
85
98
|
deploy = TokenContract.deploy(wallet, wallet.getAddress(), 'BotToken', 'BOT', 18);
|
|
86
|
-
}
|
|
87
|
-
else if (this.config.contract === SupportedTokenContracts.EasyPrivateTokenContract) {
|
|
99
|
+
} else if (this.config.contract === SupportedTokenContracts.EasyPrivateTokenContract) {
|
|
88
100
|
deploy = EasyPrivateTokenContract.deploy(wallet, MINT_BALANCE, wallet.getAddress());
|
|
89
101
|
deployOpts.skipPublicDeployment = true;
|
|
90
102
|
deployOpts.skipClassRegistration = true;
|
|
91
103
|
deployOpts.skipInitialization = false;
|
|
92
104
|
deployOpts.skipPublicSimulation = true;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
105
|
+
} else {
|
|
95
106
|
throw new Error(`Unsupported token contract type: ${this.config.contract}`);
|
|
96
107
|
}
|
|
97
108
|
const address = (await deploy.getInstance(deployOpts)).address;
|
|
98
109
|
if ((await this.pxe.getContractMetadata(address)).isContractPubliclyDeployed) {
|
|
99
110
|
this.log.info(`Token at ${address.toString()} already deployed`);
|
|
100
111
|
return deploy.register();
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
112
|
+
} else {
|
|
103
113
|
this.log.info(`Deploying token contract at ${address.toString()}`);
|
|
104
114
|
const sentTx = deploy.send(deployOpts);
|
|
105
115
|
const txHash = await sentTx.getTxHash();
|
|
@@ -109,31 +119,29 @@ export class BotFactory {
|
|
|
109
119
|
await this.node.flushTxs();
|
|
110
120
|
}
|
|
111
121
|
this.log.verbose('Waiting for token setup to settle');
|
|
112
|
-
return sentTx.deployed({
|
|
122
|
+
return sentTx.deployed({
|
|
123
|
+
timeout: this.config.txMinedWaitSeconds
|
|
124
|
+
});
|
|
113
125
|
}
|
|
114
126
|
}
|
|
115
127
|
/**
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
async mintTokens(token) {
|
|
128
|
+
* Mints private and public tokens for the sender if their balance is below the minimum.
|
|
129
|
+
* @param token - Token contract.
|
|
130
|
+
*/ async mintTokens(token) {
|
|
120
131
|
const sender = token.wallet.getAddress();
|
|
121
132
|
const isStandardToken = isStandardTokenContract(token);
|
|
122
133
|
let privateBalance = 0n;
|
|
123
134
|
let publicBalance = 0n;
|
|
124
135
|
if (isStandardToken) {
|
|
125
136
|
({ privateBalance, publicBalance } = await getBalances(token, sender));
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
137
|
+
} else {
|
|
128
138
|
privateBalance = await getPrivateBalance(token, sender);
|
|
129
139
|
}
|
|
130
140
|
const calls = [];
|
|
131
141
|
if (privateBalance < MIN_BALANCE) {
|
|
132
142
|
this.log.info(`Minting private tokens for ${sender.toString()}`);
|
|
133
143
|
const from = sender; // we are setting from to sender here because of TODO(#9887)
|
|
134
|
-
calls.push(isStandardToken
|
|
135
|
-
? await token.methods.mint_to_private(from, sender, MINT_BALANCE).request()
|
|
136
|
-
: await token.methods.mint(MINT_BALANCE, sender).request());
|
|
144
|
+
calls.push(isStandardToken ? await token.methods.mint_to_private(from, sender, MINT_BALANCE).request() : await token.methods.mint(MINT_BALANCE, sender).request());
|
|
137
145
|
}
|
|
138
146
|
if (isStandardToken && publicBalance < MIN_BALANCE) {
|
|
139
147
|
this.log.info(`Minting public tokens for ${sender.toString()}`);
|
|
@@ -151,7 +159,8 @@ export class BotFactory {
|
|
|
151
159
|
await this.node.flushTxs();
|
|
152
160
|
}
|
|
153
161
|
this.log.verbose('Waiting for token mint to settle');
|
|
154
|
-
await sentTx.wait({
|
|
162
|
+
await sentTx.wait({
|
|
163
|
+
timeout: this.config.txMinedWaitSeconds
|
|
164
|
+
});
|
|
155
165
|
}
|
|
156
166
|
}
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFFTCxTQUFTLEVBR1QsWUFBWSxFQUNaLGVBQWUsR0FDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQWtCLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckYsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzFCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztBQUV4QixNQUFNLE9BQU8sVUFBVTtJQUtyQixZQUE2QixNQUFpQixFQUFFLGVBQWdELEVBQUU7UUFBckUsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUZ0QyxRQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBR2hDLElBQUksTUFBTSxDQUFDLHNCQUFzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztRQUM1RyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxt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
|
package/dest/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { Bot } from './bot.js';
|
|
2
2
|
export { BotRunner } from './runner.js';
|
|
3
|
-
export { getBotConfigFromEnv, getBotDefaultConfig, botConfigMappings, SupportedTokenContracts
|
|
3
|
+
export { getBotConfigFromEnv, getBotDefaultConfig, botConfigMappings, SupportedTokenContracts } from './config.js';
|
|
4
4
|
export { createBotRunnerRpcServer, getBotRunnerApiHandler } from './rpc.js';
|
|
5
5
|
export * from './interface.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFFTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQix1QkFBdUIsR0FDeEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVFLGNBQWMsZ0JBQWdCLENBQUMifQ==
|
package/dest/interface.js
CHANGED
|
@@ -6,6 +6,5 @@ export const BotRunnerApiSchema = {
|
|
|
6
6
|
run: z.function().args().returns(z.void()),
|
|
7
7
|
setup: z.function().args().returns(z.void()),
|
|
8
8
|
getConfig: z.function().args().returns(BotConfigSchema),
|
|
9
|
-
update: z.function().args(BotConfigSchema).returns(z.void())
|
|
9
|
+
update: z.function().args(BotConfigSchema).returns(z.void())
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBVzlELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUErQjtJQUM1RCxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ3ZELE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Q0FDN0QsQ0FBQyJ9
|
package/dest/rpc.js
CHANGED
|
@@ -4,14 +4,16 @@ import { BotRunnerApiSchema } from './interface.js';
|
|
|
4
4
|
* Wraps a bot runner with a JSON RPC HTTP server.
|
|
5
5
|
* @param botRunner - The BotRunner.
|
|
6
6
|
* @returns An JSON-RPC HTTP server
|
|
7
|
-
*/
|
|
8
|
-
export function createBotRunnerRpcServer(botRunner) {
|
|
7
|
+
*/ export function createBotRunnerRpcServer(botRunner) {
|
|
9
8
|
createTracedJsonRpcServer(botRunner, BotRunnerApiSchema, {
|
|
10
9
|
http200OnError: false,
|
|
11
|
-
healthCheck: botRunner.isHealthy.bind(botRunner)
|
|
10
|
+
healthCheck: botRunner.isHealthy.bind(botRunner)
|
|
12
11
|
});
|
|
13
12
|
}
|
|
14
13
|
export function getBotRunnerApiHandler(botRunner) {
|
|
15
|
-
return [
|
|
14
|
+
return [
|
|
15
|
+
botRunner,
|
|
16
|
+
BotRunnerApiSchema,
|
|
17
|
+
botRunner.isHealthy.bind(botRunner)
|
|
18
|
+
];
|
|
16
19
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLFNBQW9CO0lBQzNELHlCQUF5QixDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRTtRQUN2RCxjQUFjLEVBQUUsS0FBSztRQUNyQixXQUFXLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQ2pELENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBb0I7SUFDekQsT0FBTyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzlFLENBQUMifQ==
|