sirphilip Posted February 5, 2014 Report Posted February 5, 2014 Hey everyone, I recently wrote a decentralized web browser on top of btsync. BTSync handles all the file distribution, so to load a page you just have to enter the secret. I am working on integrating namecoins which will handle the name resolution so you do not have to memorize a secret. You can read more on my website:http://jack.minardi.org/software/syncnet-a-decentralized-web-browser/ And you can follow along with the development on github:https://github.com/jminardi/syncnet TorrentFreak also recently wrote about this project:http://torrentfreak.com/bittorrent-sync-used-to-create-decentralized-web-browser-140204/ Let me know if you have any ideas or questions! I'd love some feedback from some actual btsync users. Quote
dms2013 Posted February 6, 2014 Report Posted February 6, 2014 Cool! I will keep looking at the progress! Keep it up Quote
sirphilip Posted February 7, 2014 Author Report Posted February 7, 2014 No sorry no android version yet. I'd like to get the desktop version in a good state first Quote
somid3 Posted February 8, 2014 Report Posted February 8, 2014 This is very cool. Practically making every person a web server. This could be an interesting way of sharing very large files, etc. More interesting would be to build a search engine that allows one to find the secret (or color coin) given a query. What are some use cases you think people will use your browser for? Quote
dms2013 Posted February 8, 2014 Report Posted February 8, 2014 What if it's a very large site. And you are not interested in watching everything on it? Quote
somid3 Posted February 8, 2014 Report Posted February 8, 2014 precisely my point, an intermediary search engine has to be able to catalog all files and send one-time use or selective-file secrets to users. These users will then use the selective-secret to access one or two files. Quote
ProphetZ Posted February 8, 2014 Report Posted February 8, 2014 "It's gonna be the future soon."Thanks Jack!That is a really interesting project and I'm glad to see someone working on browser integration! Quote
root-12 Posted February 10, 2014 Report Posted February 10, 2014 This is a really good idea for a NEXT GENERATION WEBBROWSER APPLICATION that uses DHT instead of DNS protocol. The application will have to manage the caching of pages with selective sync, and that is far from impossible. Q: What if it's a very large site. And you are not interested in watching everything on it? The same application can choose to view classic webserver pages without further ado and thus cover both types of usage, and at the same time avoid putting mental load on the user.We all know when a server is down and google chrome prompts: "Sorry the page is unavailable. Do you want to view a cached one?" Next, the problem regarding domain names is solveable as a DHT: If just a few DNS servers are set up as bittorrents (using bitcoin for authenticity), a query to bittorrents would be suitable for the DNS lookup. www.my.ultra.fancy.site.here would be DNS'ed as a torrent-file, so when you "search" from the application, you actually put a search for a bittorrent, and the torrent returns the read-only secret. So even watching updates on a large site (google) is easy if you can tell the service that you want to subscribe to a particular subject. Q: an intermediary search engine has to be able to catalog all files A: No, George Rzevski invented the broadcast-based search engine back in the 70'ies, which was way ahead of its time. It used a protocol where the local application broadcasted a keywords to peers on a scalefree network based on a "guess" of who would know. These then either returned their guess or echoed the query to those who they believed might know.Though the pagerank algorithm was not yet invented, Rzevski's model used an 8 bit "confidence" level, to provide a response. 255 was the same as "I don't know and don't know anyone who knows". Based on Jure Leskovec's research from 2008-2012 (Stanford) we now know that you can touch every application on the internet in this manner in 32 steps if we know just 2 devices. The trick is that the analysis of the query is distributed, whereby it is as if every device in the world had a keyword and a peer list. So when a query arrives, to a device it asks itself can I help by either providing an answer to the query or by echoing the query to a list of people I know? Bittorrent research that states that 8 peers is enough, provides a reasonable heuristic. When the broadcasting device is done "asking" and has assembled all responses, it will be capable to answer and point others to the results. So while you wait for your peers to respond and you are browsing through the search result pages < 1, 2, 3, ... next > you indicate search depth, looking for lower ranking results and extending search horizon. Hereby you "broadcast" to your peers:"Sorry mate, the last result was nice, but not what I wanted. Could you please ask your peers for alternatives?"They will then take the next step down the confidence rank and provide answers. (George Rzevski originally invented this for data-mining material that in the 70'ies could not fit onto a single data tape. So his solution was very pre-hadoop, but pretty much did the same if all servers were known. The problem however was that tapes wore out, cracked, etc. so from time to time there would be down-time. To overcome this, he added the confidence level of "who should know" and if all pointed to a machine that was not available it could provide a maintenance message. -But that is another story...) Let's re-invent the internet browser :-) Quote
dms2013 Posted February 10, 2014 Report Posted February 10, 2014 Also a DNS query can contain text not only an IP address. So you could put a secret in a text record. Maybe that is easier than inventing a new domain system, and maybe easier to remember. Quote
jtroth Posted February 10, 2014 Report Posted February 10, 2014 Super cool, and really want to try it out. Unfortunately, can't get it working. I run python syncnet.py and the GUI comes up; I'm assuming I have the enaml dependency resolved correctly. I have python-btsync, wasn't sure where syncnet needs this so I just symlinked it into the same directory as syncnet.py. I have btsync running with default un/pass/port and have included my api key into the config.json file (does this need to run in the same directory as syncnet?). Btsync is running and the api works as expected. When I enter "sync://B4KWMK3VBJSH35YZMS7ZEMSQ6XNVBHALY", nothing happens, and I don't see anything in stdout. Any ideas as to what I could be doing wrong? I'm on 64 bit linux if that helps. Quote
overand Posted February 13, 2014 Report Posted February 13, 2014 This is a really interesting idea for static content. Unfortunately, I can't even begin to fathom a way for this to handle dynamic / scripted content - at least not 'server-side' scripted content. Still, a very interesting way to make static websites! Quote
Synthetic Vegtables Posted February 17, 2014 Report Posted February 17, 2014 (edited) great job! you may find coloured coins over with growth will be sloooooow you may find something like ethereum a good p2p block chain to build upon http://www.ethereum.org/ this would solve the problem of handling scripted content Edited February 17, 2014 by Synthetic Vegtables Quote
linuxnutjob Posted May 8, 2014 Report Posted May 8, 2014 This is an awesome project. This could be expanded to include email and instant messaging, communties, forums, etc etc. Like what unseen.is is doing without the servers. I've always dreamed of a server-less internet, free of you-know-who!! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.