aboutsummaryrefslogtreecommitdiffstats
path: root/how-dat-works.md
diff options
context:
space:
mode:
authorMax Ogden <max@maxogden.com>2016-02-29 18:46:54 -0800
committerMax Ogden <max@maxogden.com>2016-02-29 18:47:04 -0800
commit6b78edc095ea393e7498ba5dc1525df81dd6b51a (patch)
tree7783587bb7e2bd7e62256b679f10d1f606660540 /how-dat-works.md
parentc191285810d85aa37f97b7edb005eb6792e5651e (diff)
downloaddat-docs-6b78edc095ea393e7498ba5dc1525df81dd6b51a.tar.gz
dat-docs-6b78edc095ea393e7498ba5dc1525df81dd6b51a.zip
describe more about dat links
Diffstat (limited to 'how-dat-works.md')
-rw-r--r--how-dat-works.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/how-dat-works.md b/how-dat-works.md
index 1175035..8f46cdb 100644
--- a/how-dat-works.md
+++ b/how-dat-works.md
@@ -6,13 +6,13 @@ When someone starts downloading data with the [Dat command-line tool](https://gi
## Phase 1: Source discovery
-Dat links look like this: `dat://c3fcbcdcf03360529b47df32ccfb9bc1d7f64aaaa41cca43ca9ac7f6778db8da`. The link itself is a fingerprint of the data that is being shared. The first thing that happens when you go to download data using one of these links is you ask various discovery networks if they can tell you where to find sources that have a copy of the data you need.
+Dat links look like this: `dat.land/c3fcbcdcf03360529b47df32ccfb9bc1d7f64aaaa41cca43ca9ac7f6778db8da`. The domain, dat.land, is there so if someone opens the link in a browser we can provide them with download instructions, and as an easy way for people to visually distinguish and remember Dat links. Dat itself doesn't actually use the dat.land part, it just needs the last part of the link which is a fingerprint of the data that is being shared. The first thing that happens when you go to download data using one of these links is you ask various discovery networks if they can tell you where to find sources that have a copy of the data you need.
The discovery step itself is a simple query: you supply a Dat link, and receive back the IP and port of all the known data sources online that have a copy of that data you are looking for. You can then connect to them and begin exchanging data. By introducing this discovery phase we are able to create a network where data can be discovered even if the original data source disappears.
The discovery protocols we use are [DNS name servers](https://en.wikipedia.org/wiki/Name_server), [Multicast DNS](https://en.wikipedia.org/wiki/Multicast_DNS) and the [Kademlia Mainline Distributed Hash Table](https://en.wikipedia.org/wiki/Mainline_DHT) (DHT). Each one has pros and cons, so we combine all three to increase the speed and reliability of discovering data sources.
-We run a DNS name server at `discovery.publicbits.org` on port 53 that Dat clients can use (in addition to specifying their own if they need to), and are able to re-use existing DHT bootstrap servers on the Internet (but are planning on running our own for added redundancy). These discovery servers are the only centralized infrastructure we need for Dat to work over the Internet, and they are redundant, interchangeable and anyone can run their own. Every data source that has a copy of the data also advertises themselves across these discovery networks.
+We run a [custom DNS server](https://www.npmjs.com/package/dns-discovery) that Dat clients use (in addition to specifying their own if they need to), as well as a [DHT bootstrap](https://github.com/bittorrent/bootstrap-dht) server. These discovery servers are the only centralized infrastructure we need for Dat to work over the Internet, but they are redundant, interchangeable, never see the actual data being shared, and anyone can run their own and Dat will still work even if they all go down. If this happens discovery will just be manual (e.g. manually sharing IP/ports). Every data source that has a copy of the data also advertises themselves across these discovery networks.
The discovery logic itself is handled by a module that we wrote called [discovery-channel](http://npmjs.org/discovery-channel), which wraps other modules we wrote to implement DNS and DHT logic into a single interface. We can give the Dat link we want to download to discovery-channel and we will get back all the sources it finds across the various discovery networks.