@aztec/cli 0.1.0-alpha20 → 0.1.0-alpha22

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/index.js CHANGED
@@ -1,62 +1,115 @@
1
1
  #!/usr/bin/env -S node --no-warnings
2
2
  import { Command } from 'commander';
3
+ import { mnemonicToAccount } from 'viem/accounts';
3
4
  import { createLogger } from '@aztec/foundation/log';
4
5
  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';
6
+ import { AztecAddress, Contract, ContractDeployer, Fr, Point, TxHash, createAccounts, createAztecRpcClient, getAccountWallet, } from '@aztec/aztec.js';
8
7
  import { JsonStringify } from '@aztec/foundation/json-rpc';
8
+ import { randomBytes } from '@aztec/foundation/crypto';
9
9
  import { L2BlockL2Logs } from '@aztec/types';
10
+ import { encodeArgs, parseStructString } from './cli_encoder.js';
11
+ import { deployAztecContracts, getContractAbi, getTxSender, prepTx } from './utils.js';
12
+ const accountCreationSalt = Fr.ZERO;
10
13
  const debugLogger = createDebugLogger('aztec:cli');
11
14
  const log = createLogger();
12
15
  const program = new Command();
13
16
  program.name('azti').description('CLI for interacting with Aztec.').version('0.1.0');
17
+ const { ETHEREUM_HOST, AZTEC_RPC_HOST, PRIVATE_KEY, PUBLIC_KEY, API_KEY } = process.env;
14
18
  /**
15
- * A placeholder for the Aztec-cli.
19
+ * Main function for the Aztec CLI.
16
20
  */
17
21
  async function main() {
18
22
  program
19
23
  .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')
24
+ .description('Deploys all necessary Ethereum contracts for Aztec.')
25
+ .argument('[rpcUrl]', 'Url of the ethereum host. Chain identifiers localhost and testnet can be used', ETHEREUM_HOST || 'http://localhost:8545')
26
+ .option('-a, --api-key <string>', 'Api key for the ethereum host', API_KEY)
27
+ .option('-p, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
23
28
  .option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk')
24
29
  .action(async (rpcUrl, options) => {
25
- await deployAztecContracts(rpcUrl, options.apiKey ?? '', options.privateKey, options.mnemonic, debugLogger);
30
+ const { rollupAddress, registryAddress, inboxAddress, outboxAddress, contractDeploymentEmitterAddress } = await deployAztecContracts(rpcUrl, options.apiKey ?? '', options.privateKey, options.mnemonic, debugLogger);
31
+ log('\n');
32
+ log(`Rollup Address: ${rollupAddress.toString()}`);
33
+ log(`Registry Address: ${registryAddress.toString()}`);
34
+ log(`L1 -> L2 Inbox Address: ${inboxAddress.toString()}`);
35
+ log(`L2 -> L1 Outbox address: ${outboxAddress.toString()}`);
36
+ log(`Contract Deployment Emitter Address: ${contractDeploymentEmitterAddress.toString()}`);
37
+ log('\n');
38
+ });
39
+ program
40
+ .command('create-private-key')
41
+ .description('Generates a 32-byte private key.')
42
+ .option('-m, --mnemonic', 'A mnemonic string that can be used for the private key generation.')
43
+ .action(options => {
44
+ let privKey;
45
+ if (options.mnemonic) {
46
+ const acc = mnemonicToAccount(options.mnemonic);
47
+ privKey = Buffer.from(acc.getHdKey().privateKey).toString('hex');
48
+ }
49
+ else {
50
+ privKey = randomBytes(32).toString('hex');
51
+ }
52
+ log(`\n${privKey}\n`);
53
+ });
54
+ program
55
+ .command('create-account')
56
+ .description('Creates an aztec account that can be used for transactions.')
57
+ .option('-k, --private-key <string>', 'Private Key to use for the 1st account generation. Uses random by default.', PRIVATE_KEY)
58
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
59
+ .action(async (options) => {
60
+ const client = createAztecRpcClient(options.rpcUrl);
61
+ const privateKey = options.privateKey && Buffer.from(options.privateKey.replace(/^0x/i, ''), 'hex');
62
+ const wallet = await createAccounts(client, privateKey, accountCreationSalt, 1);
63
+ const accounts = await wallet.getAccounts();
64
+ const pubKeys = await Promise.all(accounts.map(acc => wallet.getAccountPublicKey(acc)));
65
+ log(`\nCreated account(s).`);
66
+ accounts.map((acc, i) => log(`\nAddress: ${acc.toString()}\nPublic Key: ${pubKeys[i].toString()}\n`));
26
67
  });
27
68
  program
28
69
  .command('deploy')
70
+ .description('Deploys a compiled Noir contract to Aztec.')
29
71
  .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) => {
72
+ .argument('[constructorArgs...]', 'Contract constructor arguments', [])
73
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
74
+ .option('-k, --public-key <string>', 'Public key of the deployer. If not provided, it will check the RPC for existing ones.', PUBLIC_KEY)
75
+ .action(async (contractFile, args, options) => {
34
76
  const contractAbi = getContractAbi(contractFile, log);
35
77
  const constructorAbi = contractAbi.functions.find(({ name }) => name === 'constructor');
36
- const publicKey = Point.fromString(options.publicKey);
37
78
  const client = createAztecRpcClient(options.rpcUrl);
79
+ let publicKey;
80
+ if (options.publicKey) {
81
+ publicKey = Point.fromString(options.publicKey);
82
+ }
83
+ else {
84
+ const accounts = await client.getAccounts();
85
+ if (!accounts) {
86
+ throw new Error('No public key provided or found in Aztec RPC.');
87
+ }
88
+ publicKey = await client.getAccountPublicKey(accounts[0]);
89
+ }
90
+ log(`Using Public Key: ${publicKey.toString()}`);
38
91
  const deployer = new ContractDeployer(contractAbi, client);
39
- const tx = deployer
40
- .deploy(...encodeArgs(options.constructorArgs, constructorAbi.parameters), pointToPublicKey(publicKey))
41
- .send();
92
+ const tx = deployer.deploy(...encodeArgs(args, constructorAbi.parameters), publicKey.toBigInts()).send();
42
93
  await tx.isMined();
43
94
  const receipt = await tx.getReceipt();
44
- log(`Contract deployed at ${receipt.contractAddress?.toString()}`);
95
+ log(`\nAztec Contract deployed at ${receipt.contractAddress?.toString()}\n`);
45
96
  });
46
97
  program
47
98
  .command('check-deploy')
99
+ .description('Checks if a contract is deployed to the specified Aztec address.')
48
100
  .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')
101
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
50
102
  .action(async (_contractAddress, options) => {
51
103
  const client = createAztecRpcClient(options.rpcUrl);
52
104
  const address = AztecAddress.fromString(_contractAddress);
53
105
  const isDeployed = await client.isContractDeployed(address);
54
- log(isDeployed.toString());
106
+ log(`\n${isDeployed.toString()}\n`);
55
107
  });
56
108
  program
57
109
  .command('get-tx-receipt')
110
+ .description('Gets the receipt for the specified transaction hash.')
58
111
  .argument('<txHash>', 'A TX hash to get the receipt for.')
59
- .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
112
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
60
113
  .action(async (_txHash, options) => {
61
114
  const client = createAztecRpcClient(options.rpcUrl);
62
115
  const txHash = TxHash.fromString(_txHash);
@@ -65,13 +118,14 @@ async function main() {
65
118
  log(`No receipt found for tx hash ${_txHash}`);
66
119
  }
67
120
  else {
68
- log(`TX Receipt: \n${JsonStringify(receipt, true)}`);
121
+ log(`\nTX Receipt: \n${JsonStringify(receipt, true)}\n`);
69
122
  }
70
123
  });
71
124
  program
72
125
  .command('get-contract-data')
126
+ .description('Gets information about the Aztec contract deployed at the specified address.')
73
127
  .argument('<contractAddress>', 'Aztec address of the contract.')
74
- .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
128
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
75
129
  .option('-b, --include-bytecode', "Include the contract's public function bytecode, if any.")
76
130
  .action(async (_contractAddress, options) => {
77
131
  const client = createAztecRpcClient(options.rpcUrl);
@@ -90,17 +144,19 @@ async function main() {
90
144
  else {
91
145
  contractData = contractDataOrInfo;
92
146
  }
93
- log(`Contract Data: \nAddress: ${contractData.contractAddress.toString()}`);
147
+ log(`\nContract Data: \nAddress: ${contractData.contractAddress.toString()}`);
94
148
  log(`Portal: ${contractData.portalContractAddress.toString()}`);
95
149
  if ('bytecode' in contractDataOrInfo) {
96
150
  log(`Bytecode: ${contractDataOrInfo.bytecode}`);
97
151
  }
152
+ log('\n');
98
153
  });
99
154
  program
100
155
  .command('get-logs')
156
+ .description('Gets all the unencrypted logs from L2 blocks in the range specified.')
101
157
  .argument('<from>', 'Block num start for getting logs.')
102
158
  .argument('<take>', 'How many block logs to fetch.')
103
- .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
159
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
104
160
  .action(async (_from, _take, options) => {
105
161
  let from;
106
162
  let take;
@@ -122,25 +178,9 @@ async function main() {
122
178
  L2BlockL2Logs.unrollLogs(logs).forEach(fnLog => log(`${fnLog.toString('ascii')}\n`));
123
179
  }
124
180
  });
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
181
  program
142
182
  .command('get-accounts')
143
- .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
183
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
144
184
  .action(async (options) => {
145
185
  const client = createAztecRpcClient(options.rpcUrl);
146
186
  const accounts = await client.getAccounts();
@@ -149,13 +189,14 @@ async function main() {
149
189
  }
150
190
  else {
151
191
  log(`Accounts found: \n`);
152
- accounts.forEach(acc => log(`${acc}\n`));
192
+ accounts.forEach(async (acc) => log(`Address: ${acc}\nPublic Key: ${await client.getAccountPublicKey(acc)}\n`));
153
193
  }
154
194
  });
155
195
  program
156
196
  .command('get-account-public-key')
197
+ .description("Gets an account's public key, given its Aztec address.")
157
198
  .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')
199
+ .option('-u, --rpc-url <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
159
200
  .action(async (_address, options) => {
160
201
  const client = createAztecRpcClient(options.rpcUrl);
161
202
  const address = AztecAddress.fromString(_address);
@@ -169,43 +210,50 @@ async function main() {
169
210
  });
170
211
  program
171
212
  .command('call-fn')
213
+ .description('Calls a function on an Aztec contract.')
172
214
  .argument('<contractAbi>', "The compiled contract's ABI in JSON format", undefined)
173
215
  .argument('<contractAddress>', 'Address of the contract')
174
216
  .argument('<functionName>', 'Name of Function to view')
175
- .argument('[from]', 'The caller of the transaction', undefined)
176
217
  .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);
218
+ .option('-k, --private-key <string>', "The sender's private key.", PRIVATE_KEY)
219
+ .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
220
+ .action(async (contractFile, _contractAddress, functionName, _functionArgs, options) => {
221
+ const { contractAddress, functionArgs, contractAbi } = prepTx(contractFile, _contractAddress, functionName, _functionArgs, log);
180
222
  const client = createAztecRpcClient(options.rpcUrl);
181
- const wallet = await createAccounts(client);
223
+ const wallet = await getAccountWallet(client, Buffer.from(options.privateKey, 'hex'), accountCreationSalt);
182
224
  const contract = new Contract(contractAddress, contractAbi, wallet);
183
- const tx = contract.methods[functionName](...functionArgs).send({ from });
225
+ const from = (await wallet.getAccounts()).find(addr => addr.equals(wallet.getAddress()));
226
+ const tx = contract.methods[functionName](...functionArgs).send({
227
+ from,
228
+ });
184
229
  await tx.isMined();
185
- log('TX has been mined');
230
+ log('\nTX has been mined');
186
231
  const receipt = await tx.getReceipt();
187
232
  log(`TX Hash: ${(await tx.getTxHash()).toString()}`);
188
233
  log(`Block Num: ${receipt.blockNumber}`);
189
234
  log(`Block Hash: ${receipt.blockHash?.toString('hex')}`);
190
- log(`TX Status: ${receipt.status}`);
235
+ log(`TX Status: ${receipt.status}\n`);
191
236
  });
192
237
  program
193
- .command('view-tx')
238
+ .command('view-fn')
239
+ .description('Simulates the execution of a view (read-only) function on a deployed contract, without modifying state.')
194
240
  .argument('<contractAbi>', "The compiled contract's ABI in JSON format", undefined)
195
241
  .argument('<contractAddress>', 'Address of the contract')
196
242
  .argument('<functionName>', 'Name of Function to view')
197
- .argument('[from]', 'The caller of the transaction', undefined)
198
243
  .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);
244
+ .option('-f, --from <string>', 'Public key of the TX viewer. If empty, will try to find account in RPC.')
245
+ .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
246
+ .action(async (contractFile, _contractAddress, functionName, _functionArgs, options) => {
247
+ const { contractAddress, functionArgs } = prepTx(contractFile, _contractAddress, functionName, _functionArgs, log);
202
248
  const client = createAztecRpcClient(options.rpcUrl);
249
+ const from = await getTxSender(client, options.from);
203
250
  const result = await client.viewTx(functionName, functionArgs, contractAddress, from);
204
- log('View TX returned result: ', JsonStringify(result, true));
251
+ log('\nView TX result: ', JsonStringify(result, true), '\n');
205
252
  });
206
253
  // Helper for users to decode hex strings into structs if needed
207
254
  program
208
255
  .command('parse-parameter-struct')
256
+ .description("Helper for parsing an encoded string into a contract's parameter struct.")
209
257
  .argument('<encodedString>', 'The encoded hex string')
210
258
  .argument('<contractAbi>', "The compiled contract's ABI in JSON format")
211
259
  .argument('<parameterName>', 'The name of the struct parameter to decode into')
@@ -220,15 +268,16 @@ async function main() {
220
268
  return;
221
269
  }
222
270
  const data = parseStructString(encodedString, parameterAbitype.type);
223
- log(`Struct Data: \n${JsonStringify(data, true)}`);
271
+ log(`\nStruct Data: \n${JsonStringify(data, true)}\n`);
224
272
  });
225
273
  program
226
274
  .command('block-num')
227
- .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', 'http://localhost:8080')
275
+ .description('Gets the current Aztec L2 number.')
276
+ .option('-u, --rpcUrl <string>', 'URL of the Aztec RPC', AZTEC_RPC_HOST || 'http://localhost:8080')
228
277
  .action(async (options) => {
229
278
  const client = createAztecRpcClient(options.rpcUrl);
230
279
  const num = await client.getBlockNum();
231
- log(num);
280
+ log(`${num}\n`);
232
281
  });
233
282
  await program.parseAsync(process.argv);
234
283
  }
@@ -236,4 +285,4 @@ main().catch(err => {
236
285
  log(`Error thrown: ${err}`);
237
286
  process.exit(1);
238
287
  });
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGdCQUFnQixFQUNoQixLQUFLLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQWdCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNuRCxNQUFNLEdBQUcsR0FBRyxZQUFZLEVBQUUsQ0FBQztBQUUzQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRTlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRXJGOztHQUVHO0FBQ0gsS0FBSyxVQUFVLElBQUk7SUFDakIsT0FBTztTQUNKLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztTQUM5QixRQUFRLENBQ1AsVUFBVSxFQUNWLCtFQUErRSxFQUMvRSx1QkFBdUIsQ0FDeEI7U0FDQSxN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
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsRUFBRSxFQUNGLEtBQUssRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLG9CQUFvQixFQUNwQixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNELE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkYsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXBDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sR0FBRyxHQUFHLFlBQVksRUFBRSxDQUFDO0FBRTNCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxPQUFP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
package/dest/utils.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DebugLogger, Logger } from '@aztec/foundation/log';
2
2
  import { ContractAbi } from '@aztec/foundation/abi';
3
- import { AztecAddress } from '@aztec/aztec.js';
3
+ import { AztecAddress, AztecRPC } from '@aztec/aztec.js';
4
4
  /**
5
5
  * Function to execute the 'deployRollupContracts' command.
6
6
  * @param rpcUrl - The RPC URL of the ethereum node.
@@ -8,27 +8,33 @@ import { AztecAddress } from '@aztec/aztec.js';
8
8
  * @param privateKey - The private key to be used in contract deployment.
9
9
  * @param mnemonic - The mnemonic to be used in contract deployment.
10
10
  */
11
- export declare function deployAztecContracts(rpcUrl: string, apiKey: string, privateKey: string, mnemonic: string, debugLogger: DebugLogger): Promise<void>;
11
+ export declare function deployAztecContracts(rpcUrl: string, apiKey: string, privateKey: string, mnemonic: string, debugLogger: DebugLogger): Promise<import("@aztec/ethereum").DeployL1Contracts>;
12
12
  /**
13
13
  * Reads a file and converts it to an Aztec Contract ABI.
14
14
  * @param fileDir - The directory of the compiled contract ABI.
15
15
  * @returns The parsed ContractABI.
16
16
  */
17
17
  export declare function getContractAbi(fileDir: string, log: Logger): ContractAbi;
18
+ /**
19
+ * Utility to select a TX sender either from user input
20
+ * or from the first account that is found in an Aztec RPC instance.
21
+ * @param client - The Aztec RPC instance that will be checked for an account.
22
+ * @param _from - The user input.
23
+ * @returns An Aztec address. Will throw if one can't be found in either options.
24
+ */
25
+ export declare function getTxSender(client: AztecRPC, _from?: string): Promise<AztecAddress>;
18
26
  /**
19
27
  * Performs necessary checks, conversions & operations to call a contract fn from the CLI.
20
28
  * @param contractFile - Directory of the compiled contract ABI.
21
29
  * @param _contractAddress - Aztec Address of the contract.
22
30
  * @param functionName - Name of the function to be called.
23
- * @param _from - The caller's address.
24
31
  * @param _functionArgs - Arguments to call the function with.
25
32
  * @param log - Logger instance that will output to the CLI
26
33
  * @returns Formatted contract address, function arguments and caller's aztec address.
27
34
  */
28
- export declare function prepTx(contractFile: string, _contractAddress: string, functionName: string, _from: string, _functionArgs: string[], log: Logger): {
35
+ export declare function prepTx(contractFile: string, _contractAddress: string, functionName: string, _functionArgs: string[], log: Logger): {
29
36
  contractAddress: AztecAddress;
30
37
  functionArgs: any[];
31
- from: AztecAddress | undefined;
32
38
  contractAbi: ContractAbi;
33
39
  };
34
40
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +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"}
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,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,wDAKzB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAU1D;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,yBAgBjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CACpB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM;;;;EAiBZ"}
package/dest/utils.js CHANGED
@@ -13,7 +13,7 @@ import { encodeArgs } from './cli_encoder.js';
13
13
  export async function deployAztecContracts(rpcUrl, apiKey, privateKey, mnemonic, debugLogger) {
14
14
  const account = !privateKey ? mnemonicToAccount(mnemonic) : privateKeyToAccount(`0x${privateKey}`);
15
15
  const chain = createEthereumChain(rpcUrl, apiKey);
16
- await deployL1Contracts(chain.rpcUrl, account, chain.chainInfo, debugLogger);
16
+ return await deployL1Contracts(chain.rpcUrl, account, chain.chainInfo, debugLogger);
17
17
  }
18
18
  /**
19
19
  * Reads a file and converts it to an Aztec Contract ABI.
@@ -32,17 +32,42 @@ export function getContractAbi(fileDir, log) {
32
32
  }
33
33
  return contractAbi;
34
34
  }
35
+ /**
36
+ * Utility to select a TX sender either from user input
37
+ * or from the first account that is found in an Aztec RPC instance.
38
+ * @param client - The Aztec RPC instance that will be checked for an account.
39
+ * @param _from - The user input.
40
+ * @returns An Aztec address. Will throw if one can't be found in either options.
41
+ */
42
+ export async function getTxSender(client, _from) {
43
+ let from;
44
+ if (_from) {
45
+ try {
46
+ from = AztecAddress.fromString(_from);
47
+ }
48
+ catch {
49
+ throw new Error(`Invalid option 'from' passed: ${_from}`);
50
+ }
51
+ }
52
+ else {
53
+ const accounts = await client.getAccounts();
54
+ if (!accounts.length) {
55
+ throw new Error('No accounts found in Aztec RPC insance.');
56
+ }
57
+ from = accounts[0];
58
+ }
59
+ return from;
60
+ }
35
61
  /**
36
62
  * Performs necessary checks, conversions & operations to call a contract fn from the CLI.
37
63
  * @param contractFile - Directory of the compiled contract ABI.
38
64
  * @param _contractAddress - Aztec Address of the contract.
39
65
  * @param functionName - Name of the function to be called.
40
- * @param _from - The caller's address.
41
66
  * @param _functionArgs - Arguments to call the function with.
42
67
  * @param log - Logger instance that will output to the CLI
43
68
  * @returns Formatted contract address, function arguments and caller's aztec address.
44
69
  */
45
- export function prepTx(contractFile, _contractAddress, functionName, _from, _functionArgs, log) {
70
+ export function prepTx(contractFile, _contractAddress, functionName, _functionArgs, log) {
46
71
  let contractAddress;
47
72
  try {
48
73
  contractAddress = AztecAddress.fromString(_contractAddress);
@@ -56,15 +81,6 @@ export function prepTx(contractFile, _contractAddress, functionName, _from, _fun
56
81
  throw new Error(`Function ${functionName} not found on contract ABI.`);
57
82
  }
58
83
  const functionArgs = encodeArgs(_functionArgs, functionAbi.parameters);
59
- let from;
60
- if (_from) {
61
- try {
62
- from = AztecAddress.fromString(_from);
63
- }
64
- catch {
65
- throw new Error(`Unable to parse caller address ${_from}.`);
66
- }
67
- }
68
- return { contractAddress, functionArgs, from, contractAbi };
84
+ return { contractAddress, functionArgs, contractAbi };
69
85
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLE1BQWMsRUFDZCxNQUFjLEVBQ2QsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsV0FBd0I7SUFFeEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDcEcsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE1BQU0saUJBQWlCLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZSxFQUFFLEdBQVc7SUFDekQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsSUFBSSxXQUF3QixDQUFDO0lBQzdCLElBQUk7UUFDRixXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQWdCLENBQUM7S0FDbkQ7SUFBQyxPQUFPLEdBQUcsRUFBRTtRQUNaLEdBQUcsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sR0FBRyxDQUFDO0tBQ1g7SUFDRCxPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsWUFBb0IsRUFDcEIsZ0JBQXdCLEVBQ3hCLFlBQW9CLEVBQ3BCLEtBQWEsRUFDYixhQUF1QixFQUN2QixHQUFXO0lBRVgsSUFBSSxlQUFlLENBQUM7SUFDcEIsSUFBSTtRQUNGLGVBQWUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDN0Q7SUFBQyxNQUFNO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0tBQzFFO0lBQ0QsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQztJQUNwRixJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxZQUFZLDZCQUE2QixDQUFDLENBQUM7S0FDeEU7SUFFRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RSxJQUFJLElBQUksQ0FBQztJQUNULElBQUksS0FBSyxFQUFFO1FBQ1QsSUFBSTtZQUNGLElBQUksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO1FBQUMsTUFBTTtZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDN0Q7S0FDRjtJQUVELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUM5RCxDQUFDIn0=
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUd6RSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLE1BQWMsRUFDZCxNQUFjLEVBQ2QsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsV0FBd0I7SUFFeEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDcEcsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE9BQU8sTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3RGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlLEVBQUUsR0FBVztJQUN6RCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxJQUFJLFdBQXdCLENBQUM7SUFDN0IsSUFBSTtRQUNGLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBZ0IsQ0FBQztLQUNuRDtJQUFDLE9BQU8sR0FBRyxFQUFFO1FBQ1osR0FBRyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDNUMsTUFBTSxHQUFHLENBQUM7S0FDWDtJQUNELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxNQUFnQixFQUFFLEtBQWM7SUFDaEUsSUFBSSxJQUFrQixDQUFDO0lBQ3ZCLElBQUksS0FBSyxFQUFFO1FBQ1QsSUFBSTtZQUNGLElBQUksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO1FBQUMsTUFBTTtZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDM0Q7S0FDRjtTQUFNO1FBQ0wsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1NBQzVEO1FBQ0QsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNwQjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsWUFBb0IsRUFDcEIsZ0JBQXdCLEVBQ3hCLFlBQW9CLEVBQ3BCLGFBQXVCLEVBQ3ZCLEdBQVc7SUFFWCxJQUFJLGVBQWUsQ0FBQztJQUNwQixJQUFJO1FBQ0YsZUFBZSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztLQUM3RDtJQUFDLE1BQU07UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7S0FDMUU7SUFDRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxXQUFXLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLFlBQVksNkJBQTZCLENBQUMsQ0FBQztLQUN4RTtJQUVELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ3hELENBQUMifQ==
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@aztec/cli",
3
- "version": "0.1.0-alpha20",
3
+ "version": "0.1.0-alpha22",
4
4
  "main": "./dest/index.js",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@aztec/aztec.js": "0.1.0-alpha20",
8
- "@aztec/ethereum": "0.1.0-alpha20",
9
- "@aztec/foundation": "0.1.0-alpha20",
7
+ "@aztec/aztec.js": "0.1.0-alpha22",
8
+ "@aztec/ethereum": "0.1.0-alpha22",
9
+ "@aztec/foundation": "0.1.0-alpha22",
10
10
  "commander": "^9.0.0",
11
11
  "tslib": "^2.4.0",
12
12
  "viem": "^1.2.5"