@aztec/bot 0.0.1-commit.96dac018d → 0.0.1-commit.9a89641
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 +4 -3
- package/dest/amm_bot.d.ts.map +1 -1
- package/dest/amm_bot.js +26 -19
- package/dest/base_bot.d.ts +4 -4
- package/dest/base_bot.d.ts.map +1 -1
- package/dest/base_bot.js +12 -22
- package/dest/bot.d.ts +3 -2
- package/dest/bot.d.ts.map +1 -1
- package/dest/bot.js +5 -8
- package/dest/config.d.ts +31 -82
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +6 -7
- package/dest/cross_chain_bot.d.ts +6 -4
- package/dest/cross_chain_bot.d.ts.map +1 -1
- package/dest/cross_chain_bot.js +16 -18
- package/dest/factory.d.ts +17 -7
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +235 -177
- package/dest/interface.d.ts +2 -6
- package/dest/interface.d.ts.map +1 -1
- package/dest/interface.js +30 -7
- package/dest/runner.d.ts +3 -2
- package/dest/runner.d.ts.map +1 -1
- package/dest/runner.js +6 -4
- package/dest/utils.js +3 -3
- package/package.json +16 -16
- package/src/amm_bot.ts +25 -17
- package/src/base_bot.ts +10 -17
- package/src/bot.ts +6 -5
- package/src/config.ts +8 -8
- package/src/cross_chain_bot.ts +14 -15
- package/src/factory.ts +242 -187
- package/src/interface.ts +7 -7
- package/src/runner.ts +26 -3
- package/src/utils.ts +3 -3
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();
|
|
@@ -82,18 +83,22 @@ import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
85
|
const batch = new BatchCall(this.wallet, calls);
|
|
85
|
-
const opts =
|
|
86
|
+
const opts = this.getSendMethodOpts();
|
|
86
87
|
this.log.verbose(`Sending cross-chain batch with ${calls.length} calls`, logCtx);
|
|
87
|
-
|
|
88
|
+
const { txHash } = await batch.send({
|
|
88
89
|
...opts,
|
|
89
90
|
wait: NO_WAIT
|
|
90
91
|
});
|
|
92
|
+
return txHash;
|
|
91
93
|
}
|
|
92
94
|
async onTxMined(receipt, logCtx) {
|
|
93
95
|
// Verify L2→L1 messages appeared in this tx's effects
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
const minedReceipt = await this.node.getTxReceipt(receipt.txHash, {
|
|
97
|
+
includeTxEffect: true
|
|
98
|
+
});
|
|
99
|
+
const l2ToL1MsgsRaw = minedReceipt.txEffect?.l2ToL1Msgs;
|
|
100
|
+
if (l2ToL1MsgsRaw) {
|
|
101
|
+
const l2ToL1Msgs = l2ToL1MsgsRaw.filter((m)=>!m.isZero());
|
|
97
102
|
if (l2ToL1Msgs.length >= this.config.l2ToL1MessagesPerTx) {
|
|
98
103
|
this.l2ToL1Sent += l2ToL1Msgs.length;
|
|
99
104
|
} else {
|
|
@@ -115,14 +120,7 @@ import { seedL1ToL2Message } from './l1_to_l2_seeding.js';
|
|
|
115
120
|
/** Finds the oldest pending message that is ready for consumption. */ async getReadyL1ToL2Message(pendingMessages) {
|
|
116
121
|
const now = Date.now();
|
|
117
122
|
for (const msg of pendingMessages){
|
|
118
|
-
const ready = await isL1ToL2MessageReady(this.node, Fr.fromHexString(msg.msgHash),
|
|
119
|
-
// Use forPublicConsumption: false so we wait until blockNumber >= messageBlockNumber.
|
|
120
|
-
// With forPublicConsumption: true, the check returns true one block early (the sequencer
|
|
121
|
-
// includes L1→L2 messages before executing the block's txs), but gas estimation simulates
|
|
122
|
-
// against the current world state which doesn't yet have the message.
|
|
123
|
-
// See https://linear.app/aztec-labs/issue/A-548 for details.
|
|
124
|
-
forPublicConsumption: false
|
|
125
|
-
});
|
|
123
|
+
const ready = await isL1ToL2MessageReady(this.node, Fr.fromHexString(msg.msgHash), this.syncChainTip);
|
|
126
124
|
if (ready) {
|
|
127
125
|
return msg;
|
|
128
126
|
}
|
package/dest/factory.d.ts
CHANGED
|
@@ -14,8 +14,13 @@ 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
|
-
|
|
19
|
+
/** Number of in-flight withNoMinTxsPerBlock calls; see that method for why they are counted. */
|
|
20
|
+
private noMinTxsPerBlockDepth;
|
|
21
|
+
/** Set by the first withNoMinTxsPerBlock entrant; resolves to the minTxsPerBlock value to restore. */
|
|
22
|
+
private savedMinTxsPerBlock?;
|
|
23
|
+
constructor(config: BotConfig, wallet: EmbeddedWallet, store: BotStore, aztecNode: AztecNode, aztecNodeAdmin?: AztecNodeAdmin | undefined, syncChainTip?: "checkpointed" | "finalized" | "latest" | "proposed" | "proven" | undefined);
|
|
19
24
|
/**
|
|
20
25
|
* Initializes a new bot by setting up the sender account, registering the recipient,
|
|
21
26
|
* deploying the token contract, and minting tokens if necessary.
|
|
@@ -47,18 +52,23 @@ export declare class BotFactory {
|
|
|
47
52
|
l1Client: ExtendedViemWalletClient;
|
|
48
53
|
rollupVersion: bigint;
|
|
49
54
|
}>;
|
|
50
|
-
private
|
|
55
|
+
private deployTestContract;
|
|
51
56
|
private setupAccount;
|
|
52
|
-
private setupAccountWithPrivateKey;
|
|
53
57
|
private setupTestAccount;
|
|
58
|
+
private setupAccountWithPrivateKey;
|
|
54
59
|
private setupToken;
|
|
55
60
|
private setupTokenContract;
|
|
56
|
-
private
|
|
57
|
-
private
|
|
61
|
+
private deployAmmContract;
|
|
62
|
+
private grantLpTokenMinter;
|
|
63
|
+
private mintAmmLiquidity;
|
|
64
|
+
private addAmmLiquidity;
|
|
58
65
|
private registerOrDeployContract;
|
|
66
|
+
/** True when the config allows bridging fee juice from L1 (fee_juice mode, an L1 RPC, and an L1 key). */
|
|
67
|
+
private isL1BridgingConfigured;
|
|
68
|
+
private ensureFeeJuiceBalance;
|
|
59
69
|
private mintTokens;
|
|
60
70
|
private getOrCreateBridgeClaim;
|
|
61
71
|
private bridgeL1FeeJuice;
|
|
62
|
-
|
|
72
|
+
protected withNoMinTxsPerBlock<T>(fn: () => Promise<T>): Promise<T>;
|
|
63
73
|
}
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBb0J6RCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXRFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR2xFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUEyQixNQUFNLGFBQWEsQ0FBQztBQUV0RSxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU9qRCxxQkFBYSxVQUFVO0lBU25CLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtJQUN2QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFDdkIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQ3RCLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUNoQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztJQWJoQyxPQUFPLENBQUMsR0FBRyxDQUF1QjtJQUVsQyxnR0FBZ0c7SUFDaEcsT0FBTyxDQUFDLHFCQUFxQixDQUFLO0lBQ2xDLHNHQUFzRztJQUN0RyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBdUM7SUFFbkUsWUFDbUIsTUFBTSxFQUFFLFNBQVMsRUFDakIsTUFBTSxFQUFFLGNBQWMsRUFDdEIsS0FBSyxFQUFFLFFBQVEsRUFDZixTQUFTLEVBQUUsU0FBUyxFQUNwQixjQUFjLENBQUMsNEJBQWdCLEVBQy9CLFlBQVksQ0FBQyw2RUFBVSxFQUt6QztJQUVEOzs7T0FHRztJQUNVLEtBQUssSUFBSSxPQUFPLENBQUM7UUFDNUIsTUFBTSxFQUFFLGNBQWMsQ0FBQztRQUN2QixxQkFBcUIsRUFBRSxZQUFZLENBQUM7UUFDcEMsS0FBSyxFQUFFLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztRQUM1QyxJQUFJLEVBQUUsU0FBUyxDQUFDO1FBQ2hCLFNBQVMsRUFBRSxZQUFZLENBQUM7S0FDekIsQ0FBQyxDQVFEO0lBRVksUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUMvQixNQUFNLEVBQUUsY0FBYyxDQUFDO1FBQ3ZCLHFCQUFxQixFQUFFLFlBQVksQ0FBQztRQUNwQyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxhQUFhLENBQUM7UUFDdEIsTUFBTSxFQUFFLGFBQWEsQ0FBQztRQUN0QixJQUFJLEVBQUUsU0FBUyxDQUFDO0tBQ2pCLENBQUMsQ0FtQ0Q7SUFFRDs7O09BR0c7SUFDVSxlQUFlLElBQUksT0FBTyxDQUFDO1FBQ3RDLE1BQU0sRUFBRSxjQUFjLENBQUM7UUFDdkIscUJBQXFCLEVBQUUsWUFBWSxDQUFDO1FBQ3BDLFFBQVEsRUFBRSxZQUFZLENBQUM7UUFDdkIsSUFBSSxFQUFFLFNBQVMsQ0FBQztRQUNoQixRQUFRLEVBQUUsd0JBQXdCLENBQUM7UUFDbkMsYUFBYSxFQUFFLE1BQU0sQ0FBQztLQUN2QixDQUFDLENBb0VEO1lBRWEsa0JBQWtCO1lBU2xCLFlBQVk7WUFrQlosZ0JBQWdCO1lBVWhCLDBCQUEwQjtZQWUxQixVQUFVO1lBeUNWLGtCQUFrQjtZQWFsQixpQkFBaUI7WUFTakIsa0JBQWtCO1lBUWxCLGdCQUFnQjtZQWFoQixlQUFlO1lBc0VmLHdCQUF3QjtJQTJCdEMseUdBQXlHO0lBQ3pHLE9BQU8sQ0FBQyxzQkFBc0I7WUFjaEIscUJBQXFCO1lBZ0NyQixVQUFVO1lBaURWLHNCQUFzQjtZQXdCdEIsZ0JBQWdCO0lBZ0M5QixVQUFnQixvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0ErQnhFO0NBQ0YifQ==
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAoBzD,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;AAGlE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjF,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;AAOjD,qBAAa,UAAU;IASnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAbhC,OAAO,CAAC,GAAG,CAAuB;IAElC,gGAAgG;IAChG,OAAO,CAAC,qBAAqB,CAAK;IAClC,sGAAsG;IACtG,OAAO,CAAC,mBAAmB,CAAC,CAAuC;IAEnE,YACmB,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,SAAS,EACpB,cAAc,CAAC,4BAAgB,EAC/B,YAAY,CAAC,6EAAU,EAKzC;IAED;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC;QAC5B,MAAM,EAAE,cAAc,CAAC;QACvB,qBAAqB,EAAE,YAAY,CAAC;QACpC,KAAK,EAAE,aAAa,GAAG,oBAAoB,CAAC;QAC5C,IAAI,EAAE,SAAS,CAAC;QAChB,SAAS,EAAE,YAAY,CAAC;KACzB,CAAC,CAQD;IAEY,QAAQ,IAAI,OAAO,CAAC;QAC/B,MAAM,EAAE,cAAc,CAAC;QACvB,qBAAqB,EAAE,YAAY,CAAC;QACpC,GAAG,EAAE,WAAW,CAAC;QACjB,MAAM,EAAE,aAAa,CAAC;QACtB,MAAM,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC,CAmCD;IAED;;;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,CAoED;YAEa,kBAAkB;YASlB,YAAY;YAkBZ,gBAAgB;YAUhB,0BAA0B;YAe1B,UAAU;YAyCV,kBAAkB;YAalB,iBAAiB;YASjB,kBAAkB;YAQlB,gBAAgB;YAahB,eAAe;YAsEf,wBAAwB;IA2BtC,yGAAyG;IACzG,OAAO,CAAC,sBAAsB;YAchB,qBAAqB;YAgCrB,UAAU;YAiDV,sBAAsB;YAwBtB,gBAAgB;IAgC9B,UAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA+BxE;CACF"}
|