Synzvato / decentraleyes

This repository has a new home: https://git.synz.io/Synzvato/decentraleyes
Mozilla Public License 2.0
1.45k stars 96 forks source link

Use the IPFS protocol to fetch resources #221

Open foxcool opened 7 years ago

foxcool commented 7 years ago

We can use IPFS p2p network for storing static data.

Synzvato commented 7 years ago

Hi @Foxcool, and many thanks for bringing this up! I have actually been thinking about utilizing IPFS for decentralized content delivery, for quite some time now. The concept sounds very promising indeed.

So, I think this is a great opportunity to publicly discuss some specifics. We could either decide to have complete bundles served over IPFS, or to point users to individual resources. I'm not sure yet what's best for privacy, performance, and resource availability. So, any additional ideas or insights are welcome!

ghost commented 7 years ago

@Synzvato @Foxcool

You mean for additional bundles we may have the option to get them using IPFS? And would this solve the security problems related to subscription lists?

Also another point that should be stressed: Is IPFS censored or unreachable for some users? I tested using a tool that determines whether a site is blocked in China and it seems that ipfs.io is reachable there but we'd have to confirm with someone who is located there.

In any case, if this solves the problems above it will be a really neat idea and would make Decentraleyes truly Decentralized.

Synzvato commented 7 years ago

You mean for additional bundles we may have the option to get them using IPFS? And would this solve the security problems related to subscription lists?

It will surely help, since IPFS uses Merkle DAGs to verify data. This will even allow Decentraleyes to run a single integrity check on a root hash, to instantly verify the integrity of any individual CDN-resources.

Is IPFS censored or unreachable for some [...]? I tested using a tool that determines whether a site is blocked in China and it seems that ipfs.io is reachable there but we'd have to confirm [...].

Fortunately, IPFS does not rely on the DNS protocol. So, if someone blocks your access to DNS or spoofs DNS in your network, it will not prevent IPFS nodes from resolving content over the network. [1]

[1] https://ipfs.io/blog/24-uncensorable-wikipedia/

ghost commented 6 years ago

@Synzvato @Foxcool

In related news: Firefox 59 now supports IPFS!

Starting with Firefox 59, several protocols that support decentralized architectures are available for use by extensions. The white-listed protocols are:

Dat Project (dat://)

IPFS (dweb:// ipfs:// ipns://)

Secure Scuttlebutt (ssb://)

https://blog.mozilla.org/addons/2018/01/26/extensions-firefox-59/

@Synzvato when can we - roughly speaking - expect an experimental release of Decentraleyes with the following proposal implemented? Thanks.

foxcool commented 6 years ago

Cool!

elypter commented 6 years ago

maybe you could cooperate with @jspenguin2017 from https://github.com/NanoAdblocker/NanoCore who is currently improving the update capabilities of filterlists by adding differential updates and a more efficient server side. you might profit from each others approach.

jspenguin2017 commented 6 years ago

Interesting idea... Does the protocol requires low level network access though? It might be hard to implement on Chrome.

ghost commented 6 years ago

@jspenguin2017 I believe that all that would be required is IPFS' own JS implementation: https://github.com/ipfs/js-ipfs

jspenguin2017 commented 6 years ago

Oh that's interesting... I'll look into it when I have time.