@aztec/end-to-end 0.0.1-commit.29c6b1a3 → 0.0.1-commit.2d9cb6034

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 (196) hide show
  1. package/dest/bench/client_flows/client_flows_benchmark.d.ts +2 -2
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/client_flows_benchmark.js +21 -28
  4. package/dest/bench/client_flows/config.d.ts +2 -2
  5. package/dest/bench/client_flows/config.d.ts.map +1 -1
  6. package/dest/bench/client_flows/config.js +18 -0
  7. package/dest/bench/utils.d.ts +1 -1
  8. package/dest/bench/utils.d.ts.map +1 -1
  9. package/dest/bench/utils.js +6 -3
  10. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +4 -2
  11. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  12. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +22 -12
  13. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +2 -2
  14. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  15. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +3 -2
  16. package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
  17. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  18. package/dest/e2e_epochs/epochs_test.d.ts +11 -7
  19. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  20. package/dest/e2e_epochs/epochs_test.js +72 -39
  21. package/dest/e2e_fees/fees_test.d.ts +2 -2
  22. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  23. package/dest/e2e_fees/fees_test.js +18 -11
  24. package/dest/e2e_l1_publisher/write_json.d.ts +3 -2
  25. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  26. package/dest/e2e_l1_publisher/write_json.js +1 -7
  27. package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
  28. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  29. package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
  30. package/dest/e2e_p2p/inactivity_slash_test.js +1 -1
  31. package/dest/e2e_p2p/p2p_network.d.ts +5 -4
  32. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  33. package/dest/e2e_p2p/p2p_network.js +24 -7
  34. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  35. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  36. package/dest/e2e_p2p/reqresp/utils.js +190 -0
  37. package/dest/e2e_p2p/shared.d.ts +22 -2
  38. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  39. package/dest/e2e_p2p/shared.js +40 -5
  40. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  41. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  42. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  43. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  44. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  45. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  46. package/dest/e2e_token_contract/token_contract_test.d.ts +4 -2
  47. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  48. package/dest/e2e_token_contract/token_contract_test.js +19 -9
  49. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  50. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  51. package/dest/fixtures/authwit_proxy.js +30 -0
  52. package/dest/fixtures/e2e_prover_test.d.ts +7 -6
  53. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  54. package/dest/fixtures/e2e_prover_test.js +37 -49
  55. package/dest/fixtures/elu_monitor.d.ts +21 -0
  56. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  57. package/dest/fixtures/elu_monitor.js +102 -0
  58. package/dest/fixtures/fixtures.d.ts +5 -1
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +6 -0
  61. package/dest/fixtures/get_bb_config.d.ts +1 -1
  62. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  63. package/dest/fixtures/get_bb_config.js +5 -5
  64. package/dest/fixtures/ha_setup.d.ts +71 -0
  65. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  66. package/dest/fixtures/ha_setup.js +116 -0
  67. package/dest/fixtures/index.d.ts +2 -1
  68. package/dest/fixtures/index.d.ts.map +1 -1
  69. package/dest/fixtures/index.js +1 -0
  70. package/dest/fixtures/setup.d.ts +46 -25
  71. package/dest/fixtures/setup.d.ts.map +1 -1
  72. package/dest/fixtures/setup.js +89 -170
  73. package/dest/fixtures/setup_p2p_test.d.ts +16 -9
  74. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  75. package/dest/fixtures/setup_p2p_test.js +40 -29
  76. package/dest/fixtures/token_utils.d.ts +2 -2
  77. package/dest/fixtures/token_utils.d.ts.map +1 -1
  78. package/dest/fixtures/token_utils.js +5 -7
  79. package/dest/shared/cross_chain_test_harness.d.ts +1 -1
  80. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  81. package/dest/shared/cross_chain_test_harness.js +13 -13
  82. package/dest/shared/gas_portal_test_harness.js +2 -2
  83. package/dest/shared/index.d.ts +2 -1
  84. package/dest/shared/index.d.ts.map +1 -1
  85. package/dest/shared/index.js +1 -0
  86. package/dest/shared/jest_setup.js +41 -1
  87. package/dest/shared/mock_state_view.d.ts +86 -0
  88. package/dest/shared/mock_state_view.d.ts.map +1 -0
  89. package/dest/shared/mock_state_view.js +186 -0
  90. package/dest/shared/submit-transactions.d.ts +2 -2
  91. package/dest/shared/submit-transactions.d.ts.map +1 -1
  92. package/dest/shared/submit-transactions.js +1 -1
  93. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  94. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  95. package/dest/shared/uniswap_l1_l2.js +16 -17
  96. package/dest/simulators/lending_simulator.d.ts +1 -1
  97. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  98. package/dest/simulators/lending_simulator.js +4 -4
  99. package/dest/simulators/token_simulator.d.ts +1 -1
  100. package/dest/simulators/token_simulator.d.ts.map +1 -1
  101. package/dest/simulators/token_simulator.js +3 -24
  102. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  103. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  104. package/dest/spartan/setup_test_wallets.js +110 -17
  105. package/dest/spartan/tx_metrics.js +1 -1
  106. package/dest/spartan/utils/bot.d.ts +3 -2
  107. package/dest/spartan/utils/bot.d.ts.map +1 -1
  108. package/dest/spartan/utils/bot.js +2 -1
  109. package/dest/spartan/utils/config.d.ts +10 -1
  110. package/dest/spartan/utils/config.d.ts.map +1 -1
  111. package/dest/spartan/utils/config.js +4 -1
  112. package/dest/spartan/utils/index.d.ts +6 -4
  113. package/dest/spartan/utils/index.d.ts.map +1 -1
  114. package/dest/spartan/utils/index.js +6 -2
  115. package/dest/spartan/utils/k8s.d.ts +31 -1
  116. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  117. package/dest/spartan/utils/k8s.js +124 -0
  118. package/dest/spartan/utils/nodes.d.ts +14 -5
  119. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  120. package/dest/spartan/utils/nodes.js +204 -33
  121. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  122. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  123. package/dest/spartan/utils/pod_logs.js +74 -0
  124. package/dest/spartan/utils/scripts.d.ts +18 -4
  125. package/dest/spartan/utils/scripts.d.ts.map +1 -1
  126. package/dest/spartan/utils/scripts.js +19 -4
  127. package/dest/test-wallet/test_wallet.d.ts +76 -0
  128. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  129. package/dest/test-wallet/test_wallet.js +213 -0
  130. package/dest/test-wallet/utils.d.ts +41 -0
  131. package/dest/test-wallet/utils.d.ts.map +1 -0
  132. package/dest/test-wallet/utils.js +71 -0
  133. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  134. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  135. package/dest/test-wallet/wallet_worker_script.js +48 -0
  136. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  137. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  138. package/dest/test-wallet/worker_wallet.js +151 -0
  139. package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
  140. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  141. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  142. package/package.json +45 -43
  143. package/src/bench/client_flows/client_flows_benchmark.ts +30 -17
  144. package/src/bench/client_flows/config.ts +9 -1
  145. package/src/bench/utils.ts +8 -3
  146. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +28 -15
  147. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +7 -8
  148. package/src/e2e_deploy_contract/deploy_test.ts +3 -3
  149. package/src/e2e_epochs/epochs_test.ts +89 -66
  150. package/src/e2e_fees/bridging_race.notest.ts +1 -1
  151. package/src/e2e_fees/fees_test.ts +20 -28
  152. package/src/e2e_l1_publisher/write_json.ts +1 -6
  153. package/src/e2e_nested_contract/nested_contract_test.ts +7 -5
  154. package/src/e2e_p2p/inactivity_slash_test.ts +5 -5
  155. package/src/e2e_p2p/p2p_network.ts +36 -10
  156. package/src/e2e_p2p/reqresp/utils.ts +256 -0
  157. package/src/e2e_p2p/shared.ts +68 -5
  158. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  159. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  160. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  161. package/src/e2e_token_contract/token_contract_test.ts +26 -9
  162. package/src/fixtures/authwit_proxy.ts +50 -0
  163. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  164. package/src/fixtures/e2e_prover_test.ts +43 -55
  165. package/src/fixtures/elu_monitor.ts +126 -0
  166. package/src/fixtures/fixtures.ts +10 -0
  167. package/src/fixtures/get_bb_config.ts +7 -6
  168. package/src/fixtures/ha_setup.ts +186 -0
  169. package/src/fixtures/index.ts +1 -0
  170. package/src/fixtures/setup.ts +118 -229
  171. package/src/fixtures/setup_p2p_test.ts +40 -44
  172. package/src/fixtures/token_utils.ts +3 -3
  173. package/src/guides/up_quick_start.sh +3 -3
  174. package/src/shared/cross_chain_test_harness.ts +13 -9
  175. package/src/shared/gas_portal_test_harness.ts +1 -1
  176. package/src/shared/index.ts +1 -0
  177. package/src/shared/jest_setup.ts +51 -1
  178. package/src/shared/mock_state_view.ts +188 -0
  179. package/src/shared/submit-transactions.ts +3 -2
  180. package/src/shared/uniswap_l1_l2.ts +38 -33
  181. package/src/simulators/lending_simulator.ts +8 -4
  182. package/src/simulators/token_simulator.ts +6 -30
  183. package/src/spartan/setup_test_wallets.ts +148 -13
  184. package/src/spartan/tx_metrics.ts +1 -1
  185. package/src/spartan/utils/bot.ts +4 -1
  186. package/src/spartan/utils/config.ts +3 -0
  187. package/src/spartan/utils/index.ts +10 -1
  188. package/src/spartan/utils/k8s.ts +160 -0
  189. package/src/spartan/utils/nodes.ts +251 -31
  190. package/src/spartan/utils/pod_logs.ts +99 -0
  191. package/src/spartan/utils/scripts.ts +43 -7
  192. package/src/test-wallet/test_wallet.ts +301 -0
  193. package/src/test-wallet/utils.ts +112 -0
  194. package/src/test-wallet/wallet_worker_script.ts +60 -0
  195. package/src/test-wallet/worker_wallet.ts +213 -0
  196. package/src/test-wallet/worker_wallet_schema.ts +13 -0
@@ -0,0 +1,120 @@
1
+ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { Capsule } from '@aztec/stdlib/tx';
5
+ import { readFileSync } from 'fs';
6
+ import { dirname, join } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ const FIXTURE_PATH = join(__dirname, './storage_proof.json');
10
+ // Constants matching the Noir contract
11
+ const ACCOUNT_CAPSULE_KEY_SEPARATOR = 100;
12
+ const ACCOUNT_PROOF_CAPSULE_KEY_SEPARATOR = 101;
13
+ const STORAGE_PROOF_CAPSULE_KEY_SEPARATOR = 102;
14
+ const STORAGE_PROOF_NODE_CAPSULE_KEY_SEPARATOR = 103;
15
+ const MAX_ACCOUNT_PROOF_LENGTH = 15;
16
+ /** Node: rows [[u64;4];16] (64) + row_exist [bool;16] (16) + node_type u8 (1) = 81 fields */ const NODE_FIELD_COUNT = 81;
17
+ // --- Serialization helpers (Noir struct Serialize layout) ---
18
+ function serializeNode(node) {
19
+ const fields = [];
20
+ for (const row of node.rows){
21
+ for (const val of row){
22
+ fields.push(new Fr(BigInt(val)));
23
+ }
24
+ }
25
+ for (const exists of node.row_exist){
26
+ fields.push(new Fr(exists ? 1n : 0n));
27
+ }
28
+ fields.push(new Fr(BigInt(node.node_type)));
29
+ return fields;
30
+ }
31
+ /** Account: nonce [u8;8] + balance [u8;32] + address [u8;20] + nonce_length u8 + balance_length u8 + storage_hash [u64;4] + code_hash [u64;4] = 70 fields */ function serializeAccount(account) {
32
+ const fields = [];
33
+ for (const v of account.nonce){
34
+ fields.push(new Fr(BigInt(v)));
35
+ }
36
+ for (const v of account.balance){
37
+ fields.push(new Fr(BigInt(v)));
38
+ }
39
+ for (const v of account.address){
40
+ fields.push(new Fr(BigInt(v)));
41
+ }
42
+ fields.push(new Fr(BigInt(account.nonce_length)));
43
+ fields.push(new Fr(BigInt(account.balance_length)));
44
+ for (const v of account.storage_hash){
45
+ fields.push(new Fr(BigInt(v)));
46
+ }
47
+ for (const v of account.code_hash){
48
+ fields.push(new Fr(BigInt(v)));
49
+ }
50
+ return fields;
51
+ }
52
+ function zeroNode() {
53
+ return Array(NODE_FIELD_COUNT).fill(Fr.ZERO);
54
+ }
55
+ /** Loads the storage proof fixture from disk and returns the contract args. */ export function loadStorageProofArgs() {
56
+ const fixture = JSON.parse(readFileSync(FIXTURE_PATH, 'utf8'));
57
+ const addressBytes = Buffer.from(fixture.account.address.map((v)=>Number(v)));
58
+ return {
59
+ ethAddress: EthAddress.fromString('0x' + addressBytes.toString('hex')),
60
+ slotKey: fixture.slot_key.map((v)=>Number(v)),
61
+ slotContents: {
62
+ value: fixture.slot.value.map((v)=>Number(v)),
63
+ // eslint-disable-next-line camelcase
64
+ value_length: Number(fixture.slot.value_length)
65
+ },
66
+ root: fixture.root.map((v)=>BigInt(v))
67
+ };
68
+ }
69
+ /** Builds all the capsules the StorageProofTest contract expects during private execution. */ export async function buildStorageProofCapsules(contractAddress) {
70
+ const fixture = JSON.parse(readFileSync(FIXTURE_PATH, 'utf8'));
71
+ const root = fixture.root.map((v)=>BigInt(v));
72
+ const slotKey = fixture.slot_key.map((v)=>Number(v));
73
+ const accountNodeLength = Number(fixture.account_node_length);
74
+ const storageNodeLength = Number(fixture.storage_node_length);
75
+ const ethAddress = EthAddress.fromBuffer(Buffer.from(fixture.account.address.map((v)=>Number(v))));
76
+ // Compute capsule keys (must match the Noir contract's poseidon2_hash computations)
77
+ const addressCapsuleKey = await poseidon2Hash([
78
+ new Fr(ACCOUNT_CAPSULE_KEY_SEPARATOR),
79
+ ...root.map((v)=>new Fr(v)),
80
+ ethAddress.toField()
81
+ ]);
82
+ const accountProofCapsuleKey = await poseidon2Hash([
83
+ new Fr(ACCOUNT_PROOF_CAPSULE_KEY_SEPARATOR),
84
+ addressCapsuleKey
85
+ ]);
86
+ const storageProofCapsuleKey = await poseidon2Hash([
87
+ new Fr(STORAGE_PROOF_CAPSULE_KEY_SEPARATOR),
88
+ addressCapsuleKey,
89
+ ...slotKey.map((v)=>new Fr(v))
90
+ ]);
91
+ // Build capsule data
92
+ // 1. Account data
93
+ const accountData = serializeAccount(fixture.account);
94
+ // 2. Account proof nodes padded to MAX_ACCOUNT_PROOF_LENGTH
95
+ const accountProofData = [
96
+ new Fr(accountNodeLength)
97
+ ];
98
+ for(let i = 0; i < MAX_ACCOUNT_PROOF_LENGTH; i++){
99
+ accountProofData.push(...i < fixture.account_nodes.length ? serializeNode(fixture.account_nodes[i]) : zeroNode());
100
+ }
101
+ // 3. Storage proof length (u32)
102
+ const storageProofLengthData = [
103
+ new Fr(storageNodeLength)
104
+ ];
105
+ const capsules = [
106
+ new Capsule(contractAddress, addressCapsuleKey, accountData),
107
+ new Capsule(contractAddress, accountProofCapsuleKey, accountProofData),
108
+ new Capsule(contractAddress, storageProofCapsuleKey, storageProofLengthData)
109
+ ];
110
+ // 4. Individual storage node capsules for private recursion.
111
+ for(let i = 0; i < storageNodeLength; i++){
112
+ const nodeCapsuleKey = await poseidon2Hash([
113
+ new Fr(STORAGE_PROOF_NODE_CAPSULE_KEY_SEPARATOR),
114
+ storageProofCapsuleKey,
115
+ new Fr(i)
116
+ ]);
117
+ capsules.push(new Capsule(contractAddress, nodeCapsuleKey, serializeNode(fixture.storage_nodes[i])));
118
+ }
119
+ return capsules;
120
+ }
@@ -2,10 +2,11 @@ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { type Logger } from '@aztec/aztec.js/log';
3
3
  import type { AztecNode } from '@aztec/aztec.js/node';
4
4
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
5
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
5
6
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
- import type { TestWallet } from '@aztec/test-wallet/server';
7
7
  import { type EndToEndContext } from '../fixtures/setup.js';
8
8
  import { TokenSimulator } from '../simulators/token_simulator.js';
9
+ import type { TestWallet } from '../test-wallet/test_wallet.js';
9
10
  export declare class TokenContractTest {
10
11
  static TOKEN_NAME: string;
11
12
  static TOKEN_SYMBOL: string;
@@ -17,6 +18,7 @@ export declare class TokenContractTest {
17
18
  tokenSim: TokenSimulator;
18
19
  node: AztecNode;
19
20
  badAccount: InvalidAccountContract;
21
+ authwitProxy: GenericProxyContract;
20
22
  wallet: TestWallet;
21
23
  adminAddress: AztecAddress;
22
24
  account1Address: AztecAddress;
@@ -39,4 +41,4 @@ export declare class TokenContractTest {
39
41
  teardown(): Promise<void>;
40
42
  private applyMint;
41
43
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUQsTUFBTSxzQkFBc0IsQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUscUJBQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLFFBQVEsRUFBRyxjQUFjLENBQUM7SUFDMUIsSUFBSSxFQUFHLFNBQVMsQ0FBQztJQUVqQixVQUFVLEVBQUcsc0JBQXNCLENBQUM7SUFDcEMsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGVBQWUsRUFBRyxZQUFZLENBQUM7SUFDL0IsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLGVBQWUsQ0FBUztJQUVoQyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRzNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLFNBRWhCO1lBS2EsY0FBYztJQTZDdEIsS0FBSyxrQkFjVjtJQUVLLFFBQVEsa0JBRWI7WUFFYSxTQUFTO0NBMkJ4QiJ9
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBSXRGLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUQsTUFBTSxzQkFBc0IsQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJaEUscUJBQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLFFBQVEsRUFBRyxjQUFjLENBQUM7SUFDMUIsSUFBSSxFQUFHLFNBQVMsQ0FBQztJQUVqQixVQUFVLEVBQUcsc0JBQXNCLENBQUM7SUFDcEMsWUFBWSxFQUFHLG9CQUFvQixDQUFDO0lBQ3BDLE1BQU0sRUFBRyxVQUFVLENBQUM7SUFDcEIsWUFBWSxFQUFHLFlBQVksQ0FBQztJQUM1QixlQUFlLEVBQUcsWUFBWSxDQUFDO0lBQy9CLGVBQWUsRUFBRyxZQUFZLENBQUM7SUFFL0IsT0FBTyxDQUFDLG9CQUFvQixDQUFTO0lBQ3JDLE9BQU8sQ0FBQyxlQUFlLENBQVM7SUFFaEMsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUczQjtJQUVEOzs7T0FHRztJQUNILGtCQUFrQixTQUVqQjtJQUVEOzs7T0FHRztJQUNILGlCQUFpQixTQUVoQjtZQUthLGNBQWM7SUF3RHRCLEtBQUssa0JBY1Y7SUFFSyxRQUFRLGtCQUViO1lBRWEsU0FBUztDQStCeEIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,EAAE,KAAK,eAAe,EAAyD,MAAM,sBAAsB,CAAC;AAEnH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIlE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAC/B,eAAe,EAAG,YAAY,CAAC;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,eAAe,CAAS;IAEhC,YAAY,QAAQ,EAAE,MAAM,EAG3B;IAED;;;OAGG;IACH,kBAAkB,SAEjB;IAED;;;OAGG;IACH,iBAAiB,SAEhB;YAKa,cAAc;IA6CtB,KAAK,kBAcV;IAEK,QAAQ,kBAEb;YAEa,SAAS;CA2BxB"}
1
+ {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAItF,OAAO,EAAE,KAAK,eAAe,EAAyD,MAAM,sBAAsB,CAAC;AAEnH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAIhE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,YAAY,EAAG,oBAAoB,CAAC;IACpC,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAC/B,eAAe,EAAG,YAAY,CAAC;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,eAAe,CAAS;IAEhC,YAAY,QAAQ,EAAE,MAAM,EAG3B;IAED;;;OAGG;IACH,kBAAkB,SAEjB;IAED;;;OAGG;IACH,iBAAiB,SAEhB;YAKa,cAAc;IAwDtB,KAAK,kBAcV;IAEK,QAAQ,kBAEb;YAEa,SAAS;CA+BxB"}
@@ -1,5 +1,6 @@
1
1
  import { createLogger } from '@aztec/aztec.js/log';
2
2
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
3
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
3
4
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
4
5
  import { jest } from '@jest/globals';
5
6
  import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
@@ -17,6 +18,7 @@ export class TokenContractTest {
17
18
  tokenSim;
18
19
  node;
19
20
  badAccount;
21
+ authwitProxy;
20
22
  wallet;
21
23
  adminAddress;
22
24
  account1Address;
@@ -59,22 +61,30 @@ export class TokenContractTest {
59
61
  this.account1Address
60
62
  ]);
61
63
  this.logger.verbose(`Deploying TokenContract...`);
62
- this.asset = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
64
+ ({ contract: this.asset } = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
63
65
  from: this.adminAddress
64
- });
66
+ }));
65
67
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
66
68
  this.logger.verbose(`Deploying bad account...`);
67
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
69
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
68
70
  from: this.adminAddress
69
- });
71
+ }));
70
72
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
73
+ // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
74
+ // (so their notes are in scope), but msg_sender in the target must differ from the note owner
75
+ // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
76
+ this.logger.verbose(`Deploying generic proxy...`);
77
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
78
+ from: this.adminAddress
79
+ }));
80
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
71
81
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
72
82
  this.adminAddress,
73
83
  this.account1Address
74
84
  ]);
75
- expect(await this.asset.methods.get_admin().simulate({
85
+ expect((await this.asset.methods.get_admin().simulate({
76
86
  from: this.adminAddress
77
- })).toBe(this.adminAddress.toBigInt());
87
+ })).result).toBe(this.adminAddress.toBigInt());
78
88
  }
79
89
  async setup() {
80
90
  this.context = await setup(0, {
@@ -101,7 +111,7 @@ export class TokenContractTest {
101
111
  from: adminAddress
102
112
  });
103
113
  tokenSim.mintPublic(adminAddress, amount);
104
- const publicBalance = await asset.methods.balance_of_public(adminAddress).simulate({
114
+ const { result: publicBalance } = await asset.methods.balance_of_public(adminAddress).simulate({
105
115
  from: adminAddress
106
116
  });
107
117
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
@@ -109,12 +119,12 @@ export class TokenContractTest {
109
119
  this.logger.verbose(`Minting ${amount} privately...`);
110
120
  await mintTokensToPrivate(asset, adminAddress, adminAddress, amount);
111
121
  tokenSim.mintPrivate(adminAddress, amount);
112
- const privateBalance = await asset.methods.balance_of_private(adminAddress).simulate({
122
+ const { result: privateBalance } = await asset.methods.balance_of_private(adminAddress).simulate({
113
123
  from: adminAddress
114
124
  });
115
125
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
116
126
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(adminAddress));
117
- const totalSupply = await asset.methods.total_supply().simulate({
127
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
118
128
  from: adminAddress
119
129
  });
120
130
  this.logger.verbose(`Total supply: ${totalSupply}`);
@@ -0,0 +1,15 @@
1
+ import type { ContractFunctionInteraction, SendInteractionOptions, SimulateInteractionOptions } from '@aztec/aztec.js/contracts';
2
+ import type { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
3
+ /**
4
+ * Sends a contract call through the authwit proxy.
5
+ * The proxy becomes msg_sender in the target (triggering authwit validation),
6
+ * while the actual tx sender retains their keys in scope.
7
+ */
8
+ export declare function sendThroughAuthwitProxy(proxy: GenericProxyContract, action: ContractFunctionInteraction, options: SendInteractionOptions): Promise<import("@aztec/aztec.js/contracts").TxSendResultMined<import("@aztec/stdlib/tx").TxReceipt>>;
9
+ /**
10
+ * Simulates a contract call through the authwit proxy.
11
+ * The proxy becomes msg_sender in the target (triggering authwit validation),
12
+ * while the actual tx sender retains their keys in scope.
13
+ */
14
+ export declare function simulateThroughAuthwitProxy(proxy: GenericProxyContract, action: ContractFunctionInteraction, options: SimulateInteractionOptions): Promise<import("@aztec/aztec.js/contracts").SimulationResult>;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aHdpdF9wcm94eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpeHR1cmVzL2F1dGh3aXRfcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQ1YsMkJBQTJCLEVBQzNCLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDM0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBa0J2Rjs7OztHQUlHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUMzQyxLQUFLLEVBQUUsb0JBQW9CLEVBQzNCLE1BQU0sRUFBRSwyQkFBMkIsRUFDbkMsT0FBTyxFQUFFLHNCQUFzQix3R0FJaEM7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQXNCLDJCQUEyQixDQUMvQyxLQUFLLEVBQUUsb0JBQW9CLEVBQzNCLE1BQU0sRUFBRSwyQkFBMkIsRUFDbkMsT0FBTyxFQUFFLDBCQUEwQixpRUFJcEMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authwit_proxy.d.ts","sourceRoot":"","sources":["../../src/fixtures/authwit_proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAkBvF;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,2BAA2B,EACnC,OAAO,EAAE,sBAAsB,wGAIhC;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,oBAAoB,EAC3B,MAAM,EAAE,2BAA2B,EACnC,OAAO,EAAE,0BAA0B,iEAIpC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Builds a proxy forwarding call from an action, selecting the right forward_private_N method.
3
+ */ async function buildProxyCall(proxy, action) {
4
+ const call = await action.getFunctionCall();
5
+ const argCount = call.args.length;
6
+ if (argCount === 2) {
7
+ return proxy.methods.forward_private_2(call.to, call.selector, call.args);
8
+ } else if (argCount === 3) {
9
+ return proxy.methods.forward_private_3(call.to, call.selector, call.args);
10
+ } else if (argCount === 4) {
11
+ return proxy.methods.forward_private_4(call.to, call.selector, call.args);
12
+ }
13
+ throw new Error(`No forward_private_${argCount} method on proxy`);
14
+ }
15
+ /**
16
+ * Sends a contract call through the authwit proxy.
17
+ * The proxy becomes msg_sender in the target (triggering authwit validation),
18
+ * while the actual tx sender retains their keys in scope.
19
+ */ export async function sendThroughAuthwitProxy(proxy, action, options) {
20
+ const proxyCall = await buildProxyCall(proxy, action);
21
+ return proxyCall.send(options);
22
+ }
23
+ /**
24
+ * Simulates a contract call through the authwit proxy.
25
+ * The proxy becomes msg_sender in the target (triggering authwit validation),
26
+ * while the actual tx sender retains their keys in scope.
27
+ */ export async function simulateThroughAuthwitProxy(proxy, action, options) {
28
+ const proxyCall = await buildProxyCall(proxy, action);
29
+ return proxyCall.simulate(options);
30
+ }
@@ -3,13 +3,13 @@ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
3
3
  import { type Logger } from '@aztec/aztec.js/log';
4
4
  import type { AztecNode } from '@aztec/aztec.js/node';
5
5
  import { CheatCodes } from '@aztec/aztec/testing';
6
- import { type ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
6
+ import type { ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
7
7
  import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
8
8
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
9
9
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
10
10
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
- import { TestWallet } from '@aztec/test-wallet/server';
12
11
  import { TokenSimulator } from '../simulators/token_simulator.js';
12
+ import { TestWallet } from '../test-wallet/test_wallet.js';
13
13
  import { type EndToEndContext } from './setup.js';
14
14
  /**
15
15
  * Largely taken from the e2e_token_contract test file. We deploy 2 accounts and a token contract.
@@ -35,11 +35,12 @@ export declare class FullProverTest {
35
35
  private provenComponents;
36
36
  private bbConfigCleanup?;
37
37
  private acvmConfigCleanup?;
38
- circuitProofVerifier?: ClientProtocolCircuitVerifier;
38
+ /** Returns the proof verifier from the prover node (for test assertions). */
39
+ get circuitProofVerifier(): ClientProtocolCircuitVerifier | undefined;
39
40
  provenAsset: TokenContract;
40
41
  context: EndToEndContext;
41
- private proverNode;
42
- private simulatedProverNode;
42
+ private proverAztecNode;
43
+ private simulatedProverAztecNode;
43
44
  l1Contracts: DeployAztecL1ContractsReturnType;
44
45
  proverAddress: EthAddress;
45
46
  private minNumberOfTxsPerBlock;
@@ -52,4 +53,4 @@ export declare class FullProverTest {
52
53
  teardown(): Promise<void>;
53
54
  private applyMint;
54
55
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlX3Byb3Zlcl90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZml4dHVyZXMvZTJlX3Byb3Zlcl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxLQUFLLDZCQUE2QixFQUduQyxNQUFNLGtCQUFrQixDQUFDO0FBRzFCLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFJbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBTXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUdsRSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBUXJCLE1BQU0sWUFBWSxDQUFDO0FBT3BCOzs7OztHQUtHO0FBRUgscUJBQWEsY0FBYztJQUN6QixNQUFNLENBQUMsVUFBVSxTQUFVO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLFNBQVM7SUFDNUIsTUFBTSxDQUFDLGNBQWMsU0FBTztJQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsVUFBVSxDQUFDO0lBQzFCLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBTTtJQUM5QixnQkFBZ0IsRUFBRyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3hDLGVBQWUsRUFBRyxhQUFhLENBQUM7SUFDaEMsdUJBQXVCLEVBQUcsMkJBQTJCLENBQUM7SUFDdEQsUUFBUSxFQUFHLGNBQWMsQ0FBQztJQUMxQixTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLGNBQWMsRUFBRyxjQUFjLENBQUM7SUFDaEMsVUFBVSxFQUFHLFVBQVUsQ0FBQztJQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQXFCO0lBQzdDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBc0I7SUFDOUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQXNCO0lBQ2hELG9CQUFvQixDQUFDLEVBQUUsNkJBQTZCLENBQUM7SUFDckQsV0FBVyxFQUFHLGFBQWEsQ0FBQztJQUM1QixPQUFPLEVBQUcsZUFBZSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxVQUFVLENBQWM7SUFDaEMsT0FBTyxDQUFDLG1CQUFtQixDQUFjO0lBQ2xDLFdBQVcsRUFBRyxnQ0FBZ0MsQ0FBQztJQUMvQyxhQUFhLEVBQUcsVUFBVSxDQUFDO0lBQ2xDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBUztJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFhO0lBQzdCLE9BQU8sQ0FBQyxVQUFVLENBQVU7SUFFNUIsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsVUFBTyxFQUtwRztZQUthLGNBQWM7SUFxQ3RCLEtBQUssa0JBZ0pWO1lBRWEsWUFBWTtJQVNwQixRQUFRLGtCQWNiO1lBRWEsU0FBUztDQWtDeEIifQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlX3Byb3Zlcl90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZml4dHVyZXMvZTJlX3Byb3Zlcl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUlsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU10RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFRckIsTUFBTSxZQUFZLENBQUM7QUFPcEI7Ozs7O0dBS0c7QUFFSCxxQkFBYSxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLFlBQVksRUFBRyxVQUFVLENBQUM7SUFDMUIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFNO0lBQzlCLGdCQUFnQixFQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsZUFBZSxFQUFHLGFBQWEsQ0FBQztJQUNoQyx1QkFBdUIsRUFBRywyQkFBMkIsQ0FBQztJQUN0RCxRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFDdEIsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUNoQyxVQUFVLEVBQUcsVUFBVSxDQUFDO0lBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBcUI7SUFDN0MsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFzQjtJQUM5QyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBc0I7SUFDaEQsNkVBQTZFO0lBQzdFLElBQUksb0JBQW9CLElBQUksNkJBQTZCLEdBQUcsU0FBUyxDQUVwRTtJQUNELFdBQVcsRUFBRyxhQUFhLENBQUM7SUFDNUIsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixPQUFPLENBQUMsZUFBZSxDQUFvQjtJQUMzQyxPQUFPLENBQUMsd0JBQXdCLENBQW9CO0lBQzdDLFdBQVcsRUFBRyxnQ0FBZ0MsQ0FBQztJQUMvQyxhQUFhLEVBQUcsVUFBVSxDQUFDO0lBQ2xDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBUztJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFhO0lBQzdCLE9BQU8sQ0FBQyxVQUFVLENBQVU7SUFFNUIsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsVUFBTyxFQUtwRztZQUthLGNBQWM7SUFxQ3RCLEtBQUssa0JBb0lWO1lBRWEsWUFBWTtJQVNwQixRQUFRLGtCQWNiO1lBRWEsU0FBUztDQXNDeEIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAEL,KAAK,6BAA6B,EAGnC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAMvD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlE,OAAO,EACL,KAAK,eAAe,EAQrB,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AAEH,qBAAa,cAAc;IACzB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,UAAU,CAAC;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,gBAAgB,EAAG,kBAAkB,EAAE,CAAC;IACxC,eAAe,EAAG,aAAa,CAAC;IAChC,uBAAuB,EAAG,2BAA2B,CAAC;IACtD,QAAQ,EAAG,cAAc,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,WAAW,EAAG,aAAa,CAAC;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,mBAAmB,CAAc;IAClC,WAAW,EAAG,gCAAgC,CAAC;IAC/C,aAAa,EAAG,UAAU,CAAC;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAU;IAE5B,YAAY,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,UAAO,EAKpG;YAKa,cAAc;IAqCtB,KAAK,kBAgJV;YAEa,YAAY;IASpB,QAAQ,kBAcb;YAEa,SAAS;CAkCxB"}
1
+ {"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,eAAe,EAQrB,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AAEH,qBAAa,cAAc;IACzB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,UAAU,CAAC;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,gBAAgB,EAAG,kBAAkB,EAAE,CAAC;IACxC,eAAe,EAAG,aAAa,CAAC;IAChC,uBAAuB,EAAG,2BAA2B,CAAC;IACtD,QAAQ,EAAG,cAAc,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,6EAA6E;IAC7E,IAAI,oBAAoB,IAAI,6BAA6B,GAAG,SAAS,CAEpE;IACD,WAAW,EAAG,aAAa,CAAC;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,wBAAwB,CAAoB;IAC7C,WAAW,EAAG,gCAAgC,CAAC;IAC/C,aAAa,EAAG,UAAU,CAAC;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAU;IAE5B,YAAY,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,UAAO,EAKpG;YAKa,cAAc;IAqCtB,KAAK,kBAoIV;YAEa,YAAY;IASpB,QAAQ,kBAcb;YAEa,SAAS;CAsCxB"}
@@ -1,14 +1,11 @@
1
- import { createArchiver } from '@aztec/archiver';
1
+ import { AztecNodeService } from '@aztec/aztec-node';
2
2
  import { EthAddress } from '@aztec/aztec.js/addresses';
3
3
  import { createLogger } from '@aztec/aztec.js/log';
4
- import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
5
4
  import { BackendType, Barretenberg } from '@aztec/bb.js';
6
- import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
7
5
  import { Buffer32 } from '@aztec/foundation/buffer';
8
6
  import { SecretValue } from '@aztec/foundation/config';
9
7
  import { FeeAssetHandlerAbi } from '@aztec/l1-artifacts';
10
8
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
11
- import { createProverNode } from '@aztec/prover-node';
12
9
  import { getGenesisValues } from '@aztec/world-state/testing';
13
10
  import { getContract } from 'viem';
14
11
  import { privateKeyToAddress } from 'viem/accounts';
@@ -39,11 +36,13 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
39
36
  provenComponents = [];
40
37
  bbConfigCleanup;
41
38
  acvmConfigCleanup;
42
- circuitProofVerifier;
39
+ /** Returns the proof verifier from the prover node (for test assertions). */ get circuitProofVerifier() {
40
+ return this.proverAztecNode?.getProofVerifier();
41
+ }
43
42
  provenAsset;
44
43
  context;
45
- proverNode;
46
- simulatedProverNode;
44
+ proverAztecNode;
45
+ simulatedProverAztecNode;
47
46
  l1Contracts;
48
47
  proverAddress;
49
48
  minNumberOfTxsPerBlock;
@@ -70,19 +69,16 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
70
69
  await publicDeployAccounts(this.wallet, this.accounts.slice(0, 2));
71
70
  this.logger.info('Applying base setup: deploying token contract');
72
71
  const { contract: asset, instance } = await TokenContract.deploy(this.wallet, this.accounts[0], FullProverTest.TOKEN_NAME, FullProverTest.TOKEN_SYMBOL, FullProverTest.TOKEN_DECIMALS).send({
73
- from: this.accounts[0],
74
- wait: {
75
- returnReceipt: true
76
- }
72
+ from: this.accounts[0]
77
73
  });
78
74
  this.logger.verbose(`Token deployed to ${asset.address}`);
79
75
  this.fakeProofsAsset = asset;
80
76
  this.fakeProofsAssetInstance = instance;
81
77
  this.logger.verbose(`Token contract address: ${this.fakeProofsAsset.address}`);
82
78
  this.tokenSim = new TokenSimulator(this.fakeProofsAsset, this.wallet, this.accounts[0], this.logger, this.accounts);
83
- expect(await this.fakeProofsAsset.methods.get_admin().simulate({
79
+ expect((await this.fakeProofsAsset.methods.get_admin().simulate({
84
80
  from: this.accounts[0]
85
- })).toBe(this.accounts[0].toBigInt());
81
+ })).result).toBe(this.accounts[0].toBigInt());
86
82
  }
87
83
  async setup() {
88
84
  this.logger.info('Setting up subsystems from fresh');
@@ -102,11 +98,10 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
102
98
  });
103
99
  // We don't wish to mark as proven automatically, so we set the flag to false
104
100
  this.context.watcher.setIsMarkingAsProven(false);
105
- this.simulatedProverNode = this.context.proverNode;
101
+ this.simulatedProverAztecNode = this.context.proverNode;
106
102
  ({ aztecNode: this.aztecNode, deployL1ContractsValues: this.l1Contracts, cheatCodes: this.cheatCodes } = this.context);
107
103
  this.aztecNodeAdmin = this.context.aztecNodeService;
108
104
  const config = this.context.aztecNodeConfig;
109
- const blobClient = await createBlobClientWithFileStores(config, this.logger);
110
105
  // Configure a full prover PXE
111
106
  let acvmConfig;
112
107
  let bbConfig;
@@ -123,8 +118,6 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
123
118
  await Barretenberg.initSingleton({
124
119
  backend: BackendType.NativeUnixSocket
125
120
  });
126
- const verifier = await BBCircuitVerifier.new(bbConfig);
127
- this.circuitProofVerifier = new QueuedIVCVerifier(bbConfig, verifier);
128
121
  this.logger.debug(`Configuring the node for real proofs...`);
129
122
  await this.aztecNodeAdmin.setConfig({
130
123
  realProofs: true,
@@ -132,7 +125,6 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
132
125
  });
133
126
  } else {
134
127
  this.logger.debug(`Configuring the node min txs per block ${this.minNumberOfTxsPerBlock}...`);
135
- this.circuitProofVerifier = new TestCircuitVerifier();
136
128
  await this.aztecNodeAdmin.setConfig({
137
129
  minTxsPerBlock: this.minNumberOfTxsPerBlock
138
130
  });
@@ -144,7 +136,7 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
144
136
  this.logger.verbose(`Main setup completed, initializing full prover PXE, Node, and Prover Node`);
145
137
  const { wallet: provenWallet, teardown: provenTeardown } = await setupPXEAndGetWallet(this.aztecNode, {
146
138
  proverEnabled: this.realProofs
147
- }, undefined, true);
139
+ }, undefined, 'pxe-proven');
148
140
  this.logger.debug(`Contract address ${this.fakeProofsAsset.address}`);
149
141
  await provenWallet.registerContract(this.fakeProofsAssetInstance, TokenContract.artifact);
150
142
  for(let i = 0; i < 2; i++){
@@ -159,36 +151,30 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
159
151
  this.provenAsset = asset;
160
152
  this.provenWallet = provenWallet;
161
153
  this.logger.info(`Full prover PXE started`);
162
- // Shutdown the current, simulated prover node
154
+ // Shutdown the current, simulated prover node (by stopping its hosting aztec node)
163
155
  this.logger.verbose('Shutting down simulated prover node');
164
- await this.simulatedProverNode.stop();
165
- // Creating temp store and archiver for fully proven prover node
166
- this.logger.verbose('Starting archiver for new prover node');
167
- const archiver = await createArchiver({
168
- ...this.context.aztecNodeConfig,
169
- dataDirectory: undefined
170
- }, {
171
- blobClient,
172
- dateProvider: this.context.dateProvider
173
- }, {
174
- blockUntilSync: true
175
- });
156
+ await this.simulatedProverAztecNode.stop();
176
157
  // The simulated prover node (now shutdown) used private key index 2
177
158
  const proverNodePrivateKey = getPrivateKeyFromIndex(2);
159
+ const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
178
160
  const proverNodeSenderAddress = privateKeyToAddress(new Buffer32(proverNodePrivateKey).toString());
179
161
  this.proverAddress = EthAddress.fromString(proverNodeSenderAddress);
180
162
  this.logger.verbose(`Funding prover node at ${proverNodeSenderAddress}`);
181
163
  await this.mintFeeJuice(proverNodeSenderAddress);
182
164
  this.logger.verbose('Starting prover node');
183
- const proverConfig = {
184
- ...this.context.aztecNodeConfig,
185
- txCollectionNodeRpcUrls: [],
165
+ const sponsoredFPCAddress = await getSponsoredFPCAddress();
166
+ const { prefilledPublicData } = await getGenesisValues(this.context.initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress));
167
+ const proverNodeConfig = {
168
+ ...config,
169
+ enableProverNode: true,
170
+ disableValidator: true,
186
171
  dataDirectory: undefined,
172
+ txCollectionNodeRpcUrls: [],
187
173
  proverId: this.proverAddress,
188
174
  realProofs: this.realProofs,
189
175
  proverAgentCount: 2,
190
- publisherPrivateKeys: [
191
- new SecretValue(`0x${proverNodePrivateKey.toString('hex')}`)
176
+ proverPublisherPrivateKeys: [
177
+ new SecretValue(proverNodePrivateKeyHex)
192
178
  ],
193
179
  proverNodeMaxPendingJobs: 100,
194
180
  proverNodeMaxParallelBlocksPerEpoch: 32,
@@ -198,17 +184,19 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
198
184
  txGatheringMaxParallelRequestsPerNode: 100,
199
185
  txGatheringTimeoutMs: 24_000,
200
186
  proverNodeFailedEpochStore: undefined,
201
- proverNodeEpochProvingDelayMs: undefined
187
+ proverNodeEpochProvingDelayMs: undefined,
188
+ validatorPrivateKeys: new SecretValue([])
202
189
  };
203
- const sponsoredFPCAddress = await getSponsoredFPCAddress();
204
- const { prefilledPublicData } = await getGenesisValues(this.context.initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress));
205
- this.proverNode = await createProverNode(proverConfig, {
206
- aztecNodeTxProvider: this.aztecNode,
207
- archiver: archiver
190
+ this.proverAztecNode = await AztecNodeService.createAndSync(proverNodeConfig, {
191
+ dateProvider: this.context.dateProvider,
192
+ p2pClientDeps: {
193
+ rpcTxProviders: [
194
+ this.aztecNode
195
+ ]
196
+ }
208
197
  }, {
209
198
  prefilledPublicData
210
199
  });
211
- await this.proverNode.start();
212
200
  this.logger.warn(`Proofs are now enabled`, {
213
201
  realProofs: this.realProofs
214
202
  });
@@ -235,8 +223,8 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
235
223
  for(let i = 0; i < this.provenComponents.length; i++){
236
224
  await this.provenComponents[i].teardown();
237
225
  }
238
- // clean up the full prover node
239
- await this.proverNode.stop();
226
+ // clean up the full prover node (by stopping its hosting aztec node)
227
+ await this.proverAztecNode.stop();
240
228
  await Barretenberg.destroySingleton();
241
229
  await this.bbConfigCleanup?.();
242
230
  await this.acvmConfigCleanup?.();
@@ -258,18 +246,18 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
258
246
  this.logger.info(`Minting complete`);
259
247
  const { fakeProofsAsset, accounts: [address], tokenSim } = this;
260
248
  tokenSim.mintPublic(address, publicAmount);
261
- const publicBalance = await fakeProofsAsset.methods.balance_of_public(address).simulate({
249
+ const { result: publicBalance } = await fakeProofsAsset.methods.balance_of_public(address).simulate({
262
250
  from: address
263
251
  });
264
252
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
265
253
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(address));
266
254
  tokenSim.mintPrivate(address, publicAmount);
267
- const privateBalance = await fakeProofsAsset.methods.balance_of_private(address).simulate({
255
+ const { result: privateBalance } = await fakeProofsAsset.methods.balance_of_private(address).simulate({
268
256
  from: address
269
257
  });
270
258
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
271
259
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(address));
272
- const totalSupply = await fakeProofsAsset.methods.total_supply().simulate({
260
+ const { result: totalSupply } = await fakeProofsAsset.methods.total_supply().simulate({
273
261
  from: address
274
262
  });
275
263
  this.logger.verbose(`Total supply: ${totalSupply}`);
@@ -0,0 +1,21 @@
1
+ /** Samples event-loop utilization, delay histogram, and heap usage per test, writing columnar text to a file. */
2
+ export declare class EluMonitor {
3
+ private filePath;
4
+ private intervalMs;
5
+ private timer;
6
+ private lastELU;
7
+ private histogram;
8
+ private testName;
9
+ private testStart;
10
+ private eluSamples;
11
+ constructor(filePath: string, intervalMs?: number);
12
+ /** Begin sampling for a test. Writes a header line and starts the periodic sampler. */
13
+ startTest(testName: string): void;
14
+ /** Stop sampling and write a summary line. */
15
+ stopTest(): void;
16
+ /** Alias for stopTest — call on process exit to flush any remaining data. */
17
+ stop(): void;
18
+ private sample;
19
+ private writeSummary;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWx1X21vbml0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9lbHVfbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxpSEFBaUg7QUFDakgscUJBQWEsVUFBVTtJQUNyQixPQUFPLENBQUMsUUFBUSxDQUFTO0lBQ3pCLE9BQU8sQ0FBQyxVQUFVLENBQVM7SUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBNkM7SUFDMUQsT0FBTyxDQUFDLE9BQU8sQ0FBbUM7SUFDbEQsT0FBTyxDQUFDLFNBQVMsQ0FBb0I7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBcUI7SUFDckMsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFFbEMsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFJaEQ7SUFFRCx1RkFBdUY7SUFDdkYsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQW1CaEM7SUFFRCw4Q0FBOEM7SUFDOUMsUUFBUSxJQUFJLElBQUksQ0FtQmY7SUFFRCwrRUFBNkU7SUFDN0UsSUFBSSxJQUFJLElBQUksQ0FFWDtJQUVELE9BQU8sQ0FBQyxNQUFNO0lBOEJkLE9BQU8sQ0FBQyxZQUFZO0NBbUJyQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elu_monitor.d.ts","sourceRoot":"","sources":["../../src/fixtures/elu_monitor.ts"],"names":[],"mappings":"AAKA,iHAAiH;AACjH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAAgB;IAElC,YAAY,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAIhD;IAED,uFAAuF;IACvF,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAmBhC;IAED,8CAA8C;IAC9C,QAAQ,IAAI,IAAI,CAmBf;IAED,+EAA6E;IAC7E,IAAI,IAAI,IAAI,CAEX;IAED,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,YAAY;CAmBrB"}