@aztec/p2p 0.40.1 → 0.42.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.
- package/dest/bootstrap/bootstrap.d.ts +1 -1
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +4 -3
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +26 -2
- package/dest/client/mocks.js +2 -2
- package/dest/config.d.ts +11 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +6 -4
- package/dest/service/discV5_service.d.ts.map +1 -1
- package/dest/service/discV5_service.js +5 -4
- package/dest/service/ip_query.d.ts +2 -0
- package/dest/service/ip_query.d.ts.map +1 -0
- package/dest/service/ip_query.js +6 -0
- package/dest/service/libp2p_service.d.ts +1 -5
- package/dest/service/libp2p_service.d.ts.map +1 -1
- package/dest/service/libp2p_service.js +9 -43
- package/dest/service/tx_messages.d.ts.map +1 -1
- package/dest/service/tx_messages.js +9 -4
- package/package.json +5 -5
- package/src/bootstrap/bootstrap.ts +4 -3
- package/src/client/index.ts +30 -1
- package/src/client/mocks.ts +1 -1
- package/src/config.ts +21 -5
- package/src/service/discV5_service.ts +5 -3
- package/src/service/ip_query.ts +5 -0
- package/src/service/libp2p_service.ts +8 -57
- package/src/service/tx_messages.ts +8 -2
- package/dest/service/peer_store.d.ts +0 -18
- package/dest/service/peer_store.d.ts.map +0 -1
- package/dest/service/peer_store.js +0 -25
- package/src/service/peer_store.ts +0 -36
|
@@ -3,7 +3,7 @@ import { type P2PConfig } from '../config.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Required P2P config values for a bootstrap node.
|
|
5
5
|
*/
|
|
6
|
-
export type BootNodeConfig = Partial<P2PConfig> & Pick<P2PConfig, '
|
|
6
|
+
export type BootNodeConfig = Partial<P2PConfig> & Pick<P2PConfig, 'announceUdpHostname' | 'announcePort'> & Required<Pick<P2PConfig, 'udpListenIp' | 'udpListenPort'>>;
|
|
7
7
|
/**
|
|
8
8
|
* Encapsulates a 'Bootstrap' node, used for the purpose of assisting new joiners in acquiring peers.
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,GAC7C,IAAI,CAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,GAC7C,IAAI,CAAC,SAAS,EAAE,qBAAqB,GAAG,cAAc,CAAC,GACvD,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC;AAE7D;;GAEG;AACH,qBAAa,aAAa;IAIZ,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,IAAI,CAAC,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEJ,MAAM,yCAA2C;IAErE;;;;OAIG;IACU,KAAK,CAAC,MAAM,EAAE,cAAc;IAyCzC;;;OAGG;IACU,IAAI;IAMjB;;;OAGG;IACI,SAAS;IAOT,MAAM;CAMd"}
|
|
@@ -18,12 +18,12 @@ export class BootstrapNode {
|
|
|
18
18
|
* @returns An empty promise.
|
|
19
19
|
*/
|
|
20
20
|
async start(config) {
|
|
21
|
-
const { peerIdPrivateKey, udpListenIp, udpListenPort,
|
|
21
|
+
const { peerIdPrivateKey, udpListenIp, udpListenPort, announceUdpHostname, announcePort } = config;
|
|
22
22
|
const peerId = await createLibP2PPeerId(peerIdPrivateKey);
|
|
23
23
|
this.peerId = peerId;
|
|
24
24
|
const enr = SignableENR.createFromPeerId(peerId);
|
|
25
25
|
const listenAddrUdp = multiaddr(`/ip4/${udpListenIp}/udp/${udpListenPort}`);
|
|
26
|
-
const publicAddr = multiaddr(`${
|
|
26
|
+
const publicAddr = multiaddr(`${announceUdpHostname}/udp/${announcePort}`);
|
|
27
27
|
enr.setLocationMultiaddr(publicAddr);
|
|
28
28
|
enr.set(AZTEC_ENR_KEY, Uint8Array.from([AZTEC_NET]));
|
|
29
29
|
this.logger.info(`Starting bootstrap node ${peerId}, listening on ${listenAddrUdp.toString()}`);
|
|
@@ -33,6 +33,7 @@ export class BootstrapNode {
|
|
|
33
33
|
bindAddrs: { ip4: listenAddrUdp },
|
|
34
34
|
config: {
|
|
35
35
|
lookupTimeout: 2000,
|
|
36
|
+
allowUnverifiedSessions: true,
|
|
36
37
|
},
|
|
37
38
|
});
|
|
38
39
|
this.node.on('multiaddrUpdated', (addr) => {
|
|
@@ -77,4 +78,4 @@ export class BootstrapNode {
|
|
|
77
78
|
return this.node?.enr.toENR();
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jvb3RzdHJhcC9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sRUFBMkIsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBU3pEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBb0IsU0FBUyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQztRQUFqRCxXQUFNLEdBQU4sTUFBTSxDQUEyQztRQUg3RCxTQUFJLEdBQVksU0FBUyxDQUFDO0lBR3NDLENBQUM7SUFFekU7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBc0I7UUFDdkMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ25HLE1BQU0sTUFBTSxHQUFHLE1BQU0sa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsV0FBVyxRQUFRLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDNUUsTUFBTSxVQUFVLEdBQUcsU0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAK9C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,cAAc,iBAAiB,CAAC;AAEhC,eAAO,MAAM,eAAe,UACnB,YAAY,UACX,SAAS,UACT,MAAM,iBACC,aAAa,uBA0C7B,CAAC"}
|
package/dest/client/index.js
CHANGED
|
@@ -2,12 +2,36 @@ import { P2PClient } from '../client/p2p_client.js';
|
|
|
2
2
|
import { DiscV5Service } from '../service/discV5_service.js';
|
|
3
3
|
import { DummyP2PService, DummyPeerDiscoveryService } from '../service/dummy_service.js';
|
|
4
4
|
import { LibP2PService, createLibP2PPeerId } from '../service/index.js';
|
|
5
|
+
import { getPublicIp } from '../service/ip_query.js';
|
|
5
6
|
export * from './p2p_client.js';
|
|
6
7
|
export const createP2PClient = async (store, config, txPool, l2BlockSource) => {
|
|
7
8
|
let discv5Service;
|
|
8
9
|
let p2pService;
|
|
9
10
|
if (config.p2pEnabled) {
|
|
10
|
-
//
|
|
11
|
+
// If announceTcpHostname or announceUdpHostname are not provided, query for public IP if config allows
|
|
12
|
+
const { announceTcpHostname: configAnnounceTcpHostname, announceUdpHostname: configAnnounceUdpHostname, queryForIp, } = config;
|
|
13
|
+
if (!configAnnounceTcpHostname) {
|
|
14
|
+
if (queryForIp) {
|
|
15
|
+
const publicIp = await getPublicIp();
|
|
16
|
+
const announceHostname = `/ip4/${publicIp}`;
|
|
17
|
+
config.announceTcpHostname = announceHostname;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw new Error('No announceTcpHostname provided');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (!configAnnounceUdpHostname) {
|
|
24
|
+
// If announceUdpHostname is not provided, use announceTcpHostname
|
|
25
|
+
if (!queryForIp && config.announceTcpHostname) {
|
|
26
|
+
config.announceUdpHostname = config.announceTcpHostname;
|
|
27
|
+
}
|
|
28
|
+
else if (queryForIp) {
|
|
29
|
+
const publicIp = await getPublicIp();
|
|
30
|
+
const announceHostname = `/ip4/${publicIp}`;
|
|
31
|
+
config.announceUdpHostname = announceHostname;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Create peer discovery service
|
|
11
35
|
const peerId = await createLibP2PPeerId(config.peerIdPrivateKey);
|
|
12
36
|
discv5Service = new DiscV5Service(peerId, config);
|
|
13
37
|
p2pService = await LibP2PService.new(config, discv5Service, peerId, txPool, store);
|
|
@@ -18,4 +42,4 @@ export const createP2PClient = async (store, config, txPool, l2BlockSource) => {
|
|
|
18
42
|
}
|
|
19
43
|
return new P2PClient(store, l2BlockSource, txPool, p2pService);
|
|
20
44
|
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHckQsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNsQyxLQUFtQixFQUNuQixNQUFpQixFQUNqQixNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsRUFBRTtJQUNGLElBQUksYUFBYSxDQUFDO0lBQ2xCLElBQUksVUFBVSxDQUFDO0lBRWYsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEIsdUdBQXVHO1FBQ3ZHLE1BQU0sRUFDSixtQkFBbUIsRUFBRSx5QkFBeUIsRUFDOUMsbUJBQW1CLEVBQUUseUJBQXlCLEVBQzlDLFVBQVUsR0FDWCxHQUFHLE1BQU0sQ0FBQztRQUNYLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQy9CLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLFFBQVEsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7WUFDaEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQy9CLGtFQUFrRTtZQUNsRSxJQUFJLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDO1lBQzFELENBQUM7aUJBQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxXQUFXLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLFFBQVEsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLENBQUMsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JGLENBQUM7U0FBTSxDQUFDO1FBQ04sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDbkMsYUFBYSxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsT0FBTyxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUMifQ==
|
package/dest/client/mocks.js
CHANGED
|
@@ -70,7 +70,7 @@ export class MockBlockSource {
|
|
|
70
70
|
for (const block of this.l2Blocks) {
|
|
71
71
|
for (const txEffect of block.body.txEffects) {
|
|
72
72
|
if (txEffect.txHash.equals(txHash)) {
|
|
73
|
-
return Promise.resolve(new TxReceipt(txHash, TxStatus.
|
|
73
|
+
return Promise.resolve(new TxReceipt(txHash, TxStatus.SUCCESS, '', txEffect.transactionFee.toBigInt(), block.hash().toBuffer(), block.number));
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -91,4 +91,4 @@ export class MockBlockSource {
|
|
|
91
91
|
return Promise.resolve();
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L21vY2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWtELFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUFvQixZQUFZLEdBQUc7UUFBZixjQUFTLEdBQVQsU0FBUyxDQUFNO1FBSDNCLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUdqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCO1FBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0I7UUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxjQUFjO1FBQ25CLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxNQUFjO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsTUFBYztRQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksbUJBQW1CLENBQUMsTUFBYztRQUN2QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzVDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDbkMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUNwQixJQUFJLFNBQVMsQ0FDWCxNQUFNLEVBQ04sUUFBUSxDQUFDLE9BQU8sRUFDaEIsRUFBRSxFQUNGLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQ2xDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFDdkIsS0FBSyxDQUFDLE1BQU0sQ0FDYixDQUNGLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLO1FBQ1YsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNJLElBQUk7UUFDVCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YifQ==
|
package/dest/config.d.ts
CHANGED
|
@@ -48,9 +48,14 @@ export interface P2PConfig {
|
|
|
48
48
|
*/
|
|
49
49
|
transactionProtocol: string;
|
|
50
50
|
/**
|
|
51
|
-
* Hostname to announce.
|
|
51
|
+
* TCP Hostname to announce.
|
|
52
52
|
*/
|
|
53
|
-
|
|
53
|
+
announceTcpHostname?: string;
|
|
54
|
+
/**
|
|
55
|
+
* UDP Hostname to announce.
|
|
56
|
+
* If not provided, will use the same hostname as TCP.
|
|
57
|
+
*/
|
|
58
|
+
announceUdpHostname?: string;
|
|
54
59
|
/**
|
|
55
60
|
* Port to announce.
|
|
56
61
|
*/
|
|
@@ -75,6 +80,10 @@ export interface P2PConfig {
|
|
|
75
80
|
* The transaction gossiping message version.
|
|
76
81
|
*/
|
|
77
82
|
txGossipVersion: SemVer;
|
|
83
|
+
/**
|
|
84
|
+
* If announceUdpHostname or announceTcpHostname are not provided, query for the IP address of the machine. Default is false.
|
|
85
|
+
*/
|
|
86
|
+
queryForIp: boolean;
|
|
78
87
|
}
|
|
79
88
|
/**
|
|
80
89
|
* Gets the config values for p2p client from environment variables.
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CA8C/C"}
|
package/dest/config.js
CHANGED
|
@@ -4,7 +4,7 @@ import { SemVer } from 'semver';
|
|
|
4
4
|
* @returns The config values for p2p client.
|
|
5
5
|
*/
|
|
6
6
|
export function getP2PConfigEnvVars() {
|
|
7
|
-
const { P2P_ENABLED, P2P_BLOCK_CHECK_INTERVAL_MS, P2P_PEER_CHECK_INTERVAL_MS, P2P_L2_BLOCK_QUEUE_SIZE, P2P_TCP_LISTEN_PORT, P2P_TCP_LISTEN_IP, P2P_UDP_LISTEN_PORT, P2P_UDP_LISTEN_IP, PEER_ID_PRIVATE_KEY, BOOTSTRAP_NODES,
|
|
7
|
+
const { P2P_ENABLED, P2P_BLOCK_CHECK_INTERVAL_MS, P2P_PEER_CHECK_INTERVAL_MS, P2P_L2_BLOCK_QUEUE_SIZE, P2P_TCP_LISTEN_PORT, P2P_TCP_LISTEN_IP, P2P_UDP_LISTEN_PORT, P2P_UDP_LISTEN_IP, PEER_ID_PRIVATE_KEY, BOOTSTRAP_NODES, P2P_ANNOUNCE_TCP_HOSTNAME, P2P_ANNOUNCE_UDP_HOSTNAME, P2P_ANNOUNCE_PORT, P2P_NAT_ENABLED, P2P_MIN_PEERS, P2P_MAX_PEERS, DATA_DIRECTORY, TX_GOSSIP_VERSION, P2P_TX_PROTOCOL, P2P_QUERY_FOR_IP, } = process.env;
|
|
8
8
|
const envVars = {
|
|
9
9
|
p2pEnabled: P2P_ENABLED === 'true',
|
|
10
10
|
p2pBlockCheckIntervalMS: P2P_BLOCK_CHECK_INTERVAL_MS ? +P2P_BLOCK_CHECK_INTERVAL_MS : 100,
|
|
@@ -16,15 +16,17 @@ export function getP2PConfigEnvVars() {
|
|
|
16
16
|
udpListenIp: P2P_UDP_LISTEN_IP ? P2P_UDP_LISTEN_IP : '0.0.0.0',
|
|
17
17
|
peerIdPrivateKey: PEER_ID_PRIVATE_KEY,
|
|
18
18
|
bootstrapNodes: BOOTSTRAP_NODES ? BOOTSTRAP_NODES.split(',') : [],
|
|
19
|
-
transactionProtocol: '',
|
|
20
|
-
|
|
19
|
+
transactionProtocol: P2P_TX_PROTOCOL ? P2P_TX_PROTOCOL : '/aztec/0.1.0',
|
|
20
|
+
announceTcpHostname: P2P_ANNOUNCE_TCP_HOSTNAME,
|
|
21
|
+
announceUdpHostname: P2P_ANNOUNCE_UDP_HOSTNAME,
|
|
21
22
|
announcePort: P2P_ANNOUNCE_PORT ? +P2P_ANNOUNCE_PORT : undefined,
|
|
22
23
|
enableNat: P2P_NAT_ENABLED === 'true',
|
|
23
24
|
minPeerCount: P2P_MIN_PEERS ? +P2P_MIN_PEERS : 10,
|
|
24
25
|
maxPeerCount: P2P_MAX_PEERS ? +P2P_MAX_PEERS : 100,
|
|
25
26
|
dataDirectory: DATA_DIRECTORY,
|
|
26
27
|
txGossipVersion: TX_GOSSIP_VERSION ? new SemVer(TX_GOSSIP_VERSION) : new SemVer('0.1.0'),
|
|
28
|
+
queryForIp: P2P_QUERY_FOR_IP === 'true',
|
|
27
29
|
};
|
|
28
30
|
return envVars;
|
|
29
31
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBNEdoQzs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE1BQU0sRUFDSixXQUFXLEVBQ1gsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2IsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUNoQixNQUFNLE9BQU8sR0FBYztRQUN6QixVQUFVLEVBQUUsV0FBVyxLQUFLLE1BQU07UUFDbEMsdUJBQXVCLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDekYsc0JBQXNCLEVBQUUsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDdkYsY0FBYyxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQ3pFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUNqRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzlELGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUNqRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzlELGdCQUFnQixFQUFFLG1CQUFtQjtRQUNyQyxjQUFjLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2pFLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxjQUFjO1FBQ3ZFLG1CQUFtQixFQUFFLHlCQUF5QjtRQUM5QyxtQkFBbUIsRUFBRSx5QkFBeUI7UUFDOUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2hFLFNBQVMsRUFBRSxlQUFlLEtBQUssTUFBTTtRQUNyQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNqRCxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUNsRCxhQUFhLEVBQUUsY0FBYztRQUM3QixlQUFlLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUN4RixVQUFVLEVBQUUsZ0JBQWdCLEtBQUssTUFBTTtLQUN4QyxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../src/service/discV5_service.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7E,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,oBAAY,QAAQ;IAClB,MAAM,IAAO;IACb,OAAO,IAAO;IACd,OAAO,IAAO;CACf;AAGD,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAajE,OAAO,CAAC,MAAM;IAA6B,OAAO,CAAC,MAAM;IAZrE,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,cAAc,CAAW;gBAEb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAU,MAAM,yCAA4C;
|
|
1
|
+
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../src/service/discV5_service.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7E,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,oBAAY,QAAQ;IAClB,MAAM,IAAO;IACb,OAAO,IAAO;IACd,OAAO,IAAO;CACf;AAGD,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAajE,OAAO,CAAC,MAAM;IAA6B,OAAO,CAAC,MAAM;IAZrE,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,cAAc,CAAW;gBAEb,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAU,MAAM,yCAA4C;IA4CpG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B,WAAW,IAAI,GAAG,EAAE;IAIpB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAIzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,OAAO,CAAC,YAAY;CAWrB"}
|
|
@@ -23,14 +23,14 @@ export class DiscV5Service extends EventEmitter {
|
|
|
23
23
|
this.peerId = peerId;
|
|
24
24
|
this.logger = logger;
|
|
25
25
|
this.currentState = PeerDiscoveryState.STOPPED;
|
|
26
|
-
const {
|
|
26
|
+
const { announceUdpHostname, announceTcpHostname, tcpListenPort, udpListenIp, udpListenPort, bootstrapNodes } = config;
|
|
27
27
|
this.bootstrapNodes = bootstrapNodes;
|
|
28
28
|
// create ENR from PeerId
|
|
29
29
|
this.enr = SignableENR.createFromPeerId(peerId);
|
|
30
30
|
// Add aztec identification to ENR
|
|
31
31
|
this.enr.set(AZTEC_ENR_KEY, Uint8Array.from([AZTEC_NET]));
|
|
32
|
-
const multiAddrUdp = multiaddr(`${
|
|
33
|
-
const multiAddrTcp = multiaddr(`${
|
|
32
|
+
const multiAddrUdp = multiaddr(`${announceUdpHostname}/udp/${udpListenPort}/p2p/${peerId.toString()}`);
|
|
33
|
+
const multiAddrTcp = multiaddr(`${announceTcpHostname}/tcp/${tcpListenPort}/p2p/${peerId.toString()}`);
|
|
34
34
|
const listenMultiAddrUdp = multiaddr(`/ip4/${udpListenIp}/udp/${udpListenPort}`);
|
|
35
35
|
// set location multiaddr in ENR record
|
|
36
36
|
this.enr.setLocationMultiaddr(multiAddrUdp);
|
|
@@ -41,6 +41,7 @@ export class DiscV5Service extends EventEmitter {
|
|
|
41
41
|
bindAddrs: { ip4: listenMultiAddrUdp },
|
|
42
42
|
config: {
|
|
43
43
|
lookupTimeout: 2000,
|
|
44
|
+
allowUnverifiedSessions: true,
|
|
44
45
|
},
|
|
45
46
|
});
|
|
46
47
|
this.logger.info(`ENR NodeId: ${this.enr.nodeId}`);
|
|
@@ -106,4 +107,4 @@ export class DiscV5Service extends EventEmitter {
|
|
|
106
107
|
}
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY1Y1X3NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9kaXNjVjVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxFQUFFLE1BQU0sRUFBMkIsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQztBQUdsQyxPQUFPLEVBQTZCLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUM7QUFFN0MsTUFBTSxDQUFOLElBQVksUUFJWDtBQUpELFdBQVksUUFBUTtJQUNsQiwyQ0FBYSxDQUFBO0lBQ2IsNkNBQWMsQ0FBQTtJQUNkLDZDQUFjLENBQUE7QUFDaEIsQ0FBQyxFQUpXLFFBQVEsS0FBUixRQUFRLFFBSW5CO0FBRUQsNkJBQTZCO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBYTdDLFlBQW9CLE1BQWMsRUFBRSxNQUFpQixFQUFVLFNBQVMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUM7UUFDL0csS0FBSyxFQUFFLENBQUM7UUFEVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQTZCLFdBQU0sR0FBTixNQUFNLENBQTRDO1FBSnpHLGlCQUFZLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDO1FBTWhELE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxtQkFB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ip_query.d.ts","sourceRoot":"","sources":["../../src/service/ip_query.ts"],"names":[],"mappings":"AAAA,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAInD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export async function getPublicIp() {
|
|
2
|
+
const resp = await fetch('http://checkip.amazonaws.com/');
|
|
3
|
+
const text = await resp.text();
|
|
4
|
+
return text.trim();
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBfcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9pcF9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVc7SUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUMxRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNyQixDQUFDIn0=
|
|
@@ -6,7 +6,6 @@ import '@libp2p/kad-dht';
|
|
|
6
6
|
import { type Libp2p } from 'libp2p';
|
|
7
7
|
import { type P2PConfig } from '../config.js';
|
|
8
8
|
import { type TxPool } from '../tx_pool/index.js';
|
|
9
|
-
import { type AztecPeerStore } from './peer_store.js';
|
|
10
9
|
import type { P2PService, PeerDiscoveryService } from './service.js';
|
|
11
10
|
export interface PubSubLibp2p extends Libp2p {
|
|
12
11
|
services: {
|
|
@@ -26,7 +25,6 @@ export declare class LibP2PService implements P2PService {
|
|
|
26
25
|
private config;
|
|
27
26
|
private node;
|
|
28
27
|
private peerDiscoveryService;
|
|
29
|
-
private peerStore;
|
|
30
28
|
private protocolId;
|
|
31
29
|
private txPool;
|
|
32
30
|
private bootstrapPeerIds;
|
|
@@ -35,7 +33,7 @@ export declare class LibP2PService implements P2PService {
|
|
|
35
33
|
private knownTxLookup;
|
|
36
34
|
private messageCreator;
|
|
37
35
|
private peerManager;
|
|
38
|
-
constructor(config: P2PConfig, node: PubSubLibp2p, peerDiscoveryService: PeerDiscoveryService,
|
|
36
|
+
constructor(config: P2PConfig, node: PubSubLibp2p, peerDiscoveryService: PeerDiscoveryService, protocolId: string, txPool: TxPool, bootstrapPeerIds?: PeerId[], logger?: import("@aztec/foundation/log").Logger);
|
|
39
37
|
/**
|
|
40
38
|
* Starts the LibP2P service.
|
|
41
39
|
* @returns An empty promise.
|
|
@@ -82,8 +80,6 @@ export declare class LibP2PService implements P2PService {
|
|
|
82
80
|
*/
|
|
83
81
|
settledTxs(txHashes: TxHash[]): void;
|
|
84
82
|
private addPeer;
|
|
85
|
-
private handleProtocolDial;
|
|
86
|
-
private consumeInboundStream;
|
|
87
83
|
private handleNewConnection;
|
|
88
84
|
private processTxFromPeer;
|
|
89
85
|
private sendTxToPeers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../src/service/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../src/service/libp2p_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,6BAA6B,CAAC;AAI9E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAU,MAAM,mBAAmB,CAAC;AAChE,OAAO,iBAAiB,CAAC;AAKzB,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAEnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,WAAW,YAAa,SAAQ,MAAM;IAC1C,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;KACjC,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS7E;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,UAAU;IAM5C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,MAAM;IAXhB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,WAAW,CAAc;gBAEvB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,YAAY,EAClB,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,gBAAgB,GAAE,MAAM,EAAO,EAC/B,MAAM,yCAA4C;IAM5D;;;OAGG;IACU,KAAK;IAkDlB;;;OAGG;IACU,IAAI;IAQjB;;;;;OAKG;WACiB,GAAG,CACrB,MAAM,EAAE,SAAS,EACjB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,YAAY;IAkErB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;;;;OAKG;YACW,cAAc;IAS5B;;;;OAIG;YACW,sBAAsB;IAUpC;;;OAGG;IACI,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAIhC;;;OAGG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;YAI7B,OAAO;YAiCP,mBAAmB;YASnB,iBAAiB;YAOjB,aAAa;IAO3B,OAAO,CAAC,eAAe;CAGxB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SerialQueue } from '@aztec/foundation/fifo';
|
|
2
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
|
|
4
3
|
import { ENR } from '@chainsafe/enr';
|
|
5
4
|
import { gossipsub } from '@chainsafe/libp2p-gossipsub';
|
|
6
5
|
import { noise } from '@chainsafe/libp2p-noise';
|
|
@@ -11,12 +10,10 @@ import { mplex } from '@libp2p/mplex';
|
|
|
11
10
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
12
11
|
import { createFromJSON, createSecp256k1PeerId } from '@libp2p/peer-id-factory';
|
|
13
12
|
import { tcp } from '@libp2p/tcp';
|
|
14
|
-
import { pipe } from 'it-pipe';
|
|
15
13
|
import { createLibp2p } from 'libp2p';
|
|
16
14
|
import { AztecDatastore } from './data_store.js';
|
|
17
15
|
import { KnownTxLookup } from './known_txs.js';
|
|
18
16
|
import { PeerManager } from './peer_manager.js';
|
|
19
|
-
import { AztecPeerDb } from './peer_store.js';
|
|
20
17
|
import { AztecTxMessageCreator, fromTxMessage } from './tx_messages.js';
|
|
21
18
|
/**
|
|
22
19
|
* Create a libp2p peer ID from the private key if provided, otherwise creates a new random ID.
|
|
@@ -37,11 +34,10 @@ export async function createLibP2PPeerId(privateKey) {
|
|
|
37
34
|
* Lib P2P implementation of the P2PService interface.
|
|
38
35
|
*/
|
|
39
36
|
export class LibP2PService {
|
|
40
|
-
constructor(config, node, peerDiscoveryService,
|
|
37
|
+
constructor(config, node, peerDiscoveryService, protocolId, txPool, bootstrapPeerIds = [], logger = createDebugLogger('aztec:libp2p_service')) {
|
|
41
38
|
this.config = config;
|
|
42
39
|
this.node = node;
|
|
43
40
|
this.peerDiscoveryService = peerDiscoveryService;
|
|
44
|
-
this.peerStore = peerStore;
|
|
45
41
|
this.protocolId = protocolId;
|
|
46
42
|
this.txPool = txPool;
|
|
47
43
|
this.bootstrapPeerIds = bootstrapPeerIds;
|
|
@@ -59,10 +55,10 @@ export class LibP2PService {
|
|
|
59
55
|
if (this.node.status === 'started') {
|
|
60
56
|
throw new Error('P2P service already started');
|
|
61
57
|
}
|
|
62
|
-
const { enableNat, tcpListenIp, tcpListenPort,
|
|
58
|
+
const { enableNat, tcpListenIp, tcpListenPort, announceTcpHostname, announcePort } = this.config;
|
|
63
59
|
this.logger.info(`Starting P2P node on ${tcpListenIp}:${tcpListenPort}`);
|
|
64
|
-
if (
|
|
65
|
-
this.logger.info(`Announcing at ${
|
|
60
|
+
if (announceTcpHostname) {
|
|
61
|
+
this.logger.info(`Announcing at ${announceTcpHostname}/tcp/${announcePort ?? tcpListenPort}`);
|
|
66
62
|
}
|
|
67
63
|
if (enableNat) {
|
|
68
64
|
this.logger.info(`Enabling NAT in libp2p module`);
|
|
@@ -88,7 +84,6 @@ export class LibP2PService {
|
|
|
88
84
|
this.jobQueue.start();
|
|
89
85
|
await this.peerDiscoveryService.start();
|
|
90
86
|
await this.node.start();
|
|
91
|
-
await this.node.handle(this.protocolId, (incoming) => this.jobQueue.put(() => Promise.resolve(this.handleProtocolDial(incoming))));
|
|
92
87
|
this.logger.info(`Started P2P client with Peer ID ${this.node.peerId.toString()}`);
|
|
93
88
|
// Subscribe to standard topics by default
|
|
94
89
|
this.subscribeToTopic(this.messageCreator.getTopic());
|
|
@@ -96,7 +91,7 @@ export class LibP2PService {
|
|
|
96
91
|
this.node.services.pubsub.addEventListener('gossipsub:message', async (e) => {
|
|
97
92
|
const { msg } = e.detail;
|
|
98
93
|
this.logger.debug(`Received PUBSUB message.`);
|
|
99
|
-
await this.handleNewGossipMessage(msg.topic, msg.data);
|
|
94
|
+
await this.jobQueue.put(() => this.handleNewGossipMessage(msg.topic, msg.data));
|
|
100
95
|
});
|
|
101
96
|
}
|
|
102
97
|
/**
|
|
@@ -117,7 +112,7 @@ export class LibP2PService {
|
|
|
117
112
|
* @returns The new service.
|
|
118
113
|
*/
|
|
119
114
|
static async new(config, peerDiscoveryService, peerId, txPool, store) {
|
|
120
|
-
const { tcpListenIp, tcpListenPort, minPeerCount, maxPeerCount,
|
|
115
|
+
const { tcpListenIp, tcpListenPort, minPeerCount, maxPeerCount, transactionProtocol: protocolId } = config;
|
|
121
116
|
const bindAddrTcp = `/ip4/${tcpListenIp}/tcp/${tcpListenPort}`;
|
|
122
117
|
// The autonat service seems quite problematic in that using it seems to cause a lot of attempts
|
|
123
118
|
// to dial ephemeral ports. I suspect that it works better if you can get the uPNPnat service to
|
|
@@ -132,7 +127,7 @@ export class LibP2PService {
|
|
|
132
127
|
// });
|
|
133
128
|
// services.uPnPNAT = uPnPNATService();
|
|
134
129
|
// }
|
|
135
|
-
const datastore = new AztecDatastore(
|
|
130
|
+
const datastore = new AztecDatastore(store);
|
|
136
131
|
const node = await createLibp2p({
|
|
137
132
|
start: false,
|
|
138
133
|
peerId,
|
|
@@ -166,14 +161,12 @@ export class LibP2PService {
|
|
|
166
161
|
}),
|
|
167
162
|
},
|
|
168
163
|
});
|
|
169
|
-
// Create an LMDB peer store
|
|
170
|
-
const peerDb = new AztecPeerDb(store);
|
|
171
164
|
// extract bootstrap node peer IDs
|
|
172
165
|
let bootstrapPeerIds = [];
|
|
173
166
|
if (config.bootstrapNodes.length) {
|
|
174
167
|
bootstrapPeerIds = await Promise.all(config.bootstrapNodes.map(bootnodeEnr => ENR.decodeTxt(bootnodeEnr).peerId()));
|
|
175
168
|
}
|
|
176
|
-
return new LibP2PService(config, node, peerDiscoveryService,
|
|
169
|
+
return new LibP2PService(config, node, peerDiscoveryService, protocolId, txPool, bootstrapPeerIds);
|
|
177
170
|
}
|
|
178
171
|
/**
|
|
179
172
|
* Subscribes to a topic.
|
|
@@ -245,10 +238,6 @@ export class LibP2PService {
|
|
|
245
238
|
let stream;
|
|
246
239
|
try {
|
|
247
240
|
stream = await this.node.dialProtocol(peerMultiAddr, this.protocolId);
|
|
248
|
-
// dial successful, add to DB as well
|
|
249
|
-
if (!this.peerStore.getPeer(peerIdStr)) {
|
|
250
|
-
await this.peerStore.addPeer(peerIdStr, enr);
|
|
251
|
-
}
|
|
252
241
|
}
|
|
253
242
|
catch (err) {
|
|
254
243
|
this.logger.error(`Failed to dial peer ${peerIdStr}`, err);
|
|
@@ -260,29 +249,6 @@ export class LibP2PService {
|
|
|
260
249
|
}
|
|
261
250
|
}
|
|
262
251
|
}
|
|
263
|
-
async handleProtocolDial(incomingStreamData) {
|
|
264
|
-
try {
|
|
265
|
-
const { message, peer } = await this.consumeInboundStream(incomingStreamData);
|
|
266
|
-
if (!message.length) {
|
|
267
|
-
this.logger.verbose(`Ignoring 0 byte message from peer${peer.toString()}`);
|
|
268
|
-
}
|
|
269
|
-
// await this.processTransactionMessage(message, peer);
|
|
270
|
-
}
|
|
271
|
-
catch (err) {
|
|
272
|
-
this.logger.error(`Failed to handle received message from peer ${incomingStreamData.connection.remotePeer.toString()}`, err);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
async consumeInboundStream(incomingStreamData) {
|
|
276
|
-
let buffer = Buffer.alloc(0);
|
|
277
|
-
await pipe(incomingStreamData.stream, async (source) => {
|
|
278
|
-
for await (const msg of source) {
|
|
279
|
-
const payload = msg.subarray();
|
|
280
|
-
buffer = Buffer.concat([buffer, Buffer.from(payload)]);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
await incomingStreamData.stream.close();
|
|
284
|
-
return { message: buffer, peer: incomingStreamData.connection.remotePeer };
|
|
285
|
-
}
|
|
286
252
|
async handleNewConnection(peerId) {
|
|
287
253
|
if (this.isBootstrapPeer(peerId)) {
|
|
288
254
|
this.logger.verbose(`Connected to bootstrap peer ${peerId.toString()}`);
|
|
@@ -308,4 +274,4 @@ export class LibP2PService {
|
|
|
308
274
|
return this.bootstrapPeerIds.some(bootstrapPeer => bootstrapPeer.equals(peer));
|
|
309
275
|
}
|
|
310
276
|
}
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicDJwX3NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9saWJwMnBfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQXdCLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FB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
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicDJwX3NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9saWJwMnBfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBd0IsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBUXhFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFV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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_messages.d.ts","sourceRoot":"","sources":["../../src/service/tx_messages.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tx_messages.d.ts","sourceRoot":"","sources":["../../src/service/tx_messages.ts"],"names":[],"mappings":";AAAA,OAAO,EAA4C,EAAE,EAAuB,MAAM,sBAAsB,CAAC;AAIzG,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBACnB,OAAO,EAAE,MAAM;IAI3B,eAAe,CAAC,EAAE,EAAE,EAAE;;;;IAMtB,QAAQ;CAGT;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,QAWxD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CA8B1C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAyDhD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EncryptedTxL2Logs, Tx, UnencryptedTxL2Logs } from '@aztec/circuit-types';
|
|
1
|
+
import { EncryptedNoteTxL2Logs, 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
|
export const TX_MESSAGE_TOPIC = '';
|
|
@@ -58,6 +58,7 @@ export function toTxMessage(tx) {
|
|
|
58
58
|
const messageBuffer = Buffer.concat([
|
|
59
59
|
createMessageComponent(tx.data),
|
|
60
60
|
createMessageComponent(tx.proof),
|
|
61
|
+
createMessageComponent(tx.noteEncryptedLogs),
|
|
61
62
|
createMessageComponent(tx.encryptedLogs),
|
|
62
63
|
createMessageComponent(tx.unencryptedLogs),
|
|
63
64
|
createMessageComponents(tx.enqueuedPublicFunctionCalls),
|
|
@@ -101,7 +102,11 @@ export function fromTxMessage(buffer) {
|
|
|
101
102
|
// so the first 4 bytes is the complete length, skip it
|
|
102
103
|
const publicInputs = toObject(buffer.subarray(4), PrivateKernelTailCircuitPublicInputs);
|
|
103
104
|
const proof = toObject(publicInputs.remainingData, Proof);
|
|
104
|
-
const
|
|
105
|
+
const noteEncryptedLogs = toObject(proof.remainingData, EncryptedNoteTxL2Logs);
|
|
106
|
+
if (!noteEncryptedLogs.obj) {
|
|
107
|
+
noteEncryptedLogs.obj = new EncryptedNoteTxL2Logs([]);
|
|
108
|
+
}
|
|
109
|
+
const encryptedLogs = toObject(noteEncryptedLogs.remainingData, EncryptedTxL2Logs);
|
|
105
110
|
if (!encryptedLogs.obj) {
|
|
106
111
|
encryptedLogs.obj = new EncryptedTxL2Logs([]);
|
|
107
112
|
}
|
|
@@ -111,6 +116,6 @@ export function fromTxMessage(buffer) {
|
|
|
111
116
|
}
|
|
112
117
|
const publicCalls = toObjectArray(unencryptedLogs.remainingData, PublicCallRequest);
|
|
113
118
|
const publicTeardownCall = toObject(publicCalls.remainingData, PublicCallRequest);
|
|
114
|
-
return new Tx(publicInputs.obj, proof.obj, encryptedLogs.obj, unencryptedLogs.obj, publicCalls.objects, publicTeardownCall.obj);
|
|
119
|
+
return new Tx(publicInputs.obj, proof.obj, noteEncryptedLogs.obj, encryptedLogs.obj, unencryptedLogs.obj, publicCalls.objects, publicTeardownCall.obj);
|
|
115
120
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS90eF9tZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekcsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUk1RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxPQUFPLHFCQUFxQjtJQUVoQyxZQUFZLE9BQWU7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlLENBQUMsRUFBTTtRQUNwQixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWU7SUFDdkQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLE1BQU0sR0FBRyxHQUFTLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"typedocOptions": {
|
|
@@ -48,10 +48,10 @@
|
|
|
48
48
|
"testTimeout": 15000
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@aztec/circuit-types": "0.
|
|
52
|
-
"@aztec/circuits.js": "0.
|
|
53
|
-
"@aztec/foundation": "0.
|
|
54
|
-
"@aztec/kv-store": "0.
|
|
51
|
+
"@aztec/circuit-types": "0.42.0",
|
|
52
|
+
"@aztec/circuits.js": "0.42.0",
|
|
53
|
+
"@aztec/foundation": "0.42.0",
|
|
54
|
+
"@aztec/kv-store": "0.42.0",
|
|
55
55
|
"@chainsafe/discv5": "9.0.0",
|
|
56
56
|
"@chainsafe/enr": "3.0.0",
|
|
57
57
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
@@ -13,7 +13,7 @@ import { createLibP2PPeerId } from '../service/index.js';
|
|
|
13
13
|
* Required P2P config values for a bootstrap node.
|
|
14
14
|
*/
|
|
15
15
|
export type BootNodeConfig = Partial<P2PConfig> &
|
|
16
|
-
Pick<P2PConfig, '
|
|
16
|
+
Pick<P2PConfig, 'announceUdpHostname' | 'announcePort'> &
|
|
17
17
|
Required<Pick<P2PConfig, 'udpListenIp' | 'udpListenPort'>>;
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -31,13 +31,13 @@ export class BootstrapNode {
|
|
|
31
31
|
* @returns An empty promise.
|
|
32
32
|
*/
|
|
33
33
|
public async start(config: BootNodeConfig) {
|
|
34
|
-
const { peerIdPrivateKey, udpListenIp, udpListenPort,
|
|
34
|
+
const { peerIdPrivateKey, udpListenIp, udpListenPort, announceUdpHostname, announcePort } = config;
|
|
35
35
|
const peerId = await createLibP2PPeerId(peerIdPrivateKey);
|
|
36
36
|
this.peerId = peerId;
|
|
37
37
|
const enr = SignableENR.createFromPeerId(peerId);
|
|
38
38
|
|
|
39
39
|
const listenAddrUdp = multiaddr(`/ip4/${udpListenIp}/udp/${udpListenPort}`);
|
|
40
|
-
const publicAddr = multiaddr(`${
|
|
40
|
+
const publicAddr = multiaddr(`${announceUdpHostname}/udp/${announcePort}`);
|
|
41
41
|
enr.setLocationMultiaddr(publicAddr);
|
|
42
42
|
enr.set(AZTEC_ENR_KEY, Uint8Array.from([AZTEC_NET]));
|
|
43
43
|
|
|
@@ -49,6 +49,7 @@ export class BootstrapNode {
|
|
|
49
49
|
bindAddrs: { ip4: listenAddrUdp },
|
|
50
50
|
config: {
|
|
51
51
|
lookupTimeout: 2000,
|
|
52
|
+
allowUnverifiedSessions: true,
|
|
52
53
|
},
|
|
53
54
|
});
|
|
54
55
|
|
package/src/client/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { type P2PConfig } from '../config.js';
|
|
|
6
6
|
import { DiscV5Service } from '../service/discV5_service.js';
|
|
7
7
|
import { DummyP2PService, DummyPeerDiscoveryService } from '../service/dummy_service.js';
|
|
8
8
|
import { LibP2PService, createLibP2PPeerId } from '../service/index.js';
|
|
9
|
+
import { getPublicIp } from '../service/ip_query.js';
|
|
9
10
|
import { type TxPool } from '../tx_pool/index.js';
|
|
10
11
|
|
|
11
12
|
export * from './p2p_client.js';
|
|
@@ -18,8 +19,36 @@ export const createP2PClient = async (
|
|
|
18
19
|
) => {
|
|
19
20
|
let discv5Service;
|
|
20
21
|
let p2pService;
|
|
22
|
+
|
|
21
23
|
if (config.p2pEnabled) {
|
|
22
|
-
//
|
|
24
|
+
// If announceTcpHostname or announceUdpHostname are not provided, query for public IP if config allows
|
|
25
|
+
const {
|
|
26
|
+
announceTcpHostname: configAnnounceTcpHostname,
|
|
27
|
+
announceUdpHostname: configAnnounceUdpHostname,
|
|
28
|
+
queryForIp,
|
|
29
|
+
} = config;
|
|
30
|
+
if (!configAnnounceTcpHostname) {
|
|
31
|
+
if (queryForIp) {
|
|
32
|
+
const publicIp = await getPublicIp();
|
|
33
|
+
const announceHostname = `/ip4/${publicIp}`;
|
|
34
|
+
config.announceTcpHostname = announceHostname;
|
|
35
|
+
} else {
|
|
36
|
+
throw new Error('No announceTcpHostname provided');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (!configAnnounceUdpHostname) {
|
|
41
|
+
// If announceUdpHostname is not provided, use announceTcpHostname
|
|
42
|
+
if (!queryForIp && config.announceTcpHostname) {
|
|
43
|
+
config.announceUdpHostname = config.announceTcpHostname;
|
|
44
|
+
} else if (queryForIp) {
|
|
45
|
+
const publicIp = await getPublicIp();
|
|
46
|
+
const announceHostname = `/ip4/${publicIp}`;
|
|
47
|
+
config.announceUdpHostname = announceHostname;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Create peer discovery service
|
|
23
52
|
const peerId = await createLibP2PPeerId(config.peerIdPrivateKey);
|
|
24
53
|
discv5Service = new DiscV5Service(peerId, config);
|
|
25
54
|
p2pService = await LibP2PService.new(config, discv5Service, peerId, txPool, store);
|
package/src/client/mocks.ts
CHANGED
package/src/config.ts
CHANGED
|
@@ -60,9 +60,15 @@ export interface P2PConfig {
|
|
|
60
60
|
transactionProtocol: string;
|
|
61
61
|
|
|
62
62
|
/**
|
|
63
|
-
* Hostname to announce.
|
|
63
|
+
* TCP Hostname to announce.
|
|
64
64
|
*/
|
|
65
|
-
|
|
65
|
+
announceTcpHostname?: string;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* UDP Hostname to announce.
|
|
69
|
+
* If not provided, will use the same hostname as TCP.
|
|
70
|
+
*/
|
|
71
|
+
announceUdpHostname?: string;
|
|
66
72
|
|
|
67
73
|
/**
|
|
68
74
|
* Port to announce.
|
|
@@ -93,6 +99,11 @@ export interface P2PConfig {
|
|
|
93
99
|
* The transaction gossiping message version.
|
|
94
100
|
*/
|
|
95
101
|
txGossipVersion: SemVer;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* If announceUdpHostname or announceTcpHostname are not provided, query for the IP address of the machine. Default is false.
|
|
105
|
+
*/
|
|
106
|
+
queryForIp: boolean;
|
|
96
107
|
}
|
|
97
108
|
|
|
98
109
|
/**
|
|
@@ -111,13 +122,16 @@ export function getP2PConfigEnvVars(): P2PConfig {
|
|
|
111
122
|
P2P_UDP_LISTEN_IP,
|
|
112
123
|
PEER_ID_PRIVATE_KEY,
|
|
113
124
|
BOOTSTRAP_NODES,
|
|
114
|
-
|
|
125
|
+
P2P_ANNOUNCE_TCP_HOSTNAME,
|
|
126
|
+
P2P_ANNOUNCE_UDP_HOSTNAME,
|
|
115
127
|
P2P_ANNOUNCE_PORT,
|
|
116
128
|
P2P_NAT_ENABLED,
|
|
117
129
|
P2P_MIN_PEERS,
|
|
118
130
|
P2P_MAX_PEERS,
|
|
119
131
|
DATA_DIRECTORY,
|
|
120
132
|
TX_GOSSIP_VERSION,
|
|
133
|
+
P2P_TX_PROTOCOL,
|
|
134
|
+
P2P_QUERY_FOR_IP,
|
|
121
135
|
} = process.env;
|
|
122
136
|
const envVars: P2PConfig = {
|
|
123
137
|
p2pEnabled: P2P_ENABLED === 'true',
|
|
@@ -130,14 +144,16 @@ export function getP2PConfigEnvVars(): P2PConfig {
|
|
|
130
144
|
udpListenIp: P2P_UDP_LISTEN_IP ? P2P_UDP_LISTEN_IP : '0.0.0.0',
|
|
131
145
|
peerIdPrivateKey: PEER_ID_PRIVATE_KEY,
|
|
132
146
|
bootstrapNodes: BOOTSTRAP_NODES ? BOOTSTRAP_NODES.split(',') : [],
|
|
133
|
-
transactionProtocol: '',
|
|
134
|
-
|
|
147
|
+
transactionProtocol: P2P_TX_PROTOCOL ? P2P_TX_PROTOCOL : '/aztec/0.1.0',
|
|
148
|
+
announceTcpHostname: P2P_ANNOUNCE_TCP_HOSTNAME,
|
|
149
|
+
announceUdpHostname: P2P_ANNOUNCE_UDP_HOSTNAME,
|
|
135
150
|
announcePort: P2P_ANNOUNCE_PORT ? +P2P_ANNOUNCE_PORT : undefined,
|
|
136
151
|
enableNat: P2P_NAT_ENABLED === 'true',
|
|
137
152
|
minPeerCount: P2P_MIN_PEERS ? +P2P_MIN_PEERS : 10,
|
|
138
153
|
maxPeerCount: P2P_MAX_PEERS ? +P2P_MAX_PEERS : 100,
|
|
139
154
|
dataDirectory: DATA_DIRECTORY,
|
|
140
155
|
txGossipVersion: TX_GOSSIP_VERSION ? new SemVer(TX_GOSSIP_VERSION) : new SemVer('0.1.0'),
|
|
156
|
+
queryForIp: P2P_QUERY_FOR_IP === 'true',
|
|
141
157
|
};
|
|
142
158
|
return envVars;
|
|
143
159
|
}
|
|
@@ -39,15 +39,16 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
|
|
|
39
39
|
|
|
40
40
|
constructor(private peerId: PeerId, config: P2PConfig, private logger = createDebugLogger('aztec:discv5_service')) {
|
|
41
41
|
super();
|
|
42
|
-
const {
|
|
42
|
+
const { announceUdpHostname, announceTcpHostname, tcpListenPort, udpListenIp, udpListenPort, bootstrapNodes } =
|
|
43
|
+
config;
|
|
43
44
|
this.bootstrapNodes = bootstrapNodes;
|
|
44
45
|
// create ENR from PeerId
|
|
45
46
|
this.enr = SignableENR.createFromPeerId(peerId);
|
|
46
47
|
// Add aztec identification to ENR
|
|
47
48
|
this.enr.set(AZTEC_ENR_KEY, Uint8Array.from([AZTEC_NET]));
|
|
48
49
|
|
|
49
|
-
const multiAddrUdp = multiaddr(`${
|
|
50
|
-
const multiAddrTcp = multiaddr(`${
|
|
50
|
+
const multiAddrUdp = multiaddr(`${announceUdpHostname}/udp/${udpListenPort}/p2p/${peerId.toString()}`);
|
|
51
|
+
const multiAddrTcp = multiaddr(`${announceTcpHostname}/tcp/${tcpListenPort}/p2p/${peerId.toString()}`);
|
|
51
52
|
|
|
52
53
|
const listenMultiAddrUdp = multiaddr(`/ip4/${udpListenIp}/udp/${udpListenPort}`);
|
|
53
54
|
|
|
@@ -61,6 +62,7 @@ export class DiscV5Service extends EventEmitter implements PeerDiscoveryService
|
|
|
61
62
|
bindAddrs: { ip4: listenMultiAddrUdp },
|
|
62
63
|
config: {
|
|
63
64
|
lookupTimeout: 2000,
|
|
65
|
+
allowUnverifiedSessions: true,
|
|
64
66
|
},
|
|
65
67
|
});
|
|
66
68
|
|
|
@@ -2,20 +2,18 @@ import { type Tx, type TxHash } from '@aztec/circuit-types';
|
|
|
2
2
|
import { SerialQueue } from '@aztec/foundation/fifo';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { type AztecKVStore } from '@aztec/kv-store';
|
|
5
|
-
import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
|
|
6
5
|
|
|
7
6
|
import { ENR } from '@chainsafe/enr';
|
|
8
7
|
import { type GossipsubEvents, gossipsub } from '@chainsafe/libp2p-gossipsub';
|
|
9
8
|
import { noise } from '@chainsafe/libp2p-noise';
|
|
10
9
|
import { yamux } from '@chainsafe/libp2p-yamux';
|
|
11
10
|
import { identify } from '@libp2p/identify';
|
|
12
|
-
import type {
|
|
11
|
+
import type { PeerId, PubSub, Stream } from '@libp2p/interface';
|
|
13
12
|
import '@libp2p/kad-dht';
|
|
14
13
|
import { mplex } from '@libp2p/mplex';
|
|
15
14
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
16
15
|
import { createFromJSON, createSecp256k1PeerId } from '@libp2p/peer-id-factory';
|
|
17
16
|
import { tcp } from '@libp2p/tcp';
|
|
18
|
-
import { pipe } from 'it-pipe';
|
|
19
17
|
import { type Libp2p, createLibp2p } from 'libp2p';
|
|
20
18
|
|
|
21
19
|
import { type P2PConfig } from '../config.js';
|
|
@@ -23,7 +21,6 @@ import { type TxPool } from '../tx_pool/index.js';
|
|
|
23
21
|
import { AztecDatastore } from './data_store.js';
|
|
24
22
|
import { KnownTxLookup } from './known_txs.js';
|
|
25
23
|
import { PeerManager } from './peer_manager.js';
|
|
26
|
-
import { AztecPeerDb, type AztecPeerStore } from './peer_store.js';
|
|
27
24
|
import type { P2PService, PeerDiscoveryService } from './service.js';
|
|
28
25
|
import { AztecTxMessageCreator, fromTxMessage } from './tx_messages.js';
|
|
29
26
|
|
|
@@ -61,7 +58,6 @@ export class LibP2PService implements P2PService {
|
|
|
61
58
|
private config: P2PConfig,
|
|
62
59
|
private node: PubSubLibp2p,
|
|
63
60
|
private peerDiscoveryService: PeerDiscoveryService,
|
|
64
|
-
private peerStore: AztecPeerStore,
|
|
65
61
|
private protocolId: string,
|
|
66
62
|
private txPool: TxPool,
|
|
67
63
|
private bootstrapPeerIds: PeerId[] = [],
|
|
@@ -79,10 +75,10 @@ export class LibP2PService implements P2PService {
|
|
|
79
75
|
if (this.node.status === 'started') {
|
|
80
76
|
throw new Error('P2P service already started');
|
|
81
77
|
}
|
|
82
|
-
const { enableNat, tcpListenIp, tcpListenPort,
|
|
78
|
+
const { enableNat, tcpListenIp, tcpListenPort, announceTcpHostname, announcePort } = this.config;
|
|
83
79
|
this.logger.info(`Starting P2P node on ${tcpListenIp}:${tcpListenPort}`);
|
|
84
|
-
if (
|
|
85
|
-
this.logger.info(`Announcing at ${
|
|
80
|
+
if (announceTcpHostname) {
|
|
81
|
+
this.logger.info(`Announcing at ${announceTcpHostname}/tcp/${announcePort ?? tcpListenPort}`);
|
|
86
82
|
}
|
|
87
83
|
if (enableNat) {
|
|
88
84
|
this.logger.info(`Enabling NAT in libp2p module`);
|
|
@@ -111,9 +107,6 @@ export class LibP2PService implements P2PService {
|
|
|
111
107
|
this.jobQueue.start();
|
|
112
108
|
await this.peerDiscoveryService.start();
|
|
113
109
|
await this.node.start();
|
|
114
|
-
await this.node.handle(this.protocolId, (incoming: IncomingStreamData) =>
|
|
115
|
-
this.jobQueue.put(() => Promise.resolve(this.handleProtocolDial(incoming))),
|
|
116
|
-
);
|
|
117
110
|
this.logger.info(`Started P2P client with Peer ID ${this.node.peerId.toString()}`);
|
|
118
111
|
|
|
119
112
|
// Subscribe to standard topics by default
|
|
@@ -124,7 +117,7 @@ export class LibP2PService implements P2PService {
|
|
|
124
117
|
const { msg } = e.detail;
|
|
125
118
|
this.logger.debug(`Received PUBSUB message.`);
|
|
126
119
|
|
|
127
|
-
await this.handleNewGossipMessage(msg.topic, msg.data);
|
|
120
|
+
await this.jobQueue.put(() => this.handleNewGossipMessage(msg.topic, msg.data));
|
|
128
121
|
});
|
|
129
122
|
}
|
|
130
123
|
|
|
@@ -153,14 +146,7 @@ export class LibP2PService implements P2PService {
|
|
|
153
146
|
txPool: TxPool,
|
|
154
147
|
store: AztecKVStore,
|
|
155
148
|
) {
|
|
156
|
-
const {
|
|
157
|
-
tcpListenIp,
|
|
158
|
-
tcpListenPort,
|
|
159
|
-
minPeerCount,
|
|
160
|
-
maxPeerCount,
|
|
161
|
-
dataDirectory,
|
|
162
|
-
transactionProtocol: protocolId,
|
|
163
|
-
} = config;
|
|
149
|
+
const { tcpListenIp, tcpListenPort, minPeerCount, maxPeerCount, transactionProtocol: protocolId } = config;
|
|
164
150
|
const bindAddrTcp = `/ip4/${tcpListenIp}/tcp/${tcpListenPort}`;
|
|
165
151
|
|
|
166
152
|
// The autonat service seems quite problematic in that using it seems to cause a lot of attempts
|
|
@@ -177,7 +163,7 @@ export class LibP2PService implements P2PService {
|
|
|
177
163
|
// services.uPnPNAT = uPnPNATService();
|
|
178
164
|
// }
|
|
179
165
|
|
|
180
|
-
const datastore = new AztecDatastore(
|
|
166
|
+
const datastore = new AztecDatastore(store);
|
|
181
167
|
|
|
182
168
|
const node = await createLibp2p({
|
|
183
169
|
start: false,
|
|
@@ -213,9 +199,6 @@ export class LibP2PService implements P2PService {
|
|
|
213
199
|
},
|
|
214
200
|
});
|
|
215
201
|
|
|
216
|
-
// Create an LMDB peer store
|
|
217
|
-
const peerDb = new AztecPeerDb(store);
|
|
218
|
-
|
|
219
202
|
// extract bootstrap node peer IDs
|
|
220
203
|
let bootstrapPeerIds: PeerId[] = [];
|
|
221
204
|
if (config.bootstrapNodes.length) {
|
|
@@ -224,7 +207,7 @@ export class LibP2PService implements P2PService {
|
|
|
224
207
|
);
|
|
225
208
|
}
|
|
226
209
|
|
|
227
|
-
return new LibP2PService(config, node, peerDiscoveryService,
|
|
210
|
+
return new LibP2PService(config, node, peerDiscoveryService, protocolId, txPool, bootstrapPeerIds);
|
|
228
211
|
}
|
|
229
212
|
|
|
230
213
|
/**
|
|
@@ -307,11 +290,6 @@ export class LibP2PService implements P2PService {
|
|
|
307
290
|
let stream: Stream | undefined;
|
|
308
291
|
try {
|
|
309
292
|
stream = await this.node.dialProtocol(peerMultiAddr, this.protocolId);
|
|
310
|
-
|
|
311
|
-
// dial successful, add to DB as well
|
|
312
|
-
if (!this.peerStore.getPeer(peerIdStr)) {
|
|
313
|
-
await this.peerStore.addPeer(peerIdStr, enr);
|
|
314
|
-
}
|
|
315
293
|
} catch (err) {
|
|
316
294
|
this.logger.error(`Failed to dial peer ${peerIdStr}`, err);
|
|
317
295
|
} finally {
|
|
@@ -322,33 +300,6 @@ export class LibP2PService implements P2PService {
|
|
|
322
300
|
}
|
|
323
301
|
}
|
|
324
302
|
|
|
325
|
-
private async handleProtocolDial(incomingStreamData: IncomingStreamData) {
|
|
326
|
-
try {
|
|
327
|
-
const { message, peer } = await this.consumeInboundStream(incomingStreamData);
|
|
328
|
-
if (!message.length) {
|
|
329
|
-
this.logger.verbose(`Ignoring 0 byte message from peer${peer.toString()}`);
|
|
330
|
-
}
|
|
331
|
-
// await this.processTransactionMessage(message, peer);
|
|
332
|
-
} catch (err) {
|
|
333
|
-
this.logger.error(
|
|
334
|
-
`Failed to handle received message from peer ${incomingStreamData.connection.remotePeer.toString()}`,
|
|
335
|
-
err,
|
|
336
|
-
);
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
private async consumeInboundStream(incomingStreamData: IncomingStreamData) {
|
|
341
|
-
let buffer = Buffer.alloc(0);
|
|
342
|
-
await pipe(incomingStreamData.stream, async source => {
|
|
343
|
-
for await (const msg of source) {
|
|
344
|
-
const payload = msg.subarray();
|
|
345
|
-
buffer = Buffer.concat([buffer, Buffer.from(payload)]);
|
|
346
|
-
}
|
|
347
|
-
});
|
|
348
|
-
await incomingStreamData.stream.close();
|
|
349
|
-
return { message: buffer, peer: incomingStreamData.connection.remotePeer };
|
|
350
|
-
}
|
|
351
|
-
|
|
352
303
|
private async handleNewConnection(peerId: PeerId) {
|
|
353
304
|
if (this.isBootstrapPeer(peerId)) {
|
|
354
305
|
this.logger.verbose(`Connected to bootstrap peer ${peerId.toString()}`);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EncryptedTxL2Logs, Tx, UnencryptedTxL2Logs } from '@aztec/circuit-types';
|
|
1
|
+
import { EncryptedNoteTxL2Logs, 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
|
|
|
@@ -68,6 +68,7 @@ export function toTxMessage(tx: Tx): Buffer {
|
|
|
68
68
|
const messageBuffer = Buffer.concat([
|
|
69
69
|
createMessageComponent(tx.data),
|
|
70
70
|
createMessageComponent(tx.proof),
|
|
71
|
+
createMessageComponent(tx.noteEncryptedLogs),
|
|
71
72
|
createMessageComponent(tx.encryptedLogs),
|
|
72
73
|
createMessageComponent(tx.unencryptedLogs),
|
|
73
74
|
createMessageComponents(tx.enqueuedPublicFunctionCalls),
|
|
@@ -114,7 +115,11 @@ export function fromTxMessage(buffer: Buffer): Tx {
|
|
|
114
115
|
const publicInputs = toObject(buffer.subarray(4), PrivateKernelTailCircuitPublicInputs);
|
|
115
116
|
const proof = toObject(publicInputs.remainingData, Proof);
|
|
116
117
|
|
|
117
|
-
const
|
|
118
|
+
const noteEncryptedLogs = toObject(proof.remainingData, EncryptedNoteTxL2Logs);
|
|
119
|
+
if (!noteEncryptedLogs.obj) {
|
|
120
|
+
noteEncryptedLogs.obj = new EncryptedNoteTxL2Logs([]);
|
|
121
|
+
}
|
|
122
|
+
const encryptedLogs = toObject(noteEncryptedLogs.remainingData, EncryptedTxL2Logs);
|
|
118
123
|
if (!encryptedLogs.obj) {
|
|
119
124
|
encryptedLogs.obj = new EncryptedTxL2Logs([]);
|
|
120
125
|
}
|
|
@@ -129,6 +134,7 @@ export function fromTxMessage(buffer: Buffer): Tx {
|
|
|
129
134
|
return new Tx(
|
|
130
135
|
publicInputs.obj!,
|
|
131
136
|
proof.obj!,
|
|
137
|
+
noteEncryptedLogs.obj,
|
|
132
138
|
encryptedLogs.obj,
|
|
133
139
|
unencryptedLogs.obj,
|
|
134
140
|
publicCalls.objects,
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AztecKVStore } from '@aztec/kv-store';
|
|
2
|
-
import type { ENR } from '@chainsafe/enr';
|
|
3
|
-
export interface AztecPeerStore {
|
|
4
|
-
addPeer(peerId: string, enr: ENR): Promise<void>;
|
|
5
|
-
removePeer(peerId: string): Promise<void>;
|
|
6
|
-
getPeer(peerId: string): ENR | undefined;
|
|
7
|
-
getAllPeers(): IterableIterator<ENR>;
|
|
8
|
-
}
|
|
9
|
-
export declare class AztecPeerDb implements AztecPeerStore {
|
|
10
|
-
#private;
|
|
11
|
-
private db;
|
|
12
|
-
constructor(db: AztecKVStore);
|
|
13
|
-
addPeer(peerId: string, enr: ENR): Promise<void>;
|
|
14
|
-
removePeer(peerId: string): Promise<void>;
|
|
15
|
-
getPeer(peerId: string): ENR | undefined;
|
|
16
|
-
getAllPeers(): IterableIterator<ENR>;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=peer_store.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"peer_store.d.ts","sourceRoot":"","sources":["../../src/service/peer_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AAE9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC;IACzC,WAAW,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;CACtC;AAED,qBAAa,WAAY,YAAW,cAAc;;IAGpC,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,YAAY;IAI9B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAIvC,WAAW,IAAI,gBAAgB,CAAC,GAAG,CAAC;CAKtC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
var _AztecPeerDb_peers;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
export class AztecPeerDb {
|
|
4
|
-
constructor(db) {
|
|
5
|
-
this.db = db;
|
|
6
|
-
_AztecPeerDb_peers.set(this, void 0);
|
|
7
|
-
__classPrivateFieldSet(this, _AztecPeerDb_peers, db.openMap('p2p_peers'), "f");
|
|
8
|
-
}
|
|
9
|
-
async addPeer(peerId, enr) {
|
|
10
|
-
void (await __classPrivateFieldGet(this, _AztecPeerDb_peers, "f").set(peerId, enr));
|
|
11
|
-
}
|
|
12
|
-
async removePeer(peerId) {
|
|
13
|
-
void (await __classPrivateFieldGet(this, _AztecPeerDb_peers, "f").delete(peerId));
|
|
14
|
-
}
|
|
15
|
-
getPeer(peerId) {
|
|
16
|
-
return __classPrivateFieldGet(this, _AztecPeerDb_peers, "f").get(peerId);
|
|
17
|
-
}
|
|
18
|
-
*getAllPeers() {
|
|
19
|
-
for (const enr of __classPrivateFieldGet(this, _AztecPeerDb_peers, "f").values()) {
|
|
20
|
-
yield enr;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
_AztecPeerDb_peers = new WeakMap();
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcl9zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlL3BlZXJfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUFvQixFQUFnQjtRQUFoQixPQUFFLEdBQUYsRUFBRSxDQUFjO1FBRnBDLHFDQUE4QjtRQUc1Qix1QkFBQSxJQUFJLHNCQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQUEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFjLEVBQUUsR0FBUTtRQUNwQyxLQUFLLENBQUMsTUFBTSx1QkFBQSxJQUFJLDBCQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQWM7UUFDN0IsS0FBSyxDQUFDLE1BQU0sdUJBQUEsSUFBSSwwQkFBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBYztRQUNwQixPQUFPLHVCQUFBLElBQUksMEJBQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELENBQUMsV0FBVztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksdUJBQUEsSUFBSSwwQkFBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDdkMsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { AztecKVStore, AztecMap } from '@aztec/kv-store';
|
|
2
|
-
|
|
3
|
-
import type { ENR } from '@chainsafe/enr';
|
|
4
|
-
|
|
5
|
-
export interface AztecPeerStore {
|
|
6
|
-
addPeer(peerId: string, enr: ENR): Promise<void>;
|
|
7
|
-
removePeer(peerId: string): Promise<void>;
|
|
8
|
-
getPeer(peerId: string): ENR | undefined;
|
|
9
|
-
getAllPeers(): IterableIterator<ENR>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class AztecPeerDb implements AztecPeerStore {
|
|
13
|
-
#peers: AztecMap<string, ENR>;
|
|
14
|
-
|
|
15
|
-
constructor(private db: AztecKVStore) {
|
|
16
|
-
this.#peers = db.openMap('p2p_peers');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async addPeer(peerId: string, enr: ENR): Promise<void> {
|
|
20
|
-
void (await this.#peers.set(peerId, enr));
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async removePeer(peerId: string): Promise<void> {
|
|
24
|
-
void (await this.#peers.delete(peerId));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
getPeer(peerId: string): ENR | undefined {
|
|
28
|
-
return this.#peers.get(peerId);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
*getAllPeers(): IterableIterator<ENR> {
|
|
32
|
-
for (const enr of this.#peers.values()) {
|
|
33
|
-
yield enr;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|