--------------------------------------------------------------------------------

Kenosis-BitTorrent

--------------------------------------------------------------------------------
Intro

Kenosis is a fully-distributed p2p RPC system built on top of
XMLRPC. Nodes are automatically connected to each other via a
Kademlia-style network (http://citeseer.ist.psu.edu/529075.html) and
can route RPC requests efficiently to any online node. Kenosis does
not rely on a central server - any Kenosis node can effectively join
the network ("bootstrap") from any connected node.

More about Kenosis can be found here: http://kenosis.sf.net

This is Kenosis-enabled BitTorrent. Using Kenosis, we've eliminated
the tracker as a central point of failure for BitTorrent
downloads. Kenosis-enabled BitTorrent is 100% backwards compatible
with existing BitTorrent clients.

--------------------------------------------------------------------------------
Details

Kenosis-BitTorrent uses torrent files which specify a tracker of the
form http://hash.bt.kenosisp2p.org, where "hash" is the hash of the
original file.

Kenosis-BitTorrent downloaders will notice that this is a kenosis url
and use kenosis to find the tracker that is handling this torrent
file. Standard BitTorrent downloaders try to resolve
hash.bt.kenosisp2p.org as normal. Our dns server will look up the hash
in kenosis and return to the client the ip address of the kenosis
node that is tracking that file. If that tracker becomes unreachable,
subsequent lookups for that hash will switch automatically to the next
available Kenosis-enabled tracker.

--------------------------------------------------------------------------------
Usage

Each of the BitTorrent commands described in README.txt can be
modified to use Kenosis easily.

To start a tracker that will join the Kenosis p2p network, use this
command. Benefits: if your tracker goes down or becomes unavailable,
other Kenosis-enabled trackers can take over. Users will still be able
to download your .torrent files from the new tracker. Make sure you
use the Kenosis-enabled btmakemetafile below to create your .torrent file.

./bttrack.py --port 6969 --dfile dstate



To make a .torrent file that instructs clients (even legacy clients)
to use Kenosis to find an available tracker for the data, use this
modified btmakemetafile command. Benefits: whether or not you run a
tracker yourself, you can make data avialble to BitTorrent clients.

./btmakemetafile.py myfile.ext kenosisp2p



The Kenosis project provides a DNS bridge that allows legacy
BitTorrent clients to take advantage of Kenosis for any .torrent file
that was generated with Kenosis-enabled btmakemetafile. However, if
you prefer to have your BitTorrent client use Kenosis directly, you
can use any of the BitTorretn download scripts (such as
btdownloadheadless) with Kenosis enabled. Benefits: your client will
bypass the DNS bridge to discover the correct BitTorrent tracker.

./btdownloadheadless.py --url http://my.server/myfile.torrent --saveas myfile.ext

--------------------------------------------------------------------------------
Notes

- by default, these scripts will automatically bootstrap themselves
  onto the Kenosis network via a root Kenosis node that is running at
  root.kenosisp2p.org:5005. However, Kenosis nodes can bootstrap off
  any node in the network. Therefore, you may provide the
  --kenosis_bootstrap option if you prefer to bootstrap off a
  different node.

- bttrack and all of the downloade scripts support a --kenosis
  command-line argument for controlling the use of Kenosis within
  BitTorrent. The default value is 1, meaning htat Kenosis is
  enabled. If you want to run a downloader or tracker that will not
  connect to Kenosis pass 0.

For example:

./btdownloadheadless.py --url http://my.server/myfile.torrent --saveas myfile.ext --kenosis 0

or

./btdownloadheadless.py --url http://my.server/myfile.torrent --saveas myfile.ext --kenosis 1 --kenosis_bootstrap some.other.node:port
