The LBRY SDK for building decentralized, censorship resistant, monetized, digital content apps.
Find a file
Umpei Kay Kurokawa 213a7ab66c Merge pull request #489 from lbryio/fix_dummy_hash_announcer
dummy hash announcer requires hash_queue_size() function
2017-02-20 14:48:28 -05:00
docs api doc generator 2017-01-11 17:30:16 -05:00
lbrynet Merge pull request #489 from lbryio/fix_dummy_hash_announcer 2017-02-20 14:48:28 -05:00
packaging Bump version: 0.8.6rc0 → 0.8.6 2017-02-19 19:50:41 -05:00
scripts download blob script update 2017-01-17 17:11:14 -06:00
tests allow requests that match allowed-origin 2017-02-16 11:44:23 -05:00
uri_handler move urihandler out of packaging dir 2017-01-28 22:09:40 -08:00
.appveyor.yml switch branch to master 2016-11-09 11:02:00 -06:00
.bumpversion.cfg Bump version: 0.8.6rc0 → 0.8.6 2017-02-19 19:50:41 -05:00
.gitignore Ignore the folder we recommend to use for virtual-env in INSTALL.md 2017-01-21 11:19:44 -05:00
.gitmodules remove submodule 2016-06-20 20:43:47 -05:00
.pylintrc add emacs tmp files to pylint blacklist 2016-12-07 09:38:38 -05:00
.travis.yml remove branches restriction on travis builds 2017-02-14 07:55:45 -06:00
app.icns update status bar app 2016-03-02 02:00:45 -05:00
CHANGELOG.md Bump version: 0.8.6rc0 → 0.8.6 2017-02-19 19:50:41 -05:00
Dangerfile fix because the danger.systems code example was wrong 2017-02-07 23:08:35 -06:00
ez_setup.py initial commit 2015-08-20 11:27:15 -04:00
FAQ.md updates based on job's comments 2017-01-11 15:39:28 -05:00
INSTALL.md pip install must be run with upgrade flag 2017-02-07 20:51:10 -05:00
LICENSE MIT license 2016-09-13 22:10:12 -04:00
mkdocs.yml api doc generator 2017-01-11 17:30:16 -05:00
README.md update example script 2017-02-09 10:44:29 -05:00
requirements.txt upgrade txJson-RCP to 0.5 2017-01-02 19:15:25 -06:00
run_pylint.sh pylint: add check for mixed-indentation 2016-12-14 19:22:00 -06:00
run_tests.sh add script to run tests 2017-01-21 16:04:38 -06:00
setup.py bump lbryum version 2017-02-15 12:54:38 -06:00

Build Status Coverage Status

LBRY

LBRY is a fully decentralized, open-source protocol facilitating the discovery, access, and (sometimes) purchase of data.

Installing LBRY

We provide binaries for Windows, macOS, and Debian-based Linux.

Windows macOS Linux
Download MSI Download DMG Download DEB

Our releases page also contains the latest release, pre-releases, and past builds.

For instructions on building from source, see INSTALL.md.

What is LBRY?

LBRY is a fully decentralized network for distributing data. It consists of peers uploading 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.

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.

Source code: https://github.com/lbryio/lbry

To contribute, join us on Slack or contact jeremy@lbry.io. Pull requests are also welcome.

Support

Please open an issue and describe your situation in detail. We will respond as soon as we can.

For private issues, contact jeremy@lbry.io.

License

See LICENSE