update readme

This commit is contained in:
jobevers 2017-02-20 15:12:47 -06:00
parent a1650d7f03
commit 06466db1b0

View file

@ -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.