2017-07-09 16:52:37 +01:00
|
|
|
'use strict'
|
|
|
|
|
|
|
|
const WebRTCStar = require('libp2p-webrtc-star')
|
|
|
|
const WebSockets = require('libp2p-websockets')
|
2018-10-31 14:42:24 +01:00
|
|
|
const WebSocketStar = require('libp2p-websocket-star')
|
2018-02-19 09:46:11 +00:00
|
|
|
const Mplex = require('libp2p-mplex')
|
2017-07-09 16:52:37 +01:00
|
|
|
const SPDY = require('libp2p-spdy')
|
|
|
|
const SECIO = require('libp2p-secio')
|
2018-10-31 14:42:24 +01:00
|
|
|
const Bootstrap = require('libp2p-bootstrap')
|
2019-04-11 15:52:04 +02:00
|
|
|
const DHT = require('libp2p-kad-dht')
|
2019-07-31 18:47:30 +02:00
|
|
|
const Gossipsub = require('libp2p-gossipsub')
|
2019-07-30 12:38:02 +02:00
|
|
|
const libp2p = require('libp2p')
|
2017-07-09 16:52:37 +01:00
|
|
|
|
|
|
|
// Find this list at: https://github.com/ipfs/js-ipfs/blob/master/src/core/runtime/config-browser.json
|
2018-11-14 18:50:17 +01:00
|
|
|
const bootstrapList = [
|
2019-02-06 04:59:42 +10:00
|
|
|
'/dns4/ams-1.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd',
|
|
|
|
'/dns4/sfo-1.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx',
|
|
|
|
'/dns4/lon-1.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3',
|
|
|
|
'/dns4/sfo-2.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z',
|
|
|
|
'/dns4/sfo-3.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM',
|
|
|
|
'/dns4/sgp-1.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu',
|
|
|
|
'/dns4/nyc-1.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm',
|
|
|
|
'/dns4/nyc-2.bootstrap.libp2p.io/tcp/443/wss/p2p/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64',
|
|
|
|
'/dns4/node0.preload.ipfs.io/tcp/443/wss/p2p/QmZMxNdpMkewiVZLMRxaNxUeZpDUb34pWjZ1kZvsd16Zic',
|
|
|
|
'/dns4/node0.preload.ipfs.io/tcp/443/wss/p2p/Qmbut9Ywz9YEDrz8ySBSgWyJk41Uvm2QJPhwDJzJyGFsD6'
|
2017-07-09 16:52:37 +01:00
|
|
|
]
|
|
|
|
|
|
|
|
class Node extends libp2p {
|
2019-07-30 12:38:02 +02:00
|
|
|
constructor ({ peerInfo }) {
|
|
|
|
const wrtcStar = new WebRTCStar({ id: peerInfo.id })
|
|
|
|
const wsstar = new WebSocketStar({ id: peerInfo.id })
|
2017-07-09 16:52:37 +01:00
|
|
|
|
2018-06-28 10:06:25 +02:00
|
|
|
const defaults = {
|
|
|
|
modules: {
|
|
|
|
transport: [
|
|
|
|
wrtcStar,
|
2018-10-31 14:42:24 +01:00
|
|
|
WebSockets,
|
|
|
|
wsstar
|
2018-06-28 10:06:25 +02:00
|
|
|
],
|
|
|
|
streamMuxer: [
|
2018-02-19 09:46:11 +00:00
|
|
|
Mplex,
|
2017-07-09 16:52:37 +01:00
|
|
|
SPDY
|
|
|
|
],
|
2018-06-28 10:06:25 +02:00
|
|
|
connEncryption: [
|
|
|
|
SECIO
|
|
|
|
],
|
|
|
|
peerDiscovery: [
|
|
|
|
wrtcStar.discovery,
|
2018-10-31 14:42:24 +01:00
|
|
|
wsstar.discovery,
|
2018-06-28 10:06:25 +02:00
|
|
|
Bootstrap
|
2019-04-11 15:52:04 +02:00
|
|
|
],
|
2019-07-31 18:47:30 +02:00
|
|
|
dht: DHT,
|
|
|
|
pubsub: Gossipsub
|
2017-07-09 16:52:37 +01:00
|
|
|
},
|
2018-06-28 10:06:25 +02:00
|
|
|
config: {
|
|
|
|
peerDiscovery: {
|
2019-04-11 15:52:04 +02:00
|
|
|
autoDial: true,
|
2018-06-28 10:06:25 +02:00
|
|
|
webRTCStar: {
|
|
|
|
enabled: true
|
|
|
|
},
|
|
|
|
websocketStar: {
|
|
|
|
enabled: true
|
|
|
|
},
|
|
|
|
bootstrap: {
|
2019-04-11 15:52:04 +02:00
|
|
|
interval: 20e3,
|
2018-10-31 14:42:24 +01:00
|
|
|
enabled: true,
|
2018-11-14 18:50:17 +01:00
|
|
|
list: bootstrapList
|
2018-06-28 10:06:25 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
relay: {
|
2018-10-31 14:42:24 +01:00
|
|
|
enabled: true,
|
2018-06-28 10:06:25 +02:00
|
|
|
hop: {
|
2019-04-11 15:52:04 +02:00
|
|
|
enabled: false,
|
2018-06-28 10:06:25 +02:00
|
|
|
active: false
|
|
|
|
}
|
|
|
|
},
|
2019-04-11 15:52:04 +02:00
|
|
|
dht: {
|
|
|
|
enabled: false
|
|
|
|
},
|
2019-07-31 18:47:30 +02:00
|
|
|
pubsub: {
|
|
|
|
enabled: false
|
2018-06-28 10:06:25 +02:00
|
|
|
}
|
2018-10-31 14:42:24 +01:00
|
|
|
},
|
|
|
|
connectionManager: {
|
2019-04-11 15:52:04 +02:00
|
|
|
minPeers: 10,
|
2018-10-31 14:42:24 +01:00
|
|
|
maxPeers: 50
|
2018-06-28 10:06:25 +02:00
|
|
|
}
|
2017-07-09 16:52:37 +01:00
|
|
|
}
|
|
|
|
|
2019-07-30 12:38:02 +02:00
|
|
|
super({ ...defaults, peerInfo })
|
2017-07-09 16:52:37 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = Node
|