js-waku/src/lib/predefined_bootstrap_nodes.ts
2022-09-08 11:12:44 +10:00

72 lines
2.4 KiB
TypeScript

import { Multiaddr } from "@multiformats/multiaddr";
import { getPseudoRandomSubset } from "./random_subset";
export const DefaultWantedNumber = 1;
export enum Fleet {
Prod = "prod",
Test = "test",
}
/**
* Return list of pre-defined (hardcoded) bootstrap nodes.
*
* Default behavior is to return nodes of the nwaku Status Prod fleet.
*
* @param fleet The fleet to be returned. Defaults to production fleet.
* @param wantedNumber The number of connections desired. Defaults to {@link DefaultWantedNumber}.
*
* @returns An array of multiaddresses.
*/
export function getPredefinedBootstrapNodes(
fleet: Fleet = Fleet.Prod,
wantedNumber: number = DefaultWantedNumber
): Multiaddr[] {
if (wantedNumber <= 0) {
return [];
}
let nodes;
switch (fleet) {
case Fleet.Prod:
nodes = fleets.fleets["wakuv2.prod"]["waku-websocket"];
break;
case Fleet.Test:
nodes = fleets.fleets["wakuv2.test"]["waku-websocket"];
break;
default:
nodes = fleets.fleets["wakuv2.prod"]["waku-websocket"];
}
nodes = Object.values(nodes) as string[];
nodes = nodes.map((node: string) => new Multiaddr(node));
return getPseudoRandomSubset(nodes, wantedNumber);
}
export const fleets = {
fleets: {
"wakuv2.prod": {
"waku-websocket": {
"node-01.ac-cn-hongkong-c.wakuv2.prod":
"/dns4/node-01.ac-cn-hongkong-c.wakuv2.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD",
"node-01.do-ams3.wakuv2.prod":
"/dns4/node-01.do-ams3.wakuv2.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e",
"node-01.gc-us-central1-a.wakuv2.prod":
"/dns4/node-01.gc-us-central1-a.wakuv2.prod.statusim.net/tcp/443/wss/p2p/16Uiu2HAmVkKntsECaYfefR1V2yCR79CegLATuTPE6B9TxgxBiiiA",
},
},
"wakuv2.test": {
"waku-websocket": {
"node-01.ac-cn-hongkong-c.wakuv2.test":
"/dns4/node-01.ac-cn-hongkong-c.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm",
"node-01.do-ams3.wakuv2.test":
"/dns4/node-01.do-ams3.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ",
"node-01.gc-us-central1-a.wakuv2.test":
"/dns4/node-01.gc-us-central1-a.wakuv2.test.statusim.net/tcp/443/wss/p2p/16Uiu2HAmJb2e28qLXxT5kZxVUUoJt72EMzNGXB47Rxx5hw3q4YjS",
},
},
},
};