@aztec/cli 0.8.10 → 0.8.11
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/README.md +9 -9
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +55 -19
- package/dest/utils.d.ts +52 -8
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +87 -9
- package/package.json +8 -8
- package/src/index.ts +60 -17
- package/src/utils.ts +90 -8
package/README.md
CHANGED
|
@@ -387,29 +387,29 @@ aztec-cli parse-parameter-struct 0xabcdef1234567890abcdef1234567890abcdef1234567
|
|
|
387
387
|
|
|
388
388
|
### get-logs
|
|
389
389
|
|
|
390
|
-
|
|
390
|
+
Applies filter and returns the resulting unencrypted logs.
|
|
391
|
+
The filter is applied by doing an intersection of all its params.
|
|
391
392
|
|
|
392
393
|
Syntax:
|
|
393
394
|
|
|
394
395
|
```shell
|
|
395
|
-
aztec-cli get-logs --
|
|
396
|
+
aztec-cli get-logs --fromBlock <number>
|
|
396
397
|
```
|
|
397
|
-
|
|
398
|
-
- `from`: Block number to start fetching logs from.
|
|
399
|
-
- `limit`: Maximum number of block logs to obtain.
|
|
400
|
-
|
|
401
398
|
Options:
|
|
402
399
|
|
|
403
400
|
- `-u, --rpc-url <string>`: URL of PXE Service. Default: `http://localhost:8080`.
|
|
404
401
|
|
|
405
|
-
This command retrieves and displays all the unencrypted logs from L2 blocks in the specified range
|
|
406
|
-
|
|
402
|
+
This command retrieves and displays all the unencrypted logs from L2 blocks in the specified range or from a specific transaction.
|
|
407
403
|
Example usage:
|
|
408
404
|
|
|
409
405
|
```shell
|
|
410
|
-
aztec-cli get-logs --
|
|
406
|
+
aztec-cli get-logs --txHash 21fef567e01f8508e30843ebcef9c5f6ff27b29d66783cfcdbd070c3a9174234
|
|
407
|
+
aztec-cli get-logs --fromBlock 4 --toBlock 5 --contractAddress 0x1db5f68861c5960c37205d3d5b23466240359c115c49e45982865ea7ace69a02
|
|
408
|
+
aztec-cli get-logs --fromBlock 4 --toBlock 5 --contractAddress 0x1db5f68861c5960c37205d3d5b23466240359c115c49e45982865ea7ace69a02 --selector 00000005
|
|
411
409
|
```
|
|
412
410
|
|
|
411
|
+
Run `aztec-cli get-logs --help` for more information on the filtering options.
|
|
412
|
+
|
|
413
413
|
### block-number
|
|
414
414
|
|
|
415
415
|
Gets the current Aztec L2 block number.
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAO3D,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAmC5C;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAijBxE"}
|
package/dest/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Contract, ContractDeployer, Fr, GrumpkinScalar, NotePreimage, generatePublicKey, getSchnorrAccount, isContractDeployed, } from '@aztec/aztec.js';
|
|
2
2
|
import { decodeFunctionSignatureWithParameterNames } from '@aztec/foundation/abi';
|
|
3
3
|
import { JsonStringify } from '@aztec/foundation/json-rpc';
|
|
4
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
4
5
|
import { fileURLToPath } from '@aztec/foundation/url';
|
|
5
6
|
import { compileContract, generateNoirInterface, generateTypescriptInterface } from '@aztec/noir-compiler/cli';
|
|
6
|
-
import { CompleteAddress
|
|
7
|
+
import { CompleteAddress } from '@aztec/types';
|
|
7
8
|
import { createSecp256k1PeerId } from '@libp2p/peer-id-factory';
|
|
8
9
|
import { Command, Option } from 'commander';
|
|
9
10
|
import { readFileSync } from 'fs';
|
|
@@ -13,7 +14,7 @@ import { mnemonicToAccount } from 'viem/accounts';
|
|
|
13
14
|
import { createCompatibleClient } from './client.js';
|
|
14
15
|
import { encodeArgs, parseStructString } from './encoding.js';
|
|
15
16
|
import { unboxContract } from './unbox.js';
|
|
16
|
-
import { deployAztecContracts, getContractArtifact, getExampleContractArtifacts, getFunctionArtifact, getTxSender, parseAztecAddress, parseField, parseFields, parsePartialAddress, parsePrivateKey, parsePublicKey, parseSaltFromHexString, parseTxHash, prepTx, } from './utils.js';
|
|
17
|
+
import { deployAztecContracts, getContractArtifact, getExampleContractArtifacts, getFunctionArtifact, getTxSender, parseAztecAddress, parseField, parseFields, parseOptionalAztecAddress, parseOptionalInteger, parseOptionalLogId, parseOptionalSelector, parseOptionalTxHash, parsePartialAddress, parsePrivateKey, parsePublicKey, parseSaltFromHexString, parseTxHash, prepTx, } from './utils.js';
|
|
17
18
|
const accountCreationSalt = Fr.ZERO;
|
|
18
19
|
const { ETHEREUM_HOST = 'http://localhost:8545', PRIVATE_KEY, API_KEY } = process.env;
|
|
19
20
|
/**
|
|
@@ -144,7 +145,8 @@ export function getProgram(log, debugLogger) {
|
|
|
144
145
|
log(`\nContract deployed at ${deployed.contractAddress.toString()}\n`);
|
|
145
146
|
}
|
|
146
147
|
else {
|
|
147
|
-
log(`\
|
|
148
|
+
log(`\nContract Address: ${tx.completeContractAddress?.address.toString() ?? 'N/A'}`);
|
|
149
|
+
log(`Deployment transaction hash: ${txHash}\n`);
|
|
148
150
|
}
|
|
149
151
|
});
|
|
150
152
|
program
|
|
@@ -207,22 +209,56 @@ export function getProgram(log, debugLogger) {
|
|
|
207
209
|
});
|
|
208
210
|
program
|
|
209
211
|
.command('get-logs')
|
|
210
|
-
.description('Gets all the unencrypted logs from
|
|
211
|
-
.option('-
|
|
212
|
-
.option('-
|
|
212
|
+
.description('Gets all the unencrypted logs from an intersection of all the filter params.')
|
|
213
|
+
.option('-tx, --tx-hash <txHash>', 'A transaction hash to get the receipt for.', parseOptionalTxHash)
|
|
214
|
+
.option('-fb, --from-block <blockNum>', 'Initial block number for getting logs (defaults to 1).', parseOptionalInteger)
|
|
215
|
+
.option('-tb, --to-block <blockNum>', 'Up to which block to fetch logs (defaults to latest).', parseOptionalInteger)
|
|
216
|
+
.option('-al --after-log <logId>', 'ID of a log after which to fetch the logs.', parseOptionalLogId)
|
|
217
|
+
.option('-ca, --contract-address <address>', 'Contract address to filter logs by.', parseOptionalAztecAddress)
|
|
218
|
+
.option('-s, --selector <hex string>', 'Event selector to filter logs by.', parseOptionalSelector)
|
|
213
219
|
.addOption(pxeOption)
|
|
214
|
-
.
|
|
215
|
-
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
220
|
+
.option('--follow', 'If set, will keep polling for new logs until interrupted.')
|
|
221
|
+
.action(async ({ txHash, fromBlock, toBlock, afterLog, contractAddress, selector, rpcUrl, follow }) => {
|
|
222
|
+
const pxe = await createCompatibleClient(rpcUrl, debugLogger);
|
|
223
|
+
if (follow) {
|
|
224
|
+
if (txHash)
|
|
225
|
+
throw Error('Cannot use --follow with --tx-hash');
|
|
226
|
+
if (toBlock)
|
|
227
|
+
throw Error('Cannot use --follow with --to-block');
|
|
228
|
+
}
|
|
229
|
+
const filter = { txHash, fromBlock, toBlock, afterLog, contractAddress, selector };
|
|
230
|
+
const fetchLogs = async () => {
|
|
231
|
+
const response = await pxe.getUnencryptedLogs(filter);
|
|
232
|
+
const logs = response.logs;
|
|
233
|
+
if (!logs.length) {
|
|
234
|
+
const filterOptions = Object.entries(filter)
|
|
235
|
+
.filter(([, value]) => value !== undefined)
|
|
236
|
+
.map(([key, value]) => `${key}: ${value}`)
|
|
237
|
+
.join(', ');
|
|
238
|
+
if (!follow)
|
|
239
|
+
log(`No logs found for filter: {${filterOptions}}`);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
if (!follow && !filter.afterLog)
|
|
243
|
+
log('Logs found: \n');
|
|
244
|
+
logs.forEach(unencryptedLog => log(unencryptedLog.toHumanReadable()));
|
|
245
|
+
// Set the continuation parameter for the following requests
|
|
246
|
+
filter.afterLog = logs[logs.length - 1].id;
|
|
247
|
+
}
|
|
248
|
+
return response.maxLogsHit;
|
|
249
|
+
};
|
|
250
|
+
if (follow) {
|
|
251
|
+
log('Fetching logs...');
|
|
252
|
+
while (true) {
|
|
253
|
+
const maxLogsHit = await fetchLogs();
|
|
254
|
+
if (!maxLogsHit)
|
|
255
|
+
await sleep(1000);
|
|
256
|
+
}
|
|
222
257
|
}
|
|
223
258
|
else {
|
|
224
|
-
|
|
225
|
-
|
|
259
|
+
while (await fetchLogs()) {
|
|
260
|
+
// Keep fetching logs until we reach the end.
|
|
261
|
+
}
|
|
226
262
|
}
|
|
227
263
|
});
|
|
228
264
|
program
|
|
@@ -318,7 +354,7 @@ export function getProgram(log, debugLogger) {
|
|
|
318
354
|
const wallet = await getSchnorrAccount(client, privateKey, privateKey, accountCreationSalt).getWallet();
|
|
319
355
|
const contract = await Contract.at(contractAddress, contractArtifact, wallet);
|
|
320
356
|
const tx = contract.methods[functionName](...functionArgs).send();
|
|
321
|
-
log(
|
|
357
|
+
log(`\nTransaction hash: ${(await tx.getTxHash()).toString()}`);
|
|
322
358
|
if (options.wait) {
|
|
323
359
|
await tx.wait();
|
|
324
360
|
log('Transaction has been mined');
|
|
@@ -328,7 +364,7 @@ export function getProgram(log, debugLogger) {
|
|
|
328
364
|
log(`Block hash: ${receipt.blockHash?.toString('hex')}`);
|
|
329
365
|
}
|
|
330
366
|
else {
|
|
331
|
-
log('
|
|
367
|
+
log('Transaction pending. Check status with get-tx-receipt');
|
|
332
368
|
}
|
|
333
369
|
});
|
|
334
370
|
program
|
|
@@ -445,4 +481,4 @@ export function getProgram(log, debugLogger) {
|
|
|
445
481
|
generateNoirInterface(program, 'generate-noir-interface', log);
|
|
446
482
|
return program;
|
|
447
483
|
}
|
|
448
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsRUFBRSxFQUNGLGNBQWMsRUFDZCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixrQkFBa0IsR0FDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQWMseUNBQXlDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUscUJBQXFCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRyxPQUFPLEVBQUUsZUFBZSxFQUFnQixhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxv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
|
|
484
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsRUFBRSxFQUNGLGNBQWMsRUFDZCxZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixrQkFBa0IsR0FDbkIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQWMseUNBQXlDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0csT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSxjQUFjLENBQUM7QUFFeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLElBQUksQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFF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
|
package/dest/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AztecAddress, Fr, GrumpkinScalar, PXE, Point, TxHash } from '@aztec/aztec.js';
|
|
1
|
+
import { AztecAddress, Fr, FunctionSelector, GrumpkinScalar, PXE, Point, TxHash } from '@aztec/aztec.js';
|
|
2
2
|
import { ContractArtifact } from '@aztec/foundation/abi';
|
|
3
3
|
import { DebugLogger, LogFn } from '@aztec/foundation/log';
|
|
4
|
+
import { LogId } from '@aztec/types';
|
|
4
5
|
/**
|
|
5
6
|
* Helper type to dynamically import contracts.
|
|
6
7
|
*/
|
|
@@ -66,39 +67,82 @@ export declare const stripLeadingHex: (hex: string) => string;
|
|
|
66
67
|
*/
|
|
67
68
|
export declare function parseSaltFromHexString(str: string): Fr;
|
|
68
69
|
/**
|
|
69
|
-
* Parses an AztecAddress from a string.
|
|
70
|
-
* @param address - A
|
|
70
|
+
* Parses an AztecAddress from a string.
|
|
71
|
+
* @param address - A serialized Aztec address
|
|
71
72
|
* @returns An Aztec address
|
|
73
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
72
74
|
*/
|
|
73
75
|
export declare function parseAztecAddress(address: string): AztecAddress;
|
|
74
76
|
/**
|
|
75
|
-
* Parses
|
|
77
|
+
* Parses an AztecAddress from a string.
|
|
78
|
+
* @param address - A serialized Aztec address
|
|
79
|
+
* @returns An Aztec address
|
|
80
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
81
|
+
*/
|
|
82
|
+
export declare function parseOptionalAztecAddress(address: string): AztecAddress | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Parses an optional log ID string into a LogId object.
|
|
85
|
+
*
|
|
86
|
+
* @param logId - The log ID string to parse.
|
|
87
|
+
* @returns The parsed LogId object, or undefined if the log ID is missing or empty.
|
|
88
|
+
*/
|
|
89
|
+
export declare function parseOptionalLogId(logId: string): LogId | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* Parses a selector from a string.
|
|
92
|
+
* @param selector - A serialized selector.
|
|
93
|
+
* @returns A selector.
|
|
94
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
95
|
+
*/
|
|
96
|
+
export declare function parseOptionalSelector(selector: string): FunctionSelector | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Parses a string into an integer or returns undefined if the input is falsy.
|
|
99
|
+
*
|
|
100
|
+
* @param value - The string to parse into an integer.
|
|
101
|
+
* @returns The parsed integer, or undefined if the input string is falsy.
|
|
102
|
+
* @throws If the input is not a valid integer.
|
|
103
|
+
*/
|
|
104
|
+
export declare function parseOptionalInteger(value: string): number | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* Parses a TxHash from a string.
|
|
76
107
|
* @param txHash - A transaction hash
|
|
77
108
|
* @returns A TxHash instance
|
|
109
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
78
110
|
*/
|
|
79
111
|
export declare function parseTxHash(txHash: string): TxHash;
|
|
80
112
|
/**
|
|
81
|
-
* Parses
|
|
113
|
+
* Parses an optional TxHash from a string.
|
|
114
|
+
* Calls parseTxHash internally.
|
|
115
|
+
* @param txHash - A transaction hash
|
|
116
|
+
* @returns A TxHash instance, or undefined if the input string is falsy.
|
|
117
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
118
|
+
*/
|
|
119
|
+
export declare function parseOptionalTxHash(txHash: string): TxHash | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* Parses a public key from a string.
|
|
82
122
|
* @param publicKey - A public key
|
|
83
123
|
* @returns A Point instance
|
|
124
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
84
125
|
*/
|
|
85
126
|
export declare function parsePublicKey(publicKey: string): Point;
|
|
86
127
|
/**
|
|
87
|
-
* Parses a partial address from a string.
|
|
128
|
+
* Parses a partial address from a string.
|
|
88
129
|
* @param address - A partial address
|
|
89
130
|
* @returns A Fr instance
|
|
131
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
90
132
|
*/
|
|
91
133
|
export declare function parsePartialAddress(address: string): Fr;
|
|
92
134
|
/**
|
|
93
|
-
* Parses a private key from a string.
|
|
135
|
+
* Parses a private key from a string.
|
|
94
136
|
* @param privateKey - A string
|
|
95
137
|
* @returns A private key
|
|
138
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
96
139
|
*/
|
|
97
140
|
export declare function parsePrivateKey(privateKey: string): GrumpkinScalar;
|
|
98
141
|
/**
|
|
99
|
-
* Parses a field from a string.
|
|
142
|
+
* Parses a field from a string.
|
|
100
143
|
* @param field - A string representing the field.
|
|
101
144
|
* @returns A field.
|
|
145
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
102
146
|
*/
|
|
103
147
|
export declare function parseField(field: string): Fr;
|
|
104
148
|
/**
|
package/dest/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAa3D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAQrC;;GAEG;AACH,UAAU,aAAa;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,oDAM7E;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,wDA2BzB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,2BAGhD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,6BAuBpE;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,yBAgBzD;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;;;GAM3G;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAS,MAAM,WAK1C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,CActD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAKnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAKnE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CASpF;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAStE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKtE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,CAMvD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAYlE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,CAyB5C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAElD"}
|
package/dest/utils.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { AztecAddress, Fr, GrumpkinScalar, Point, TxHash } from '@aztec/aztec.js';
|
|
1
|
+
import { AztecAddress, Fr, FunctionSelector, GrumpkinScalar, Point, TxHash } from '@aztec/aztec.js';
|
|
2
2
|
import { createEthereumChain, deployL1Contracts } from '@aztec/ethereum';
|
|
3
3
|
import { ContractDeploymentEmitterAbi, ContractDeploymentEmitterBytecode, InboxAbi, InboxBytecode, OutboxAbi, OutboxBytecode, RegistryAbi, RegistryBytecode, RollupAbi, RollupBytecode, } from '@aztec/l1-artifacts';
|
|
4
|
+
import { LogId } from '@aztec/types';
|
|
4
5
|
import { InvalidArgumentError } from 'commander';
|
|
5
6
|
import fs from 'fs';
|
|
6
7
|
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
@@ -158,9 +159,10 @@ export function parseSaltFromHexString(str) {
|
|
|
158
159
|
return Fr.fromBuffer(Buffer.from(padded, 'hex'));
|
|
159
160
|
}
|
|
160
161
|
/**
|
|
161
|
-
* Parses an AztecAddress from a string.
|
|
162
|
-
* @param address - A
|
|
162
|
+
* Parses an AztecAddress from a string.
|
|
163
|
+
* @param address - A serialized Aztec address
|
|
163
164
|
* @returns An Aztec address
|
|
165
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
164
166
|
*/
|
|
165
167
|
export function parseAztecAddress(address) {
|
|
166
168
|
try {
|
|
@@ -171,9 +173,68 @@ export function parseAztecAddress(address) {
|
|
|
171
173
|
}
|
|
172
174
|
}
|
|
173
175
|
/**
|
|
174
|
-
* Parses
|
|
176
|
+
* Parses an AztecAddress from a string.
|
|
177
|
+
* @param address - A serialized Aztec address
|
|
178
|
+
* @returns An Aztec address
|
|
179
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
180
|
+
*/
|
|
181
|
+
export function parseOptionalAztecAddress(address) {
|
|
182
|
+
if (!address) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
return parseAztecAddress(address);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Parses an optional log ID string into a LogId object.
|
|
189
|
+
*
|
|
190
|
+
* @param logId - The log ID string to parse.
|
|
191
|
+
* @returns The parsed LogId object, or undefined if the log ID is missing or empty.
|
|
192
|
+
*/
|
|
193
|
+
export function parseOptionalLogId(logId) {
|
|
194
|
+
if (!logId) {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
return LogId.fromString(logId);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Parses a selector from a string.
|
|
201
|
+
* @param selector - A serialized selector.
|
|
202
|
+
* @returns A selector.
|
|
203
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
204
|
+
*/
|
|
205
|
+
export function parseOptionalSelector(selector) {
|
|
206
|
+
if (!selector) {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
return FunctionSelector.fromString(selector);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
throw new InvalidArgumentError(`Invalid selector: ${selector}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Parses a string into an integer or returns undefined if the input is falsy.
|
|
218
|
+
*
|
|
219
|
+
* @param value - The string to parse into an integer.
|
|
220
|
+
* @returns The parsed integer, or undefined if the input string is falsy.
|
|
221
|
+
* @throws If the input is not a valid integer.
|
|
222
|
+
*/
|
|
223
|
+
export function parseOptionalInteger(value) {
|
|
224
|
+
if (!value) {
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
const parsed = Number(value);
|
|
228
|
+
if (!Number.isInteger(parsed)) {
|
|
229
|
+
throw new InvalidArgumentError('Invalid integer.');
|
|
230
|
+
}
|
|
231
|
+
return parsed;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Parses a TxHash from a string.
|
|
175
235
|
* @param txHash - A transaction hash
|
|
176
236
|
* @returns A TxHash instance
|
|
237
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
177
238
|
*/
|
|
178
239
|
export function parseTxHash(txHash) {
|
|
179
240
|
try {
|
|
@@ -184,9 +245,23 @@ export function parseTxHash(txHash) {
|
|
|
184
245
|
}
|
|
185
246
|
}
|
|
186
247
|
/**
|
|
187
|
-
* Parses
|
|
248
|
+
* Parses an optional TxHash from a string.
|
|
249
|
+
* Calls parseTxHash internally.
|
|
250
|
+
* @param txHash - A transaction hash
|
|
251
|
+
* @returns A TxHash instance, or undefined if the input string is falsy.
|
|
252
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
253
|
+
*/
|
|
254
|
+
export function parseOptionalTxHash(txHash) {
|
|
255
|
+
if (!txHash) {
|
|
256
|
+
return undefined;
|
|
257
|
+
}
|
|
258
|
+
return parseTxHash(txHash);
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Parses a public key from a string.
|
|
188
262
|
* @param publicKey - A public key
|
|
189
263
|
* @returns A Point instance
|
|
264
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
190
265
|
*/
|
|
191
266
|
export function parsePublicKey(publicKey) {
|
|
192
267
|
try {
|
|
@@ -197,9 +272,10 @@ export function parsePublicKey(publicKey) {
|
|
|
197
272
|
}
|
|
198
273
|
}
|
|
199
274
|
/**
|
|
200
|
-
* Parses a partial address from a string.
|
|
275
|
+
* Parses a partial address from a string.
|
|
201
276
|
* @param address - A partial address
|
|
202
277
|
* @returns A Fr instance
|
|
278
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
203
279
|
*/
|
|
204
280
|
export function parsePartialAddress(address) {
|
|
205
281
|
try {
|
|
@@ -210,9 +286,10 @@ export function parsePartialAddress(address) {
|
|
|
210
286
|
}
|
|
211
287
|
}
|
|
212
288
|
/**
|
|
213
|
-
* Parses a private key from a string.
|
|
289
|
+
* Parses a private key from a string.
|
|
214
290
|
* @param privateKey - A string
|
|
215
291
|
* @returns A private key
|
|
292
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
216
293
|
*/
|
|
217
294
|
export function parsePrivateKey(privateKey) {
|
|
218
295
|
try {
|
|
@@ -228,9 +305,10 @@ export function parsePrivateKey(privateKey) {
|
|
|
228
305
|
}
|
|
229
306
|
}
|
|
230
307
|
/**
|
|
231
|
-
* Parses a field from a string.
|
|
308
|
+
* Parses a field from a string.
|
|
232
309
|
* @param field - A string representing the field.
|
|
233
310
|
* @returns A field.
|
|
311
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
234
312
|
*/
|
|
235
313
|
export function parseField(field) {
|
|
236
314
|
try {
|
|
@@ -263,4 +341,4 @@ export function parseField(field) {
|
|
|
263
341
|
export function parseFields(fields) {
|
|
264
342
|
return fields.map(parseField);
|
|
265
343
|
}
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RyxPQUFPLEVBQW9DLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHM0csT0FBTyxFQUNMLDRCQUE0QixFQUM1QixpQ0FBaUMsRUFDakMsUUFBUSxFQUNSLGFBQWEsRUFDYixTQUFTLEVBQ1QsY0FBYyxFQUNkLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGNBQWMsR0FDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFckMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVMzQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxRQUEwQixFQUFFLE1BQWM7SUFDNUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDbEUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNQLE1BQU0sS0FBSyxDQUFDLFlBQVksTUFBTSw2QkFBNkIsQ0FBQyxDQUFDO0tBQzlEO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dest/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
"rootDir": "./src"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@aztec/aztec.js": "0.8.
|
|
38
|
-
"@aztec/ethereum": "0.8.
|
|
39
|
-
"@aztec/foundation": "0.8.
|
|
40
|
-
"@aztec/l1-artifacts": "0.8.
|
|
41
|
-
"@aztec/noir-compiler": "0.8.
|
|
42
|
-
"@aztec/noir-contracts": "0.8.
|
|
43
|
-
"@aztec/types": "0.8.
|
|
37
|
+
"@aztec/aztec.js": "0.8.11",
|
|
38
|
+
"@aztec/ethereum": "0.8.11",
|
|
39
|
+
"@aztec/foundation": "0.8.11",
|
|
40
|
+
"@aztec/l1-artifacts": "0.8.11",
|
|
41
|
+
"@aztec/noir-compiler": "0.8.11",
|
|
42
|
+
"@aztec/noir-contracts": "0.8.11",
|
|
43
|
+
"@aztec/types": "0.8.11",
|
|
44
44
|
"@libp2p/peer-id-factory": "^3.0.4",
|
|
45
45
|
"commander": "^9.0.0",
|
|
46
46
|
"jszip": "^3.10.1",
|
package/src/index.ts
CHANGED
|
@@ -11,9 +11,10 @@ import {
|
|
|
11
11
|
import { StructType, decodeFunctionSignatureWithParameterNames } from '@aztec/foundation/abi';
|
|
12
12
|
import { JsonStringify } from '@aztec/foundation/json-rpc';
|
|
13
13
|
import { DebugLogger, LogFn } from '@aztec/foundation/log';
|
|
14
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
14
15
|
import { fileURLToPath } from '@aztec/foundation/url';
|
|
15
16
|
import { compileContract, generateNoirInterface, generateTypescriptInterface } from '@aztec/noir-compiler/cli';
|
|
16
|
-
import { CompleteAddress, ContractData,
|
|
17
|
+
import { CompleteAddress, ContractData, LogFilter } from '@aztec/types';
|
|
17
18
|
|
|
18
19
|
import { createSecp256k1PeerId } from '@libp2p/peer-id-factory';
|
|
19
20
|
import { Command, Option } from 'commander';
|
|
@@ -34,6 +35,11 @@ import {
|
|
|
34
35
|
parseAztecAddress,
|
|
35
36
|
parseField,
|
|
36
37
|
parseFields,
|
|
38
|
+
parseOptionalAztecAddress,
|
|
39
|
+
parseOptionalInteger,
|
|
40
|
+
parseOptionalLogId,
|
|
41
|
+
parseOptionalSelector,
|
|
42
|
+
parseOptionalTxHash,
|
|
37
43
|
parsePartialAddress,
|
|
38
44
|
parsePrivateKey,
|
|
39
45
|
parsePublicKey,
|
|
@@ -219,7 +225,8 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command {
|
|
|
219
225
|
const deployed = await tx.wait();
|
|
220
226
|
log(`\nContract deployed at ${deployed.contractAddress!.toString()}\n`);
|
|
221
227
|
} else {
|
|
222
|
-
log(`\
|
|
228
|
+
log(`\nContract Address: ${tx.completeContractAddress?.address.toString() ?? 'N/A'}`);
|
|
229
|
+
log(`Deployment transaction hash: ${txHash}\n`);
|
|
223
230
|
}
|
|
224
231
|
});
|
|
225
232
|
|
|
@@ -288,22 +295,58 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command {
|
|
|
288
295
|
|
|
289
296
|
program
|
|
290
297
|
.command('get-logs')
|
|
291
|
-
.description('Gets all the unencrypted logs from
|
|
292
|
-
.option('-
|
|
293
|
-
.option(
|
|
298
|
+
.description('Gets all the unencrypted logs from an intersection of all the filter params.')
|
|
299
|
+
.option('-tx, --tx-hash <txHash>', 'A transaction hash to get the receipt for.', parseOptionalTxHash)
|
|
300
|
+
.option(
|
|
301
|
+
'-fb, --from-block <blockNum>',
|
|
302
|
+
'Initial block number for getting logs (defaults to 1).',
|
|
303
|
+
parseOptionalInteger,
|
|
304
|
+
)
|
|
305
|
+
.option('-tb, --to-block <blockNum>', 'Up to which block to fetch logs (defaults to latest).', parseOptionalInteger)
|
|
306
|
+
.option('-al --after-log <logId>', 'ID of a log after which to fetch the logs.', parseOptionalLogId)
|
|
307
|
+
.option('-ca, --contract-address <address>', 'Contract address to filter logs by.', parseOptionalAztecAddress)
|
|
308
|
+
.option('-s, --selector <hex string>', 'Event selector to filter logs by.', parseOptionalSelector)
|
|
294
309
|
.addOption(pxeOption)
|
|
295
|
-
.
|
|
296
|
-
|
|
297
|
-
const
|
|
298
|
-
const limitCount = limit ? parseInt(limit) : 100;
|
|
310
|
+
.option('--follow', 'If set, will keep polling for new logs until interrupted.')
|
|
311
|
+
.action(async ({ txHash, fromBlock, toBlock, afterLog, contractAddress, selector, rpcUrl, follow }) => {
|
|
312
|
+
const pxe = await createCompatibleClient(rpcUrl, debugLogger);
|
|
299
313
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
314
|
+
if (follow) {
|
|
315
|
+
if (txHash) throw Error('Cannot use --follow with --tx-hash');
|
|
316
|
+
if (toBlock) throw Error('Cannot use --follow with --to-block');
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const filter: LogFilter = { txHash, fromBlock, toBlock, afterLog, contractAddress, selector };
|
|
320
|
+
|
|
321
|
+
const fetchLogs = async () => {
|
|
322
|
+
const response = await pxe.getUnencryptedLogs(filter);
|
|
323
|
+
const logs = response.logs;
|
|
324
|
+
|
|
325
|
+
if (!logs.length) {
|
|
326
|
+
const filterOptions = Object.entries(filter)
|
|
327
|
+
.filter(([, value]) => value !== undefined)
|
|
328
|
+
.map(([key, value]) => `${key}: ${value}`)
|
|
329
|
+
.join(', ');
|
|
330
|
+
if (!follow) log(`No logs found for filter: {${filterOptions}}`);
|
|
331
|
+
} else {
|
|
332
|
+
if (!follow && !filter.afterLog) log('Logs found: \n');
|
|
333
|
+
logs.forEach(unencryptedLog => log(unencryptedLog.toHumanReadable()));
|
|
334
|
+
// Set the continuation parameter for the following requests
|
|
335
|
+
filter.afterLog = logs[logs.length - 1].id;
|
|
336
|
+
}
|
|
337
|
+
return response.maxLogsHit;
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
if (follow) {
|
|
341
|
+
log('Fetching logs...');
|
|
342
|
+
while (true) {
|
|
343
|
+
const maxLogsHit = await fetchLogs();
|
|
344
|
+
if (!maxLogsHit) await sleep(1000);
|
|
345
|
+
}
|
|
304
346
|
} else {
|
|
305
|
-
|
|
306
|
-
|
|
347
|
+
while (await fetchLogs()) {
|
|
348
|
+
// Keep fetching logs until we reach the end.
|
|
349
|
+
}
|
|
307
350
|
}
|
|
308
351
|
});
|
|
309
352
|
|
|
@@ -416,7 +459,7 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command {
|
|
|
416
459
|
const wallet = await getSchnorrAccount(client, privateKey, privateKey, accountCreationSalt).getWallet();
|
|
417
460
|
const contract = await Contract.at(contractAddress, contractArtifact, wallet);
|
|
418
461
|
const tx = contract.methods[functionName](...functionArgs).send();
|
|
419
|
-
log(
|
|
462
|
+
log(`\nTransaction hash: ${(await tx.getTxHash()).toString()}`);
|
|
420
463
|
if (options.wait) {
|
|
421
464
|
await tx.wait();
|
|
422
465
|
|
|
@@ -427,7 +470,7 @@ export function getProgram(log: LogFn, debugLogger: DebugLogger): Command {
|
|
|
427
470
|
log(`Block number: ${receipt.blockNumber}`);
|
|
428
471
|
log(`Block hash: ${receipt.blockHash?.toString('hex')}`);
|
|
429
472
|
} else {
|
|
430
|
-
log('
|
|
473
|
+
log('Transaction pending. Check status with get-tx-receipt');
|
|
431
474
|
}
|
|
432
475
|
});
|
|
433
476
|
|
package/src/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AztecAddress, Fr, GrumpkinScalar, PXE, Point, TxHash } from '@aztec/aztec.js';
|
|
1
|
+
import { AztecAddress, Fr, FunctionSelector, GrumpkinScalar, PXE, Point, TxHash } from '@aztec/aztec.js';
|
|
2
2
|
import { L1ContractArtifactsForDeployment, createEthereumChain, deployL1Contracts } from '@aztec/ethereum';
|
|
3
3
|
import { ContractArtifact } from '@aztec/foundation/abi';
|
|
4
4
|
import { DebugLogger, LogFn } from '@aztec/foundation/log';
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
RollupAbi,
|
|
15
15
|
RollupBytecode,
|
|
16
16
|
} from '@aztec/l1-artifacts';
|
|
17
|
+
import { LogId } from '@aztec/types';
|
|
17
18
|
|
|
18
19
|
import { InvalidArgumentError } from 'commander';
|
|
19
20
|
import fs from 'fs';
|
|
@@ -197,9 +198,10 @@ export function parseSaltFromHexString(str: string): Fr {
|
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
/**
|
|
200
|
-
* Parses an AztecAddress from a string.
|
|
201
|
-
* @param address - A
|
|
201
|
+
* Parses an AztecAddress from a string.
|
|
202
|
+
* @param address - A serialized Aztec address
|
|
202
203
|
* @returns An Aztec address
|
|
204
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
203
205
|
*/
|
|
204
206
|
export function parseAztecAddress(address: string): AztecAddress {
|
|
205
207
|
try {
|
|
@@ -210,9 +212,71 @@ export function parseAztecAddress(address: string): AztecAddress {
|
|
|
210
212
|
}
|
|
211
213
|
|
|
212
214
|
/**
|
|
213
|
-
* Parses
|
|
215
|
+
* Parses an AztecAddress from a string.
|
|
216
|
+
* @param address - A serialized Aztec address
|
|
217
|
+
* @returns An Aztec address
|
|
218
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
219
|
+
*/
|
|
220
|
+
export function parseOptionalAztecAddress(address: string): AztecAddress | undefined {
|
|
221
|
+
if (!address) {
|
|
222
|
+
return undefined;
|
|
223
|
+
}
|
|
224
|
+
return parseAztecAddress(address);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Parses an optional log ID string into a LogId object.
|
|
229
|
+
*
|
|
230
|
+
* @param logId - The log ID string to parse.
|
|
231
|
+
* @returns The parsed LogId object, or undefined if the log ID is missing or empty.
|
|
232
|
+
*/
|
|
233
|
+
export function parseOptionalLogId(logId: string): LogId | undefined {
|
|
234
|
+
if (!logId) {
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
return LogId.fromString(logId);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Parses a selector from a string.
|
|
242
|
+
* @param selector - A serialized selector.
|
|
243
|
+
* @returns A selector.
|
|
244
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
245
|
+
*/
|
|
246
|
+
export function parseOptionalSelector(selector: string): FunctionSelector | undefined {
|
|
247
|
+
if (!selector) {
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
try {
|
|
251
|
+
return FunctionSelector.fromString(selector);
|
|
252
|
+
} catch {
|
|
253
|
+
throw new InvalidArgumentError(`Invalid selector: ${selector}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Parses a string into an integer or returns undefined if the input is falsy.
|
|
259
|
+
*
|
|
260
|
+
* @param value - The string to parse into an integer.
|
|
261
|
+
* @returns The parsed integer, or undefined if the input string is falsy.
|
|
262
|
+
* @throws If the input is not a valid integer.
|
|
263
|
+
*/
|
|
264
|
+
export function parseOptionalInteger(value: string): number | undefined {
|
|
265
|
+
if (!value) {
|
|
266
|
+
return undefined;
|
|
267
|
+
}
|
|
268
|
+
const parsed = Number(value);
|
|
269
|
+
if (!Number.isInteger(parsed)) {
|
|
270
|
+
throw new InvalidArgumentError('Invalid integer.');
|
|
271
|
+
}
|
|
272
|
+
return parsed;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Parses a TxHash from a string.
|
|
214
277
|
* @param txHash - A transaction hash
|
|
215
278
|
* @returns A TxHash instance
|
|
279
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
216
280
|
*/
|
|
217
281
|
export function parseTxHash(txHash: string): TxHash {
|
|
218
282
|
try {
|
|
@@ -223,9 +287,24 @@ export function parseTxHash(txHash: string): TxHash {
|
|
|
223
287
|
}
|
|
224
288
|
|
|
225
289
|
/**
|
|
226
|
-
* Parses
|
|
290
|
+
* Parses an optional TxHash from a string.
|
|
291
|
+
* Calls parseTxHash internally.
|
|
292
|
+
* @param txHash - A transaction hash
|
|
293
|
+
* @returns A TxHash instance, or undefined if the input string is falsy.
|
|
294
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
295
|
+
*/
|
|
296
|
+
export function parseOptionalTxHash(txHash: string): TxHash | undefined {
|
|
297
|
+
if (!txHash) {
|
|
298
|
+
return undefined;
|
|
299
|
+
}
|
|
300
|
+
return parseTxHash(txHash);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Parses a public key from a string.
|
|
227
305
|
* @param publicKey - A public key
|
|
228
306
|
* @returns A Point instance
|
|
307
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
229
308
|
*/
|
|
230
309
|
export function parsePublicKey(publicKey: string): Point {
|
|
231
310
|
try {
|
|
@@ -236,9 +315,10 @@ export function parsePublicKey(publicKey: string): Point {
|
|
|
236
315
|
}
|
|
237
316
|
|
|
238
317
|
/**
|
|
239
|
-
* Parses a partial address from a string.
|
|
318
|
+
* Parses a partial address from a string.
|
|
240
319
|
* @param address - A partial address
|
|
241
320
|
* @returns A Fr instance
|
|
321
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
242
322
|
*/
|
|
243
323
|
export function parsePartialAddress(address: string): Fr {
|
|
244
324
|
try {
|
|
@@ -249,9 +329,10 @@ export function parsePartialAddress(address: string): Fr {
|
|
|
249
329
|
}
|
|
250
330
|
|
|
251
331
|
/**
|
|
252
|
-
* Parses a private key from a string.
|
|
332
|
+
* Parses a private key from a string.
|
|
253
333
|
* @param privateKey - A string
|
|
254
334
|
* @returns A private key
|
|
335
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
255
336
|
*/
|
|
256
337
|
export function parsePrivateKey(privateKey: string): GrumpkinScalar {
|
|
257
338
|
try {
|
|
@@ -268,9 +349,10 @@ export function parsePrivateKey(privateKey: string): GrumpkinScalar {
|
|
|
268
349
|
}
|
|
269
350
|
|
|
270
351
|
/**
|
|
271
|
-
* Parses a field from a string.
|
|
352
|
+
* Parses a field from a string.
|
|
272
353
|
* @param field - A string representing the field.
|
|
273
354
|
* @returns A field.
|
|
355
|
+
* @throws InvalidArgumentError if the input string is not valid.
|
|
274
356
|
*/
|
|
275
357
|
export function parseField(field: string): Fr {
|
|
276
358
|
try {
|