Updating Torrents via DHT Mutable Items
bittorrent.org
bittorrent.org
This implementation relies on BEP 44 (Storing arbitrary data in the DHT) [2], which, together with the design of the DHT, does have some security implications [3].
[1] https://ipfs.io/
[2] http://www.bittorrent.org/beps/bep_0044.html
[3] https://gist.github.com/substack/eadd13302d785dc13aac#file-r...
IFPS has IPNS [1], the name services (the feature most-directly relevant to the Bittorrent enhancement in question).
To date, I'm unaware of an IFPS crawler-and-indexer search engine.
Content discovery is neither a part of HTTP nor the architecture of the web. It's a feature if it's current landscape, built on top of existing non-ideal ALI and brute force (scanning).
Good web search (represented by Google) appeared around 1998, years after the general availability of the web, when the corpus of web pages was already large. Up to this moment, search is powered by ad revenue.
I don't see how IPFS is significantly different in this regard.
Donating resources to a "traditional" scanning search engine is also probably doable. But unlike Web, IPFS lacks intense linking and thus "citation ranking" (PageRank-like). Measuring relevance is harder.
It's basically the reason search engines stopped trusting meta tags on the websites.
They allow the holder of the private key to add new data and clients who know the public USK can get notified of updates. In Freenet you can also get the old versions of the data for as long as they stay around on the network.
You don't even need to change the protocol to start using it. It's a ready made hash-to-peerlist mapping, so you could just use it for peer-discovery/bootstrapping and do other stuff out-of-band.
Mutable Items are good for updating content, but that doesn't matter if nobody can find it.
There needs to be a BEP for a way to host, serve and search metadata about torrents, not just their info-hashes. This should be priority #1 for BT devs. Fortunately, there is at least some related thinking in this direction: http://www.bittorrent.org/beps/bep_0044.html although I don't think that it really goes far enough, as there is no standardization around how the data for searching will be structured, etc.
So many p2p protocols have support for p2p search (to my mind comes Kademlia), why can't BitTorrent have p2p search?
I wrote a paper on building a torrent search index quickly using the DHT records that this feature emitted at the time. [link redacted]
From the sibling comment (posted by swolchok)'s paper, a relevant quote:
"We chose to demonstrate our proof of concept only on Vuze due to the significant additional complexity of supporting two DHTs in the crawler. While Mainline does not contain torrent descriptions, its peer lists are keyed by the torrent infohashes themselves, so no additional machinery would be needed to discover infohashes. However, some method would be needed to discover torrent names, such as downloading .torrent files directly from peers using the metadata exchange protocol.
To explore this possibility, we built a prototype .torrent crawler. Since we are operating in the context of the Vuze DHT, our DHT crawler needs to obtain both a torrent description and a peer list before the .torrent crawler can contact the appropriate peers with the correct infohash. However, the .torrent files contain useful additional data, including the full listing of files contained in the torrent"
You still need to have the entry point - that's exactly where the censorship is occurring. Try to find a copy of the KickAssTorrents database on Google right now and tell me how easy it is.
The approach you're talking about is essentially what http://bitcannon.io/ is trying to do - but that requires running a separate app, a local MongoDB server, downloading many gigabytes of database data, and half an hour to import the torrent DB into your local instance, and that STILL requires you to be able to acquire the Torrent database or related infohash, which isn't easy because of the very censorship we're trying to sidestep.
Quite frankly, that's a really dumb solution to this censorship and it's naive to say that it's useful. This will never be used in the fashion you're describing and it does nothing for anti-censorship.
It makes so much more sense just to have the DHT be actually useful in surfacing content.
Which will now be a short hexadecimal code that is easily shared and can't be taken down.
Something like that would make it easy to create centralised search engines for casual users, and allow power users to run local databases.
* In Vuze: https://www.usenix.org/legacy/event/woot10/tech/full_papers/..., slides at https://www.defcon.org/images/defcon-18/dc-18-presentations/...
* In Mainline: https://arxiv.org/ftp/arxiv/papers/1009/1009.3681.pdf
Basically all you have to do is sit there, people will come to you asking for content, you'll ask as a standard DHT node but note that the infohash exists, and get more information (name, number of peers, ...) about it in the background. All you need is a few IPs.
I'd imagine to do more thorough scraping you'd want to reconnect to the network repeatedly with different peer hashes, otherwise you'd only see the infohashes "near" one point in the network.
I mean, I should be able to publish a relatively simple sqlite database that contains:
- my public posts
- my public encryption key
- list of my friends
- my private posts encrypted with the friends' public keys
Then I should seed at least my and my friends databases, so even if some of my friend is offline, his/hers database is still available.
If I only had some more time on my hands...
You can look at how that implementation was done and what issues they encountered to see what it would take to implement a distributed [something], where that [something] in your case is a social network.