initial commit
This commit is contained in:
commit
ce79c0150a
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules/
|
11
Dockerfile
Normal file
11
Dockerfile
Normal file
@ -0,0 +1,11 @@
|
||||
FROM node:20-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY index.js package*.json .
|
||||
|
||||
RUN npm install --production
|
||||
|
||||
EXPOSE 4000
|
||||
|
||||
CMD ["node", "index.js"]
|
52
index.js
Normal file
52
index.js
Normal file
@ -0,0 +1,52 @@
|
||||
import { createLibp2p } from 'libp2p'
|
||||
import { generateKeyPairFromSeed } from '@libp2p/crypto/keys'
|
||||
import { webSockets } from '@libp2p/websockets'
|
||||
import { circuitRelayServer, circuitRelayTransport } from '@libp2p/circuit-relay-v2'
|
||||
import { noise } from '@chainsafe/libp2p-noise'
|
||||
import { yamux } from '@chainsafe/libp2p-yamux'
|
||||
import { identify } from '@libp2p/identify'
|
||||
|
||||
import { createHash } from 'crypto';
|
||||
|
||||
const publicMultiaddr = process.env.PUBLIC_MULTIADDR;
|
||||
const seed = process.env.SEED;
|
||||
|
||||
if (typeof publicMultiaddr !== 'string' || !publicMultiaddr.length) {
|
||||
console.log('no PUBLIC_MULTIADDR or invalid PUBLIC_MULTIADDR specified');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (typeof seed !== 'string' || !seed.length) {
|
||||
console.log('no SEED or invalid SEED specified');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
|
||||
const seedHash = createHash('sha512').update(seed).digest('base64');
|
||||
const key = await generateKeyPairFromSeed('Ed25519', new TextEncoder().encode(seedHash).slice(0, 32));
|
||||
|
||||
const relay = await createLibp2p({
|
||||
privateKey: key,
|
||||
transports: [
|
||||
webSockets(),
|
||||
circuitRelayTransport(),
|
||||
],
|
||||
addresses: {
|
||||
listen: [`/ip4/0.0.0.0/tcp/4000/ws`],
|
||||
announce: [publicMultiaddr],
|
||||
},
|
||||
connectionEncrypters: [noise()],
|
||||
streamMuxers: [yamux()],
|
||||
services: {
|
||||
identify: identify(),
|
||||
relay: circuitRelayServer({
|
||||
reservations: 512,
|
||||
reservationTTL: 2 * 60 * 60 * 1000,
|
||||
}),
|
||||
}
|
||||
})
|
||||
|
||||
await relay.start()
|
||||
|
||||
console.log('Relay listening on:')
|
||||
relay.getMultiaddrs().forEach(ma => console.log(ma.toString()))
|
1314
package-lock.json
generated
Normal file
1314
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
25
package.json
Normal file
25
package.json
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "libp2p-circuit-relay-v2",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@chainsafe/libp2p-noise": "^16.1.3",
|
||||
"@chainsafe/libp2p-yamux": "^7.0.1",
|
||||
"@libp2p/circuit-relay-v2": "^3.2.11",
|
||||
"@libp2p/crypto": "^5.1.1",
|
||||
"@libp2p/identify": "^3.0.29",
|
||||
"@libp2p/kad-dht": "^15.0.2",
|
||||
"@libp2p/ping": "^2.0.29",
|
||||
"@libp2p/websockets": "^9.2.10",
|
||||
"crypto": "^1.0.1",
|
||||
"libp2p": "^2.8.5"
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user