@aztec/cli 0.1.0-alpha13

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 ADDED
@@ -0,0 +1,220 @@
1
+ # Aztec CLI Documentation
2
+
3
+ The Aztec CLI is a command-line interface for interacting with Aztec. It provides various commands to perform different tasks related to Aztec contracts and accounts. This documentation provides an overview of the available commands and their usage.
4
+
5
+ ## Installation
6
+
7
+ To use the Aztec CLI, you need to have Node.js installed on your system. You can install it from the official Node.js website: [https://nodejs.org](https://nodejs.org)
8
+
9
+ After installing Node.js, you can install the Aztec CLI globally using the following command:
10
+
11
+ ```shell
12
+ npm install -g @aztec/azti
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ Once the Aztec CLI is installed, you can run it using the `azti` command followed by the desired command and its arguments. Here's the basic syntax:
18
+
19
+ ```shell
20
+ azti [command] [arguments] [options]
21
+ ```
22
+
23
+ To get help about the available commands and their usage, you can use the `--help` option:
24
+
25
+ ```shell
26
+ azti --help
27
+ ```
28
+
29
+ ## Commands
30
+
31
+ ### deploy-l1-contracts
32
+
33
+ Deploy Aztec contracts on Layer 1.
34
+
35
+ Syntax:
36
+
37
+ ```shell
38
+ azti deploy-l1-contracts [rpcUrl] [options]
39
+ ```
40
+
41
+ - `rpcUrl` (optional): URL of the Ethereum host. Chain identifiers `localhost` and `testnet` can be used. Default: `http://localhost:8545`.
42
+
43
+ Options:
44
+
45
+ - `-a, --api-key <string>`: API key for the Ethereum host.
46
+ - `-p, --private-key <string>`: The private key to use for deployment.
47
+ - `-m, --mnemonic <string>`: The mnemonic to use in deployment. Default: "test test test test test test test test test test test junk".
48
+
49
+ ### deploy
50
+
51
+ Deploy an Aztec contract.
52
+
53
+ Syntax:
54
+
55
+ ```shell
56
+ azti deploy <contractAbi> [options]
57
+ ```
58
+
59
+ - `contractAbi`: Path to the compiled Noir contract's ABI file in JSON format.
60
+
61
+ Options:
62
+
63
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
64
+ - `-k, --public-key <string>`: Public key to use for deployment.
65
+ - `-a, --constructor-args [args...]`: Constructor arguments for the contract.
66
+
67
+ ### check-deploy
68
+
69
+ Check if a contract has been deployed to an Aztec address.
70
+
71
+ Syntax:
72
+
73
+ ```shell
74
+ azti check-deploy <contractAddress> [options]
75
+ ```
76
+
77
+ - `contractAddress`: Aztec address to check if the contract has been deployed to.
78
+
79
+ Options:
80
+
81
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
82
+
83
+ ### get-tx-receipt
84
+
85
+ Get the receipt for a transaction hash.
86
+
87
+ Syntax:
88
+
89
+ ```shell
90
+ azti get-tx-receipt <txHash> [options]
91
+ ```
92
+
93
+ - `txHash`: Transaction hash to get the receipt for.
94
+
95
+ Options:
96
+
97
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
98
+
99
+ ### get-contract-data
100
+
101
+ Get data about an Aztec contract.
102
+
103
+ Syntax:
104
+
105
+ ```shell
106
+ azti get-contract-data <contractAddress> [options]
107
+ ```
108
+
109
+ - `contractAddress`: Aztec address of the contract.
110
+
111
+ Options:
112
+
113
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
114
+ - `-b, --include-bytecode`: Include the contract's public function bytecode, if any.
115
+
116
+ ### create-account
117
+
118
+ Create a new Aztec account.
119
+
120
+ Syntax:
121
+
122
+ ```shell
123
+ azti create-account [options]
124
+ ```
125
+
126
+ Options:
127
+
128
+ - `-k, --private-key`: Private Key to use for the 1st account generation.
129
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
130
+ - `-n, --num-addresses <number>`: Number of accounts to create. Default: 1.
131
+
132
+ ### get-accounts
133
+
134
+ Get a list of Aztec accounts.
135
+
136
+ Syntax:
137
+
138
+ ```shell
139
+ azti get-accounts [options]
140
+ ```
141
+
142
+ Options:
143
+
144
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
145
+
146
+ ### get-account-public-key
147
+
148
+ Get the public key for an Aztec account.
149
+
150
+ Syntax:
151
+
152
+ ```shell
153
+ azti get-account-public-key <address> [options]
154
+ ```
155
+
156
+ - `address`: Aztec address to get the public key for.
157
+
158
+ Options:
159
+
160
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
161
+
162
+ ### call-fn
163
+
164
+ Call a function on an Aztec contract.
165
+
166
+ Syntax:
167
+
168
+ ```shell
169
+ azti call-fn <contractAbi> <contractAddress> <functionName> [from] [functionArgs...] [options]
170
+ ```
171
+
172
+ - `contractAbi`: Path to the compiled contract's ABI file in JSON format.
173
+ - `contractAddress`: Address of the contract.
174
+ - `functionName`: Name of the function to call.
175
+ - `from` (optional): Caller of the transaction.
176
+ - `functionArgs` (optional): Function arguments.
177
+
178
+ Options:
179
+
180
+ - `-u, --rpcUrl <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
181
+
182
+ ### view-tx
183
+
184
+ Simulate the execution of a view (read-only) function on a deployed contract without actually modifying state.
185
+
186
+ Syntax:
187
+
188
+ ```shell
189
+ azti view-tx <contractAbi> <contractAddress> <functionName> [from] [functionArgs...] [options]
190
+ ```
191
+
192
+ - `contractAbi`: Path to the compiled contract's ABI file in JSON format.
193
+ - `contractAddress`: Address of the contract.
194
+ - `functionName`: Name of the function to call.
195
+ - `from` (optional): Caller of the transaction.
196
+ - `functionArgs` (optional): Function arguments.
197
+
198
+ Options:
199
+
200
+ - `-u, --rpcUrl <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
201
+
202
+ ### get-logs
203
+
204
+ Get logs from Aztec blocks.
205
+
206
+ Syntax:
207
+
208
+ ```shell
209
+ azti get-logs <from> <take> [options]
210
+ ```
211
+
212
+ - `
213
+
214
+ from`: Block number to start fetching logs from.
215
+
216
+ - `take`: Number of block logs to fetch.
217
+
218
+ Options:
219
+
220
+ - `-u, --rpc-url <string>`: URL of the Aztec RPC. Default: `http://localhost:8080`.
@@ -0,0 +1,15 @@
1
+ import { ABIParameter, StructType } from '@aztec/foundation/abi';
2
+ /**
3
+ * Parses a hex string into an ABI struct type.
4
+ * @param str - The encoded hex string.
5
+ * @param abiType - The ABI Struct type.
6
+ * @returns An object in the ABI struct type's format.
7
+ */
8
+ export declare function parseStructString(str: string, abiType: StructType): any;
9
+ /**
10
+ * Tries to encode function args to their equivalent TS type.
11
+ * @param args - An array of function's / constructor's args.
12
+ * @returns The encoded array.
13
+ */
14
+ export declare function encodeArgs(args: any[], params: ABIParameter[]): any[];
15
+ //# sourceMappingURL=cli_encoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli_encoder.d.ts","sourceRoot":"","sources":["../src/cli_encoder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAW,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,OAcjE;AA8CD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAO7D"}
@@ -0,0 +1,87 @@
1
+ import { Fr } from '@aztec/aztec.js';
2
+ /**
3
+ * Parses a hex string into an ABI struct type.
4
+ * @param str - The encoded hex string.
5
+ * @param abiType - The ABI Struct type.
6
+ * @returns An object in the ABI struct type's format.
7
+ */
8
+ export function parseStructString(str, abiType) {
9
+ // Assing string bytes to struct fields.
10
+ const buf = Buffer.from(str.replace(/^0x/i, ''), 'hex');
11
+ const struct = {};
12
+ let byteIndex = 0;
13
+ let argIndex = 0;
14
+ while (byteIndex < buf.length) {
15
+ const { name } = abiType.fields[argIndex];
16
+ struct[name] = Fr.fromBuffer(buf.subarray(byteIndex, byteIndex + 32));
17
+ byteIndex += 32;
18
+ argIndex += 1;
19
+ }
20
+ return struct;
21
+ }
22
+ /**
23
+ * Helper function to encode CLI string args to an appropriate JS type.
24
+ * @param arg - The CLI argument.
25
+ * @param abiType - The type as described by the contract's ABI.
26
+ * @returns The encoded argument.
27
+ */
28
+ function encodeArg(arg, abiType) {
29
+ const { kind } = abiType;
30
+ if (kind === 'field' || kind === 'integer') {
31
+ return BigInt(arg);
32
+ }
33
+ else if (kind === 'boolean') {
34
+ if (arg === 'true')
35
+ return true;
36
+ if (arg === 'false')
37
+ return false;
38
+ }
39
+ else if (kind === 'array') {
40
+ let arr;
41
+ try {
42
+ arr = JSON.parse(arg);
43
+ if (!Array.isArray(arr))
44
+ throw Error();
45
+ for (let i = 0; i < abiType.length; i += 1) {
46
+ return encodeArg(arg[i], abiType.type);
47
+ }
48
+ }
49
+ catch {
50
+ throw new Error(`Unable to parse arg ${arg} as array`);
51
+ }
52
+ }
53
+ else if (kind === 'struct') {
54
+ // check if input is encoded long string
55
+ if (arg.startsWith('0x')) {
56
+ return parseStructString(arg, abiType);
57
+ }
58
+ let obj;
59
+ try {
60
+ obj = JSON.parse(arg);
61
+ if (Array.isArray(obj))
62
+ throw Error();
63
+ const res = [];
64
+ for (const field of abiType.fields) {
65
+ res.push(encodeArg(obj[field.name], field.type));
66
+ }
67
+ return res;
68
+ }
69
+ catch {
70
+ throw new Error(`Unable to parse arg ${arg} as struct`);
71
+ }
72
+ }
73
+ }
74
+ /**
75
+ * Tries to encode function args to their equivalent TS type.
76
+ * @param args - An array of function's / constructor's args.
77
+ * @returns The encoded array.
78
+ */
79
+ export function encodeArgs(args, params) {
80
+ return args
81
+ .map((arg, index) => {
82
+ const paramType = params[index].type;
83
+ return encodeArg(arg, paramType);
84
+ })
85
+ .flat();
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpX2VuY29kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpX2VuY29kZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3JDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxPQUFtQjtJQUNoRSx3Q0FBd0M7SUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDdkIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixPQUFPLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQztLQUNmO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxTQUFTLENBQUMsR0FBVyxFQUFFLE9BQWdCO0lBQzlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDekIsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDcEI7U0FBTSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7UUFDN0IsSUFBSSxHQUFHLEtBQUssTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2hDLElBQUksR0FBRyxLQUFLLE9BQU87WUFBRSxPQUFPLEtBQUssQ0FBQztLQUNuQztTQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtRQUMzQixJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUk7WUFDRixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQUUsTUFBTSxLQUFLLEVBQUUsQ0FBQztZQUN2QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxQyxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7UUFBQyxNQUFNO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUMsQ0FBQztTQUN4RDtLQUNGO1NBQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzVCLHdDQUF3QztRQUN4QyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDeEM7UUFDRCxJQUFJLEdBQUcsQ0FBQztRQUNSLElBQUk7WUFDRixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUFFLE1BQU0sS0FBSyxFQUFFLENBQUM7WUFDdEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ2YsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNsQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQ2xEO1lBQ0QsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUFDLE1BQU07WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQ3pEO0tBQ0Y7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBVyxFQUFFLE1BQXNCO0lBQzVELE9BQU8sSUFBSTtTQUNSLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JDLE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUM7U0FDRCxJQUFJLEVBQUUsQ0FBQztBQUNaLENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dest/index.js ADDED
@@ -0,0 +1,239 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { createDebugLogger } from '@aztec/foundation/log';
5
+ import { AztecAddress, Contract, ContractDeployer, Point, TxHash, createAccounts, createAztecRpcClient, pointToPublicKey, } from '@aztec/aztec.js';
6
+ import { encodeArgs, parseStructString } from './cli_encoder.js';
7
+ import { deployAztecContracts, getContractAbi, prepTx } from './utils.js';
8
+ import { JsonStringify } from '@aztec/foundation/json-rpc';
9
+ import { L2BlockL2Logs } from '@aztec/types';
10
+ const debugLogger = createDebugLogger('aztec:cli');
11
+ const log = createLogger();
12
+ const program = new Command();
13
+ program.name('azti').description('CLI for interacting with Aztec.').version('0.1.0');
14
+ /**
15
+ * A placeholder for the Aztec-cli.
16
+ */
17
+ async function main() {
18
+ program
19
+ .command('deploy-l1-contracts')
20
+ .argument('[rpcUrl]', 'Url of the ethereum host. Chain identifiers localhost and testnet can be used', 'http://localhost:8545')
21
+ .option('-a, --api-key <string>', 'Api key for the ethereum host', undefined)
22
+ .option('-p, --private-key <string>', 'The private key to use for deployment')
23
+ .option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk')
24
+ .action(async (rpcUrl, options) => {
25
+ await deployAztecContracts(rpcUrl, options.apiKey ?? '', options.privateKey, options.mnemonic, debugLogger);
26
+ });
27
+ program
28
+ .command('deploy')
29
+ .argument('<contractAbi>', "A compiled Noir contract's ABI in JSON format", undefined)
30
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
31
+ .option('-k, --public-key <string>')
32
+ .option('-a, --constructor-args [args...]', 'Contract constructor arguments', [])
33
+ .action(async (contractFile, options) => {
34
+ const contractAbi = getContractAbi(contractFile, log);
35
+ const constructorAbi = contractAbi.functions.find(({ name }) => name === 'constructor');
36
+ const publicKey = Point.fromString(options.publicKey);
37
+ const client = createAztecRpcClient(options.rpcUrl);
38
+ const deployer = new ContractDeployer(contractAbi, client);
39
+ const tx = deployer
40
+ .deploy(...encodeArgs(options.constructorArgs, constructorAbi.parameters), pointToPublicKey(publicKey))
41
+ .send();
42
+ await tx.isMined();
43
+ const receipt = await tx.getReceipt();
44
+ log(`Contract deployed at ${receipt.contractAddress?.toString()}`);
45
+ });
46
+ program
47
+ .command('check-deploy')
48
+ .argument('<contractAddress>', 'An Aztec address to check if contract has been deployed to.')
49
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
50
+ .action(async (_contractAddress, options) => {
51
+ const client = createAztecRpcClient(options.rpcUrl);
52
+ const address = AztecAddress.fromString(_contractAddress);
53
+ const isDeployed = await client.isContractDeployed(address);
54
+ log(isDeployed.toString());
55
+ });
56
+ program
57
+ .command('get-tx-receipt')
58
+ .argument('<txHash>', 'A TX hash to get the receipt for.')
59
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
60
+ .action(async (_txHash, options) => {
61
+ const client = createAztecRpcClient(options.rpcUrl);
62
+ const txHash = TxHash.fromString(_txHash);
63
+ const receipt = await client.getTxReceipt(txHash);
64
+ if (!receipt) {
65
+ log(`No receipt found for tx hash ${_txHash}`);
66
+ }
67
+ else {
68
+ log(`TX Receipt: \n${JsonStringify(receipt, true)}`);
69
+ }
70
+ });
71
+ program
72
+ .command('get-contract-data')
73
+ .argument('<contractAddress>', 'Aztec address of the contract.')
74
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
75
+ .option('-b, --include-bytecode', "Include the contract's public function bytecode, if any.")
76
+ .action(async (_contractAddress, options) => {
77
+ const client = createAztecRpcClient(options.rpcUrl);
78
+ const address = AztecAddress.fromString(_contractAddress);
79
+ const contractDataOrInfo = options.includeBytecode
80
+ ? await client.getContractData(address)
81
+ : await client.getContractInfo(address);
82
+ if (!contractDataOrInfo) {
83
+ log(`No contract data found at ${_contractAddress}`);
84
+ return;
85
+ }
86
+ let contractData;
87
+ if ('contractData' in contractDataOrInfo) {
88
+ contractData = contractDataOrInfo.contractData;
89
+ }
90
+ else {
91
+ contractData = contractDataOrInfo;
92
+ }
93
+ log(`Contract Data: \nAddress: ${contractData.contractAddress.toString()}`);
94
+ log(`Portal: ${contractData.portalContractAddress.toString()}`);
95
+ if ('bytecode' in contractDataOrInfo) {
96
+ log(`Bytecode: ${contractDataOrInfo.bytecode}`);
97
+ }
98
+ });
99
+ program
100
+ .command('get-logs')
101
+ .argument('<from>', 'Block num start for getting logs.')
102
+ .argument('<take>', 'How many block logs to fetch.')
103
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
104
+ .action(async (_from, _take, options) => {
105
+ let from;
106
+ let take;
107
+ try {
108
+ from = parseInt(_from);
109
+ take = parseInt(_take);
110
+ }
111
+ catch {
112
+ log(`Invalid integer value(s) passed: ${_from}, ${_take}`);
113
+ return;
114
+ }
115
+ const client = createAztecRpcClient(options.rpcUrl);
116
+ const logs = await client.getUnencryptedLogs(from, take);
117
+ if (!logs.length) {
118
+ log(`No logs found in blocks ${from} to ${from + take}`);
119
+ }
120
+ else {
121
+ log('Logs found: \n');
122
+ L2BlockL2Logs.unrollLogs(logs).forEach(fnLog => log(`${fnLog.toString('ascii')}\n`));
123
+ }
124
+ });
125
+ // NOTE: This implementation should change soon but keeping it here for quick account creation.
126
+ program
127
+ .command('create-account')
128
+ .option('-k, --private-key', 'Private Key to use for the 1st account generation.')
129
+ .option('-n, --num-addresses <number>', 'Number of addresses the account can control')
130
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
131
+ .action(async (options) => {
132
+ const client = createAztecRpcClient(options.rpcUrl);
133
+ const privateKey = options.privateKey && Buffer.from(options.privateKeystr.replace(/^0x/i, ''), 'hex');
134
+ const numAccounts = options.numAddresses ? parseInt(options.numAddresses) : 1;
135
+ const wallet = await createAccounts(client, privateKey, numAccounts);
136
+ const accounts = await wallet.getAccounts();
137
+ const pubKeys = await Promise.all(accounts.map(acc => wallet.getAccountPublicKey(acc)));
138
+ log(`Created account(s).`);
139
+ accounts.map((acc, i) => log(`\nAddress: ${acc.toString()}\nPublic Key: ${pubKeys[i].toString()}\n`));
140
+ });
141
+ program
142
+ .command('get-accounts')
143
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
144
+ .action(async (options) => {
145
+ const client = createAztecRpcClient(options.rpcUrl);
146
+ const accounts = await client.getAccounts();
147
+ if (!accounts.length) {
148
+ log('No accounts found.');
149
+ }
150
+ else {
151
+ log(`Accounts found: \n`);
152
+ accounts.forEach(acc => log(`${acc}\n`));
153
+ }
154
+ });
155
+ program
156
+ .command('get-account-public-key')
157
+ .argument('<address>', 'The Aztec address to get the public key for')
158
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
159
+ .action(async (_address, options) => {
160
+ const client = createAztecRpcClient(options.rpcUrl);
161
+ const address = AztecAddress.fromString(_address);
162
+ const pk = await client.getAccountPublicKey(address);
163
+ if (!pk) {
164
+ log(`Unkown account ${_address}`);
165
+ }
166
+ else {
167
+ log(`Public Key: \n ${pk.toString()}`);
168
+ }
169
+ });
170
+ program
171
+ .command('call-fn')
172
+ .argument('<contractAbi>', "The compiled contract's ABI in JSON format", undefined)
173
+ .argument('<contractAddress>', 'Address of the contract')
174
+ .argument('<functionName>', 'Name of Function to view')
175
+ .argument('[from]', 'The caller of the transaction', undefined)
176
+ .argument('[functionArgs...]', 'Function arguments', [])
177
+ .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
178
+ .action(async (contractFile, _contractAddress, functionName, _from, _functionArgs, options) => {
179
+ const { contractAddress, functionArgs, from, contractAbi } = prepTx(contractFile, _contractAddress, functionName, _from, _functionArgs, log);
180
+ const client = createAztecRpcClient(options.rpcUrl);
181
+ const wallet = await createAccounts(client);
182
+ const contract = new Contract(contractAddress, contractAbi, wallet);
183
+ const tx = contract.methods[functionName](...functionArgs).send({ from });
184
+ await tx.isMined();
185
+ log('TX has been mined');
186
+ const receipt = await tx.getReceipt();
187
+ log(`TX Hash: ${(await tx.getTxHash()).toString()}`);
188
+ log(`Block Num: ${receipt.blockNumber}`);
189
+ log(`Block Hash: ${receipt.blockHash?.toString('hex')}`);
190
+ log(`TX Status: ${receipt.status}`);
191
+ });
192
+ program
193
+ .command('view-tx')
194
+ .argument('<contractAbi>', "The compiled contract's ABI in JSON format", undefined)
195
+ .argument('<contractAddress>', 'Address of the contract')
196
+ .argument('<functionName>', 'Name of Function to view')
197
+ .argument('[from]', 'The caller of the transaction', undefined)
198
+ .argument('[functionArgs...]', 'Function arguments', [])
199
+ .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
200
+ .action(async (contractFile, _contractAddress, functionName, _from, _functionArgs, options) => {
201
+ const { contractAddress, functionArgs, from } = prepTx(contractFile, _contractAddress, functionName, _from, _functionArgs, log);
202
+ const client = createAztecRpcClient(options.rpcUrl);
203
+ const result = await client.viewTx(functionName, functionArgs, contractAddress, from);
204
+ log('View TX returned result: ', JsonStringify(result, true));
205
+ });
206
+ // Helper for users to decode hex strings into structs if needed
207
+ program
208
+ .command('parse-parameter-struct')
209
+ .argument('<encodedString>', 'The encoded hex string')
210
+ .argument('<contractAbi>', "The compiled contract's ABI in JSON format")
211
+ .argument('<parameterName>', 'The name of the struct parameter to decode into')
212
+ .action((encodedString, contractFile, parameterName) => {
213
+ const contractAbi = getContractAbi(contractFile, log);
214
+ const parameterAbitype = contractAbi.functions
215
+ .map(({ parameters }) => parameters)
216
+ .flat()
217
+ .find(({ name, type }) => name === parameterName && type.kind === 'struct');
218
+ if (!parameterAbitype) {
219
+ log(`No struct parameter found with name ${parameterName}`);
220
+ return;
221
+ }
222
+ const data = parseStructString(encodedString, parameterAbitype.type);
223
+ log(`Struct Data: \n${JsonStringify(data, true)}`);
224
+ });
225
+ program
226
+ .command('block-num')
227
+ .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
228
+ .action(async (options) => {
229
+ const client = createAztecRpcClient(options.rpcUrl);
230
+ const num = await client.getBlockNum();
231
+ log(num);
232
+ });
233
+ await program.parseAsync(process.argv);
234
+ }
235
+ main().catch(err => {
236
+ log(`Error thrown: ${err}`);
237
+ process.exit(1);
238
+ });
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixLQUFLLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRCxNQUFNLEdBQUcsR0FBRyxZQUFZLEVBQUUsQ0FBQztBQUUzQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXJGOztHQUVHO0FBQ0gsS0FBSyxVQUFVLElBQUk7SUFDakIsT0FBTztTQUNKLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztTQUM5QixRQUFRLENBQ1AsVUFBVSxFQUNWLCtFQUErRSxFQUMvRSx1QkFBdUIsQ0FDeEI7U0FDQSxN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
@@ -0,0 +1,34 @@
1
+ import { DebugLogger, Logger } from '@aztec/foundation/log';
2
+ import { ContractAbi } from '@aztec/foundation/abi';
3
+ import { AztecAddress } from '@aztec/aztec.js';
4
+ /**
5
+ * Function to execute the 'deployRollupContracts' command.
6
+ * @param rpcUrl - The RPC URL of the ethereum node.
7
+ * @param apiKey - The api key of the ethereum node endpoint.
8
+ * @param privateKey - The private key to be used in contract deployment.
9
+ * @param mnemonic - The mnemonic to be used in contract deployment.
10
+ */
11
+ export declare function deployAztecContracts(rpcUrl: string, apiKey: string, privateKey: string, mnemonic: string, debugLogger: DebugLogger): Promise<void>;
12
+ /**
13
+ * Reads a file and converts it to an Aztec Contract ABI.
14
+ * @param fileDir - The directory of the compiled contract ABI.
15
+ * @returns The parsed ContractABI.
16
+ */
17
+ export declare function getContractAbi(fileDir: string, log: Logger): ContractAbi;
18
+ /**
19
+ * Performs necessary checks, conversions & operations to call a contract fn from the CLI.
20
+ * @param contractFile - Directory of the compiled contract ABI.
21
+ * @param _contractAddress - Aztec Address of the contract.
22
+ * @param functionName - Name of the function to be called.
23
+ * @param _from - The caller's address.
24
+ * @param _functionArgs - Arguments to call the function with.
25
+ * @param log - Logger instance that will output to the CLI
26
+ * @returns Formatted contract address, function arguments and caller's aztec address.
27
+ */
28
+ export declare function prepTx(contractFile: string, _contractAddress: string, functionName: string, _from: string, _functionArgs: string[], log: Logger): {
29
+ contractAddress: AztecAddress;
30
+ functionArgs: any[];
31
+ from: AztecAddress | undefined;
32
+ contractAbi: ContractAbi;
33
+ };
34
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,iBAKzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAU1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CACpB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM;;;;;EAyBZ"}