Suggesting a live discussion about js-ipfs connecting to mainnet and local browser extensions and nodes out of the box.
We are confirmed for: Tuesday, February 9, 2021 5:30 PM
Suggesting a live discussion about js-ipfs connecting to mainnet and local browser extensions and nodes out of the box.
We are confirmed for: Tuesday, February 9, 2021 5:30 PM
Notes / background on related issues from Fission’s early research.
What we are trying to accomplish is to have really great native IPFS support with js-ipfs. By native, we mean IPFS connections, not HTTP gateway connections. This is all likely related to the IPFS in Browser mission.
By default js-ipfs connects to 4 *.preload.ipfs.io
, 4 bootstrap.libp2p.io
, and 4 delegate nodes. We have been told that those are demo servers, so Fission runs WSS on our core IPFS servers and connects to them automatically when we initialize a js-ipfs instance.
We also set things up with a (shared) web worker so that one instance of js-ipfs is shared in an iframe across apps / subdomains that are on Fission.
We use js-ipfs to “pin” locally, and then publish updates to our end point, which updates a _dnslink
per user. Additionally we run a Fission IPFS node that pins all the user’s data.
Brooke spoke in depth at the IPFS Security WG for more details.
See https://github.com/libp2p/js-libp2p-websockets/releases/tag/v0.15.0 breaking changes. We need to override this when we want to connect to the user’s local ipfs node.
Because there’s no listener for web sockets by default.
Neither WS or WSS.
Ideally the transport should be enabled by default.
Can’t connect to IPFS companion because window.ipfs
is disabled.
Live notes from call https://hackmd.io/5r1NtTuuSYeAQ955dRatnw?both
bootstrap servers aren’t going away
http delegates are flaky
webrtc needs to be run ourselves
Dashboard of bootstrap nodes
Like http gateways
Lidel is working on this?
Browser js-ipfs <–> full node in Brave / IPFS Companion, this should work out of the box!
ipfs.provider – then it spins up locally
All the stuff in the browser isn’t in the local node?
Pin everything in Fission IPFS in the cloud <–> local node, pin everything
More capable - storage, caching, connectivity to network
Offline
mDNS – discover each other
Discovery – like bootstrap – Default to trying to discover peers to IPFS Companion, Brave? Same ports available
Like mDNS – try discovery from browser – dial localhost, known ports
Try and create Circuit Relay with local node? UDP on localhost?
QUIC / websockets
IPFS Companion – not more powers, but daemon, systray, go-ipfs – browser node could leverage
When Fission app is trying to connect to it – instead of rejecting, using a native UI, give it permission, store data on disk – can accept connections for those. By creating Circuit Relay you get more powerful capabalities.
IPFS Cluster – some overlap with “follow”
Get users to progressive adopt a local node
Local node as cluster endpoint? That’s for sync
Circuit Relay – this is for systray local app
HTTP API to configure Circuit Relay
Identity Dapps – identifying where the gaps are?
Fleek – building similar things, Space
Brave – Lidel. No story of node sharing with content.
yes! find scope going forward
treat localhost as not secure for some browsers
dial a peer? can configure it as a delegate, but can’t connect to it
Configure it as a relay
Help team talk about challenges! Collect more needs and stories
Have to configure being a relay? Be a relay for local by default?
PeerIDs, exchange keys, then they relay
Pinning services should do this, too
Lidel
Look for that
Gozala Symbiotic network Symbiotic network - HackMD
Fission notes Js-ipfs local node connectivity review - #2 by boris