Hey everyone! Some of us have been working with Brave since last summer on an integrated go-ipfs node feature, and it’s shipping next week in the release version of Brave browser. If you haven’t tried it yet, you can give it a spin in the beta or nightly versions. Navigate to an ipfs://{cid} address and you’ll get a prompt. Any feedback appreciated! If you have specific functionality in your apps/libraries/services to test, even better - let us know how it works Downloading the beta/nightly versions do not conflict with the regular release versions, and they’re available here: Download Brave Beta | Brave BrowserDownload Brave Nightly | Brave Browser It’s just the beginning of the features we’ll be integrating into Brave, so share any ideas for things you’d like to see, whether user- or developer-facing.
You can file issues either directly in the Brave browser repo, or here in our web browsers repo for IPFS:
My understanding of the Brave IPFS integration is that the browser is using the ipfs://Qm... url format to feed the hash to a public gateway. For pinning and publishing, one needs to run a local IPFS node or subscribe to a pinning service.
It should be possible to integrate a pinning API call to a service provider. However, most pinning services require an API key. I suppose the API key could be stored in the browser password cache, but that seems a bit insecure since the password cache is not encrypted.
I haven’t tried the nightly version lately. At the moment I’m running this version:
Version 1.18.78 Chromium: 87.0.4280.141 (Official Build) (64-bit)
…which doesn’t seem to run a full IPFS node even when I select “Local Node” to resolve IPFS locations. However, maybe I need to remove the IPFS Companion extension rather than just disable it… or maybe just try out the nightly build.
EDIT:
Just tried the Beta version.
Looks great so far! I’ll try it out for a while and provide some more feedback.
EDIT 2:
Beta
Works well.
IPFS full node didn’t start if it was supposed to…
IPNS and IPFS URLs worked just fine.
Changed the gateway
System resources were normal
Nightly
Was rather slow when trying to access content through the local gateway
IPFS node started … version 0.7.0
IPNS and IPFS URLs worked just fine.
Changing gateway works fine
System resources increased due to full IPFS node
Network connections increased due to full IPFS node, max for go-ipfs were about 170
I’d like an option to disable NAT traversal and QUIC connections. TCP connections are a little slower, but my ISP doesn’t seem to like uncontrolled IPFS nodes.
I tested on macOS, and I see that it succeeds in starting an ipfs node. I’m not sure how to access the UI for that node though; is it there?
What if I’m already running an ipfs daemon though, does Brave detect that and avoid starting up a duplicate one? I hope so. I have to test on Linux to see how that goes… but in general I don’t understand what is the best practice when writing an application that needs IPFS. You can’t assume that most users are running ipfs daemon (yet), but you also IMO shouldn’t assume that nobody is, especially now that go-ipfs ships with a systemd service file. I think eventually ipfs daemon should already be running on most systems, like sshd.
After disabling QUIC and removing the reprovider capability, the Brave IPFS node runs a bit faster and has a lower chance of being filled with general IPFS network data.
The repo size is set to 1 GB. My Brave IPFS node had about 15 MB of network data in a few minutes of being active. It would be nice to have a few settings in the extension tab that shut off reprovider and change the repo size. A 1 GB limit may not seem to large. However, a user isn’t going to understand that their hard drive space is going to be used by other network members. It would also be great to have a “trash” button that runs a GC … along with a GC on exit from Brave if a user has set “Clear All Cache” on exit.
Mind elaborating why you disabled QUIC (and not TCP)?
QUIC + lower number of connections should behave fine without need for any additional tweaking.
What type of problems are you experiencing wit your ISP?
UI for changing the datastore size will most likely be added in later releases.
Exposing GUI for disabling reproviding is more challenging.
When you disable reproviding it makes it impossible to use IPFS for publishing and sharing. Importing a file and sharing its CID won’t work unless someone else is providing the file+CID to the network or other peer is directly connected to you. This means we need to disable all related features (current and future), which adds complexity. For this reasons think it will remain a “power-user setting” available only via JSON config for the time being. We may revisit this when we have delegated pinning ecosystem ready (then you can have those features, as long you set up a pinning service).
Brave was mentioned on HackerNews website and all over the web recently for it’s IPFS support. Here’s a couple of links I found today, which I’ll post here just since everyone is probably interested. IPFS is growing fast!
Can someone explain how to use ipfs. I installed the desktop on my machine. Now what do I do? How do I find ipfs websites? How do I find files that someone shares? How do I do anything.
IPFS is currently more of a name of a technology than something end users just “go and use” but basically one simple example use case would be you could to go https://pinata.cloud/ and learn how to upload a file, and then your file will be available in to use in other places on the web using it’s URL, and anyone using IPFS technology can get that file.
I am really new to the ipfs. What I noticed was some random hiccups on the speed of my internet connection, while the ipfs companion extension on brave was active. Is this something normal and expected?
I’d say it depends. Download speed depends on how many peers are providing the content you are looking for. If you are browsing popular content like ipns://en.wikipedia-on-ipfs.org then you will most likely get it faster than if you are fetching something that is provided only by a few or one peer, as it takes longer to find a reliable provider.
I know with earlier versions of IPFS (not sure about IPFS Companion) just by installing IPFS and starting it, you would notice a massive amount of bandwidth being consumed, even when you aren’t downloading anything. Clearly the rest of the network is just “making use of” it’s newfound resources. lol.
In my docker instance, the solution was to set routing to “dhtclient” and/or profile to “lowpower” to stop it from hogging resources, but for some reason the default settings were to just go ahead and hog. I think the philosophy was sort of like with BitTorrent, where simply being a part of the network means they want to go ahead and use your resources.
The default config of go-ipfs daemon is optimized for server use.
IPFS Desktop and Brave come with custom configuration tailored towards desktop use and consumer-grade networks (lower number of maintained connections, smaller datastore, enabled GC etc).
Regarding older versions, could be:
Old versions of ipfs-webui preloaded a lot of geoip data from IPFS, which produced huge traffic spike and gave users the impression that IPFS is expensive to run.
This has been fixed and geoip lookups are executed only when the user opens Peers screen.
go-ipfs 0.5.0 enabled AutoNAT service by default, making nodes switch to DHT server only when it makes sense. This switched many go-ipfs nodes to dhtclient mode (even if they had no --routing=dhtclient) and decreased the “ambient metadata traffic” significantly.