mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-06-07 22:56:36 +00:00
feat: Default Libp2p config for node.js and browser peers.
This commit is contained in:
parent
c0fe90744c
commit
d718a66818
70
src/config/libp2p/index.js
Normal file
70
src/config/libp2p/index.js
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import { identifyService } from 'libp2p/identify'
|
||||||
|
import { webSockets } from '@libp2p/websockets'
|
||||||
|
import { webRTC } from '@libp2p/webrtc'
|
||||||
|
import { all } from '@libp2p/websockets/filters'
|
||||||
|
import { noise } from '@chainsafe/libp2p-noise'
|
||||||
|
import { yamux } from '@chainsafe/libp2p-yamux'
|
||||||
|
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
|
||||||
|
import { circuitRelayTransport } from 'libp2p/circuit-relay'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A basic Libp2p configuration for node servers.
|
||||||
|
*/
|
||||||
|
export const DefaultLibp2pOptions = {
|
||||||
|
addresses: {
|
||||||
|
listen: ['/ip4/0.0.0.0/tcp/0/ws']
|
||||||
|
},
|
||||||
|
transports: [
|
||||||
|
webSockets({
|
||||||
|
filter: all
|
||||||
|
}),
|
||||||
|
webRTC(),
|
||||||
|
circuitRelayTransport({
|
||||||
|
discoverRelays: 1
|
||||||
|
})
|
||||||
|
],
|
||||||
|
connectionEncryption: [noise()],
|
||||||
|
streamMuxers: [
|
||||||
|
yamux()
|
||||||
|
],
|
||||||
|
connectionGater: {
|
||||||
|
denyDialMultiaddr: () => {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
services: {
|
||||||
|
identify: identifyService(),
|
||||||
|
pubsub: gossipsub({ allowPublishToZeroPeers: true })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A basic Libp2p configuration for browser nodes.
|
||||||
|
*/
|
||||||
|
export const DefaultLibp2pBrowserOptions = {
|
||||||
|
addresses: {
|
||||||
|
listen: ['/webrtc']
|
||||||
|
},
|
||||||
|
transports: [
|
||||||
|
webSockets({
|
||||||
|
filter: all
|
||||||
|
}),
|
||||||
|
webRTC(),
|
||||||
|
circuitRelayTransport({
|
||||||
|
discoverRelays: 1
|
||||||
|
})
|
||||||
|
],
|
||||||
|
connectionEncryption: [noise()],
|
||||||
|
streamMuxers: [
|
||||||
|
yamux()
|
||||||
|
],
|
||||||
|
connectionGater: {
|
||||||
|
denyDialMultiaddr: () => {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
services: {
|
||||||
|
identify: identifyService(),
|
||||||
|
pubsub: gossipsub({ allowPublishToZeroPeers: true })
|
||||||
|
}
|
||||||
|
}
|
@ -41,3 +41,8 @@ export {
|
|||||||
MemoryStorage,
|
MemoryStorage,
|
||||||
ComposedStorage
|
ComposedStorage
|
||||||
} from './storage/index.js'
|
} from './storage/index.js'
|
||||||
|
|
||||||
|
export {
|
||||||
|
DefaultLibp2pOptions,
|
||||||
|
DefaultLibp2pBrowserOptions
|
||||||
|
} from './config/libp2p/index.js'
|
||||||
|
@ -5,5 +5,6 @@
|
|||||||
"exit": true,
|
"exit": true,
|
||||||
"bail": false,
|
"bail": false,
|
||||||
"slow": 1000,
|
"slow": 1000,
|
||||||
"exclude": ["test/browser/**/*.js", "test/utils/relay.js"]
|
"exclude": ["test/browser/**/*.js", "test/utils/relay.js"],
|
||||||
|
"timeout": 30000
|
||||||
}
|
}
|
@ -3,7 +3,6 @@ import { rimraf } from 'rimraf'
|
|||||||
import Keystore from '../../src/key-store.js'
|
import Keystore from '../../src/key-store.js'
|
||||||
import Identities from '../../src/identities/identities.js'
|
import Identities from '../../src/identities/identities.js'
|
||||||
import IPFSAccessController from '../../src/access-controllers/ipfs.js'
|
import IPFSAccessController from '../../src/access-controllers/ipfs.js'
|
||||||
import config from '../config.js'
|
|
||||||
import connectPeers from '../utils/connect-nodes.js'
|
import connectPeers from '../utils/connect-nodes.js'
|
||||||
import createHelia from '../utils/create-helia.js'
|
import createHelia from '../utils/create-helia.js'
|
||||||
|
|
||||||
@ -11,8 +10,6 @@ describe('IPFSAccessController', function () {
|
|||||||
const dbPath1 = './orbitdb/tests/ipfs-access-controller/1'
|
const dbPath1 = './orbitdb/tests/ipfs-access-controller/1'
|
||||||
const dbPath2 = './orbitdb/tests/ipfs-access-controller/2'
|
const dbPath2 = './orbitdb/tests/ipfs-access-controller/2'
|
||||||
|
|
||||||
this.timeout(config.timeout)
|
|
||||||
|
|
||||||
let ipfs1, ipfs2
|
let ipfs1, ipfs2
|
||||||
let keystore1, keystore2
|
let keystore1, keystore2
|
||||||
let identities1, identities2
|
let identities1, identities2
|
||||||
|
@ -4,7 +4,6 @@ import OrbitDB from '../../src/orbitdb.js'
|
|||||||
import Keystore from '../../src/key-store.js'
|
import Keystore from '../../src/key-store.js'
|
||||||
import Identities from '../../src/identities/identities.js'
|
import Identities from '../../src/identities/identities.js'
|
||||||
import OrbitDBAccessController from '../../src/access-controllers/orbitdb.js'
|
import OrbitDBAccessController from '../../src/access-controllers/orbitdb.js'
|
||||||
import config from '../config.js'
|
|
||||||
import connectPeers from '../utils/connect-nodes.js'
|
import connectPeers from '../utils/connect-nodes.js'
|
||||||
import createHelia from '../utils/create-helia.js'
|
import createHelia from '../utils/create-helia.js'
|
||||||
|
|
||||||
@ -12,8 +11,6 @@ const dbPath1 = './orbitdb/tests/orbitdb-access-controller/1'
|
|||||||
const dbPath2 = './orbitdb/tests/orbitdb-access-controller/2'
|
const dbPath2 = './orbitdb/tests/orbitdb-access-controller/2'
|
||||||
|
|
||||||
describe('OrbitDBAccessController', function () {
|
describe('OrbitDBAccessController', function () {
|
||||||
this.timeout(config.timeout)
|
|
||||||
|
|
||||||
let ipfs1, ipfs2
|
let ipfs1, ipfs2
|
||||||
let orbitdb1, orbitdb2
|
let orbitdb1, orbitdb2
|
||||||
let identities1, identities2, testIdentity1, testIdentity2
|
let identities1, identities2, testIdentity1, testIdentity2
|
||||||
|
@ -1,80 +0,0 @@
|
|||||||
const isBrowser = () => typeof window !== 'undefined'
|
|
||||||
|
|
||||||
const swarmAddress = isBrowser()
|
|
||||||
? ['/ip4/0.0.0.0/tcp/12345/ws/p2p-webrtc-star']
|
|
||||||
: ['/ip4/0.0.0.0/tcp/0']
|
|
||||||
|
|
||||||
export default {
|
|
||||||
timeout: 30000,
|
|
||||||
defaultIpfsConfig: {
|
|
||||||
preload: {
|
|
||||||
enabled: false
|
|
||||||
},
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
pubsub: true
|
|
||||||
},
|
|
||||||
config: {
|
|
||||||
Addresses: {
|
|
||||||
API: '/ip4/127.0.0.1/tcp/0',
|
|
||||||
Swarm: swarmAddress,
|
|
||||||
Gateway: '/ip4/0.0.0.0/tcp/0'
|
|
||||||
},
|
|
||||||
Bootstrap: [],
|
|
||||||
Discovery: {
|
|
||||||
MDNS: {
|
|
||||||
Enabled: true,
|
|
||||||
Interval: 0
|
|
||||||
},
|
|
||||||
webRTCStar: {
|
|
||||||
Enabled: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
daemon1: {
|
|
||||||
silent: true,
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
pubsub: true
|
|
||||||
},
|
|
||||||
config: {
|
|
||||||
Addresses: {
|
|
||||||
API: '/ip4/127.0.0.1/tcp/0',
|
|
||||||
Swarm: isBrowser() ? ['/ip4/0.0.0.0/tcp/12345/ws/p2p-webrtc-star'] : ['/ip4/0.0.0.0/tcp/0'],
|
|
||||||
Gateway: '/ip4/0.0.0.0/tcp/0'
|
|
||||||
},
|
|
||||||
Bootstrap: [],
|
|
||||||
Discovery: {
|
|
||||||
MDNS: {
|
|
||||||
Enabled: true,
|
|
||||||
Interval: 0
|
|
||||||
},
|
|
||||||
webRTCStar: {
|
|
||||||
Enabled: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
daemon2: {
|
|
||||||
silent: true,
|
|
||||||
EXPERIMENTAL: {
|
|
||||||
pubsub: true
|
|
||||||
},
|
|
||||||
config: {
|
|
||||||
Addresses: {
|
|
||||||
API: '/ip4/127.0.0.1/tcp/0',
|
|
||||||
Swarm: isBrowser() ? ['/ip4/0.0.0.0/tcp/12345/ws/p2p-webrtc-star'] : ['/ip4/0.0.0.0/tcp/0'],
|
|
||||||
Gateway: '/ip4/0.0.0.0/tcp/0'
|
|
||||||
},
|
|
||||||
Bootstrap: [],
|
|
||||||
Discovery: {
|
|
||||||
MDNS: {
|
|
||||||
Enabled: true,
|
|
||||||
Interval: 0
|
|
||||||
},
|
|
||||||
webRTCStar: {
|
|
||||||
Enabled: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -13,8 +13,6 @@ import createHelia from './utils/create-helia.js'
|
|||||||
const keysPath = './testkeys'
|
const keysPath = './testkeys'
|
||||||
|
|
||||||
describe('Database - Replication', function () {
|
describe('Database - Replication', function () {
|
||||||
this.timeout(60000)
|
|
||||||
|
|
||||||
let ipfs1, ipfs2
|
let ipfs1, ipfs2
|
||||||
let keystore
|
let keystore
|
||||||
let identities
|
let identities
|
||||||
|
@ -2,7 +2,6 @@ import { strictEqual } from 'assert'
|
|||||||
import { rimraf } from 'rimraf'
|
import { rimraf } from 'rimraf'
|
||||||
import { copy } from 'fs-extra'
|
import { copy } from 'fs-extra'
|
||||||
import { Log, Entry, Identities, KeyStore, IPFSBlockStorage } from '../../src/index.js'
|
import { Log, Entry, Identities, KeyStore, IPFSBlockStorage } from '../../src/index.js'
|
||||||
import config from '../config.js'
|
|
||||||
import testKeysPath from '../fixtures/test-keys-path.js'
|
import testKeysPath from '../fixtures/test-keys-path.js'
|
||||||
import connectPeers from '../utils/connect-nodes.js'
|
import connectPeers from '../utils/connect-nodes.js'
|
||||||
import waitForPeers from '../utils/wait-for-peers.js'
|
import waitForPeers from '../utils/wait-for-peers.js'
|
||||||
@ -11,8 +10,6 @@ import createHelia from '../utils/create-helia.js'
|
|||||||
const keysPath = './testkeys'
|
const keysPath = './testkeys'
|
||||||
|
|
||||||
describe('Log - Replication', function () {
|
describe('Log - Replication', function () {
|
||||||
this.timeout(60000)
|
|
||||||
|
|
||||||
let ipfs1, ipfs2
|
let ipfs1, ipfs2
|
||||||
let id1, id2
|
let id1, id2
|
||||||
let keystore
|
let keystore
|
||||||
@ -139,7 +136,7 @@ describe('Log - Replication', function () {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
await whileProcessingMessages(config.timeout)
|
await whileProcessingMessages(this.timeout())
|
||||||
|
|
||||||
const result = await Log(testIdentity1, { logId, entryStorage: storage1 })
|
const result = await Log(testIdentity1, { logId, entryStorage: storage1 })
|
||||||
await result.join(log1)
|
await result.join(log1)
|
||||||
|
@ -1,48 +1,13 @@
|
|||||||
import { createHelia } from 'helia'
|
import { createHelia } from 'helia'
|
||||||
import { createLibp2p } from 'libp2p'
|
import { createLibp2p } from 'libp2p'
|
||||||
import { identifyService } from 'libp2p/identify'
|
import { DefaultLibp2pOptions, DefaultLibp2pBrowserOptions } from '../../src/index.js'
|
||||||
import { webSockets } from '@libp2p/websockets'
|
|
||||||
import { webRTC } from '@libp2p/webrtc'
|
|
||||||
import { all } from '@libp2p/websockets/filters'
|
|
||||||
import { noise } from '@chainsafe/libp2p-noise'
|
|
||||||
import { yamux } from '@chainsafe/libp2p-yamux'
|
|
||||||
import { gossipsub } from '@chainsafe/libp2p-gossipsub'
|
|
||||||
import { circuitRelayTransport } from 'libp2p/circuit-relay'
|
|
||||||
|
|
||||||
const isBrowser = () => typeof window !== 'undefined'
|
const isBrowser = () => typeof window !== 'undefined'
|
||||||
|
|
||||||
export default async () => {
|
export default async () => {
|
||||||
const options = {
|
const options = isBrowser() ? DefaultLibp2pBrowserOptions : DefaultLibp2pOptions
|
||||||
addresses: {
|
|
||||||
listen: [
|
|
||||||
isBrowser() ? '/webrtc' : '/ip4/0.0.0.0/tcp/0/ws'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
transports: [
|
|
||||||
webSockets({
|
|
||||||
filter: all
|
|
||||||
}),
|
|
||||||
webRTC(),
|
|
||||||
circuitRelayTransport({
|
|
||||||
discoverRelays: 1
|
|
||||||
})
|
|
||||||
],
|
|
||||||
connectionEncryption: [noise()],
|
|
||||||
streamMuxers: [
|
|
||||||
yamux()
|
|
||||||
],
|
|
||||||
connectionGater: {
|
|
||||||
denyDialMultiaddr: () => {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
services: {
|
|
||||||
identify: identifyService(),
|
|
||||||
pubsub: gossipsub({ allowPublishToZeroPeers: true })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const libp2p = await createLibp2p(options)
|
const libp2p = await createLibp2p({ ...options })
|
||||||
|
|
||||||
return createHelia({ libp2p })
|
return createHelia({ libp2p })
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user