@aztec/p2p 0.37.0 → 0.39.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 (39) hide show
  1. package/dest/bootstrap/bootstrap.d.ts.map +1 -1
  2. package/dest/bootstrap/bootstrap.js +3 -1
  3. package/dest/client/mocks.d.ts.map +1 -1
  4. package/dest/client/mocks.js +2 -2
  5. package/dest/config.d.ts +5 -0
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/config.js +4 -2
  8. package/dest/service/data_store.d.ts +27 -0
  9. package/dest/service/data_store.d.ts.map +1 -0
  10. package/dest/service/data_store.js +188 -0
  11. package/dest/service/discV5_service.d.ts +8 -6
  12. package/dest/service/discV5_service.d.ts.map +1 -1
  13. package/dest/service/discV5_service.js +35 -21
  14. package/dest/service/dummy_service.d.ts +3 -1
  15. package/dest/service/dummy_service.d.ts.map +1 -1
  16. package/dest/service/dummy_service.js +11 -1
  17. package/dest/service/libp2p_service.d.ts +28 -17
  18. package/dest/service/libp2p_service.d.ts.map +1 -1
  19. package/dest/service/libp2p_service.js +101 -174
  20. package/dest/service/peer_manager.d.ts +12 -0
  21. package/dest/service/peer_manager.d.ts.map +1 -0
  22. package/dest/service/peer_manager.js +22 -0
  23. package/dest/service/service.d.ts +5 -0
  24. package/dest/service/service.d.ts.map +1 -1
  25. package/dest/service/service.js +6 -2
  26. package/dest/service/tx_messages.d.ts +11 -57
  27. package/dest/service/tx_messages.d.ts.map +1 -1
  28. package/dest/service/tx_messages.js +17 -90
  29. package/package.json +27 -20
  30. package/src/bootstrap/bootstrap.ts +2 -0
  31. package/src/client/mocks.ts +10 -1
  32. package/src/config.ts +9 -0
  33. package/src/service/data_store.ts +235 -0
  34. package/src/service/discV5_service.ts +37 -20
  35. package/src/service/dummy_service.ts +8 -1
  36. package/src/service/libp2p_service.ts +130 -194
  37. package/src/service/peer_manager.ts +26 -0
  38. package/src/service/service.ts +7 -0
  39. package/src/service/tx_messages.ts +29 -94
@@ -1,34 +1,26 @@
1
- import { EncryptedTxL2Logs, Tx, TxHash, UnencryptedTxL2Logs } from '@aztec/circuit-types';
1
+ import { EncryptedTxL2Logs, Tx, UnencryptedTxL2Logs } from '@aztec/circuit-types';
2
2
  import { PrivateKernelTailCircuitPublicInputs, Proof, PublicCallRequest } from '@aztec/circuits.js';
3
3
  import { numToUInt32BE } from '@aztec/foundation/serialize';
4
4
 
5
- /**
6
- * Enumeration of P2P message types.
7
- */
8
- export enum Messages {
9
- POOLED_TRANSACTIONS = 1,
10
- POOLED_TRANSACTION_HASHES = 2,
11
- GET_TRANSACTIONS = 3,
12
- }
5
+ import { type SemVer } from 'semver';
13
6
 
14
- /**
15
- * Create a P2P message from the message type and message data.
16
- * @param type - The type of the message.
17
- * @param messageData - The binary message data.
18
- * @returns The encoded message.
19
- */
20
- export function createMessage(type: Messages, messageData: Buffer) {
21
- return Buffer.concat([numToUInt32BE(type), messageData]);
22
- }
7
+ export const TX_MESSAGE_TOPIC = '';
23
8
 
24
- /**
25
- * Create a POOLED_TRANSACTIONS message from an array of transactions.
26
- * @param txs - The transactions to encoded into a message.
27
- * @returns The encoded message.
28
- */
29
- export function createTransactionsMessage(txs: Tx[]) {
30
- const messageData = txs.map(toTxMessage);
31
- return createMessage(Messages.POOLED_TRANSACTIONS, Buffer.concat(messageData));
9
+ export class AztecTxMessageCreator {
10
+ private readonly topic: string;
11
+ constructor(version: SemVer) {
12
+ this.topic = `/aztec/tx/${version.toString()}`;
13
+ }
14
+
15
+ createTxMessage(tx: Tx) {
16
+ const messageData = toTxMessage(tx);
17
+
18
+ return { topic: this.topic, data: messageData };
19
+ }
20
+
21
+ getTopic() {
22
+ return this.topic;
23
+ }
32
24
  }
33
25
 
34
26
  /**
@@ -49,73 +41,6 @@ export function decodeTransactionsMessage(message: Buffer) {
49
41
  return txs;
50
42
  }
51
43
 
52
- /**
53
- * Create a POOLED_TRANSACTION_HASHES message.
54
- * @param hashes - The transaction hashes to be sent.
55
- * @returns The encoded message.
56
- */
57
- export function createTransactionHashesMessage(hashes: TxHash[]) {
58
- const messageData = hashes.map(x => x.buffer);
59
- return createMessage(Messages.POOLED_TRANSACTION_HASHES, Buffer.concat(messageData));
60
- }
61
-
62
- /**
63
- * Decode a POOLED_TRANSACTION_HASHESs message ito the original transaction hash objects.
64
- * @param message - The binary message to be decoded.
65
- * @returns - The array of transaction hashes originally encoded into the message.
66
- */
67
- export function decodeTransactionHashesMessage(message: Buffer) {
68
- let offset = 0;
69
- const txHashes: TxHash[] = [];
70
- while (offset < message.length) {
71
- const slice = message.subarray(offset, offset + TxHash.SIZE);
72
- if (slice.length < TxHash.SIZE) {
73
- throw new Error(`Invalid message size when processing transaction hashes message`);
74
- }
75
- txHashes.push(new TxHash(slice));
76
- offset += TxHash.SIZE;
77
- }
78
- return txHashes;
79
- }
80
-
81
- /**
82
- * Create a GET_TRANSACTIONS message from an array of transaction hashes.
83
- * @param hashes - The hashes of the transactions to be requested.
84
- * @returns The encoded message.
85
- */
86
- export function createGetTransactionsRequestMessage(hashes: TxHash[]) {
87
- const messageData = hashes.map(x => x.buffer);
88
- return createMessage(Messages.GET_TRANSACTIONS, Buffer.concat(messageData));
89
- }
90
-
91
- /**
92
- * Decode a GET_TRANSACTIONS message into the original transaction hash objects.
93
- * @param message - The binary message to be decoded.
94
- * @returns - The array of transaction hashes originally encoded into the message.
95
- */
96
- export function decodeGetTransactionsRequestMessage(message: Buffer) {
97
- // for the time being this payload is effectively the same as the POOLED_TRANSACTION_HASHES message
98
- return decodeTransactionHashesMessage(message);
99
- }
100
-
101
- /**
102
- * Decode the message type from a received message.
103
- * @param message - The received message.
104
- * @returns The decoded MessageType.
105
- */
106
- export function decodeMessageType(message: Buffer) {
107
- return message.readUInt32BE(0);
108
- }
109
-
110
- /**
111
- * Return the encoded message (minus the header) from received message buffer.
112
- * @param message - The complete received message.
113
- * @returns The encoded message, without the header.
114
- */
115
- export function getEncodedMessage(message: Buffer) {
116
- return message.subarray(4);
117
- }
118
-
119
44
  /**
120
45
  * Creates a tx 'message' for sending to a peer.
121
46
  * @param tx - The transaction to convert to a message.
@@ -146,6 +71,7 @@ export function toTxMessage(tx: Tx): Buffer {
146
71
  createMessageComponent(tx.encryptedLogs),
147
72
  createMessageComponent(tx.unencryptedLogs),
148
73
  createMessageComponents(tx.enqueuedPublicFunctionCalls),
74
+ createMessageComponent(tx.publicTeardownFunctionCall),
149
75
  ]);
150
76
  const messageLength = numToUInt32BE(messageBuffer.length);
151
77
  return Buffer.concat([messageLength, messageBuffer]);
@@ -198,5 +124,14 @@ export function fromTxMessage(buffer: Buffer): Tx {
198
124
  }
199
125
 
200
126
  const publicCalls = toObjectArray(unencryptedLogs.remainingData, PublicCallRequest);
201
- return new Tx(publicInputs.obj!, proof.obj!, encryptedLogs.obj, unencryptedLogs.obj, publicCalls.objects);
127
+
128
+ const publicTeardownCall = toObject(publicCalls.remainingData, PublicCallRequest);
129
+ return new Tx(
130
+ publicInputs.obj!,
131
+ proof.obj!,
132
+ encryptedLogs.obj,
133
+ unencryptedLogs.obj,
134
+ publicCalls.objects,
135
+ publicTeardownCall.obj!,
136
+ );
202
137
  }