-
Notifications
You must be signed in to change notification settings - Fork 417
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
List the multiple definitions of "node". #683
Comments
Thanks @johnnymatthews for consolidating these here, I have couple of suggestion
|
I think I would differentiate between capabilities and supported transports where tcp, quick, ws, webrtc are transports while DHT, pubsub are capabilities. HTTP Gateway, IPFS HTTP API seem like a services that node may provide just like relay or delegated routing are.
This is generally true, but little more nuanced. Host nodes (nodes it's connecting to) be open to web connections from that specific web origin. In practice that implies that if request is coming from HTTPS host needs to have wss address and have TLS certificate setup accordingly.
This is correct, although technically we could have something like gateway through service workers
Not sure if worth calling out electron specifically here.
Yes still the case
Do we have issue on file ? I did not realize subdomains were not implemented in js.
There is a bit of documentation here of preload service I think it would be really good to have more in depth documentation of what it is. In practice it is
I'm not sure we have any such nodes deployed, but technically they don't need to be ipfs nodes. Again I think it's better to think about it as a service node provides (or a role node assumes) which I think removes these questions.
In fact nodejs nodes could be potentially enable connections across web and go nodes over WebRTC without having to e.g. implement WebRTC transport in go.
Yes in practice, but I think we should aim for having diversity there to improve resilience and working towards a proposal to deploy nodejs IPFS bootstrap nodes (it's blocked on DHT though)
@vasco-santos would have an accurate answer here, but as far as I know currently that is true. When node starts it tries to establish connections with nodes on a bootstrap list from which it can discover other nodes, content etc... If node is unable to dial any of the bootstrap nodes it won't be able to discover nodes/content over the internet, although it would still be able to do on local area network (only go and nodejs). That said, there is/was ongoing effort to improve connection manager such that node would be able to remember addresses of nodes that could provide bootstrap service and dial them if ones on the preconfigured list are unreachable.
This document provides a bit more details on specific HTTP Endpoints Nodes providing this service are go-ipfs, but that is because nodejs nodes do not have usable DHT implementation. I think these comments provide a good overview of assumptions at play
|
I'd say yes, mentioning Electron is important, especially given the fact it can be an odd mix of capabilities present in web and node versions (depending on execution context)
@Gozala AFAIK js-ipfs does not support Host header at all (at least that was the case in past): ipfs/js-ipfs#2248
@johnnymatthews FYSA related issues are ipfs/kubo#3926, ipfs/kubo#3908 ipfs/js-ipfs#1505 but the best TLDR one is libp2p/go-libp2p-kad-dht#254 I believe. |
In progress.... |
@johnnymatthews Because this feature required me to update pages that I just updated for #245, I committed the changes to the same branch as 245. If I understand correctly, that doesn't require a new PR, because you can ostensibly review them together. Sorry, it's a big chunk at once. Let me know if I need to make changes to my understanding of the PR workflow. |
@johnnymatthews I addressed the initial request in this issue by making sure that all node "types" have a concise entry in the glossary and are linked to a more detailed discussion on the nodes page. Starting with Gozala's comments (node graph for transport services/roles vs. types), it seems to me that we should have a separate issue. I'll read about and consider Gozala's changes, but I'm hesitant to add any more to PR 1031, which is already chock full. |
This issue was resolved with PR #1031 . I included these changed files in that PR before I knew how to properly separate them. |
The word node means different things in different contexts. Let's list those definitions to the Glossary.
The following was taken from a HackMD post put together by @Gozala, and referenced in #678:
go-ipfs node
js-ipfs node
Preload node
ipfs refs -r <CID>
on a randomly chosen preload node's HTTP API which puts the CID in the preload nodes' wantlist which then causes it to fetch the data from the userRelay node
Bootstrap node
Delegate routing node
The text was updated successfully, but these errors were encountered: