@aztec/end-to-end 0.0.1-commit.96dac018d → 0.0.1-commit.9badcec54

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 (133) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts +1 -1
  3. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.js +19 -26
  5. package/dest/bench/utils.d.ts +1 -1
  6. package/dest/bench/utils.d.ts.map +1 -1
  7. package/dest/bench/utils.js +6 -3
  8. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +3 -2
  9. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  10. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +15 -15
  11. package/dest/e2e_epochs/epochs_test.d.ts +3 -1
  12. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  13. package/dest/e2e_epochs/epochs_test.js +8 -5
  14. package/dest/e2e_fees/fees_test.d.ts +1 -1
  15. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  16. package/dest/e2e_fees/fees_test.js +14 -7
  17. package/dest/e2e_nested_contract/nested_contract_test.d.ts +1 -1
  18. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  19. package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
  20. package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
  21. package/dest/e2e_p2p/p2p_network.d.ts +8 -9
  22. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  23. package/dest/e2e_p2p/p2p_network.js +33 -29
  24. package/dest/e2e_p2p/reqresp/utils.d.ts +1 -1
  25. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
  26. package/dest/e2e_p2p/reqresp/utils.js +16 -3
  27. package/dest/e2e_p2p/shared.d.ts +25 -7
  28. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  29. package/dest/e2e_p2p/shared.js +49 -44
  30. package/dest/e2e_token_contract/token_contract_test.d.ts +1 -1
  31. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  32. package/dest/e2e_token_contract/token_contract_test.js +11 -11
  33. package/dest/fixtures/authwit_proxy.d.ts +3 -3
  34. package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
  35. package/dest/fixtures/authwit_proxy.js +4 -0
  36. package/dest/fixtures/e2e_prover_test.d.ts +4 -3
  37. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  38. package/dest/fixtures/e2e_prover_test.js +11 -16
  39. package/dest/fixtures/get_bb_config.d.ts +1 -1
  40. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  41. package/dest/fixtures/get_bb_config.js +5 -5
  42. package/dest/fixtures/setup.d.ts +18 -11
  43. package/dest/fixtures/setup.d.ts.map +1 -1
  44. package/dest/fixtures/setup.js +27 -21
  45. package/dest/fixtures/setup_p2p_test.d.ts +6 -6
  46. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  47. package/dest/fixtures/setup_p2p_test.js +8 -8
  48. package/dest/fixtures/token_utils.d.ts +1 -1
  49. package/dest/fixtures/token_utils.d.ts.map +1 -1
  50. package/dest/fixtures/token_utils.js +2 -5
  51. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  52. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  53. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  54. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  55. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  56. package/dest/forward-compatibility/wallet_service.js +109 -0
  57. package/dest/legacy-jest-resolver.d.cts +3 -0
  58. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  59. package/dest/shared/cross_chain_test_harness.d.ts +1 -1
  60. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  61. package/dest/shared/cross_chain_test_harness.js +13 -13
  62. package/dest/shared/gas_portal_test_harness.js +3 -3
  63. package/dest/shared/jest_setup.js +32 -1
  64. package/dest/shared/submit-transactions.d.ts +1 -1
  65. package/dest/shared/submit-transactions.d.ts.map +1 -1
  66. package/dest/shared/submit-transactions.js +1 -1
  67. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  68. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  69. package/dest/shared/uniswap_l1_l2.js +14 -21
  70. package/dest/simulators/lending_simulator.d.ts +1 -1
  71. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  72. package/dest/simulators/lending_simulator.js +4 -4
  73. package/dest/simulators/token_simulator.d.ts +1 -1
  74. package/dest/simulators/token_simulator.d.ts.map +1 -1
  75. package/dest/simulators/token_simulator.js +2 -2
  76. package/dest/spartan/setup_test_wallets.d.ts +4 -2
  77. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  78. package/dest/spartan/setup_test_wallets.js +69 -38
  79. package/dest/spartan/tx_metrics.js +1 -1
  80. package/dest/spartan/utils/config.d.ts +7 -1
  81. package/dest/spartan/utils/config.d.ts.map +1 -1
  82. package/dest/spartan/utils/config.js +3 -1
  83. package/dest/spartan/utils/index.d.ts +3 -1
  84. package/dest/spartan/utils/index.d.ts.map +1 -1
  85. package/dest/spartan/utils/index.js +4 -0
  86. package/dest/spartan/utils/nodes.js +1 -1
  87. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  88. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  89. package/dest/spartan/utils/pod_logs.js +74 -0
  90. package/dest/test-wallet/test_wallet.d.ts +24 -23
  91. package/dest/test-wallet/test_wallet.d.ts.map +1 -1
  92. package/dest/test-wallet/test_wallet.js +115 -80
  93. package/dest/test-wallet/worker_wallet.d.ts +4 -4
  94. package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
  95. package/dest/test-wallet/worker_wallet_schema.d.ts +10 -5
  96. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
  97. package/package.json +43 -44
  98. package/src/bench/client_flows/client_flows_benchmark.ts +27 -10
  99. package/src/bench/utils.ts +7 -2
  100. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +21 -20
  101. package/src/e2e_epochs/epochs_test.ts +17 -5
  102. package/src/e2e_fees/fees_test.ts +14 -7
  103. package/src/e2e_nested_contract/nested_contract_test.ts +6 -4
  104. package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
  105. package/src/e2e_p2p/p2p_network.ts +47 -48
  106. package/src/e2e_p2p/reqresp/utils.ts +24 -3
  107. package/src/e2e_p2p/shared.ts +71 -59
  108. package/src/e2e_token_contract/token_contract_test.ts +16 -8
  109. package/src/fixtures/authwit_proxy.ts +4 -0
  110. package/src/fixtures/e2e_prover_test.ts +19 -18
  111. package/src/fixtures/get_bb_config.ts +7 -6
  112. package/src/fixtures/setup.ts +46 -32
  113. package/src/fixtures/setup_p2p_test.ts +9 -9
  114. package/src/fixtures/token_utils.ts +1 -2
  115. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  116. package/src/forward-compatibility/wallet_service.ts +104 -0
  117. package/src/guides/up_quick_start.sh +0 -2
  118. package/src/legacy-jest-resolver.cjs +135 -0
  119. package/src/shared/cross_chain_test_harness.ts +13 -9
  120. package/src/shared/gas_portal_test_harness.ts +1 -2
  121. package/src/shared/jest_setup.ts +36 -1
  122. package/src/shared/submit-transactions.ts +1 -4
  123. package/src/shared/uniswap_l1_l2.ts +35 -32
  124. package/src/simulators/lending_simulator.ts +8 -4
  125. package/src/simulators/token_simulator.ts +6 -2
  126. package/src/spartan/setup_test_wallets.ts +90 -35
  127. package/src/spartan/tx_metrics.ts +1 -1
  128. package/src/spartan/utils/config.ts +2 -0
  129. package/src/spartan/utils/index.ts +6 -0
  130. package/src/spartan/utils/nodes.ts +1 -1
  131. package/src/spartan/utils/pod_logs.ts +99 -0
  132. package/src/test-wallet/test_wallet.ts +144 -99
  133. package/src/test-wallet/worker_wallet.ts +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"worker_wallet_schema.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet_schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iGAA+F;AAC/F,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9B,CAAC"}
1
+ {"version":3,"file":"worker_wallet_schema.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet_schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iGAA+F;AAC/F,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAI9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "0.0.1-commit.96dac018d",
3
+ "version": "0.0.1-commit.9badcec54",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "inherits": [
@@ -12,12 +12,12 @@
12
12
  "build:dev": "../scripts/tsc.sh --watch",
13
13
  "clean": "rm -rf ./dest .tsbuildinfo",
14
14
  "test:with-alerts": "./scripts/test-with-alerts.sh",
15
- "test:e2e": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
15
+ "test:e2e": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000",
16
16
  "test:e2e-docker": "./scripts/run_test.sh simple",
17
17
  "test:e2e-no-docker": "echo 'The command test:e2e-no-docker is now the same as test:e2e. You can now run this dropping the no-docker suffix.'; yarn test:e2e",
18
- "test:profile": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 0x --output-dir \"flame_graph/{pid}.0x\" -- node --experimental-vm-modules ../node_modules/jest/bin/jest.js --runInBand --testTimeout=300000 --forceExit",
18
+ "test:profile": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 0x --output-dir \"flame_graph/{pid}.0x\" -- node --experimental-vm-modules ../node_modules/jest/bin/jest.js --runInBand --testTimeout=300000",
19
19
  "serve:flames": "python3 -m http.server --directory \"flame_graph\" 8000",
20
- "test:debug": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --inspect --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
20
+ "test:debug": "LOG_LEVEL=${LOG_LEVEL:-verbose} NODE_NO_WARNINGS=1 node --inspect --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000",
21
21
  "test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
22
22
  "test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --no-cache --runInBand --config jest.integration.config.json",
23
23
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests src/fixtures",
@@ -26,45 +26,44 @@
26
26
  "formatting": "run -T prettier --check ./src && run -T eslint ./src"
27
27
  },
28
28
  "dependencies": {
29
- "@aztec/accounts": "0.0.1-commit.96dac018d",
30
- "@aztec/archiver": "0.0.1-commit.96dac018d",
31
- "@aztec/aztec": "0.0.1-commit.96dac018d",
32
- "@aztec/aztec-node": "0.0.1-commit.96dac018d",
33
- "@aztec/aztec.js": "0.0.1-commit.96dac018d",
34
- "@aztec/bb-prover": "0.0.1-commit.96dac018d",
35
- "@aztec/bb.js": "0.0.1-commit.96dac018d",
36
- "@aztec/blob-client": "0.0.1-commit.96dac018d",
37
- "@aztec/blob-lib": "0.0.1-commit.96dac018d",
38
- "@aztec/bot": "0.0.1-commit.96dac018d",
39
- "@aztec/cli": "0.0.1-commit.96dac018d",
40
- "@aztec/constants": "0.0.1-commit.96dac018d",
41
- "@aztec/entrypoints": "0.0.1-commit.96dac018d",
42
- "@aztec/epoch-cache": "0.0.1-commit.96dac018d",
43
- "@aztec/ethereum": "0.0.1-commit.96dac018d",
44
- "@aztec/foundation": "0.0.1-commit.96dac018d",
45
- "@aztec/kv-store": "0.0.1-commit.96dac018d",
46
- "@aztec/l1-artifacts": "0.0.1-commit.96dac018d",
47
- "@aztec/merkle-tree": "0.0.1-commit.96dac018d",
48
- "@aztec/node-keystore": "0.0.1-commit.96dac018d",
49
- "@aztec/noir-contracts.js": "0.0.1-commit.96dac018d",
50
- "@aztec/noir-noirc_abi": "0.0.1-commit.96dac018d",
51
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.96dac018d",
52
- "@aztec/noir-test-contracts.js": "0.0.1-commit.96dac018d",
53
- "@aztec/p2p": "0.0.1-commit.96dac018d",
54
- "@aztec/protocol-contracts": "0.0.1-commit.96dac018d",
55
- "@aztec/prover-client": "0.0.1-commit.96dac018d",
56
- "@aztec/prover-node": "0.0.1-commit.96dac018d",
57
- "@aztec/pxe": "0.0.1-commit.96dac018d",
58
- "@aztec/sequencer-client": "0.0.1-commit.96dac018d",
59
- "@aztec/simulator": "0.0.1-commit.96dac018d",
60
- "@aztec/slasher": "0.0.1-commit.96dac018d",
61
- "@aztec/stdlib": "0.0.1-commit.96dac018d",
62
- "@aztec/telemetry-client": "0.0.1-commit.96dac018d",
63
- "@aztec/validator-client": "0.0.1-commit.96dac018d",
64
- "@aztec/validator-ha-signer": "0.0.1-commit.96dac018d",
65
- "@aztec/wallet-sdk": "0.0.1-commit.96dac018d",
66
- "@aztec/wallets": "0.0.1-commit.96dac018d",
67
- "@aztec/world-state": "0.0.1-commit.96dac018d",
29
+ "@aztec/accounts": "0.0.1-commit.9badcec54",
30
+ "@aztec/archiver": "0.0.1-commit.9badcec54",
31
+ "@aztec/aztec": "0.0.1-commit.9badcec54",
32
+ "@aztec/aztec-node": "0.0.1-commit.9badcec54",
33
+ "@aztec/aztec.js": "0.0.1-commit.9badcec54",
34
+ "@aztec/bb-prover": "0.0.1-commit.9badcec54",
35
+ "@aztec/bb.js": "0.0.1-commit.9badcec54",
36
+ "@aztec/blob-client": "0.0.1-commit.9badcec54",
37
+ "@aztec/blob-lib": "0.0.1-commit.9badcec54",
38
+ "@aztec/bot": "0.0.1-commit.9badcec54",
39
+ "@aztec/cli": "0.0.1-commit.9badcec54",
40
+ "@aztec/constants": "0.0.1-commit.9badcec54",
41
+ "@aztec/entrypoints": "0.0.1-commit.9badcec54",
42
+ "@aztec/epoch-cache": "0.0.1-commit.9badcec54",
43
+ "@aztec/ethereum": "0.0.1-commit.9badcec54",
44
+ "@aztec/foundation": "0.0.1-commit.9badcec54",
45
+ "@aztec/kv-store": "0.0.1-commit.9badcec54",
46
+ "@aztec/l1-artifacts": "0.0.1-commit.9badcec54",
47
+ "@aztec/node-keystore": "0.0.1-commit.9badcec54",
48
+ "@aztec/noir-contracts.js": "0.0.1-commit.9badcec54",
49
+ "@aztec/noir-noirc_abi": "0.0.1-commit.9badcec54",
50
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.9badcec54",
51
+ "@aztec/noir-test-contracts.js": "0.0.1-commit.9badcec54",
52
+ "@aztec/p2p": "0.0.1-commit.9badcec54",
53
+ "@aztec/protocol-contracts": "0.0.1-commit.9badcec54",
54
+ "@aztec/prover-client": "0.0.1-commit.9badcec54",
55
+ "@aztec/prover-node": "0.0.1-commit.9badcec54",
56
+ "@aztec/pxe": "0.0.1-commit.9badcec54",
57
+ "@aztec/sequencer-client": "0.0.1-commit.9badcec54",
58
+ "@aztec/simulator": "0.0.1-commit.9badcec54",
59
+ "@aztec/slasher": "0.0.1-commit.9badcec54",
60
+ "@aztec/stdlib": "0.0.1-commit.9badcec54",
61
+ "@aztec/telemetry-client": "0.0.1-commit.9badcec54",
62
+ "@aztec/validator-client": "0.0.1-commit.9badcec54",
63
+ "@aztec/validator-ha-signer": "0.0.1-commit.9badcec54",
64
+ "@aztec/wallet-sdk": "0.0.1-commit.9badcec54",
65
+ "@aztec/wallets": "0.0.1-commit.9badcec54",
66
+ "@aztec/world-state": "0.0.1-commit.9badcec54",
68
67
  "@iarna/toml": "^2.2.5",
69
68
  "@jest/globals": "^30.0.0",
70
69
  "@noble/curves": "=1.0.0",
@@ -76,7 +75,6 @@
76
75
  "@types/koa-static": "^4.0.2",
77
76
  "@types/lodash.every": "^4.6.7",
78
77
  "@types/node": "^22.15.17",
79
- "@viem/anvil": "^0.0.9",
80
78
  "buffer": "^6.0.3",
81
79
  "crypto-browserify": "^3.12.1",
82
80
  "fs-extra": "^11.2.0",
@@ -161,6 +159,7 @@
161
159
  "moduleNameMapper": {
162
160
  "^(\\.{1,2}/.*)\\.[cm]?js$": "$1"
163
161
  },
162
+ "resolver": "<rootDir>/legacy-jest-resolver.cjs",
164
163
  "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
165
164
  "rootDir": "./src",
166
165
  "testTimeout": 120000,
@@ -1,10 +1,11 @@
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
1
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
2
3
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
3
4
  import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
4
5
  import { type Logger, createLogger } from '@aztec/aztec.js/log';
5
6
  import type { AztecNode } from '@aztec/aztec.js/node';
6
7
  import type { Wallet } from '@aztec/aztec.js/wallet';
7
- import { CheatCodes } from '@aztec/aztec/testing';
8
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
8
9
  import { createExtendedL1Client } from '@aztec/ethereum/client';
9
10
  import { RollupContract } from '@aztec/ethereum/contracts';
10
11
  import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
@@ -130,11 +131,14 @@ export class ClientFlowsBenchmark {
130
131
 
131
132
  async setup() {
132
133
  this.logger.info('Setting up subsystems from fresh');
134
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
135
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
133
136
  this.context = await setup(0, {
134
137
  ...this.setupOptions,
135
138
  fundSponsoredFPC: true,
136
139
  skipAccountDeployment: true,
137
140
  l1ContractsArgs: this.setupOptions,
141
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
138
142
  });
139
143
  await this.applyBaseSetup();
140
144
 
@@ -148,6 +152,7 @@ export class ClientFlowsBenchmark {
148
152
 
149
153
  async teardown() {
150
154
  await this.chainMonitor.stop();
155
+ await this.userWallet?.stop();
151
156
  await teardown(this.context);
152
157
  }
153
158
 
@@ -161,11 +166,15 @@ export class ClientFlowsBenchmark {
161
166
 
162
167
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
163
168
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
164
- const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({ from: address });
169
+ const { result: balanceBefore } = await this.bananaCoin.methods
170
+ .balance_of_private(address)
171
+ .simulate({ from: address });
165
172
 
166
173
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
167
174
 
168
- const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({ from: address });
175
+ const { result: balanceAfter } = await this.bananaCoin.methods
176
+ .balance_of_private(address)
177
+ .simulate({ from: address });
169
178
  expect(balanceAfter).toEqual(balanceBefore + amount);
170
179
  }
171
180
 
@@ -247,7 +256,9 @@ export class ClientFlowsBenchmark {
247
256
  'BC',
248
257
  'BC',
249
258
  18n,
250
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
259
+ ).send({
260
+ from: this.adminAddress,
261
+ });
251
262
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
252
263
  this.bananaCoin = bananaCoin;
253
264
  this.bananaCoinInstance = bananaCoinInstance;
@@ -261,7 +272,9 @@ export class ClientFlowsBenchmark {
261
272
  'CBC',
262
273
  'CBC',
263
274
  18n,
264
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
275
+ ).send({
276
+ from: this.adminAddress,
277
+ });
265
278
  this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
266
279
  this.candyBarCoin = candyBarCoin;
267
280
  this.candyBarCoinInstance = candyBarCoinInstance;
@@ -277,7 +290,9 @@ export class ClientFlowsBenchmark {
277
290
  this.adminWallet,
278
291
  bananaCoin.address,
279
292
  this.adminAddress,
280
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
293
+ ).send({
294
+ from: this.adminAddress,
295
+ });
281
296
 
282
297
  this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
283
298
 
@@ -326,7 +341,7 @@ export class ClientFlowsBenchmark {
326
341
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
327
342
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
328
343
  await behchysDeployMethod.send({
329
- from: AztecAddress.ZERO,
344
+ from: NO_FROM,
330
345
  fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
331
346
  });
332
347
  // Register benchy on the user's Wallet, where we're going to be interacting from
@@ -346,13 +361,15 @@ export class ClientFlowsBenchmark {
346
361
  'LPT',
347
362
  'LPT',
348
363
  18n,
349
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
364
+ ).send({
365
+ from: this.adminAddress,
366
+ });
350
367
  const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
351
368
  this.adminWallet,
352
369
  this.bananaCoin.address,
353
370
  this.candyBarCoin.address,
354
371
  liquidityToken.address,
355
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
372
+ ).send({ from: this.adminAddress });
356
373
  this.logger.info(`AMM deployed at ${amm.address}`);
357
374
  await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
358
375
  this.liquidityToken = liquidityToken;
@@ -370,7 +387,7 @@ export class ClientFlowsBenchmark {
370
387
  // The private fee paying method assembled on the app side requires knowledge of the maximum
371
388
  // fee the user is willing to pay
372
389
  const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
373
- const gasSettings = GasSettings.default({ maxFeesPerGas });
390
+ const gasSettings = GasSettings.fallback({ maxFeesPerGas });
374
391
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
375
392
  }
376
393
 
@@ -25,7 +25,7 @@ export async function benchmarkSetup(
25
25
  ) {
26
26
  const context = await setup(1, { ...opts, telemetryConfig: { benchmark: true } });
27
27
  const defaultAccountAddress = context.accounts[0];
28
- const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
28
+ const { contract } = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
29
29
  context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
30
30
  const sequencer = (context.aztecNode as AztecNodeService).getSequencer()!;
31
31
  const telemetry = context.telemetryClient as BenchmarkTelemetryClient;
@@ -149,7 +149,12 @@ export async function sendTxs(
149
149
  context.logger.info(`Creating ${txCount} txs`);
150
150
  const [from] = context.accounts;
151
151
  context.logger.info(`Sending ${txCount} txs`);
152
- return Promise.all(calls.map(call => call.send({ from, wait: NO_WAIT })));
152
+ return Promise.all(
153
+ calls.map(async call => {
154
+ const { txHash } = await call.send({ from, wait: NO_WAIT });
155
+ return txHash;
156
+ }),
157
+ );
153
158
  }
154
159
 
155
160
  export async function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
@@ -10,6 +10,7 @@ import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist'
10
10
  import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
11
11
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
12
12
  import type { SequencerClient } from '@aztec/sequencer-client';
13
+ import type { AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
13
14
 
14
15
  import { jest } from '@jest/globals';
15
16
 
@@ -57,7 +58,7 @@ export class BlacklistTokenContractTest {
57
58
  authwitProxy!: GenericProxyContract;
58
59
  cheatCodes!: CheatCodes;
59
60
  sequencer!: SequencerClient;
60
- aztecNode!: AztecNode;
61
+ aztecNode!: AztecNode & AztecNodeDebug;
61
62
 
62
63
  adminAddress!: AztecAddress;
63
64
  otherAddress!: AztecAddress;
@@ -68,11 +69,7 @@ export class BlacklistTokenContractTest {
68
69
  }
69
70
 
70
71
  async crossTimestampOfChange() {
71
- await this.cheatCodes.warpL2TimeAtLeastBy(
72
- this.sequencer,
73
- this.aztecNode,
74
- BlacklistTokenContractTest.CHANGE_ROLES_DELAY,
75
- );
72
+ await this.cheatCodes.warpL2TimeAtLeastBy(this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
76
73
  }
77
74
 
78
75
  /**
@@ -107,20 +104,24 @@ export class BlacklistTokenContractTest {
107
104
  await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
108
105
 
109
106
  this.logger.verbose(`Deploying TokenContract...`);
110
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
107
+ ({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
111
108
  from: this.adminAddress,
112
- });
109
+ }));
113
110
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
114
111
 
115
112
  this.logger.verbose(`Deploying bad account...`);
116
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({ from: this.adminAddress });
113
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
114
+ from: this.adminAddress,
115
+ }));
117
116
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
118
117
 
119
118
  // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
120
119
  // (so their notes are in scope), but msg_sender in the target must differ from the note owner
121
120
  // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
122
121
  this.logger.verbose(`Deploying generic proxy...`);
123
- this.authwitProxy = await GenericProxyContract.deploy(this.wallet).send({ from: this.adminAddress });
122
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
123
+ from: this.adminAddress,
124
+ }));
124
125
  this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
125
126
 
126
127
  await this.crossTimestampOfChange();
@@ -133,9 +134,9 @@ export class BlacklistTokenContractTest {
133
134
  [this.adminAddress, this.otherAddress, this.blacklistedAddress],
134
135
  );
135
136
 
136
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
137
- new Role().withAdmin().toNoirStruct(),
138
- );
137
+ expect(
138
+ (await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
139
+ ).toEqual(new Role().withAdmin().toNoirStruct());
139
140
  }
140
141
 
141
142
  async setup() {
@@ -189,9 +190,9 @@ export class BlacklistTokenContractTest {
189
190
 
190
191
  await this.crossTimestampOfChange();
191
192
 
192
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
193
- adminMinterRole.toNoirStruct(),
194
- );
193
+ expect(
194
+ (await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
195
+ ).toEqual(adminMinterRole.toNoirStruct());
195
196
 
196
197
  this.logger.verbose(`Minting ${amount} publicly...`);
197
198
  await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress });
@@ -199,7 +200,7 @@ export class BlacklistTokenContractTest {
199
200
  this.logger.verbose(`Minting ${amount} privately...`);
200
201
  const secret = Fr.random();
201
202
  const secretHash = await computeSecretHash(secret);
202
- const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
203
+ const { receipt } = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
203
204
 
204
205
  await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
205
206
  await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({ from: this.adminAddress });
@@ -207,20 +208,20 @@ export class BlacklistTokenContractTest {
207
208
 
208
209
  tokenSim.mintPublic(this.adminAddress, amount);
209
210
 
210
- const publicBalance = await asset.methods
211
+ const { result: publicBalance } = await asset.methods
211
212
  .balance_of_public(this.adminAddress)
212
213
  .simulate({ from: this.adminAddress });
213
214
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
214
215
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
215
216
 
216
217
  tokenSim.mintPrivate(this.adminAddress, amount);
217
- const privateBalance = await asset.methods
218
+ const { result: privateBalance } = await asset.methods
218
219
  .balance_of_private(this.adminAddress)
219
220
  .simulate({ from: this.adminAddress });
220
221
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
221
222
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
222
223
 
223
- const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
224
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({ from: this.adminAddress });
224
225
  this.logger.verbose(`Total supply: ${totalSupply}`);
225
226
  expect(totalSupply).toEqual(tokenSim.totalSupply);
226
227
  }
@@ -28,6 +28,7 @@ import { type SequencerClient, type SequencerEvents, SequencerState } from '@azt
28
28
  import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
29
29
  import { type L1RollupConstants, getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers';
30
30
  import { tryStop } from '@aztec/stdlib/interfaces/server';
31
+ import type { SlashingProtectionDatabase } from '@aztec/validator-ha-signer/types';
31
32
 
32
33
  import { join } from 'path';
33
34
  import type { Hex } from 'viem';
@@ -144,7 +145,7 @@ export class EpochsTestContext {
144
145
  proverId: EthAddress.fromNumber(1),
145
146
  worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
146
147
  exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
147
- slasherFlavor: 'none',
148
+ slasherEnabled: false,
148
149
  l1PublishingTime,
149
150
  ...opts,
150
151
  },
@@ -181,6 +182,7 @@ export class EpochsTestContext {
181
182
  ethereumSlotDuration,
182
183
  proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
183
184
  targetCommitteeSize: await this.rollup.getTargetCommitteeSize(),
185
+ rollupManaLimit: Number(await this.rollup.getManaLimit()),
184
186
  };
185
187
 
186
188
  this.logger.info(
@@ -221,7 +223,7 @@ export class EpochsTestContext {
221
223
  },
222
224
  },
223
225
  {
224
- prefilledPublicData: this.context.prefilledPublicData ?? [],
226
+ genesis: this.context.genesis,
225
227
  dontStart: opts.dontStart,
226
228
  },
227
229
  ),
@@ -237,13 +239,21 @@ export class EpochsTestContext {
237
239
 
238
240
  public createValidatorNode(
239
241
  privateKeys: `0x${string}`[],
240
- opts: Partial<AztecNodeConfig> & { dontStartSequencer?: boolean } = {},
242
+ opts: Partial<AztecNodeConfig> & {
243
+ dontStartSequencer?: boolean;
244
+ slashingProtectionDb?: SlashingProtectionDatabase;
245
+ } = {},
241
246
  ) {
242
247
  this.logger.warn('Creating and syncing a validator node...');
243
248
  return this.createNode({ ...opts, disableValidator: false, validatorPrivateKeys: new SecretValue(privateKeys) });
244
249
  }
245
250
 
246
- private async createNode(opts: Partial<AztecNodeConfig> & { dontStartSequencer?: boolean } = {}) {
251
+ private async createNode(
252
+ opts: Partial<AztecNodeConfig> & {
253
+ dontStartSequencer?: boolean;
254
+ slashingProtectionDb?: SlashingProtectionDatabase;
255
+ } = {},
256
+ ) {
247
257
  const nodeIndex = this.nodes.length + 1;
248
258
  const actorPrefix = opts.disableValidator ? 'node' : 'validator';
249
259
  const { mockGossipSubNetwork } = this.context;
@@ -256,6 +266,7 @@ export class EpochsTestContext {
256
266
  ...resolvedConfig,
257
267
  dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
258
268
  validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
269
+ nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
259
270
  p2pEnabled,
260
271
  p2pIp,
261
272
  },
@@ -264,9 +275,10 @@ export class EpochsTestContext {
264
275
  p2pClientDeps: {
265
276
  p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
266
277
  },
278
+ slashingProtectionDb: opts.slashingProtectionDb,
267
279
  },
268
280
  {
269
- prefilledPublicData: this.context.prefilledPublicData,
281
+ genesis: this.context.genesis,
270
282
  ...opts,
271
283
  },
272
284
  ),
@@ -1,7 +1,7 @@
1
1
  import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { type Logger, createLogger } from '@aztec/aztec.js/log';
3
3
  import type { AztecNode } from '@aztec/aztec.js/node';
4
- import { CheatCodes } from '@aztec/aztec/testing';
4
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
5
5
  import { createExtendedL1Client } from '@aztec/ethereum/client';
6
6
  import { RollupContract } from '@aztec/ethereum/contracts';
7
7
  import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
@@ -104,12 +104,15 @@ export class FeesTest {
104
104
 
105
105
  async setup() {
106
106
  this.logger.verbose('Setting up fresh context...');
107
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
108
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
107
109
  this.context = await setup(0, {
108
110
  startProverNode: true,
109
111
  ...this.setupOptions,
110
112
  fundSponsoredFPC: true,
111
113
  skipAccountDeployment: true,
112
114
  l1ContractsArgs: { ...this.setupOptions },
115
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
113
116
  });
114
117
 
115
118
  this.rollupContract = RollupContract.getFromConfig(this.context.config);
@@ -157,11 +160,15 @@ export class FeesTest {
157
160
 
158
161
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
159
162
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
160
- const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({ from: address });
163
+ const { result: balanceBefore } = await this.bananaCoin.methods
164
+ .balance_of_private(address)
165
+ .simulate({ from: address });
161
166
 
162
167
  await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
163
168
 
164
- const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({ from: address });
169
+ const { result: balanceAfter } = await this.bananaCoin.methods
170
+ .balance_of_private(address)
171
+ .simulate({ from: address });
165
172
  expect(balanceAfter).toEqual(balanceBefore + amount);
166
173
  }
167
174
 
@@ -186,7 +193,7 @@ export class FeesTest {
186
193
  this.wallet = this.context.wallet;
187
194
  this.aztecNode = this.context.aztecNodeService;
188
195
  this.aztecNodeAdmin = this.context.aztecNodeService;
189
- this.gasSettings = GasSettings.default({ maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2) });
196
+ this.gasSettings = GasSettings.fallback({ maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2) });
190
197
  this.cheatCodes = this.context.cheatCodes;
191
198
  this.accounts = deployedAccounts.map(a => a.address);
192
199
  this.accounts.forEach((a, i) => this.logger.verbose(`Account ${i} address: ${a}`));
@@ -223,7 +230,7 @@ export class FeesTest {
223
230
  async applyDeployBananaToken() {
224
231
  this.logger.info('Applying deploy banana token setup');
225
232
 
226
- const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
233
+ const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
227
234
  from: this.aliceAddress,
228
235
  });
229
236
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
@@ -244,7 +251,7 @@ export class FeesTest {
244
251
  expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
245
252
 
246
253
  const bananaCoin = this.bananaCoin;
247
- const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
254
+ const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
248
255
  from: this.aliceAddress,
249
256
  });
250
257
 
@@ -275,7 +282,7 @@ export class FeesTest {
275
282
 
276
283
  // @todo @lherskind As we deal with #13601
277
284
  // Right now the value is from `FeeLib.sol`
278
- const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
285
+ const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
279
286
 
280
287
  // We round up
281
288
  const mulDiv = (a: bigint, b: bigint, c: bigint) => (a * b) / c + ((a * b) % c > 0n ? 1n : 0n);
@@ -65,9 +65,11 @@ export class NestedContractTest {
65
65
 
66
66
  async applyManual() {
67
67
  this.logger.info('Deploying parent and child contracts');
68
- const parentContract = await ParentContract.deploy(this.wallet).send({ from: this.defaultAccountAddress });
69
- const childContract = await ChildContract.deploy(this.wallet).send({ from: this.defaultAccountAddress });
70
- this.parentContract = parentContract;
71
- this.childContract = childContract;
68
+ ({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
69
+ from: this.defaultAccountAddress,
70
+ }));
71
+ ({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
72
+ from: this.defaultAccountAddress,
73
+ }));
72
74
  }
73
75
  }
@@ -58,6 +58,7 @@ export class P2PInactivityTest {
58
58
  basePort: BOOT_NODE_UDP_PORT,
59
59
  startProverNode: true,
60
60
  initialConfig: {
61
+ anvilSlotsInAnEpoch: 4,
61
62
  proverNodeConfig: { proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000 },
62
63
  aztecTargetCommitteeSize: COMMITTEE_SIZE,
63
64
  aztecSlotDuration: AZTEC_SLOT_DURATION,
@@ -66,7 +67,6 @@ export class P2PInactivityTest {
66
67
  listenAddress: '127.0.0.1',
67
68
  minTxsPerBlock: 0,
68
69
  aztecEpochDuration: EPOCH_DURATION,
69
- validatorReexecute: false,
70
70
  sentinelEnabled: true,
71
71
  slashingQuorum: SLASHING_QUORUM,
72
72
  slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
@@ -108,7 +108,7 @@ export class P2PInactivityTest {
108
108
  this.test.bootstrapNodeEnr,
109
109
  NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
110
110
  BOOT_NODE_UDP_PORT,
111
- this.test.prefilledPublicData,
111
+ this.test.genesis,
112
112
  this.dataDir,
113
113
  undefined,
114
114
  Number(this.keepInitialNode),
@@ -122,7 +122,7 @@ export class P2PInactivityTest {
122
122
  this.test.bootstrapNodeEnr,
123
123
  this.inactiveNodeCount,
124
124
  BOOT_NODE_UDP_PORT,
125
- this.test.prefilledPublicData,
125
+ this.test.genesis,
126
126
  this.dataDir,
127
127
  undefined,
128
128
  NUM_NODES - this.inactiveNodeCount,