Skip to content

Commit

Permalink
rm relay files in favor of node configs
Browse files Browse the repository at this point in the history
  • Loading branch information
d-roak committed Jul 21, 2024
1 parent b0e89dd commit d1eb9f6
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 85 deletions.
53 changes: 43 additions & 10 deletions packages/network/src/node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@ import {
} from "@chainsafe/libp2p-gossipsub";
import { noise } from "@chainsafe/libp2p-noise";
import { yamux } from "@chainsafe/libp2p-yamux";
import { circuitRelayTransport } from "@libp2p/circuit-relay-v2";
import {
circuitRelayServer,
circuitRelayTransport,
} from "@libp2p/circuit-relay-v2";
import { generateKeyPairFromSeed } from "@libp2p/crypto/keys";
import { dcutr } from "@libp2p/dcutr";
import { identify } from "@libp2p/identify";
import { EventHandler, PubSub, Stream, StreamHandler } from "@libp2p/interface";
import { createFromPrivKey } from "@libp2p/peer-id-factory";
import { pubsubPeerDiscovery } from "@libp2p/pubsub-peer-discovery";
import { webRTC, webRTCDirect } from "@libp2p/webrtc";
import { webSockets } from "@libp2p/websockets";
Expand All @@ -17,11 +22,15 @@ import { Libp2p, createLibp2p } from "libp2p";
import { stringToStream } from "./stream.js";
import { bootstrap } from "@libp2p/bootstrap";
import { webTransport } from "@libp2p/webtransport";
import { autoNAT } from "@libp2p/autonat";
import { fromString as uint8ArrayFromString } from "uint8arrays/from-string";

// snake_casing to match the JSON config
export interface TopologyNetworkNodeConfig {
addresses: string[];
bootstrap_peers: string[];
addresses?: string[];
bootstrap?: boolean;
bootstrap_peers?: string[];
private_key_seed?: string;
}

export class TopologyNetworkNode {
Expand All @@ -36,9 +45,22 @@ export class TopologyNetworkNode {
}

async start() {
let privateKey;
if (this._config?.private_key_seed) {
let tmp = this._config.private_key_seed.padEnd(32, "0");
privateKey = await generateKeyPairFromSeed(
"Ed25519",
uint8ArrayFromString(tmp),
);
}

this._node = await createLibp2p({
peerId: privateKey ? await createFromPrivKey(privateKey) : undefined,
addresses: {
listen: this._config ? this._config.addresses : ["/webrtc"],
listen:
this._config && this._config.addresses
? this._config.addresses
: ["/webrtc"],
},
connectionEncryption: [noise()],
connectionGater: {
Expand All @@ -52,19 +74,21 @@ export class TopologyNetworkNode {
topics: ["topology::discovery"],
}),
bootstrap({
list: this._config
? this._config.bootstrap_peers
: [
"/dns4/relay.droak.sh/tcp/443/wss/p2p/Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP",
],
list:
this._config && this._config.bootstrap_peers
? this._config.bootstrap_peers
: [
"/dns4/relay.droak.sh/tcp/443/wss/p2p/Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP",
],
}),
],
services: {
autonat: autoNAT(),
dcutr: dcutr(),
identify: identify(),
pubsub: gossipsub({
allowPublishToZeroTopicPeers: true,
}),
dcutr: dcutr(),
},
streamMuxers: [yamux()],
transports: [
Expand All @@ -79,6 +103,15 @@ export class TopologyNetworkNode {
],
});

if (this._config?.bootstrap)
this._node.services.relay = circuitRelayServer();

if (!this._config?.bootstrap) {
for (const addr of this._config?.bootstrap_peers || []) {
this._node.dial(multiaddr(addr));
}
}

this._pubsub = this._node.services.pubsub as PubSub<GossipsubEvents>;
this.peerId = this._node.peerId.toString();

Expand Down
7 changes: 0 additions & 7 deletions packages/network/src/peer-id-relayer.ts

This file was deleted.

52 changes: 0 additions & 52 deletions packages/network/src/relay.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{
"network_config": {
"addresses": ["/ip4/0.0.0.0/tcp/50000/ws", "/ip4/0.0.0.0/tcp/50001"],
"bootstrap": true,
"bootstrap_peers": [
"/dns4/relay.droak.sh/tcp/443/wss/p2p/Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP"
]
],
"private_key_seed": "bootstrap"
}
}
5 changes: 3 additions & 2 deletions packages/node/configs/node.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"network_config": {
"addresses": ["/webrtc"],
"bootstrap_peers": [
"/dns4/relay.droak.sh/tcp/443/wss/p2p/Qma3GsJmB47xYuyahPZPSadh1avvxfyYQwk8R3UnFrQ6aP"
]
"/ip4/127.0.0.1/tcp/50000/ws/p2p/12D3KooWC6sm9iwmYbeQJCJipKTRghmABNz1wnpJANvSMabvecwJ"
],
"private_key_seed": "node"
}
}
14 changes: 1 addition & 13 deletions packages/node/src/run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,6 @@ async function startNode(config?: TopologyNodeConfig) {
node.start();
}

async function startRelay(config?: TopologyNodeConfig) {
const node = await createRelayNode(config?.network_config);
console.log("peer_id:", node.peerId.toString());
for (let ma of node.getMultiaddrs()) {
console.log(ma);
}
}

const run = () => {
program.parse(process.argv);
const opts = program.opts();
Expand All @@ -25,11 +17,7 @@ const run = () => {
config = JSON.parse(fs.readFileSync(opts.config, "utf8"));
}

if (opts.mode === "node") {
startNode(config);
} else if (opts.mode === "relay") {
startRelay(config);
}
startNode(config);
};

run();

0 comments on commit d1eb9f6

Please sign in to comment.