Comments (7)
Hey, I would like to work on this.
Question: should the libp2p-railing be integrated directly into the base js-libp2p? Shouldn't it be required as a discovery mechanism in the js-libp2p bundles?
from js-libp2p.
@nunofmn awesome!
The way it is set up means that it has to be passed as an extra module loaded by js-ipfs into libp2p, because only js-ipfs has access to the bootstrap list.
Another question is how to hot load swarm into it. Trying to figure out a nice way to plug in this discovery mechanism, that requires swarm (or libp2p) to work. So far, what is making sense is to have a mechanism to add modules on the fly:
libp2p.module.add('discovery', <instance>)
Thoughts?
from js-libp2p.
Adding modules on-the-fly is useful and a good default solution, but maybe supporting some configuration-based initialization could be also useful (similar to the already existing one in js-libp2p-ipfs)
const modules = {
transport: [
new TCP(),
new WS()
],
connection: {
muxer: [
spdy
],
crypto: [
secio
]
},
discovery: [
{
module: require('js-libp2p-railing'),
options: { verify: true }
},
{
module: require('js-libp2p-mdns-discovery'),
options: { verify: true }
}
]
}
This way in the base js-libp2p is then possible to initialize the discovery modules, since the swarm instance is already available.
The only disadvantage is that is necessary a common "constructor function signature" in all discovery modules.
from js-libp2p.
you still run into the issue of having to pass swarm
for the verification to happen.
from js-libp2p.
In the base class you can now do something like this:
// Attach discovery mechanisms
if (this.discovery) {
let discoveries = this.modules.discovery
discoveries = Array.isArray(discoveries) ? discoveries : [discoveries]
discoveries.forEach((discovery) => {
let Discovery = discovery.module
let disc = new Discovery(discovery.options, this.swarm)
disc.on('peer', (peerInfo) => {
this.discovery.emit('peer', peerInfo)
})
})
}
from js-libp2p.
@nunofmn here is what we are going to do.
- the bundles get a new
options
object passed ipfs-inactive/js-libp2p-ipfs-nodejs#46 - the discovery mechanisms (for now) might or not receive as the last argument of their constructor, a reference to the libp2p instance itself. So in case of libp2p-railing, you would pass the libp2p node, and access swarm from there. Through this direct reference to the instance, the options can be fetched, for example
bootstrap-list
.
Makes sense?
from js-libp2p.
This ⛴ has sailed!
from js-libp2p.
Related Issues (20)
- SyntaxError: The requested module '@multiformats/multiaddr-matcher' does not provide an export named 'IP_OR_DOMAIN' HOT 4
- Possible unhandleable crash in kad-dht HOT 1
- bug: Can't auto dial another browser witch only announced /p2p-circuit/webrtc HOT 2
- bug: webrtc-signaling proto ID does not match spec HOT 2
- Package subpath './peer-job-queue' is not defined by "exports" for circuit-relay HOT 4
- @libp2p/autonat import { CodeError, ERR_TIMEOUT } from '@libp2p/interface/errors'; HOT 4
- @libp2p/identify import { CodeError, ERR_NOT_FOUND } from '@libp2p/interface/errors'; HOT 5
- feat: Ensure services indicate their dependencies through identifiers
- deps: @libp2p/webrtc depends on deprecated packages
- abstract-stream: should support undefined logger HOT 3
- logger: please export createDisabledLogger HOT 9
- Error trying to connect to peer node : 'maConn.log is not a function' HOT 3
- libp2p http transport example
- Where is this error being thrown?
- Datastore no longer retains self.data in v1 HOT 12
- `mss.handle` never resolves when `optimisticSelect` HOT 11
- Keychain depends on IPFS
- PubSub Not Working on Relayed Connections without Relay Subscription in [email protected] HOT 3
- bug: The wrong multiaddr causes the program to enter a dead loop
- Splitted Data When Transmission Data Length Exceeding Send Window Limitation HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-libp2p.