IPFS Companion 2.2.0 brings window.ipfs to your Browser
blog.ipfs.io
blog.ipfs.io
Or does this extensions have the same issues as Metamask[0], which means there's no way to hide the fact that one has the extension installed?
This is a pretty important privacy feature, because I'm pretty sure the presence of such an extension massively increases the accuracy of targeting.
I wonder if we could have a standard api, like window.requestAPI('ipfs' or 'eth' or whatever) returns a Promise, and the user gets a 'page is requesting' bar like we do with location requests.
That way, you wouldn't be leaking information about your browser capabilities to pages that you don't wish to use those capabilities on.
So as a application developer, you would check if window.ipfs exists on the page, and if it doesn't, load js-ipfs and then the rest of the page can function the same way, no matter how ipfs was loaded on the page.
Unless we can be sure that when browsers implement IPFS, window.requestAPI('ipfs') would be the API, going the route we're taking now is the safest bet, unfortunately.
(Disclaimer: I work on IPFS)
As the earlier poster mentioned, Metamask had this exact problem and it's been widely commented on. Of course the metamask problem is worse than the IPFS problem, as it marks a user as a potential target, whereas IPFS by itself probably doesn't do more than mark them as someone interested in the distributed web.
Your argument for why you do it seems to be a non-sequitur. Whatever you choose for how IPFS Companion exposes the api can be exactly the same as how the future browser exposes it. In fact as an early mover, you have an opportunity to do something positive and set a good direction for the built in functionality that comes later.
It's not a problem that there is consensus on how to solve yet, but I believe a standard solution built into browsers for exposing apis with capabilities we may not wish some sites to observe is needed. Polluting the window object with a host of api objects is likely to be a bad idea long term.
Off the top of my head, there could be some things we could do to help this, but the async/sync nature of `window.ipfs` makes it harder. If variable access was async, we could prompt before exposing it, but since we want to enable the browser extension to be a migration path to having native IPFS support in the browser, it becomes harder.
lide went ahead and opened a issue (https://github.com/ipfs-shipyard/ipfs-companion/issues/451), so if you're reading this and have ideas, we'd love to hear from you! We care deeply about this issue but was not required for the initial prototype we have now.
(Disclaimer: I work on IPFS)
https://datproject.org https://beakerbrowser.com
And a short video for Beaker: https://www.youtube.com/watch?v=U2B9mwRFE8U
Got a white paper link up at the top and some graphics of some decentralized nodes, so probably hit the back button faster than I delete spam from my inbox.
Also, ZeroNet seems more advanced than both in terms of things that actually work today.
Currently Dat's browser integration model requires the use of a specific browser (Beaker). Not that Beaker isn't awesome; I think Dat would garner more mindshare if it moved to browser-extension-based model like IPFS and didn't require a full installation of a new browser.
(Disclaimer: I work on IPFS)
Kudos!
The goal is to end up with standardized implementations so we can have multiple implementations and a open protocol.
(Disclaimer: I work on IPFS)
Use window.ipfs property to play with pure IPFS (without HTTP gateway): window.ipfs.id(console.log) window.ipfs.add(Buffer.from('hello')).then(console.log) window.ipfs.cat('/ipfs/QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX').then((data) => console.log(new String(data))) More info: https://github.com/ipfs-shipyard/ipfs-companion/blob/master/...