@aztec/p2p 0.86.0 → 0.87.0

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 (159) hide show
  1. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  2. package/dest/client/factory.d.ts +4 -1
  3. package/dest/client/factory.d.ts.map +1 -1
  4. package/dest/client/factory.js +16 -14
  5. package/dest/client/index.d.ts +1 -0
  6. package/dest/client/index.d.ts.map +1 -1
  7. package/dest/client/index.js +1 -0
  8. package/dest/client/interface.d.ts +155 -0
  9. package/dest/client/interface.d.ts.map +1 -0
  10. package/dest/client/interface.js +9 -0
  11. package/dest/client/p2p_client.d.ts +26 -164
  12. package/dest/client/p2p_client.d.ts.map +1 -1
  13. package/dest/client/p2p_client.js +185 -114
  14. package/dest/config.d.ts +5 -6
  15. package/dest/config.d.ts.map +1 -1
  16. package/dest/config.js +6 -11
  17. package/dest/enr/generate-enr.d.ts +9 -1
  18. package/dest/enr/generate-enr.d.ts.map +1 -1
  19. package/dest/enr/generate-enr.js +24 -2
  20. package/dest/index.d.ts +1 -0
  21. package/dest/index.d.ts.map +1 -1
  22. package/dest/index.js +1 -0
  23. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +2 -0
  24. package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
  25. package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +4 -4
  26. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +1 -0
  27. package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
  28. package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +8 -2
  29. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +1 -0
  30. package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
  31. package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +5 -2
  32. package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
  33. package/dest/mem_pools/attestation_pool/mocks.js +2 -2
  34. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +4 -0
  35. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
  36. package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +50 -14
  37. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +3 -0
  38. package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
  39. package/dest/mem_pools/tx_pool/memory_tx_pool.js +9 -0
  40. package/dest/mem_pools/tx_pool/tx_pool.d.ts +9 -0
  41. package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
  42. package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
  43. package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +13 -5
  44. package/dest/msg_validators/attestation_validator/attestation_validator.js +1 -1
  45. package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +1 -1
  46. package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
  47. package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
  48. package/dest/msg_validators/tx_validator/data_validator.js +15 -14
  49. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
  50. package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
  51. package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
  52. package/dest/msg_validators/tx_validator/factory.d.ts +14 -0
  53. package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
  54. package/dest/msg_validators/tx_validator/factory.js +62 -0
  55. package/dest/msg_validators/tx_validator/gas_validator.js +3 -3
  56. package/dest/msg_validators/tx_validator/metadata_validator.d.ts +8 -4
  57. package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -1
  58. package/dest/msg_validators/tx_validator/metadata_validator.js +35 -17
  59. package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
  60. package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
  61. package/dest/msg_validators/tx_validator/tx_proof_validator.js +1 -1
  62. package/dest/services/discv5/discV5_service.d.ts +2 -2
  63. package/dest/services/discv5/discV5_service.d.ts.map +1 -1
  64. package/dest/services/discv5/discV5_service.js +9 -13
  65. package/dest/services/dummy_service.d.ts +3 -3
  66. package/dest/services/dummy_service.d.ts.map +1 -1
  67. package/dest/services/dummy_service.js +6 -1
  68. package/dest/services/encoding.d.ts +1 -3
  69. package/dest/services/encoding.d.ts.map +1 -1
  70. package/dest/services/libp2p/libp2p_service.d.ts +4 -2
  71. package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
  72. package/dest/services/libp2p/libp2p_service.js +94 -88
  73. package/dest/services/peer-manager/metrics.d.ts.map +1 -1
  74. package/dest/services/peer-manager/peer_manager.d.ts +1 -1
  75. package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
  76. package/dest/services/peer-manager/peer_manager.js +11 -2
  77. package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
  78. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -2
  79. package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
  80. package/dest/services/reqresp/connection-sampler/connection_sampler.js +41 -21
  81. package/dest/services/reqresp/interface.d.ts +1 -3
  82. package/dest/services/reqresp/interface.d.ts.map +1 -1
  83. package/dest/services/reqresp/metrics.d.ts.map +1 -1
  84. package/dest/services/reqresp/protocols/goodbye.d.ts +0 -2
  85. package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
  86. package/dest/services/reqresp/protocols/goodbye.js +1 -1
  87. package/dest/services/reqresp/protocols/ping.d.ts +0 -2
  88. package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
  89. package/dest/services/reqresp/protocols/status.d.ts +0 -2
  90. package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
  91. package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
  92. package/dest/services/reqresp/reqresp.d.ts +1 -3
  93. package/dest/services/reqresp/reqresp.d.ts.map +1 -1
  94. package/dest/services/reqresp/reqresp.js +13 -10
  95. package/dest/services/service.d.ts +4 -3
  96. package/dest/services/service.d.ts.map +1 -1
  97. package/dest/test-helpers/get-ports.d.ts.map +1 -1
  98. package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
  99. package/dest/test-helpers/make-test-p2p-clients.js +2 -2
  100. package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
  101. package/dest/test-helpers/reqresp-nodes.js +1 -1
  102. package/dest/testbench/p2p_client_testbench_worker.js +11 -6
  103. package/dest/testbench/testbench.js +1 -1
  104. package/dest/testbench/worker_client_manager.d.ts +0 -1
  105. package/dest/testbench/worker_client_manager.d.ts.map +1 -1
  106. package/dest/testbench/worker_client_manager.js +2 -2
  107. package/dest/types/index.d.ts +1 -0
  108. package/dest/types/index.d.ts.map +1 -1
  109. package/dest/types/index.js +1 -0
  110. package/dest/versioning.d.ts +2 -2
  111. package/dest/versioning.d.ts.map +1 -1
  112. package/dest/versioning.js +6 -1
  113. package/package.json +15 -15
  114. package/src/bootstrap/bootstrap.ts +1 -1
  115. package/src/client/factory.ts +38 -33
  116. package/src/client/index.ts +1 -0
  117. package/src/client/interface.ts +186 -0
  118. package/src/client/p2p_client.ts +226 -287
  119. package/src/config.ts +11 -18
  120. package/src/enr/generate-enr.ts +35 -3
  121. package/src/index.ts +1 -0
  122. package/src/mem_pools/attestation_pool/attestation_pool.ts +3 -0
  123. package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +4 -4
  124. package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +11 -4
  125. package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +10 -3
  126. package/src/mem_pools/attestation_pool/mocks.ts +2 -2
  127. package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +79 -34
  128. package/src/mem_pools/tx_pool/memory_tx_pool.ts +16 -1
  129. package/src/mem_pools/tx_pool/tx_pool.ts +12 -0
  130. package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +9 -3
  131. package/src/msg_validators/attestation_validator/attestation_validator.ts +1 -1
  132. package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +1 -1
  133. package/src/msg_validators/tx_validator/block_header_validator.ts +1 -1
  134. package/src/msg_validators/tx_validator/data_validator.ts +24 -18
  135. package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
  136. package/src/msg_validators/tx_validator/factory.ts +94 -0
  137. package/src/msg_validators/tx_validator/gas_validator.ts +3 -3
  138. package/src/msg_validators/tx_validator/metadata_validator.ts +50 -14
  139. package/src/msg_validators/tx_validator/phases_validator.ts +6 -2
  140. package/src/msg_validators/tx_validator/tx_proof_validator.ts +1 -1
  141. package/src/services/discv5/discV5_service.ts +14 -12
  142. package/src/services/dummy_service.ts +8 -2
  143. package/src/services/libp2p/libp2p_service.ts +102 -111
  144. package/src/services/peer-manager/metrics.ts +4 -1
  145. package/src/services/peer-manager/peer_manager.ts +18 -1
  146. package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +5 -1
  147. package/src/services/reqresp/connection-sampler/connection_sampler.ts +42 -19
  148. package/src/services/reqresp/metrics.ts +4 -1
  149. package/src/services/reqresp/protocols/goodbye.ts +1 -1
  150. package/src/services/reqresp/rate-limiter/rate_limiter.ts +4 -1
  151. package/src/services/reqresp/reqresp.ts +12 -12
  152. package/src/services/service.ts +7 -1
  153. package/src/test-helpers/make-test-p2p-clients.ts +2 -1
  154. package/src/test-helpers/reqresp-nodes.ts +1 -1
  155. package/src/testbench/p2p_client_testbench_worker.ts +10 -4
  156. package/src/testbench/testbench.ts +1 -1
  157. package/src/testbench/worker_client_manager.ts +2 -2
  158. package/src/types/index.ts +1 -0
  159. package/src/versioning.ts +8 -1
@@ -11,7 +11,7 @@ export class BlockHeaderTxValidator {
11
11
  await tx.data.constants.historicalHeader.hash()
12
12
  ]);
13
13
  if (index === undefined) {
14
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} for referencing an unknown block header`);
14
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} for referencing an unknown block header`);
15
15
  return {
16
16
  result: 'invalid',
17
17
  reason: [
@@ -1 +1 @@
1
- {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AAGA,OAAO,EAQL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAG/C,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAmFtD"}
1
+ {"version":3,"file":"data_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/data_validator.ts"],"names":[],"mappings":"AAGA,OAAO,EAQL,EAAE,EACF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,eAAgB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAG/C,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAyFtD"}
@@ -12,7 +12,7 @@ export class DataTxValidator {
12
12
  async #hasCorrectCalldata(tx) {
13
13
  if (tx.publicFunctionCalldata.length !== tx.numberOfPublicCalls()) {
14
14
  const reason = TX_ERROR_CALLDATA_COUNT_MISMATCH;
15
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)}. Reason: ${reason}. Expected ${tx.numberOfPublicCalls()}. Got ${tx.publicFunctionCalldata.length}.`);
15
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)}. Reason: ${reason}. Expected ${tx.numberOfPublicCalls()}. Got ${tx.publicFunctionCalldata.length}.`);
16
16
  return {
17
17
  result: 'invalid',
18
18
  reason: [
@@ -22,7 +22,7 @@ export class DataTxValidator {
22
22
  }
23
23
  if (tx.getTotalPublicCalldataCount() > MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS) {
24
24
  const reason = TX_ERROR_CALLDATA_COUNT_TOO_LARGE;
25
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)}. Reason: ${reason}. Expected no greater than ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS} fields. Got ${tx.getTotalPublicCalldataCount()}.`);
25
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)}. Reason: ${reason}. Expected no greater than ${MAX_FR_CALLDATA_TO_ALL_ENQUEUED_CALLS} fields. Got ${tx.getTotalPublicCalldataCount()}.`);
26
26
  return {
27
27
  result: 'invalid',
28
28
  reason: [
@@ -36,7 +36,7 @@ export class DataTxValidator {
36
36
  const hash = await computeCalldataHash(calldata);
37
37
  if (!hash.equals(request.calldataHash)) {
38
38
  const reason = TX_ERROR_INCORRECT_CALLDATA;
39
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)}. Reason: ${reason}. Call request index: ${i}.`);
39
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)}. Reason: ${reason}. Call request index: ${i}.`);
40
40
  return {
41
41
  result: 'invalid',
42
42
  reason: [
@@ -51,9 +51,8 @@ export class DataTxValidator {
51
51
  }
52
52
  async #hasCorrectContractClassLogs(tx) {
53
53
  const contractClassLogsHashes = tx.data.getNonEmptyContractClassLogsHashes();
54
- const hashedContractClasslogs = await Promise.all(tx.contractClassLogs.map((l)=>l.hash()));
55
- if (contractClassLogsHashes.length !== hashedContractClasslogs.length) {
56
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched number of contract class logs. Expected ${contractClassLogsHashes.length}. Got ${hashedContractClasslogs.length}.`);
54
+ if (contractClassLogsHashes.length !== tx.contractClassLogs.length) {
55
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched number of contract class logs. Expected ${contractClassLogsHashes.length}. Got ${tx.contractClassLogs.length}.`);
57
56
  return {
58
57
  result: 'invalid',
59
58
  reason: [
@@ -61,12 +60,13 @@ export class DataTxValidator {
61
60
  ]
62
61
  };
63
62
  }
63
+ const expectedHashes = await Promise.all(tx.contractClassLogs.map((l)=>l.hash()));
64
64
  for (const [i, logHash] of contractClassLogsHashes.entries()){
65
- const hashedLog = hashedContractClasslogs[i];
66
- if (!logHash.value.equals(hashedLog)) {
67
- if (hashedContractClasslogs.some((l)=>logHash.value.equals(l))) {
68
- const matchingLogIndex = hashedContractClasslogs.findIndex((l)=>logHash.value.equals(l));
69
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs indices. Expected ${i} from the kernel's log hashes. Got ${matchingLogIndex} in the tx.`);
65
+ const hash = expectedHashes[i];
66
+ if (!logHash.value.equals(hash)) {
67
+ if (expectedHashes.some((h)=>logHash.value.equals(h))) {
68
+ const matchingLogIndex = expectedHashes.findIndex((l)=>logHash.value.equals(l));
69
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs indices. Expected ${i} from the kernel's log hashes. Got ${matchingLogIndex} in the tx.`);
70
70
  return {
71
71
  result: 'invalid',
72
72
  reason: [
@@ -74,7 +74,7 @@ export class DataTxValidator {
74
74
  ]
75
75
  };
76
76
  } else {
77
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs. Expected hash ${logHash.value} from the kernels. Got ${hashedLog} in the tx.`);
77
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs. Expected hash ${logHash.value} from the kernels. Got ${hash} in the tx.`);
78
78
  return {
79
79
  result: 'invalid',
80
80
  reason: [
@@ -83,8 +83,9 @@ export class DataTxValidator {
83
83
  };
84
84
  }
85
85
  }
86
- if (logHash.logHash.length !== tx.contractClassLogs[i].getEmittedLength()) {
87
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of mismatched contract class logs length. Expected ${logHash.logHash.length} from the kernel's log hashes. Got ${tx.contractClassLogs[i].getEmittedLength()} in the tx.`);
86
+ const expectedMinLength = 1 + tx.contractClassLogs[i].fields.findLastIndex((f)=>!f.isZero());
87
+ if (logHash.logHash.length < expectedMinLength) {
88
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect contract class log length. Expected the length to be at least ${expectedMinLength}. Got ${logHash.logHash.length}.`);
88
89
  return {
89
90
  result: 'invalid',
90
91
  reason: [
@@ -1,5 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  import { type AnyTx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
4
2
  export interface NullifierSource {
5
3
  nullifiersExist: (nullifiers: Buffer[]) => Promise<boolean[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":";;AACA,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;gBAIhE,eAAe,EAAE,eAAe;IAItC,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiBrD"}
1
+ {"version":3,"file":"double_spend_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/double_spend_validator.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,KAAK,EAIV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC/D;AAED,qBAAa,sBAAsB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;gBAIhE,eAAe,EAAE,eAAe;IAItC,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiBrD"}
@@ -11,7 +11,7 @@ export class DoubleSpendTxValidator {
11
11
  // Ditch this tx if it has repeated nullifiers
12
12
  const uniqueNullifiers = new Set(nullifiers);
13
13
  if (uniqueNullifiers.size !== nullifiers.length) {
14
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} for emitting duplicate nullifiers`);
14
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} for emitting duplicate nullifiers`);
15
15
  return {
16
16
  result: 'invalid',
17
17
  reason: [
@@ -20,7 +20,7 @@ export class DoubleSpendTxValidator {
20
20
  };
21
21
  }
22
22
  if ((await this.#nullifierSource.nullifiersExist(nullifiers.map((n)=>n.toBuffer()))).some(Boolean)) {
23
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} for repeating a nullifier`);
23
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} for repeating a nullifier`);
24
24
  return {
25
25
  result: 'invalid',
26
26
  reason: [
@@ -0,0 +1,14 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import type { ContractDataSource } from '@aztec/stdlib/contract';
3
+ import type { GasFees } from '@aztec/stdlib/gas';
4
+ import type { AllowedElement, ClientProtocolCircuitVerifier, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
5
+ import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
6
+ import type { Tx, TxValidationResult } from '@aztec/stdlib/tx';
7
+ export interface MessageValidator {
8
+ validator: {
9
+ validateTx(tx: Tx): Promise<TxValidationResult>;
10
+ };
11
+ severity: PeerErrorSeverity;
12
+ }
13
+ export declare function createTxMessageValidators(blockNumber: number, worldStateSynchronizer: WorldStateSynchronizer, gasFees: GasFees, l1ChainId: number, rollupVersion: number, protocolContractTreeRoot: Fr, contractDataSource: ContractDataSource, proofVerifier: ClientProtocolCircuitVerifier, allowedInSetup?: AllowedElement[]): Record<string, MessageValidator>[];
14
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,cAAc,EACd,6BAA6B,EAC7B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,KAAK,EAAE,EAAE,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAW/D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE;QACT,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;KACjD,CAAC;IACF,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,wBAAwB,EAAE,EAAE,EAC5B,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,6BAA6B,EAC5C,cAAc,GAAE,cAAc,EAAO,GACpC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAqDpC"}
@@ -0,0 +1,62 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
3
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
+ import { PeerErrorSeverity } from '@aztec/stdlib/p2p';
5
+ import { DatabasePublicStateSource, MerkleTreeId } from '@aztec/stdlib/trees';
6
+ import { ArchiveCache } from './archive_cache.js';
7
+ import { BlockHeaderTxValidator } from './block_header_validator.js';
8
+ import { DataTxValidator } from './data_validator.js';
9
+ import { DoubleSpendTxValidator } from './double_spend_validator.js';
10
+ import { GasTxValidator } from './gas_validator.js';
11
+ import { MetadataTxValidator } from './metadata_validator.js';
12
+ import { PhasesTxValidator } from './phases_validator.js';
13
+ import { TxProofValidator } from './tx_proof_validator.js';
14
+ export function createTxMessageValidators(blockNumber, worldStateSynchronizer, gasFees, l1ChainId, rollupVersion, protocolContractTreeRoot, contractDataSource, proofVerifier, allowedInSetup = []) {
15
+ const merkleTree = worldStateSynchronizer.getCommitted();
16
+ return [
17
+ {
18
+ dataValidator: {
19
+ validator: new DataTxValidator(),
20
+ severity: PeerErrorSeverity.HighToleranceError
21
+ },
22
+ metadataValidator: {
23
+ validator: new MetadataTxValidator({
24
+ l1ChainId: new Fr(l1ChainId),
25
+ rollupVersion: new Fr(rollupVersion),
26
+ blockNumber: new Fr(blockNumber),
27
+ protocolContractTreeRoot,
28
+ vkTreeRoot: getVKTreeRoot()
29
+ }),
30
+ severity: PeerErrorSeverity.HighToleranceError
31
+ },
32
+ doubleSpendValidator: {
33
+ validator: new DoubleSpendTxValidator({
34
+ nullifiersExist: async (nullifiers)=>{
35
+ const merkleTree = worldStateSynchronizer.getCommitted();
36
+ const indices = await merkleTree.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, nullifiers);
37
+ return indices.map((index)=>index !== undefined);
38
+ }
39
+ }),
40
+ severity: PeerErrorSeverity.HighToleranceError
41
+ },
42
+ gasValidator: {
43
+ validator: new GasTxValidator(new DatabasePublicStateSource(merkleTree), ProtocolContractAddress.FeeJuice, gasFees),
44
+ severity: PeerErrorSeverity.HighToleranceError
45
+ },
46
+ phasesValidator: {
47
+ validator: new PhasesTxValidator(contractDataSource, allowedInSetup, blockNumber),
48
+ severity: PeerErrorSeverity.MidToleranceError
49
+ },
50
+ blockHeaderValidator: {
51
+ validator: new BlockHeaderTxValidator(new ArchiveCache(merkleTree)),
52
+ severity: PeerErrorSeverity.HighToleranceError
53
+ }
54
+ },
55
+ {
56
+ proofValidator: {
57
+ validator: new TxProofValidator(proofVerifier),
58
+ severity: PeerErrorSeverity.MidToleranceError
59
+ }
60
+ }
61
+ ];
62
+ }
@@ -41,7 +41,7 @@ export class GasTxValidator {
41
41
  const maxFeesPerGas = gasSettings.maxFeesPerGas;
42
42
  const notEnoughMaxFees = maxFeesPerGas.feePerDaGas.lt(this.#gasFees.feePerDaGas) || maxFeesPerGas.feePerL2Gas.lt(this.#gasFees.feePerL2Gas);
43
43
  if (notEnoughMaxFees) {
44
- this.#log.warn(`Skipping transaction ${await tx.getTxHash()} due to insufficient fee per gas`, {
44
+ this.#log.verbose(`Skipping transaction ${await tx.getTxHash()} due to insufficient fee per gas`, {
45
45
  txMaxFeesPerGas: maxFeesPerGas.toInspect(),
46
46
  currentGasFees: this.#gasFees.toInspect()
47
47
  });
@@ -54,7 +54,7 @@ export class GasTxValidator {
54
54
  const gasLimits = tx.data.constants.txContext.gasSettings.gasLimits;
55
55
  const minGasLimits = new Gas(FIXED_DA_GAS, FIXED_L2_GAS);
56
56
  if (minGasLimits.gtAny(gasLimits)) {
57
- this.#log.warn(`Rejecting transaction due to the gas limit(s) not being above the minimum gas limit`, {
57
+ this.#log.verbose(`Rejecting transaction due to the gas limit(s) not being above the minimum gas limit`, {
58
58
  gasLimits,
59
59
  minGasLimits
60
60
  });
@@ -84,7 +84,7 @@ export class GasTxValidator {
84
84
  const claimFunctionCall = setupFns.find((fn)=>fn.request.contractAddress.equals(this.#feeJuiceAddress) && fn.request.msgSender.equals(this.#feeJuiceAddress) && fn.calldata.length > 2 && fn.functionSelector.equals(increasePublicBalanceSelector) && fn.args[0].equals(feePayer.toField()) && !fn.request.isStaticCall);
85
85
  const balance = claimFunctionCall ? initialBalance.add(claimFunctionCall.args[1]) : initialBalance;
86
86
  if (balance.lt(feeLimit)) {
87
- this.#log.warn(`Rejecting transaction due to not enough fee payer balance`, {
87
+ this.#log.verbose(`Rejecting transaction due to not enough fee payer balance`, {
88
88
  feePayer,
89
89
  balance: balance.toBigInt(),
90
90
  feeLimit: feeLimit.toBigInt()
@@ -2,10 +2,14 @@ import type { Fr } from '@aztec/foundation/fields';
2
2
  import { type AnyTx, type TxValidationResult, type TxValidator } from '@aztec/stdlib/tx';
3
3
  export declare class MetadataTxValidator<T extends AnyTx> implements TxValidator<T> {
4
4
  #private;
5
- private chainId;
6
- private rollupVersion;
7
- private blockNumber;
8
- constructor(chainId: Fr, rollupVersion: Fr, blockNumber: Fr);
5
+ private values;
6
+ constructor(values: {
7
+ l1ChainId: Fr;
8
+ rollupVersion: Fr;
9
+ blockNumber: Fr;
10
+ vkTreeRoot: Fr;
11
+ protocolContractTreeRoot: Fr;
12
+ });
9
13
  validateTx(tx: T): Promise<TxValidationResult>;
10
14
  }
11
15
  //# sourceMappingURL=metadata_validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/metadata_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EACL,KAAK,KAAK,EAKV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAG7D,OAAO,CAAC,OAAO;IAAM,OAAO,CAAC,aAAa;IAAM,OAAO,CAAC,WAAW;gBAA3D,OAAO,EAAE,EAAE,EAAU,aAAa,EAAE,EAAE,EAAU,WAAW,EAAE,EAAE;IAE7E,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAsDrD"}
1
+ {"version":3,"file":"metadata_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/metadata_validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EACL,KAAK,KAAK,EAOV,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;;IAIvE,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE;QAAE,SAAS,EAAE,EAAE,CAAC;QAAC,aAAa,EAAE,EAAE,CAAC;QAAC,WAAW,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAA;KAAE;IAG/G,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAsFrD"}
@@ -1,20 +1,16 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
- import { TX_ERROR_INCORRECT_CHAIN_ID, TX_ERROR_INCORRECT_ROLLUP_VERSION, TX_ERROR_INVALID_BLOCK_NUMBER, Tx } from '@aztec/stdlib/tx';
2
+ import { TX_ERROR_INCORRECT_L1_CHAIN_ID, TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT, TX_ERROR_INCORRECT_ROLLUP_VERSION, TX_ERROR_INCORRECT_VK_TREE_ROOT, TX_ERROR_INVALID_BLOCK_NUMBER, Tx } from '@aztec/stdlib/tx';
3
3
  export class MetadataTxValidator {
4
- chainId;
5
- rollupVersion;
6
- blockNumber;
4
+ values;
7
5
  #log;
8
- constructor(chainId, rollupVersion, blockNumber){
9
- this.chainId = chainId;
10
- this.rollupVersion = rollupVersion;
11
- this.blockNumber = blockNumber;
6
+ constructor(values){
7
+ this.values = values;
12
8
  this.#log = createLogger('p2p:tx_validator:tx_metadata');
13
9
  }
14
10
  async validateTx(tx) {
15
11
  const errors = [];
16
- if (!await this.#hasCorrectChainId(tx)) {
17
- errors.push(TX_ERROR_INCORRECT_CHAIN_ID);
12
+ if (!await this.#hasCorrectL1ChainId(tx)) {
13
+ errors.push(TX_ERROR_INCORRECT_L1_CHAIN_ID);
18
14
  }
19
15
  if (!await this.#hasCorrectRollupVersion(tx)) {
20
16
  errors.push(TX_ERROR_INCORRECT_ROLLUP_VERSION);
@@ -22,6 +18,12 @@ export class MetadataTxValidator {
22
18
  if (!await this.#isValidForBlockNumber(tx)) {
23
19
  errors.push(TX_ERROR_INVALID_BLOCK_NUMBER);
24
20
  }
21
+ if (!await this.#hasCorrectVkTreeRoot(tx)) {
22
+ errors.push(TX_ERROR_INCORRECT_VK_TREE_ROOT);
23
+ }
24
+ if (!await this.#hasCorrectProtocolContractTreeRoot(tx)) {
25
+ errors.push(TX_ERROR_INCORRECT_PROTOCOL_CONTRACT_TREE_ROOT);
26
+ }
25
27
  return errors.length > 0 ? {
26
28
  result: 'invalid',
27
29
  reason: errors
@@ -29,9 +31,25 @@ export class MetadataTxValidator {
29
31
  result: 'valid'
30
32
  };
31
33
  }
32
- async #hasCorrectChainId(tx) {
33
- if (!tx.data.constants.txContext.chainId.equals(this.chainId)) {
34
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.chainId.toNumber()}`);
34
+ async #hasCorrectVkTreeRoot(tx) {
35
+ // This gets implicitly tested in the proof validator, but we can get a much cheaper check here by looking early at the vk.
36
+ if (!tx.data.constants.vkTreeRoot.equals(this.values.vkTreeRoot)) {
37
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect vk tree root ${tx.data.constants.vkTreeRoot.toString()} != ${this.values.vkTreeRoot.toString()}`);
38
+ return false;
39
+ } else {
40
+ return true;
41
+ }
42
+ }
43
+ async #hasCorrectProtocolContractTreeRoot(tx) {
44
+ if (!tx.data.constants.protocolContractTreeRoot.equals(this.values.protocolContractTreeRoot)) {
45
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect protocol contract tree root ${tx.data.constants.protocolContractTreeRoot.toString()} != ${this.values.protocolContractTreeRoot.toString()}`);
46
+ return false;
47
+ }
48
+ return true;
49
+ }
50
+ async #hasCorrectL1ChainId(tx) {
51
+ if (!tx.data.constants.txContext.chainId.equals(this.values.l1ChainId)) {
52
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect L1 chain ${tx.data.constants.txContext.chainId.toNumber()} != ${this.values.l1ChainId.toNumber()}`);
35
53
  return false;
36
54
  } else {
37
55
  return true;
@@ -39,16 +57,16 @@ export class MetadataTxValidator {
39
57
  }
40
58
  async #isValidForBlockNumber(tx) {
41
59
  const maxBlockNumber = tx.data.rollupValidationRequests.maxBlockNumber;
42
- if (maxBlockNumber.isSome && maxBlockNumber.value < this.blockNumber) {
43
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} for low max block number. Tx max block number: ${maxBlockNumber.value}, current block number: ${this.blockNumber}.`);
60
+ if (maxBlockNumber.isSome && maxBlockNumber.value < this.values.blockNumber) {
61
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} for low max block number. Tx max block number: ${maxBlockNumber.value}, current block number: ${this.values.blockNumber}.`);
44
62
  return false;
45
63
  } else {
46
64
  return true;
47
65
  }
48
66
  }
49
67
  async #hasCorrectRollupVersion(tx) {
50
- if (!tx.data.constants.txContext.version.equals(this.rollupVersion)) {
51
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.rollupVersion.toNumber()}`);
68
+ if (!tx.data.constants.txContext.version.equals(this.values.rollupVersion)) {
69
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because of incorrect rollup version ${tx.data.constants.txContext.version.toNumber()} != ${this.values.rollupVersion.toNumber()}`);
52
70
  return false;
53
71
  } else {
54
72
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAIL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAIZ,OAAO,CAAC,cAAc;IAAoB,OAAO,CAAC,WAAW;IAFxG,OAAO,CAAC,WAAW,CAAoB;gBAE3B,SAAS,EAAE,kBAAkB,EAAU,cAAc,EAAE,cAAc,EAAE,EAAU,WAAW,EAAE,MAAM;IAI1G,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAqCvC,aAAa;CAiD5B"}
1
+ {"version":3,"file":"phases_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/tx_validator/phases_validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAIL,EAAE,EAEF,KAAK,kBAAkB,EACvB,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,qBAAa,iBAAkB,YAAW,WAAW,CAAC,EAAE,CAAC;;IAMrD,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,WAAW;IALrB,OAAO,CAAC,WAAW,CAAoB;gBAGrC,SAAS,EAAE,kBAAkB,EACrB,cAAc,EAAE,cAAc,EAAE,EAChC,WAAW,EAAE,MAAM;IAKvB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAqCvC,aAAa;CAiD5B"}
@@ -27,7 +27,7 @@ export class PhasesTxValidator {
27
27
  const setupFns = getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP);
28
28
  for (const setupFn of setupFns){
29
29
  if (!await this.isOnAllowList(setupFn, this.setupAllowList)) {
30
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} because it calls setup function not on allow list: ${setupFn.request.contractAddress}:${setupFn.functionSelector}`, {
30
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} because it calls setup function not on allow list: ${setupFn.request.contractAddress}:${setupFn.functionSelector}`, {
31
31
  allowList: this.setupAllowList
32
32
  });
33
33
  return {
@@ -9,7 +9,7 @@ export class TxProofValidator {
9
9
  }
10
10
  async validateTx(tx) {
11
11
  if (!await this.verifier.verifyProof(tx)) {
12
- this.#log.warn(`Rejecting tx ${await Tx.getHash(tx)} for invalid proof`);
12
+ this.#log.verbose(`Rejecting tx ${await Tx.getHash(tx)} for invalid proof`);
13
13
  return {
14
14
  result: 'invalid',
15
15
  reason: [
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import { type TelemetryClient } from '@aztec/telemetry-client';
3
2
  import { type IDiscv5CreateOptions } from '@chainsafe/discv5';
4
3
  import { ENR } from '@chainsafe/enr';
@@ -12,6 +11,7 @@ import { type PeerDiscoveryService, PeerDiscoveryState } from '../service.js';
12
11
  export declare class DiscV5Service extends EventEmitter implements PeerDiscoveryService {
13
12
  private peerId;
14
13
  private config;
14
+ private readonly packageVersion;
15
15
  private logger;
16
16
  /** The Discv5 instance */
17
17
  private discv5;
@@ -25,7 +25,7 @@ export declare class DiscV5Service extends EventEmitter implements PeerDiscovery
25
25
  private trustedPeerEnrs;
26
26
  private startTime;
27
27
  private handlers;
28
- constructor(peerId: PeerId, config: P2PConfig, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger, configOverrides?: Partial<IDiscv5CreateOptions>);
28
+ constructor(peerId: PeerId, config: P2PConfig, packageVersion: string, telemetry?: TelemetryClient, logger?: import("@aztec/foundation/log").Logger, configOverrides?: Partial<IDiscv5CreateOptions>);
29
29
  private onMultiaddrUpdated;
30
30
  start(): Promise<void>;
31
31
  runRandomNodesQuery(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":";AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEvG,OAAO,EAAmC,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAyB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,MAAM;IA3BhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAA8B;IAE5C,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,oBAAoB,CAAgB;IACrC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IACrC,OAAO,CAAC,eAAe,CAAa;IAEpC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAId;gBAGQ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACzB,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC,EACnD,eAAe,GAAE,OAAO,CAAC,oBAAoB,CAAM;IA2ErD,OAAO,CAAC,kBAAkB;IAQb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,YAAY,IAAI,GAAG,EAAE;IAIrB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,UAAU;IAOxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CA0BpB"}
1
+ {"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../../src/services/discv5/discV5_service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEvG,OAAO,EAAmC,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAI9E;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAyB3E,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,MAAM;IA5BhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAqB;IAEnC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,2BAA2B;IAC3B,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,oBAAoB,CAAgB;IACrC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IACrC,OAAO,CAAC,eAAe,CAAa;IAEpC,OAAO,CAAC,SAAS,CAAK;IAEtB,OAAO,CAAC,QAAQ,CAId;gBAGQ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACR,cAAc,EAAE,MAAM,EACvC,SAAS,GAAE,eAAsC,EACzC,MAAM,yCAAqC,EACnD,eAAe,GAAE,OAAO,CAAC,oBAAoB,CAAM;IA4ErD,OAAO,CAAC,kBAAkB;IAQb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuDtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,YAAY,IAAI,GAAG,EAAE;IAIrB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAUpB,UAAU;IAOxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,WAAW;CA0BpB"}
@@ -3,12 +3,12 @@ import { sleep } from '@aztec/foundation/sleep';
3
3
  import { checkCompressedComponentVersion } from '@aztec/stdlib/versioning';
4
4
  import { OtelMetricsAdapter, getTelemetryClient } from '@aztec/telemetry-client';
5
5
  import { Discv5 } from '@chainsafe/discv5';
6
- import { ENR, SignableENR } from '@chainsafe/enr';
6
+ import { ENR } from '@chainsafe/enr';
7
7
  import { multiaddr } from '@multiformats/multiaddr';
8
8
  import EventEmitter from 'events';
9
+ import { createNodeENR } from '../../enr/generate-enr.js';
9
10
  import { AZTEC_ENR_KEY, Discv5Event, PeerEvent } from '../../types/index.js';
10
11
  import { convertToMultiaddr } from '../../util.js';
11
- import { setAztecEnrKey } from '../../versioning.js';
12
12
  import { PeerDiscoveryState } from '../service.js';
13
13
  const delayBeforeStart = 2000; // 2sec
14
14
  /**
@@ -16,6 +16,7 @@ const delayBeforeStart = 2000; // 2sec
16
16
  */ export class DiscV5Service extends EventEmitter {
17
17
  peerId;
18
18
  config;
19
+ packageVersion;
19
20
  logger;
20
21
  /** The Discv5 instance */ discv5;
21
22
  /** This instance's ENR */ enr;
@@ -26,8 +27,8 @@ const delayBeforeStart = 2000; // 2sec
26
27
  trustedPeerEnrs;
27
28
  startTime;
28
29
  handlers;
29
- constructor(peerId, config, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service'), configOverrides = {}){
30
- super(), this.peerId = peerId, this.config = config, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.trustedPeerEnrs = [], this.startTime = 0, this.handlers = {
30
+ constructor(peerId, config, packageVersion, telemetry = getTelemetryClient(), logger = createLogger('p2p:discv5_service'), configOverrides = {}){
31
+ super(), this.peerId = peerId, this.config = config, this.packageVersion = packageVersion, this.logger = logger, this.currentState = PeerDiscoveryState.STOPPED, this.bootstrapNodePeerIds = [], this.bootstrapNodeEnrs = [], this.trustedPeerEnrs = [], this.startTime = 0, this.handlers = {
31
32
  onMultiaddrUpdated: this.onMultiaddrUpdated.bind(this),
32
33
  onDiscovered: this.onDiscovered.bind(this),
33
34
  onEnrAdded: this.onEnrAdded.bind(this)
@@ -36,10 +37,6 @@ const delayBeforeStart = 2000; // 2sec
36
37
  this.bootstrapNodeEnrs = bootstrapNodes.map((x)=>ENR.decodeTxt(x));
37
38
  const privatePeerEnrs = new Set(privatePeers);
38
39
  this.trustedPeerEnrs = trustedPeers.filter((x)=>!privatePeerEnrs.has(x)).map((x)=>ENR.decodeTxt(x));
39
- // create ENR from PeerId
40
- this.enr = SignableENR.createFromPeerId(peerId);
41
- // Add aztec identification to ENR
42
- this.versions = setAztecEnrKey(this.enr, config);
43
40
  // If no overridden broadcast port is provided, use the p2p port as the broadcast port
44
41
  if (!p2pBroadcastPort) {
45
42
  this.logger.warn('No p2pBroadcastPort provided, using p2pPort as broadcast port');
@@ -48,13 +45,12 @@ const delayBeforeStart = 2000; // 2sec
48
45
  const bindAddrs = {
49
46
  ip4: multiaddr(convertToMultiaddr(config.listenAddress, p2pPort, 'udp'))
50
47
  };
48
+ let multiAddrUdp, multiAddrTcp;
51
49
  if (p2pIp) {
52
- const multiAddrTcp = multiaddr(`${convertToMultiaddr(p2pIp, config.p2pBroadcastPort, 'tcp')}/p2p/${peerId.toString()}`);
53
- const multiAddrUdp = multiaddr(`${convertToMultiaddr(p2pIp, config.p2pBroadcastPort, 'udp')}/p2p/${peerId.toString()}`);
54
- // set location multiaddr in ENR record
55
- this.enr.setLocationMultiaddr(multiAddrUdp);
56
- this.enr.setLocationMultiaddr(multiAddrTcp);
50
+ multiAddrTcp = multiaddr(`${convertToMultiaddr(p2pIp, config.p2pBroadcastPort, 'tcp')}/p2p/${peerId.toString()}`);
51
+ multiAddrUdp = multiaddr(`${convertToMultiaddr(p2pIp, config.p2pBroadcastPort, 'udp')}/p2p/${peerId.toString()}`);
57
52
  }
53
+ ({ enr: this.enr, versions: this.versions } = createNodeENR(peerId, multiAddrUdp, multiAddrTcp, config, this.packageVersion));
58
54
  const metricsRegistry = new OtelMetricsAdapter(telemetry);
59
55
  this.discv5 = Discv5.create({
60
56
  enr: this.enr,
@@ -1,7 +1,6 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
3
2
  import type { BlockAttestation, BlockProposal, Gossipable } from '@aztec/stdlib/p2p';
4
- import { TxHash } from '@aztec/stdlib/tx';
3
+ import { Tx, TxHash } from '@aztec/stdlib/tx';
5
4
  import type { ENR } from '@chainsafe/enr';
6
5
  import type { PeerId } from '@libp2p/interface';
7
6
  import EventEmitter from 'events';
@@ -27,7 +26,7 @@ export declare class DummyP2PService implements P2PService {
27
26
  * Called to have the given message propagated through the P2P network.
28
27
  * @param _ - The message to be propagated.
29
28
  */
30
- propagate<T extends Gossipable>(_: T): void;
29
+ propagate<T extends Gossipable>(_: T): Promise<void>;
31
30
  /**
32
31
  * Called upon receipt of settled transactions.
33
32
  * @param _ - The hashes of the settled transactions.
@@ -56,6 +55,7 @@ export declare class DummyP2PService implements P2PService {
56
55
  * @returns The ENR of the peer, otherwise undefined.
57
56
  */
58
57
  getEnr(): undefined;
58
+ validate(_txs: Tx[]): Promise<void>;
59
59
  }
60
60
  /**
61
61
  * A dummy implementation of the Peer Discovery Service.
@@ -1 +1 @@
1
- {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9F;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAE3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC;IAE3F;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EACzD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC7D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAIhE;;;OAGG;IACI,MAAM,IAAI,SAAS;CAG3B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAa,YAAW,oBAAoB;IACzF,OAAO,CAAC,YAAY,CAA8B;IAC3C,iBAAiB,EAAE,GAAG,EAAE,CAAM;IAErC;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,YAAY;IAIZ,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,IAAI,kBAAkB;IAI/B,MAAM,IAAI,SAAS;CAG3B"}
1
+ {"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/services/dummy_service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9F;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAI3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC;IAE3F;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EACzD,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAC7D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;IAIhE;;;OAGG;IACI,MAAM,IAAI,SAAS;IAI1B,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAGpC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAa,YAAW,oBAAoB;IACzF,OAAO,CAAC,YAAY,CAA8B;IAC3C,iBAAiB,EAAE,GAAG,EAAE,CAAM;IAErC;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,YAAY;IAIZ,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,IAAI,kBAAkB;IAI/B,MAAM,IAAI,SAAS;CAG3B"}
@@ -21,7 +21,9 @@ import { PeerDiscoveryState } from './service.js';
21
21
  /**
22
22
  * Called to have the given message propagated through the P2P network.
23
23
  * @param _ - The message to be propagated.
24
- */ propagate(_) {}
24
+ */ propagate(_) {
25
+ return Promise.resolve();
26
+ }
25
27
  /**
26
28
  * Called upon receipt of settled transactions.
27
29
  * @param _ - The hashes of the settled transactions.
@@ -51,6 +53,9 @@ import { PeerDiscoveryState } from './service.js';
51
53
  */ getEnr() {
52
54
  return undefined;
53
55
  }
56
+ validate(_txs) {
57
+ return Promise.resolve();
58
+ }
54
59
  }
55
60
  /**
56
61
  * A dummy implementation of the Peer Discovery Service.
@@ -1,5 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  import type { RPC } from '@chainsafe/libp2p-gossipsub/message';
4
2
  import type { DataTransform } from '@chainsafe/libp2p-gossipsub/types';
5
3
  import type { Message } from '@libp2p/interface';
@@ -18,7 +16,7 @@ export declare function msgIdToStrFn(msgId: Uint8Array): string;
18
16
  * @param message - The libp2p message
19
17
  * @returns The message identifier
20
18
  */
21
- export declare function getMsgIdFn(message: Message): Buffer;
19
+ export declare function getMsgIdFn(message: Message): Buffer<ArrayBuffer>;
22
20
  /**
23
21
  * Snappy transform for libp2p gossipsub
24
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,UAK1C;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEnD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI1D,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI3D,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAMtD"}
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/services/encoding.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,uBAK1C;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,aAAa;IAEnD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI1D,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQpD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI3D,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAMtD"}
@@ -4,6 +4,7 @@ import type { L2BlockSource } from '@aztec/stdlib/block';
4
4
  import type { ContractDataSource } from '@aztec/stdlib/contract';
5
5
  import type { ClientProtocolCircuitVerifier, PeerInfo, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
6
6
  import { BlockAttestation, BlockProposal, type Gossipable, P2PClientType } from '@aztec/stdlib/p2p';
7
+ import { Tx } from '@aztec/stdlib/tx';
7
8
  import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
8
9
  import type { ENR } from '@chainsafe/enr';
9
10
  import { type Message, type PeerId } from '@libp2p/interface';
@@ -96,7 +97,7 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
96
97
  /**
97
98
  * Publishes data to a topic.
98
99
  * @param topic - The topic to publish to.
99
- * @param data - The data to publish.
100
+ * @param data - The message to publish.
100
101
  * @returns The number of recipients the data was sent to.
101
102
  */
102
103
  private publishToTopic;
@@ -113,7 +114,7 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
113
114
  result: boolean;
114
115
  obj: T | undefined;
115
116
  }>;
116
- protected handleGossipedTx(msg: Message, msgId: string, source: PeerId): Promise<void>;
117
+ protected handleGossipedTx(payloadData: Buffer, msgId: string, source: PeerId): Promise<void>;
117
118
  /**
118
119
  * Process Attestation From Peer
119
120
  * When a proposal is received from a peer, we add it to the attestation pool, so it can be accessed by other services.
@@ -150,6 +151,7 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
150
151
  private validateRequestedTx;
151
152
  private validatePropagatedTx;
152
153
  private getGasFees;
154
+ validate(txs: Tx[]): Promise<void>;
153
155
  /**
154
156
  * Create message validators for the given block number.
155
157
  *
@@ -1 +1 @@
1
- {"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}