diff --git a/README.md b/README.md index 2015e9c12..1ad17e561 100644 --- a/README.md +++ b/README.md @@ -3,19 +3,30 @@ # LBRY -LBRY is a fully decentralized, open-source protocol facilitating the discovery, access, and (sometimes) purchase of data. +LBRY is a fully decentralized, open-source protocol facilitating the +discovery, access, and (sometimes) purchase of data. -## Installing LBRY +This repo is a reference implementation of the LBRY protocol and +provides daemon that can interact with the network via a json-rpc +interface. -We provide binaries for Windows, macOS, and Debian-based Linux. +## Installing the LBRY App + +The LBRY App is a decentralized content marketplace built on top of +the LBRY protocol. We provide binaries for Windows, macOS, and +Debian-based Linux. | Windows | macOS | Linux | | --- | --- | --- | -| [Download MSI](https://lbry.io/get/lbry.msi) | [Download DMG](https://lbry.io/get/lbry.dmg) | [Download DEB](https://lbry.io/get/lbry.deb) | +| [Download](https://lbry.io/get/lbry.msi) | [Download](https://lbry.io/get/lbry.dmg) | [Download](https://lbry.io/get/lbry.deb) | -Our [releases page](https://github.com/lbryio/lbry/releases/latest) also contains the latest release, pre-releases, and past builds. +Our [releases page](https://github.com/lbryio/lbry-app/releases/latest) also contains the latest release, pre-releases, and past builds. + + +## Using the LBRY daemon + +See our quickstart guide at http://lbry.io/quickstart for details on how to install and use the `lbrynet-daemon`. -For instructions on building from source, see [INSTALL.md](INSTALL.md). ## What is LBRY? @@ -23,61 +34,23 @@ LBRY is a fully decentralized network for distributing data. It consists of peer and downloading data from other peers, possibly in exchange for payments, and a distributed hash table, used by peers to discover other peers. -On LBRY, data is broken into chunks, and each chunk is specified by its sha384 hash sum. This -guarantees that peers can verify the correctness of each chunk without having to know anything -about its contents, and can confidently re-transmit the chunk to other peers. Peers wishing to -transmit chunks to other peers announce to the distributed hash table that they are associated -with the sha384 hash sum in question. When a peer wants to download that chunk from the network, -it asks the distributed hash table which peers are associated with that sha384 hash sum. The -distributed hash table can also be used more generally. It simply stores IP addresses and -ports which are associated with 384-bit numbers, and can be used by any type of application to -help peers find each other. For example, an application for which clients don't know all of the -necessary chunks may use some identifier, chosen by the application, to find clients which do -know all of the necessary chunks. +On LBRY, data is broken into chunks, and each chunk is content +addressable, specified by its sha384 hash sum. This guarantees that +peers can verify the correctness of each chunk without having to know +anything about its contents, and can confidently re-transmit the chunk +to other peers. Peers wishing to transmit chunks to other peers +announce to the distributed hash table that they are associated with +the sha384 hash sum in question. When a peer wants to download that +chunk from the network, it asks the distributed hash table which peers +are associated with that sha384 hash sum. The distributed hash table +can also be used more generally. It simply stores IP addresses and +ports which are associated with 384-bit numbers, and can be used by +any type of application to help peers find each other. For example, an +application for which clients don't know all of the necessary chunks +may use some identifier, chosen by the application, to find clients +which do know all of the necessary chunks. -## For Developers - -The bundled LBRY application uses the lbrynet JSONRPC api found in `lbrynet.lbrynet_daemon.LBRYDaemon`. This api allows for applications and web services like the lbry browser UI to interact with lbrynet. If you've installed lbrynet, you can run `lbrynet-daemon` without running the app. While the app or `lbrynet-daemon` is running, you can use the following to show the help for all the available commands: - -``` -import sys - -try: - from lbrynet import conf - from lbrynet.lbrynet_daemon.auth.client import LBRYAPIClient -except ImportError: - print "You don't have lbrynet installed!" - sys.exit(0) - -conf.initialize_settings() -api = LBRYAPIClient.get_client() - -try: - status = api.status() -except: - print "lbrynet-daemon isn't running!" - sys.exit(0) - -if not status['is_running']: - print "lbrynet-daemon hasn't finished starting up, here's the status message:" - print status - sys.exit(0) -else: - for cmd in api.commands(): - print "%s:\n%s" % (cmd, api.help({'command': cmd})) -``` - -If you've installed lbrynet, it comes with a file sharing application, called `lbrynet-daemon`, which breaks -files into chunks, encrypts them with a symmetric key, computes their sha384 hash sum, generates -a special file called a 'stream descriptor' containing the hash sums and some other file metadata, -and makes the chunks available for download by other peers. A peer wishing to download the file -must first obtain the 'stream descriptor' and then may open it with his `lbrynet-daemon` client, -download all of the chunks by locating peers with the chunks via the DHT, and then combine the -chunks into the original file, according to the metadata included in the 'stream descriptor'. - -For instructions on installing from source, see [INSTALL.md](INSTALL.md). - -Source code: https://github.com/lbryio/lbry +## Contributions To contribute, [join us on Slack](https://lbry-slackin.herokuapp.com/) or contact jeremy@lbry.io. Pull requests are also welcome.