@aztec/p2p 0.7.2 → 0.7.4
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.
- package/.tsbuildinfo +1 -0
- package/dest/bootstrap/bootstrap.d.ts +26 -0
- package/dest/bootstrap/bootstrap.d.ts.map +1 -0
- package/dest/bootstrap/bootstrap.js +92 -0
- package/dest/client/index.d.ts +5 -0
- package/dest/client/index.d.ts.map +1 -0
- package/dest/client/index.js +8 -0
- package/dest/client/mocks.d.ts +51 -0
- package/dest/client/mocks.d.ts.map +1 -0
- package/dest/client/mocks.js +72 -0
- package/dest/client/p2p_client.d.ts +175 -0
- package/dest/client/p2p_client.d.ts.map +1 -0
- package/dest/client/p2p_client.js +206 -0
- package/dest/client/p2p_client.test.d.ts +2 -0
- package/dest/client/p2p_client.test.d.ts.map +1 -0
- package/dest/client/p2p_client.test.js +58 -0
- package/dest/config.d.ts +67 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/config.js +25 -0
- package/dest/index.d.ts +6 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +6 -0
- package/dest/service/dummy_service.d.ts +28 -0
- package/dest/service/dummy_service.d.ts.map +1 -0
- package/dest/service/dummy_service.js +30 -0
- package/dest/service/index.d.ts +3 -0
- package/dest/service/index.d.ts.map +1 -0
- package/dest/service/index.js +3 -0
- package/dest/service/known_txs.d.ts +31 -0
- package/dest/service/known_txs.d.ts.map +1 -0
- package/dest/service/known_txs.js +52 -0
- package/dest/service/known_txs.test.d.ts +2 -0
- package/dest/service/known_txs.test.d.ts.map +1 -0
- package/dest/service/known_txs.test.js +34 -0
- package/dest/service/libp2p_service.d.ts +74 -0
- package/dest/service/libp2p_service.d.ts.map +1 -0
- package/dest/service/libp2p_service.js +335 -0
- package/dest/service/service.d.ts +27 -0
- package/dest/service/service.d.ts.map +1 -0
- package/dest/service/service.js +2 -0
- package/dest/service/tx_messages.d.ts +78 -0
- package/dest/service/tx_messages.d.ts.map +1 -0
- package/dest/service/tx_messages.js +191 -0
- package/dest/service/tx_messages.test.d.ts +2 -0
- package/dest/service/tx_messages.test.d.ts.map +1 -0
- package/dest/service/tx_messages.test.js +48 -0
- package/dest/tx_pool/index.d.ts +3 -0
- package/dest/tx_pool/index.d.ts.map +1 -0
- package/dest/tx_pool/index.js +3 -0
- package/dest/tx_pool/memory_tx_pool.d.ts +52 -0
- package/dest/tx_pool/memory_tx_pool.d.ts.map +1 -0
- package/dest/tx_pool/memory_tx_pool.js +70 -0
- package/dest/tx_pool/tx_pool.d.ts +39 -0
- package/dest/tx_pool/tx_pool.d.ts.map +1 -0
- package/dest/tx_pool/tx_pool.js +2 -0
- package/dest/tx_pool/tx_pool.test.d.ts +2 -0
- package/dest/tx_pool/tx_pool.test.d.ts.map +1 -0
- package/dest/tx_pool/tx_pool.test.js +20 -0
- package/package.json +4 -4
- package/Dockerfile +0 -17
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Tx, TxHash } from '@aztec/types';
|
|
2
|
+
/**
|
|
3
|
+
* The interface for a P2P service implementation.
|
|
4
|
+
*/
|
|
5
|
+
export interface P2PService {
|
|
6
|
+
/**
|
|
7
|
+
* Starts the service.
|
|
8
|
+
* @returns An empty promise.
|
|
9
|
+
*/
|
|
10
|
+
start(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Stops the service.
|
|
13
|
+
* @returns An empty promise.
|
|
14
|
+
*/
|
|
15
|
+
stop(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Called to have the given transaction propagated through the P2P network.
|
|
18
|
+
* @param tx - The transaction to be propagated.
|
|
19
|
+
*/
|
|
20
|
+
propagateTx(tx: Tx): void;
|
|
21
|
+
/**
|
|
22
|
+
* Called upon receipt of settled transactions.
|
|
23
|
+
* @param txHashes - The hashes of the settled transactions.
|
|
24
|
+
*/
|
|
25
|
+
settledTxs(txHashes: TxHash[]): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACtC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Tx, TxHash } from '@aztec/types';
|
|
3
|
+
/**
|
|
4
|
+
* Enumeration of P2P message types.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum Messages {
|
|
7
|
+
POOLED_TRANSACTIONS = 1,
|
|
8
|
+
POOLED_TRANSACTION_HASHES = 2,
|
|
9
|
+
GET_TRANSACTIONS = 3
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a P2P message from the message type and message data.
|
|
13
|
+
* @param type - The type of the message.
|
|
14
|
+
* @param messageData - The binary message data.
|
|
15
|
+
* @returns The encoded message.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createMessage(type: Messages, messageData: Buffer): Buffer;
|
|
18
|
+
/**
|
|
19
|
+
* Create a POOLED_TRANSACTIONS message from an array of transactions.
|
|
20
|
+
* @param txs - The transactions to encoded into a message.
|
|
21
|
+
* @returns The encoded message.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createTransactionsMessage(txs: Tx[]): Buffer;
|
|
24
|
+
/**
|
|
25
|
+
* Decode a POOLED_TRANSACTIONS message into the original transaction objects.
|
|
26
|
+
* @param message - The binary message to be decoded.
|
|
27
|
+
* @returns - The array of transactions originally encoded into the message.
|
|
28
|
+
*/
|
|
29
|
+
export declare function decodeTransactionsMessage(message: Buffer): Tx[];
|
|
30
|
+
/**
|
|
31
|
+
* Create a POOLED_TRANSACTION_HASHES message.
|
|
32
|
+
* @param hashes - The transaction hashes to be sent.
|
|
33
|
+
* @returns The encoded message.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createTransactionHashesMessage(hashes: TxHash[]): Buffer;
|
|
36
|
+
/**
|
|
37
|
+
* Decode a POOLED_TRANSACTION_HASHESs message ito the original transaction hash objects.
|
|
38
|
+
* @param message - The binary message to be decoded.
|
|
39
|
+
* @returns - The array of transaction hashes originally encoded into the message.
|
|
40
|
+
*/
|
|
41
|
+
export declare function decodeTransactionHashesMessage(message: Buffer): TxHash[];
|
|
42
|
+
/**
|
|
43
|
+
* Create a GET_TRANSACTIONS message from an array of transaction hashes.
|
|
44
|
+
* @param hashes - The hashes of the transactions to be requested.
|
|
45
|
+
* @returns The encoded message.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createGetTransactionsRequestMessage(hashes: TxHash[]): Buffer;
|
|
48
|
+
/**
|
|
49
|
+
* Decode a GET_TRANSACTIONS message into the original transaction hash objects.
|
|
50
|
+
* @param message - The binary message to be decoded.
|
|
51
|
+
* @returns - The array of transaction hashes originally encoded into the message.
|
|
52
|
+
*/
|
|
53
|
+
export declare function decodeGetTransactionsRequestMessage(message: Buffer): TxHash[];
|
|
54
|
+
/**
|
|
55
|
+
* Decode the message type from a received message.
|
|
56
|
+
* @param message - The received message.
|
|
57
|
+
* @returns The decoded MessageType.
|
|
58
|
+
*/
|
|
59
|
+
export declare function decodeMessageType(message: Buffer): number;
|
|
60
|
+
/**
|
|
61
|
+
* Return the encoded message (minus the header) from received message buffer.
|
|
62
|
+
* @param message - The complete received message.
|
|
63
|
+
* @returns The encoded message, without the header.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getEncodedMessage(message: Buffer): Buffer;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a tx 'message' for sending to a peer.
|
|
68
|
+
* @param tx - The transaction to convert to a message.
|
|
69
|
+
* @returns - The message.
|
|
70
|
+
*/
|
|
71
|
+
export declare function toTxMessage(tx: Tx): Buffer;
|
|
72
|
+
/**
|
|
73
|
+
* Reproduces a transaction from a transaction 'message'
|
|
74
|
+
* @param buffer - The message buffer to convert to a tx.
|
|
75
|
+
* @returns - The reproduced transaction.
|
|
76
|
+
*/
|
|
77
|
+
export declare function fromTxMessage(buffer: Buffer): Tx;
|
|
78
|
+
//# sourceMappingURL=tx_messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_messages.d.ts","sourceRoot":"","sources":["../../src/service/tx_messages.ts"],"names":[],"mappings":";AAEA,OAAO,EAAwB,EAAE,EAAE,MAAM,EAAY,MAAM,cAAc,CAAC;AAE1E;;GAEG;AACH,oBAAY,QAAQ;IAClB,mBAAmB,IAAI;IACvB,yBAAyB,IAAI;IAC7B,gBAAgB,IAAI;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,UAEhE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,EAAE,EAAE,UAGlD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,QAWxD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,UAG9D;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,YAY7D;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,MAAM,EAAE,MAAM,EAAE,UAGnE;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,YAGlE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,UAEhD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,UAEhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CA6B1C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAmDhD"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { KernelCircuitPublicInputsFinal, Proof, PublicCallRequest } from '@aztec/circuits.js';
|
|
2
|
+
import { numToUInt32BE } from '@aztec/foundation/serialize';
|
|
3
|
+
import { ExtendedContractData, Tx, TxHash, TxL2Logs } from '@aztec/types';
|
|
4
|
+
/**
|
|
5
|
+
* Enumeration of P2P message types.
|
|
6
|
+
*/
|
|
7
|
+
export var Messages;
|
|
8
|
+
(function (Messages) {
|
|
9
|
+
Messages[Messages["POOLED_TRANSACTIONS"] = 1] = "POOLED_TRANSACTIONS";
|
|
10
|
+
Messages[Messages["POOLED_TRANSACTION_HASHES"] = 2] = "POOLED_TRANSACTION_HASHES";
|
|
11
|
+
Messages[Messages["GET_TRANSACTIONS"] = 3] = "GET_TRANSACTIONS";
|
|
12
|
+
})(Messages || (Messages = {}));
|
|
13
|
+
/**
|
|
14
|
+
* Create a P2P message from the message type and message data.
|
|
15
|
+
* @param type - The type of the message.
|
|
16
|
+
* @param messageData - The binary message data.
|
|
17
|
+
* @returns The encoded message.
|
|
18
|
+
*/
|
|
19
|
+
export function createMessage(type, messageData) {
|
|
20
|
+
return Buffer.concat([numToUInt32BE(type), messageData]);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a POOLED_TRANSACTIONS message from an array of transactions.
|
|
24
|
+
* @param txs - The transactions to encoded into a message.
|
|
25
|
+
* @returns The encoded message.
|
|
26
|
+
*/
|
|
27
|
+
export function createTransactionsMessage(txs) {
|
|
28
|
+
const messageData = txs.map(toTxMessage);
|
|
29
|
+
return createMessage(Messages.POOLED_TRANSACTIONS, Buffer.concat(messageData));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Decode a POOLED_TRANSACTIONS message into the original transaction objects.
|
|
33
|
+
* @param message - The binary message to be decoded.
|
|
34
|
+
* @returns - The array of transactions originally encoded into the message.
|
|
35
|
+
*/
|
|
36
|
+
export function decodeTransactionsMessage(message) {
|
|
37
|
+
const lengthSize = 4;
|
|
38
|
+
let offset = 0;
|
|
39
|
+
const txs = [];
|
|
40
|
+
while (offset < message.length) {
|
|
41
|
+
const dataSize = message.readUInt32BE(offset);
|
|
42
|
+
const totalSizeOfMessage = lengthSize + dataSize;
|
|
43
|
+
txs.push(fromTxMessage(message.subarray(offset, offset + totalSizeOfMessage)));
|
|
44
|
+
offset += totalSizeOfMessage;
|
|
45
|
+
}
|
|
46
|
+
return txs;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a POOLED_TRANSACTION_HASHES message.
|
|
50
|
+
* @param hashes - The transaction hashes to be sent.
|
|
51
|
+
* @returns The encoded message.
|
|
52
|
+
*/
|
|
53
|
+
export function createTransactionHashesMessage(hashes) {
|
|
54
|
+
const messageData = hashes.map(x => x.buffer);
|
|
55
|
+
return createMessage(Messages.POOLED_TRANSACTION_HASHES, Buffer.concat(messageData));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Decode a POOLED_TRANSACTION_HASHESs message ito the original transaction hash objects.
|
|
59
|
+
* @param message - The binary message to be decoded.
|
|
60
|
+
* @returns - The array of transaction hashes originally encoded into the message.
|
|
61
|
+
*/
|
|
62
|
+
export function decodeTransactionHashesMessage(message) {
|
|
63
|
+
let offset = 0;
|
|
64
|
+
const txHashes = [];
|
|
65
|
+
while (offset < message.length) {
|
|
66
|
+
const slice = message.subarray(offset, offset + TxHash.SIZE);
|
|
67
|
+
if (slice.length < TxHash.SIZE) {
|
|
68
|
+
throw new Error(`Invalid message size when processing transaction hashes message`);
|
|
69
|
+
}
|
|
70
|
+
txHashes.push(new TxHash(slice));
|
|
71
|
+
offset += TxHash.SIZE;
|
|
72
|
+
}
|
|
73
|
+
return txHashes;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Create a GET_TRANSACTIONS message from an array of transaction hashes.
|
|
77
|
+
* @param hashes - The hashes of the transactions to be requested.
|
|
78
|
+
* @returns The encoded message.
|
|
79
|
+
*/
|
|
80
|
+
export function createGetTransactionsRequestMessage(hashes) {
|
|
81
|
+
const messageData = hashes.map(x => x.buffer);
|
|
82
|
+
return createMessage(Messages.GET_TRANSACTIONS, Buffer.concat(messageData));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Decode a GET_TRANSACTIONS message into the original transaction hash objects.
|
|
86
|
+
* @param message - The binary message to be decoded.
|
|
87
|
+
* @returns - The array of transaction hashes originally encoded into the message.
|
|
88
|
+
*/
|
|
89
|
+
export function decodeGetTransactionsRequestMessage(message) {
|
|
90
|
+
// for the time being this payload is effectively the same as the POOLED_TRANSACTION_HASHES message
|
|
91
|
+
return decodeTransactionHashesMessage(message);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Decode the message type from a received message.
|
|
95
|
+
* @param message - The received message.
|
|
96
|
+
* @returns The decoded MessageType.
|
|
97
|
+
*/
|
|
98
|
+
export function decodeMessageType(message) {
|
|
99
|
+
return message.readUInt32BE(0);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Return the encoded message (minus the header) from received message buffer.
|
|
103
|
+
* @param message - The complete received message.
|
|
104
|
+
* @returns The encoded message, without the header.
|
|
105
|
+
*/
|
|
106
|
+
export function getEncodedMessage(message) {
|
|
107
|
+
return message.subarray(4);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Creates a tx 'message' for sending to a peer.
|
|
111
|
+
* @param tx - The transaction to convert to a message.
|
|
112
|
+
* @returns - The message.
|
|
113
|
+
*/
|
|
114
|
+
export function toTxMessage(tx) {
|
|
115
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
116
|
+
const createMessageComponent = (obj) => {
|
|
117
|
+
if (!obj) {
|
|
118
|
+
// specify a length of 0 bytes
|
|
119
|
+
return numToUInt32BE(0);
|
|
120
|
+
}
|
|
121
|
+
const buffer = obj.toBuffer();
|
|
122
|
+
return Buffer.concat([numToUInt32BE(buffer.length), buffer]);
|
|
123
|
+
};
|
|
124
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
125
|
+
const createMessageComponents = (obj) => {
|
|
126
|
+
if (!obj || !obj.length) {
|
|
127
|
+
// specify a length of 0 bytes
|
|
128
|
+
return numToUInt32BE(0);
|
|
129
|
+
}
|
|
130
|
+
const allComponents = Buffer.concat(obj.map(createMessageComponent));
|
|
131
|
+
return Buffer.concat([numToUInt32BE(obj.length), allComponents]);
|
|
132
|
+
};
|
|
133
|
+
const messageBuffer = Buffer.concat([
|
|
134
|
+
createMessageComponent(tx.data),
|
|
135
|
+
createMessageComponent(tx.proof),
|
|
136
|
+
createMessageComponent(tx.encryptedLogs),
|
|
137
|
+
createMessageComponent(tx.unencryptedLogs),
|
|
138
|
+
createMessageComponents(tx.enqueuedPublicFunctionCalls),
|
|
139
|
+
createMessageComponents(tx.newContracts),
|
|
140
|
+
]);
|
|
141
|
+
const messageLength = numToUInt32BE(messageBuffer.length);
|
|
142
|
+
return Buffer.concat([messageLength, messageBuffer]);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Reproduces a transaction from a transaction 'message'
|
|
146
|
+
* @param buffer - The message buffer to convert to a tx.
|
|
147
|
+
* @returns - The reproduced transaction.
|
|
148
|
+
*/
|
|
149
|
+
export function fromTxMessage(buffer) {
|
|
150
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
151
|
+
const toObject = (objectBuffer, factory) => {
|
|
152
|
+
const objectSize = objectBuffer.readUint32BE(0);
|
|
153
|
+
return {
|
|
154
|
+
remainingData: objectBuffer.subarray(objectSize + 4),
|
|
155
|
+
obj: objectSize === 0 ? undefined : factory.fromBuffer(objectBuffer.subarray(4, objectSize + 4)),
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
159
|
+
const toObjectArray = (objectBuffer, factory) => {
|
|
160
|
+
const output = [];
|
|
161
|
+
const numItems = objectBuffer.readUint32BE(0);
|
|
162
|
+
let workingBuffer = objectBuffer.subarray(4);
|
|
163
|
+
for (let i = 0; i < numItems; i++) {
|
|
164
|
+
const obj = toObject(workingBuffer, factory);
|
|
165
|
+
workingBuffer = obj.remainingData;
|
|
166
|
+
if (obj !== undefined) {
|
|
167
|
+
output.push(obj.obj);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
remainingData: workingBuffer,
|
|
172
|
+
objects: output,
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
// this is the opposite of the 'toMessage' function
|
|
176
|
+
// so the first 4 bytes is the complete length, skip it
|
|
177
|
+
const publicInputs = toObject(buffer.subarray(4), KernelCircuitPublicInputsFinal);
|
|
178
|
+
const proof = toObject(publicInputs.remainingData, Proof);
|
|
179
|
+
const encryptedLogs = toObject(proof.remainingData, TxL2Logs);
|
|
180
|
+
if (!encryptedLogs.obj) {
|
|
181
|
+
encryptedLogs.obj = new TxL2Logs([]);
|
|
182
|
+
}
|
|
183
|
+
const unencryptedLogs = toObject(encryptedLogs.remainingData, TxL2Logs);
|
|
184
|
+
if (!unencryptedLogs.obj) {
|
|
185
|
+
unencryptedLogs.obj = new TxL2Logs([]);
|
|
186
|
+
}
|
|
187
|
+
const publicCalls = toObjectArray(unencryptedLogs.remainingData, PublicCallRequest);
|
|
188
|
+
const newContracts = toObjectArray(publicCalls.remainingData, ExtendedContractData);
|
|
189
|
+
return new Tx(publicInputs.obj, proof.obj, encryptedLogs.obj, unencryptedLogs.obj, publicCalls.objects, newContracts.objects);
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS90eF9tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsOEJBQThCLEVBQTRCLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hILE9BQU8sRUFBUyxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUU7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2xCLHFFQUF1QixDQUFBO0lBQ3ZCLGlGQUE2QixDQUFBO0lBQzdCLCtEQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFKVyxRQUFRLEtBQVIsUUFBUSxRQUluQjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFjLEVBQUUsV0FBbUI7SUFDL0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsR0FBUztJQUNqRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBZTtJQUN2RCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDckIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_messages.test.d.ts","sourceRoot":"","sources":["../../src/service/tx_messages.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TxHash, mockTx } from '@aztec/types';
|
|
2
|
+
import { expect } from '@jest/globals';
|
|
3
|
+
import { randomBytes } from 'crypto';
|
|
4
|
+
import { Messages, createGetTransactionsRequestMessage, createTransactionHashesMessage, createTransactionsMessage, decodeGetTransactionsRequestMessage, decodeMessageType, decodeTransactionHashesMessage, decodeTransactionsMessage, fromTxMessage, getEncodedMessage, toTxMessage, } from './tx_messages.js';
|
|
5
|
+
const makeTxHash = () => {
|
|
6
|
+
return new TxHash(randomBytes(32));
|
|
7
|
+
};
|
|
8
|
+
const verifyTx = (actual, expected) => {
|
|
9
|
+
expect(actual.data.toBuffer()).toEqual(expected.data?.toBuffer());
|
|
10
|
+
expect(actual.proof.toBuffer()).toEqual(expected.proof.toBuffer());
|
|
11
|
+
expect(actual.encryptedLogs.toBuffer()).toEqual(expected.encryptedLogs?.toBuffer());
|
|
12
|
+
expect(actual.newContracts.length).toEqual(expected.newContracts.length);
|
|
13
|
+
for (let i = 0; i < actual.newContracts.length; i++) {
|
|
14
|
+
expect(actual.newContracts[i].toBuffer()).toEqual(expected.newContracts[i].toBuffer());
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
describe('Messages', () => {
|
|
18
|
+
it('Correctly serialises and deserialises a single private transaction', () => {
|
|
19
|
+
const transaction = mockTx();
|
|
20
|
+
const message = toTxMessage(transaction);
|
|
21
|
+
const decodedTransaction = fromTxMessage(message);
|
|
22
|
+
verifyTx(decodedTransaction, transaction);
|
|
23
|
+
});
|
|
24
|
+
it('Correctly serialises and deserialises transactions messages', () => {
|
|
25
|
+
const privateTransactions = [mockTx(), mockTx(), mockTx()];
|
|
26
|
+
const message = createTransactionsMessage(privateTransactions);
|
|
27
|
+
expect(decodeMessageType(message)).toBe(Messages.POOLED_TRANSACTIONS);
|
|
28
|
+
const decodedTransactions = decodeTransactionsMessage(getEncodedMessage(message));
|
|
29
|
+
verifyTx(decodedTransactions[0], privateTransactions[0]);
|
|
30
|
+
verifyTx(decodedTransactions[1], privateTransactions[1]);
|
|
31
|
+
verifyTx(decodedTransactions[2], privateTransactions[2]);
|
|
32
|
+
});
|
|
33
|
+
it('Correctly serialises and deserialises transaction hashes message', () => {
|
|
34
|
+
const txHashes = [makeTxHash(), makeTxHash(), makeTxHash()];
|
|
35
|
+
const message = createTransactionHashesMessage(txHashes);
|
|
36
|
+
expect(decodeMessageType(message)).toEqual(Messages.POOLED_TRANSACTION_HASHES);
|
|
37
|
+
const decodedHashes = decodeTransactionHashesMessage(getEncodedMessage(message));
|
|
38
|
+
expect(decodedHashes.map(x => x.toString())).toEqual(txHashes.map(x => x.toString()));
|
|
39
|
+
});
|
|
40
|
+
it('Correctly serialises and deserialises get transactions message', () => {
|
|
41
|
+
const txHashes = [makeTxHash(), makeTxHash(), makeTxHash()];
|
|
42
|
+
const message = createGetTransactionsRequestMessage(txHashes);
|
|
43
|
+
expect(decodeMessageType(message)).toEqual(Messages.GET_TRANSACTIONS);
|
|
44
|
+
const decodedHashes = decodeGetTransactionsRequestMessage(getEncodedMessage(message));
|
|
45
|
+
expect(decodedHashes.map(x => x.toString())).toEqual(txHashes.map(x => x.toString()));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWVzc2FnZXMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlL3R4X21lc3NhZ2VzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXJDLE9BQU8sRUFDTCxRQUFRLEVBQ1IsbUNBQW1DLEVBQ25DLDhCQUE4QixFQUM5Qix5QkFBeUIsRUFDekIsbUNBQW1DLEVBQ25DLGlCQUFpQixFQUNqQiw4QkFBOEIsRUFDOUIseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsV0FBVyxHQUNaLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQ3RCLE9BQU8sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFVLEVBQUUsUUFBWSxFQUFFLEVBQUU7SUFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLENB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tx_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './tx_pool.js';
|
|
2
|
+
export * from './memory_tx_pool.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfcG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDIn0=
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Tx, TxHash } from '@aztec/types';
|
|
2
|
+
import { TxPool } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* In-memory implementation of the Transaction Pool.
|
|
5
|
+
*/
|
|
6
|
+
export declare class InMemoryTxPool implements TxPool {
|
|
7
|
+
private log;
|
|
8
|
+
/**
|
|
9
|
+
* Our tx pool, stored as a Map in-memory, with K: tx hash and V: the transaction.
|
|
10
|
+
*/
|
|
11
|
+
private txs;
|
|
12
|
+
/**
|
|
13
|
+
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
14
|
+
* @param log - A logger.
|
|
15
|
+
*/
|
|
16
|
+
constructor(log?: import("@aztec/foundation/log").DebugLogger);
|
|
17
|
+
/**
|
|
18
|
+
* Checks if a transaction exists in the pool and returns it.
|
|
19
|
+
* @param txHash - The generated tx hash.
|
|
20
|
+
* @returns The transaction, if found, 'undefined' otherwise.
|
|
21
|
+
*/
|
|
22
|
+
getTxByHash(txHash: TxHash): Tx | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
25
|
+
* @param txs - An array of txs to be added to the pool.
|
|
26
|
+
* @returns Empty promise.
|
|
27
|
+
*/
|
|
28
|
+
addTxs(txs: Tx[]): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
31
|
+
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
32
|
+
* @returns The number of transactions that was deleted from the pool.
|
|
33
|
+
*/
|
|
34
|
+
deleteTxs(txHashes: TxHash[]): number;
|
|
35
|
+
/**
|
|
36
|
+
* Gets all the transactions stored in the pool.
|
|
37
|
+
* @returns Array of tx objects in the order they were added to the pool.
|
|
38
|
+
*/
|
|
39
|
+
getAllTxs(): Tx[];
|
|
40
|
+
/**
|
|
41
|
+
* Gets the hashes of all transactions currently in the tx pool.
|
|
42
|
+
* @returns An array of transaction hashes found in the tx pool.
|
|
43
|
+
*/
|
|
44
|
+
getAllTxHashes(): TxHash[];
|
|
45
|
+
/**
|
|
46
|
+
* Returns a boolean indicating if the transaction is present in the pool.
|
|
47
|
+
* @param txHash - The hash of the transaction to be queried.
|
|
48
|
+
* @returns True if the transaction present, false otherwise.
|
|
49
|
+
*/
|
|
50
|
+
hasTx(txHash: TxHash): boolean;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=memory_tx_pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory_tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/memory_tx_pool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC;;GAEG;AACH,qBAAa,cAAe,YAAW,MAAM;IAU/B,OAAO,CAAC,GAAG;IATvB;;OAEG;IACH,OAAO,CAAC,GAAG,CAAkB;IAE7B;;;OAGG;gBACiB,GAAG,8CAAqC;IAI5D;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAKlD;;;;OAIG;IACU,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAO5C;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;IAIjC;;;;OAIG;IACI,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGtC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { Tx, TxHash } from '@aztec/types';
|
|
3
|
+
/**
|
|
4
|
+
* In-memory implementation of the Transaction Pool.
|
|
5
|
+
*/
|
|
6
|
+
export class InMemoryTxPool {
|
|
7
|
+
/**
|
|
8
|
+
* Class constructor for in-memory TxPool. Initiates our transaction pool as a JS Map.
|
|
9
|
+
* @param log - A logger.
|
|
10
|
+
*/
|
|
11
|
+
constructor(log = createDebugLogger('aztec:tx_pool')) {
|
|
12
|
+
this.log = log;
|
|
13
|
+
this.txs = new Map();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Checks if a transaction exists in the pool and returns it.
|
|
17
|
+
* @param txHash - The generated tx hash.
|
|
18
|
+
* @returns The transaction, if found, 'undefined' otherwise.
|
|
19
|
+
*/
|
|
20
|
+
getTxByHash(txHash) {
|
|
21
|
+
const result = this.txs.get(txHash.toBigInt());
|
|
22
|
+
return result === undefined ? undefined : Tx.clone(result);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
26
|
+
* @param txs - An array of txs to be added to the pool.
|
|
27
|
+
* @returns Empty promise.
|
|
28
|
+
*/
|
|
29
|
+
async addTxs(txs) {
|
|
30
|
+
for (const tx of txs) {
|
|
31
|
+
const txHash = await tx.getTxHash();
|
|
32
|
+
this.log(`Adding tx with id ${txHash.toString()}`);
|
|
33
|
+
this.txs.set(txHash.toBigInt(), tx);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Deletes transactions from the pool. Tx hashes that are not present are ignored.
|
|
38
|
+
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
39
|
+
* @returns The number of transactions that was deleted from the pool.
|
|
40
|
+
*/
|
|
41
|
+
deleteTxs(txHashes) {
|
|
42
|
+
const numTxsRemoved = txHashes
|
|
43
|
+
.map(txHash => this.txs.delete(txHash.toBigInt()))
|
|
44
|
+
.filter(result => result === true).length;
|
|
45
|
+
return numTxsRemoved;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets all the transactions stored in the pool.
|
|
49
|
+
* @returns Array of tx objects in the order they were added to the pool.
|
|
50
|
+
*/
|
|
51
|
+
getAllTxs() {
|
|
52
|
+
return Array.from(this.txs.values()).map(x => Tx.clone(x));
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Gets the hashes of all transactions currently in the tx pool.
|
|
56
|
+
* @returns An array of transaction hashes found in the tx pool.
|
|
57
|
+
*/
|
|
58
|
+
getAllTxHashes() {
|
|
59
|
+
return Array.from(this.txs.keys()).map(x => TxHash.fromBigInt(x));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns a boolean indicating if the transaction is present in the pool.
|
|
63
|
+
* @param txHash - The hash of the transaction to be queried.
|
|
64
|
+
* @returns True if the transaction present, false otherwise.
|
|
65
|
+
*/
|
|
66
|
+
hasTx(txHash) {
|
|
67
|
+
return this.txs.has(txHash.toBigInt());
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X3R4X3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHhfcG9vbC9tZW1vcnlfdHhfcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUkxQzs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBTXpCOzs7T0FHRztJQUNILFlBQW9CLE1BQU0saUJBQWlCLENBQUMsZUFBZSxDQUFDO1FBQXhDLFFBQUcsR0FBSCxHQUFHLENBQXFDO1FBQzFELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxNQUFjO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFTO1FBQzNCLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsUUFBa0I7UUFDakMsTUFBTSxhQUFhLEdBQUcsUUFBUTthQUMzQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzVDLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTO1FBQ2QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsTUFBYztRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Tx, TxHash } from '@aztec/types';
|
|
2
|
+
/**
|
|
3
|
+
* Interface of a transaction pool. The pool includes tx requests and is kept up-to-date by a P2P client.
|
|
4
|
+
*/
|
|
5
|
+
export interface TxPool {
|
|
6
|
+
/**
|
|
7
|
+
* Adds a list of transactions to the pool. Duplicates are ignored.
|
|
8
|
+
* @param txs - An array of txs to be added to the pool.
|
|
9
|
+
*/
|
|
10
|
+
addTxs(txs: Tx[]): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a transaction exists in the pool and returns it.
|
|
13
|
+
* @param txHash - The hash of the transaction, used as an ID.
|
|
14
|
+
* @returns The transaction, if found, 'undefined' otherwise.
|
|
15
|
+
*/
|
|
16
|
+
getTxByHash(txHash: TxHash): Tx | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Deletes transactions from the pool. Tx hasehs that are not present are ignored.
|
|
19
|
+
* @param txHashes - An array of tx hashes to be removed from the tx pool.
|
|
20
|
+
*/
|
|
21
|
+
deleteTxs(txHashes: TxHash[]): void;
|
|
22
|
+
/**
|
|
23
|
+
* Gets all transactions currently in the tx pool.
|
|
24
|
+
* @returns An array of transaction objects found in the tx pool.
|
|
25
|
+
*/
|
|
26
|
+
getAllTxs(): Tx[];
|
|
27
|
+
/**
|
|
28
|
+
* Gets the hashes of all transactions currently in the tx pool.
|
|
29
|
+
* @returns An array of transaction hashes found in the tx pool.
|
|
30
|
+
*/
|
|
31
|
+
getAllTxHashes(): TxHash[];
|
|
32
|
+
/**
|
|
33
|
+
* Returns a boolean indicating if the transaction is present in the pool.
|
|
34
|
+
* @param txHash - The hash of the transaction to be queried.
|
|
35
|
+
* @returns True if the transaction present, false otherwise.
|
|
36
|
+
*/
|
|
37
|
+
hasTx(txHash: TxHash): boolean;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=tx_pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_pool.d.ts","sourceRoot":"","sources":["../../src/tx_pool/tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;IAE5C;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,SAAS,IAAI,EAAE,EAAE,CAAC;IAElB;;;OAGG;IACH,cAAc,IAAI,MAAM,EAAE,CAAC;IAE3B;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_pool.test.d.ts","sourceRoot":"","sources":["../../src/tx_pool/tx_pool.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { mockTx } from '@aztec/types';
|
|
2
|
+
import { InMemoryTxPool } from './index.js';
|
|
3
|
+
describe('In-Memory TX pool', () => {
|
|
4
|
+
it('Adds txs to the pool', async () => {
|
|
5
|
+
const pool = new InMemoryTxPool();
|
|
6
|
+
const tx1 = mockTx();
|
|
7
|
+
await pool.addTxs([tx1]);
|
|
8
|
+
const poolTx = pool.getTxByHash(await tx1.getTxHash());
|
|
9
|
+
expect(await poolTx.getTxHash()).toEqual(await tx1.getTxHash());
|
|
10
|
+
});
|
|
11
|
+
it('Removes txs from the pool', async () => {
|
|
12
|
+
const pool = new InMemoryTxPool();
|
|
13
|
+
const tx1 = mockTx();
|
|
14
|
+
await pool.addTxs([tx1]);
|
|
15
|
+
pool.deleteTxs([await tx1.getTxHash()]);
|
|
16
|
+
const poolTx = pool.getTxByHash(await tx1.getTxHash());
|
|
17
|
+
expect(poolTx).toBeFalsy();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcG9vbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R4X3Bvb2wvdHhfcG9vbC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU1QyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBRXJCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxNQUFNLE1BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDJCQUEyQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFckIsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"exports": "./dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@aztec/circuits.js": "0.7.
|
|
8
|
-
"@aztec/foundation": "0.7.
|
|
9
|
-
"@aztec/types": "0.7.
|
|
7
|
+
"@aztec/circuits.js": "0.7.4",
|
|
8
|
+
"@aztec/foundation": "0.7.4",
|
|
9
|
+
"@aztec/types": "0.7.4",
|
|
10
10
|
"@chainsafe/libp2p-noise": "^13.0.0",
|
|
11
11
|
"@chainsafe/libp2p-yamux": "^5.0.0",
|
|
12
12
|
"@libp2p/bootstrap": "^9.0.4",
|
package/Dockerfile
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/yarn-project-base AS builder
|
|
2
|
-
|
|
3
|
-
COPY . .
|
|
4
|
-
|
|
5
|
-
WORKDIR /usr/src/yarn-project/p2p
|
|
6
|
-
RUN yarn build && yarn formatting
|
|
7
|
-
|
|
8
|
-
RUN yarn test
|
|
9
|
-
|
|
10
|
-
# Prune dev dependencies. See comment in base image.
|
|
11
|
-
RUN yarn cache clean
|
|
12
|
-
RUN yarn workspaces focus --production > /dev/null
|
|
13
|
-
|
|
14
|
-
FROM node:18-alpine
|
|
15
|
-
COPY --from=builder /usr/src/yarn-project/p2p /usr/src/yarn-project/p2p
|
|
16
|
-
WORKDIR /usr/src/yarn-project/p2p
|
|
17
|
-
ENTRYPOINT ["yarn"]
|