@aztec/end-to-end 0.0.0-test.0 → 0.0.1-fake-c83136db25

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.
Files changed (166) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +61 -0
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/benchmark.js +261 -0
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +73 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.js +311 -0
  7. package/dest/bench/client_flows/config.d.ts +14 -0
  8. package/dest/bench/client_flows/config.d.ts.map +1 -0
  9. package/dest/bench/client_flows/config.js +106 -0
  10. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  12. package/dest/bench/client_flows/data_extractor.js +99 -0
  13. package/dest/bench/utils.d.ts +10 -36
  14. package/dest/bench/utils.d.ts.map +1 -1
  15. package/dest/bench/utils.js +26 -66
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +20 -12
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +18 -24
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +48 -69
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts +14 -6
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  24. package/dest/e2e_deploy_contract/deploy_test.js +13 -19
  25. package/dest/e2e_epochs/epochs_test.d.ts +58 -17
  26. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  27. package/dest/e2e_epochs/epochs_test.js +224 -43
  28. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  29. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  30. package/dest/e2e_fees/bridging_race.notest.js +63 -0
  31. package/dest/e2e_fees/fees_test.d.ts +20 -9
  32. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  33. package/dest/e2e_fees/fees_test.js +98 -107
  34. package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
  35. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  36. package/dest/e2e_l1_publisher/write_json.js +57 -0
  37. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  38. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  39. package/dest/e2e_multi_validator/utils.js +214 -0
  40. package/dest/e2e_nested_contract/nested_contract_test.d.ts +9 -6
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  42. package/dest/e2e_nested_contract/nested_contract_test.js +22 -19
  43. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.js +135 -0
  46. package/dest/e2e_p2p/p2p_network.d.ts +69 -22
  47. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  48. package/dest/e2e_p2p/p2p_network.js +180 -129
  49. package/dest/e2e_p2p/shared.d.ts +41 -5
  50. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  51. package/dest/e2e_p2p/shared.js +163 -19
  52. package/dest/e2e_token_contract/token_contract_test.d.ts +11 -5
  53. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  54. package/dest/e2e_token_contract/token_contract_test.js +50 -26
  55. package/dest/{e2e_prover → fixtures}/e2e_prover_test.d.ts +14 -9
  56. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  57. package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +95 -100
  58. package/dest/fixtures/fixtures.d.ts +5 -6
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +4 -3
  61. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  62. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  63. package/dest/fixtures/get_acvm_config.js +2 -14
  64. package/dest/fixtures/get_bb_config.d.ts +1 -1
  65. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  66. package/dest/fixtures/get_bb_config.js +10 -17
  67. package/dest/fixtures/l1_to_l2_messaging.d.ts +8 -5
  68. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  69. package/dest/fixtures/l1_to_l2_messaging.js +44 -18
  70. package/dest/fixtures/setup_l1_contracts.d.ts +3 -3
  71. package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
  72. package/dest/fixtures/setup_l1_contracts.js +4 -4
  73. package/dest/fixtures/setup_p2p_test.d.ts +14 -13
  74. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  75. package/dest/fixtures/setup_p2p_test.js +73 -21
  76. package/dest/fixtures/snapshot_manager.d.ts +15 -7
  77. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  78. package/dest/fixtures/snapshot_manager.js +147 -121
  79. package/dest/fixtures/token_utils.d.ts +6 -3
  80. package/dest/fixtures/token_utils.d.ts.map +1 -1
  81. package/dest/fixtures/token_utils.js +23 -10
  82. package/dest/fixtures/utils.d.ts +76 -37
  83. package/dest/fixtures/utils.d.ts.map +1 -1
  84. package/dest/fixtures/utils.js +464 -368
  85. package/dest/fixtures/web3signer.d.ts +5 -0
  86. package/dest/fixtures/web3signer.d.ts.map +1 -0
  87. package/dest/fixtures/web3signer.js +53 -0
  88. package/dest/quality_of_service/alert_checker.d.ts +1 -1
  89. package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
  90. package/dest/shared/cross_chain_test_harness.d.ts +41 -25
  91. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  92. package/dest/shared/cross_chain_test_harness.js +104 -50
  93. package/dest/shared/gas_portal_test_harness.d.ts +32 -24
  94. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  95. package/dest/shared/gas_portal_test_harness.js +50 -29
  96. package/dest/shared/jest_setup.js +1 -1
  97. package/dest/shared/submit-transactions.d.ts +5 -3
  98. package/dest/shared/submit-transactions.d.ts.map +1 -1
  99. package/dest/shared/submit-transactions.js +8 -7
  100. package/dest/shared/uniswap_l1_l2.d.ts +13 -11
  101. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  102. package/dest/shared/uniswap_l1_l2.js +138 -108
  103. package/dest/simulators/lending_simulator.d.ts +6 -6
  104. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  105. package/dest/simulators/lending_simulator.js +13 -16
  106. package/dest/simulators/token_simulator.d.ts +5 -2
  107. package/dest/simulators/token_simulator.d.ts.map +1 -1
  108. package/dest/simulators/token_simulator.js +16 -13
  109. package/dest/spartan/setup_test_wallets.d.ts +23 -10
  110. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  111. package/dest/spartan/setup_test_wallets.js +167 -58
  112. package/dest/spartan/utils.d.ts +100 -303
  113. package/dest/spartan/utils.d.ts.map +1 -1
  114. package/dest/spartan/utils.js +407 -130
  115. package/package.json +61 -56
  116. package/src/bench/client_flows/benchmark.ts +341 -0
  117. package/src/bench/client_flows/client_flows_benchmark.ts +402 -0
  118. package/src/bench/client_flows/config.ts +61 -0
  119. package/src/bench/client_flows/data_extractor.ts +111 -0
  120. package/src/bench/utils.ts +22 -76
  121. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
  122. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +63 -105
  123. package/src/e2e_deploy_contract/deploy_test.ts +23 -38
  124. package/src/e2e_epochs/epochs_test.ts +274 -54
  125. package/src/e2e_fees/bridging_race.notest.ts +80 -0
  126. package/src/e2e_fees/fees_test.ts +137 -136
  127. package/src/e2e_l1_publisher/write_json.ts +76 -0
  128. package/src/e2e_multi_validator/utils.ts +258 -0
  129. package/src/e2e_nested_contract/nested_contract_test.ts +27 -18
  130. package/src/e2e_p2p/inactivity_slash_test.ts +178 -0
  131. package/src/e2e_p2p/p2p_network.ts +272 -166
  132. package/src/e2e_p2p/shared.ts +244 -29
  133. package/src/e2e_token_contract/token_contract_test.ts +43 -39
  134. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  135. package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +101 -145
  136. package/src/fixtures/fixtures.ts +4 -3
  137. package/src/fixtures/get_acvm_config.ts +3 -11
  138. package/src/fixtures/get_bb_config.ts +18 -13
  139. package/src/fixtures/l1_to_l2_messaging.ts +53 -23
  140. package/src/fixtures/setup_l1_contracts.ts +6 -7
  141. package/src/fixtures/setup_p2p_test.ts +112 -38
  142. package/src/fixtures/snapshot_manager.ts +187 -139
  143. package/src/fixtures/token_utils.ts +29 -12
  144. package/src/fixtures/utils.ts +552 -425
  145. package/src/fixtures/web3signer.ts +63 -0
  146. package/src/guides/up_quick_start.sh +6 -14
  147. package/src/quality_of_service/alert_checker.ts +1 -1
  148. package/src/shared/cross_chain_test_harness.ts +108 -79
  149. package/src/shared/gas_portal_test_harness.ts +58 -49
  150. package/src/shared/jest_setup.ts +1 -1
  151. package/src/shared/submit-transactions.ts +12 -8
  152. package/src/shared/uniswap_l1_l2.ts +173 -176
  153. package/src/simulators/lending_simulator.ts +12 -15
  154. package/src/simulators/token_simulator.ts +21 -13
  155. package/src/spartan/DEVELOP.md +121 -0
  156. package/src/spartan/setup_test_wallets.ts +215 -93
  157. package/src/spartan/utils.ts +458 -130
  158. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  159. package/dest/sample-dapp/connect.js +0 -12
  160. package/dest/sample-dapp/contracts.js +0 -10
  161. package/dest/sample-dapp/deploy.js +0 -35
  162. package/dest/sample-dapp/index.js +0 -98
  163. package/src/sample-dapp/connect.mjs +0 -16
  164. package/src/sample-dapp/contracts.mjs +0 -14
  165. package/src/sample-dapp/deploy.mjs +0 -40
  166. package/src/sample-dapp/index.mjs +0 -128
@@ -1,17 +1,19 @@
1
- /* eslint-disable jsdoc/require-jsdoc */ import { BatchCall } from '@aztec/aztec.js';
1
+ import { BatchCall } from '@aztec/aztec.js/contracts';
2
2
  import chunk from 'lodash.chunk';
3
3
  export class TokenSimulator {
4
4
  token;
5
5
  defaultWallet;
6
+ defaultAddress;
6
7
  logger;
7
8
  accounts;
8
9
  balancesPrivate;
9
10
  balancePublic;
10
11
  totalSupply;
11
12
  lookupProvider;
12
- constructor(token, defaultWallet, logger, accounts){
13
+ constructor(token, defaultWallet, defaultAddress, logger, accounts){
13
14
  this.token = token;
14
15
  this.defaultWallet = defaultWallet;
16
+ this.defaultAddress = defaultAddress;
15
17
  this.logger = logger;
16
18
  this.accounts = accounts;
17
19
  this.balancesPrivate = new Map();
@@ -83,12 +85,12 @@ export class TokenSimulator {
83
85
  async checkPublic() {
84
86
  // public calls
85
87
  const calls = [
86
- await this.token.methods.total_supply().request()
88
+ this.token.methods.total_supply(),
89
+ ...this.accounts.map((address)=>this.token.methods.balance_of_public(address))
87
90
  ];
88
- for (const address of this.accounts){
89
- calls.push(await this.token.methods.balance_of_public(address).request());
90
- }
91
- const results = (await Promise.all(chunk(calls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate()))).flat();
91
+ const results = (await Promise.all(chunk(calls, 5).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
92
+ from: this.defaultAddress
93
+ })))).flat();
92
94
  expect(results[0]).toEqual(this.totalSupply);
93
95
  // Check that all our balances match
94
96
  for(let i = 0; i < this.accounts.length; i++){
@@ -106,11 +108,10 @@ export class TokenSimulator {
106
108
  defaultLookups.push(address);
107
109
  }
108
110
  }
109
- const defaultCalls = [];
110
- for (const address of defaultLookups){
111
- defaultCalls.push(await this.token.methods.balance_of_private(address).request());
112
- }
113
- const results = (await Promise.all(chunk(defaultCalls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate()))).flat();
111
+ const defaultCalls = defaultLookups.map((address)=>this.token.methods.balance_of_private(address));
112
+ const results = (await Promise.all(chunk(defaultCalls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
113
+ from: this.defaultAddress
114
+ })))).flat();
114
115
  for(let i = 0; i < defaultLookups.length; i++){
115
116
  expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
116
117
  }
@@ -121,7 +122,9 @@ export class TokenSimulator {
121
122
  const asset = wallet ? this.token.withWallet(wallet) : this.token;
122
123
  const actualPrivateBalance = await asset.methods.balance_of_private({
123
124
  address
124
- }).simulate();
125
+ }).simulate({
126
+ from: this.defaultAddress
127
+ });
125
128
  expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
126
129
  }
127
130
  }
@@ -1,20 +1,33 @@
1
- import { type AccountWalletWithSecretKey, type AztecAddress, type PXE } from '@aztec/aztec.js';
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { type FeePaymentMethod } from '@aztec/aztec.js/fee';
3
+ import { type AztecNode } from '@aztec/aztec.js/node';
2
4
  import type { Logger } from '@aztec/foundation/log';
3
5
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
4
- export interface TestWallets {
5
- pxe: PXE;
6
- wallets: AccountWalletWithSecretKey[];
7
- tokenAdminWallet: TokenContract;
6
+ import { TestWallet } from '@aztec/test-wallet/server';
7
+ export interface TestAccounts {
8
+ aztecNode: AztecNode;
9
+ wallet: TestWallet;
10
+ accounts: AztecAddress[];
11
+ tokenContract: TokenContract;
12
+ tokenAdminAddress: AztecAddress;
8
13
  tokenName: string;
9
- recipientWallet: AccountWalletWithSecretKey;
14
+ recipientAddress: AztecAddress;
10
15
  tokenAddress: AztecAddress;
11
16
  }
12
- export declare function setupTestWalletsWithTokens(pxeUrl: string, mintAmount: bigint, logger: Logger): Promise<TestWallets>;
13
- export declare function deployTestWalletWithTokens(pxeUrl: string, nodeUrl: string, l1RpcUrl: string, mnemonicOrPrivateKey: string, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number, initialFeeJuice?: bigint): Promise<TestWallets>;
14
- export declare function performTransfers({ testWallets, rounds, transferAmount, logger, }: {
15
- testWallets: TestWallets;
17
+ export declare function setupTestAccountsWithTokens(nodeUrl: string, mintAmount: bigint, logger: Logger): Promise<TestAccounts>;
18
+ export declare function deploySponsoredTestAccounts(wallet: TestWallet, aztecNode: AztecNode, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccounts>;
19
+ export declare function deployTestAccountsWithTokens(nodeUrl: string, l1RpcUrls: string[], mnemonicOrPrivateKey: string, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccounts>;
20
+ export declare function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod, }: {
21
+ wallet: TestWallet;
22
+ testAccounts: TestAccounts;
16
23
  rounds: number;
17
24
  transferAmount: bigint;
18
25
  logger: Logger;
26
+ feePaymentMethod?: FeePaymentMethod;
19
27
  }): Promise<void>;
28
+ export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<{
29
+ wallet: TestWallet;
30
+ aztecNode: AztecNode;
31
+ cleanup: () => Promise<void>;
32
+ }>;
20
33
  //# sourceMappingURL=setup_test_wallets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EAKjB,KAAK,GAAG,EAIT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,gBAAgB,EAAE,aAAa,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,0BAA0B,CAAC;IAC5C,YAAY,EAAE,YAAY,CAAC;CAC5B;AAMD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAYtB;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,EACzB,eAAe,SAAa,GAC3B,OAAO,CAAC,WAAW,CAAC,CAsCtB;AA2DD,wBAAsB,gBAAgB,CAAC,EACrC,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,GACP,EAAE;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,iBAkBA"}
1
+ {"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AAG7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAA4D,MAAM,2BAA2B,CAAC;AAMjH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,YAAY,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAMD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CA+CvB;AA6ED,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,YAAY,EACZ,MAAM,EACN,cAAc,EACd,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,iBAqBA;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAqBrF"}
@@ -1,99 +1,208 @@
1
- import { getSchnorrAccount, getSchnorrWalletWithSecretKey } from '@aztec/accounts/schnorr';
2
- import { generateSchnorrAccounts, getDeployedTestAccountsWallets } from '@aztec/accounts/testing';
3
- import { FeeJuicePaymentMethodWithClaim, Fr, L1FeeJuicePortalManager, createAztecNodeClient, createCompatibleClient, retryUntil } from '@aztec/aztec.js';
4
- import { createEthereumChain, createL1Clients } from '@aztec/ethereum';
1
+ import { generateSchnorrAccounts } from '@aztec/accounts/testing';
2
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
3
+ import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
4
+ import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
5
+ import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
6
+ import { Fr } from '@aztec/aztec.js/fields';
7
+ import { createAztecNodeClient } from '@aztec/aztec.js/node';
8
+ import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
9
+ import { retryUntil } from '@aztec/foundation/retry';
5
10
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
11
+ import { TestWallet, proveInteraction, registerInitialSandboxAccountsInWallet } from '@aztec/test-wallet/server';
12
+ import { getACVMConfig } from '../fixtures/get_acvm_config.js';
13
+ import { getBBConfig } from '../fixtures/get_bb_config.js';
14
+ import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
6
15
  const TOKEN_NAME = 'USDC';
7
16
  const TOKEN_SYMBOL = 'USD';
8
17
  const TOKEN_DECIMALS = 18n;
9
- export async function setupTestWalletsWithTokens(pxeUrl, mintAmount, logger) {
10
- const WALLET_COUNT = 1; // TODO fix this to allow for 16 wallets again
11
- const pxe = await createCompatibleClient(pxeUrl, logger);
12
- const [recipientWallet, ...wallets] = (await getDeployedTestAccountsWallets(pxe)).slice(0, WALLET_COUNT + 1);
13
- const tokenAdmin = wallets[0];
14
- const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, logger);
15
- const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
18
+ export async function setupTestAccountsWithTokens(nodeUrl, mintAmount, logger) {
19
+ const ACCOUNT_COUNT = 1; // TODO fix this to allow for 16 wallets again
20
+ const aztecNode = createAztecNodeClient(nodeUrl);
21
+ const wallet = await TestWallet.create(aztecNode);
22
+ const [recipientAccount, ...accounts] = (await registerInitialSandboxAccountsInWallet(wallet)).slice(0, ACCOUNT_COUNT + 1);
23
+ const tokenAdmin = accounts[0];
24
+ const tokenAddress = await deployTokenAndMint(wallet, accounts, tokenAdmin, mintAmount, undefined, logger);
25
+ const tokenContract = await TokenContract.at(tokenAddress, wallet);
16
26
  return {
17
- pxe,
18
- wallets,
19
- tokenAdminWallet,
27
+ aztecNode,
28
+ accounts,
29
+ wallet,
30
+ tokenAdminAddress: tokenAdmin,
20
31
  tokenName: TOKEN_NAME,
21
32
  tokenAddress,
22
- recipientWallet
33
+ tokenContract,
34
+ recipientAddress: recipientAccount
23
35
  };
24
36
  }
25
- export async function deployTestWalletWithTokens(pxeUrl, nodeUrl, l1RpcUrl, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1, initialFeeJuice = 10n ** 22n) {
26
- const pxe = await createCompatibleClient(pxeUrl, logger);
27
- const node = createAztecNodeClient(nodeUrl);
37
+ export async function deploySponsoredTestAccounts(wallet, aztecNode, mintAmount, logger, numberOfFundedWallets = 1) {
28
38
  const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
29
- const recipientWallet = await getSchnorrWalletWithSecretKey(pxe, recipient.secret, recipient.signingKey, recipient.salt);
30
- const fundedAccounts = await Promise.all(funded.map((a)=>getSchnorrAccount(pxe, a.secret, a.signingKey, a.salt)));
31
- const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrl, mnemonicOrPrivateKey, pxe, a.getAddress(), initialFeeJuice, logger)));
32
- // Progress by 2 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
33
- await advanceL2Block(node);
34
- await advanceL2Block(node);
35
- const wallets = await Promise.all(fundedAccounts.map(async (a, i)=>{
36
- const wallet = await a.getWallet();
37
- const paymentMethod = new FeeJuicePaymentMethodWithClaim(wallet, claims[i]);
38
- await a.deploy({
39
+ const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
40
+ const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
41
+ await registerSponsoredFPC(wallet);
42
+ const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
43
+ const recipientDeployMethod = await recipientAccount.getDeployMethod();
44
+ await recipientDeployMethod.send({
45
+ from: AztecAddress.ZERO,
46
+ fee: {
47
+ paymentMethod
48
+ }
49
+ }).wait({
50
+ timeout: 2400
51
+ });
52
+ await Promise.all(fundedAccounts.map(async (a)=>{
53
+ const deployMethod = await a.getDeployMethod();
54
+ await deployMethod.send({
55
+ from: AztecAddress.ZERO,
56
+ fee: {
57
+ paymentMethod
58
+ }
59
+ }).wait({
60
+ timeout: 2400
61
+ }); // increase timeout on purpose in order to account for two empty epochs
62
+ logger.info(`Account deployed at ${a.address}`);
63
+ }));
64
+ const tokenAdmin = fundedAccounts[0];
65
+ const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()), logger);
66
+ const tokenContract = await TokenContract.at(tokenAddress, wallet);
67
+ return {
68
+ aztecNode,
69
+ wallet,
70
+ accounts: fundedAccounts.map((acc)=>acc.address),
71
+ tokenAdminAddress: tokenAdmin.address,
72
+ tokenName: TOKEN_NAME,
73
+ tokenAddress,
74
+ tokenContract,
75
+ recipientAddress: recipientAccount.address
76
+ };
77
+ }
78
+ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1) {
79
+ const aztecNode = createAztecNodeClient(nodeUrl);
80
+ const wallet = await TestWallet.create(aztecNode);
81
+ const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
82
+ const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
83
+ const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
84
+ const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.address, undefined, logger)));
85
+ // Progress by 3 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
86
+ await advanceL2Block(aztecNode);
87
+ await advanceL2Block(aztecNode);
88
+ await advanceL2Block(aztecNode);
89
+ await Promise.all(fundedAccounts.map(async (a, i)=>{
90
+ const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
91
+ const deployMethod = await a.getDeployMethod();
92
+ await deployMethod.send({
93
+ from: AztecAddress.ZERO,
39
94
  fee: {
40
95
  paymentMethod
41
96
  }
42
97
  }).wait();
43
- logger.info(`Account deployed at ${a.getAddress()}`);
44
- return wallet;
98
+ logger.info(`Account deployed at ${a.address}`);
45
99
  }));
46
- const tokenAdmin = wallets[0];
47
- const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, logger);
48
- const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
100
+ const tokenAdmin = fundedAccounts[0];
101
+ const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, undefined, logger);
102
+ const tokenContract = await TokenContract.at(tokenAddress, wallet);
49
103
  return {
50
- pxe,
51
- wallets,
52
- tokenAdminWallet,
104
+ aztecNode,
105
+ wallet,
106
+ accounts: fundedAccounts.map((acc)=>acc.address),
107
+ tokenAdminAddress: tokenAdmin.address,
53
108
  tokenName: TOKEN_NAME,
54
109
  tokenAddress,
55
- recipientWallet
110
+ tokenContract,
111
+ recipientAddress: recipientAccount.address
56
112
  };
57
113
  }
58
- async function bridgeL1FeeJuice(l1RpcUrl, mnemonicOrPrivateKey, pxe, recipient, amount, log) {
59
- const { l1ChainId } = await pxe.getNodeInfo();
60
- const chain = createEthereumChain([
61
- l1RpcUrl
62
- ], l1ChainId);
63
- const { publicClient, walletClient } = createL1Clients(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
64
- const portal = await L1FeeJuicePortalManager.new(pxe, publicClient, walletClient, log);
114
+ async function bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, recipient, amount, log) {
115
+ const { l1ChainId } = await aztecNode.getNodeInfo();
116
+ const chain = createEthereumChain(l1RpcUrls, l1ChainId);
117
+ const l1Client = createExtendedL1Client(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
118
+ const portal = await L1FeeJuicePortalManager.new(aztecNode, l1Client, log);
65
119
  const claim = await portal.bridgeTokensPublic(recipient, amount, true);
66
- const isSynced = async ()=>await pxe.isL1ToL2MessageSynced(Fr.fromHexString(claim.messageHash));
120
+ const isSynced = async ()=>await aztecNode.getL1ToL2MessageBlock(Fr.fromHexString(claim.messageHash)) !== undefined;
67
121
  await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 0.5);
68
122
  log.info(`Created a claim for ${amount} L1 fee juice to ${recipient}.`, claim);
69
123
  return claim;
70
124
  }
71
- async function advanceL2Block(node) {
72
- const initialBlockNumber = await node.getBlockNumber();
73
- await node.flushTxs();
74
- await retryUntil(async ()=>await node.getBlockNumber() >= initialBlockNumber + 1);
125
+ async function advanceL2Block(aztecNode, nodeAdmin) {
126
+ const initialBlockNumber = await aztecNode.getBlockNumber();
127
+ let minTxsPerBlock = undefined;
128
+ if (nodeAdmin) {
129
+ ({ minTxsPerBlock } = await nodeAdmin.getConfig());
130
+ await nodeAdmin.setConfig({
131
+ minTxsPerBlock: 0
132
+ }); // Set to 0 to ensure we can advance the block
133
+ }
134
+ await retryUntil(async ()=>await aztecNode.getBlockNumber() >= initialBlockNumber + 1);
135
+ if (nodeAdmin && minTxsPerBlock !== undefined) {
136
+ await nodeAdmin.setConfig({
137
+ minTxsPerBlock
138
+ });
139
+ }
75
140
  }
76
- async function deployTokenAndMint(wallets, admin, mintAmount, logger) {
141
+ async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMethod, logger) {
77
142
  logger.verbose(`Deploying TokenContract...`);
78
- const tokenContract = await TokenContract.deploy(wallets[0], admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send().deployed({
143
+ const tokenContract = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
144
+ from: admin,
145
+ fee: {
146
+ paymentMethod
147
+ }
148
+ }).deployed({
79
149
  timeout: 600
80
150
  });
81
151
  const tokenAddress = tokenContract.address;
82
- logger.verbose(`Minting ${mintAmount} public assets to the ${wallets.length} wallets...`);
83
- await Promise.all(wallets.map(async (w)=>(await TokenContract.at(tokenAddress, w)).methods.mint_to_public(w.getAddress(), mintAmount).send().wait({
152
+ logger.verbose(`Minting ${mintAmount} public assets to the ${accounts.length} accounts...`);
153
+ await Promise.all(accounts.map(async (acc)=>(await TokenContract.at(tokenAddress, wallet)).methods.mint_to_public(acc, mintAmount).send({
154
+ from: admin,
155
+ fee: {
156
+ paymentMethod
157
+ }
158
+ }).wait({
84
159
  timeout: 600
85
160
  })));
86
161
  logger.verbose(`Minting complete.`);
87
162
  return tokenAddress;
88
163
  }
89
- export async function performTransfers({ testWallets, rounds, transferAmount, logger }) {
90
- const recipient = testWallets.recipientWallet.getAddress();
164
+ export async function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod }) {
165
+ const recipient = testAccounts.recipientAddress;
166
+ // Default to sponsored fee payment if no fee method is provided
167
+ const defaultFeePaymentMethod = feePaymentMethod || new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
91
168
  for(let i = 0; i < rounds; i++){
92
- const interactions = await Promise.all(testWallets.wallets.map(async (w)=>(await TokenContract.at(testWallets.tokenAddress, w)).methods.transfer_in_public(w.getAddress(), recipient, transferAmount, 0)));
93
- const txs = await Promise.all(interactions.map(async (i)=>await i.prove()));
94
- await Promise.all(txs.map((t)=>t.send().wait({
169
+ const txs = testAccounts.accounts.map(async (acc)=>{
170
+ const token = await TokenContract.at(testAccounts.tokenAddress, testAccounts.wallet);
171
+ return proveInteraction(wallet, token.methods.transfer_in_public(acc, recipient, transferAmount, 0), {
172
+ from: acc,
173
+ fee: {
174
+ paymentMethod: defaultFeePaymentMethod
175
+ }
176
+ });
177
+ });
178
+ const provenTxs = await Promise.all(txs);
179
+ await Promise.all(provenTxs.map((t)=>t.send().wait({
95
180
  timeout: 600
96
181
  })));
97
182
  logger.info(`Completed round ${i + 1} / ${rounds}`);
98
183
  }
99
184
  }
185
+ export async function createWalletAndAztecNodeClient(nodeUrl, proverEnabled, logger) {
186
+ const aztecNode = createAztecNodeClient(nodeUrl);
187
+ const [bbConfig, acvmConfig] = await Promise.all([
188
+ getBBConfig(logger),
189
+ getACVMConfig(logger)
190
+ ]);
191
+ const pxeConfig = {
192
+ dataDirectory: undefined,
193
+ dataStoreMapSizeKb: 1024 * 1024,
194
+ ...bbConfig,
195
+ ...acvmConfig,
196
+ proverEnabled
197
+ };
198
+ const wallet = await TestWallet.create(aztecNode, pxeConfig);
199
+ return {
200
+ wallet,
201
+ aztecNode,
202
+ async cleanup () {
203
+ await wallet.stop();
204
+ await bbConfig?.cleanup();
205
+ await acvmConfig?.cleanup();
206
+ }
207
+ };
208
+ }