{ "info": { "author": "Brian Muller", "author_email": "bamuller@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Python Distributed Hash Table\n[![Build Status](https://secure.travis-ci.org/bmuller/kademlia.png?branch=master)](https://travis-ci.org/bmuller/kademlia)\n[![Docs Status](https://readthedocs.org/projects/kademlia/badge/?version=latest)](http://kademlia.readthedocs.org)\n\n**Documentation can be found at [kademlia.readthedocs.org](http://kademlia.readthedocs.org/).**\n\nThis library is an asynchronous Python implementation of the [Kademlia distributed hash table](http://en.wikipedia.org/wiki/Kademlia). It uses [Twisted](https://twistedmatrix.com) to provide asynchronous communication. The nodes communicate using [RPC over UDP](https://github.com/bmuller/rpcudp) to communiate, meaning that it is capable of working behind a [NAT](http://en.wikipedia.org/wiki/NAT).\n\nThis library aims to be as close to a reference implementation of the [Kademlia paper](http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf) as possible.\n\n## Installation\n\n```\npip install kademlia\n```\n\n## Usage\n*This assumes you have a working familiarity with [Twisted](https://twistedmatrix.com).*\n\nAssuming you want to connect to an existing network (run the standalone server example below if you don't have a network):\n\n```python\nfrom twisted.internet import reactor\nfrom twisted.python import log\nfrom kademlia.network import Server\nimport sys\n\n# log to std out\nlog.startLogging(sys.stdout)\n\ndef quit(result):\n print \"Key result:\", result\n reactor.stop()\n\ndef get(result, server):\n return server.get(\"a key\").addCallback(quit)\n\ndef done(found, server):\n log.msg(\"Found nodes: %s\" % found)\n return server.set(\"a key\", \"a value\").addCallback(get, server)\n\nserver = Server()\n# next line, or use reactor.listenUDP(5678, server.protocol)\nserver.listen(5678)\nserver.bootstrap([('127.0.0.1', 1234)]).addCallback(done, server)\n\nreactor.run()\n```\n\nCheck out the examples folder for other examples.\n\n## Stand-alone Server\nIf all you want to do is run a local server, just start the example server:\n\n```\ntwistd -noy examples/server.tac\n```\n\n## Running Tests\nTo run tests:\n\n```\ntrial kademlia\n```\n\n## Fidelity to Original Paper\nThe current implementation should be an accurate implementation of all aspects of the paper save one - in Section 2.3 there is the requirement that the original publisher of a key/value republish it every 24 hours. This library does not do this (though you can easily do this manually).", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Storj/storjkademlia", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "storjkademlia", "package_url": "https://pypi.org/project/storjkademlia/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/storjkademlia/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/Storj/storjkademlia" }, "release_url": "https://pypi.org/project/storjkademlia/0.7.4/", "requires_dist": null, "requires_python": null, "summary": "Kademlia is a distributed hash table for decentralized peer-to-peer computer networks.", "version": "0.7.4" }, "last_serial": 1969928, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "62fb02e15ee4c40c785735ccefc236c4", "sha256": "bb7ca002d852a3eb8e0db72801868c0053f64ec6f9efe2d0753b29eb4712fd72" }, "downloads": -1, "filename": "storjkademlia-0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "62fb02e15ee4c40c785735ccefc236c4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 38389, "upload_time": "2016-01-29T20:37:57", "url": "https://files.pythonhosted.org/packages/9e/17/9dcdd1634a1b6251501284d0dd74b354a4035aef7f4521068ae5e5c6b0ec/storjkademlia-0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76a68219e09d2d64af0f1a1f7b75e574", "sha256": "3853d076a8599f12b062dee8d7b081d56624f592a3f3e5d38463721c78c1dc13" }, "downloads": -1, "filename": "storjkademlia-0.5.tar.gz", "has_sig": false, "md5_digest": "76a68219e09d2d64af0f1a1f7b75e574", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14357, "upload_time": "2016-01-29T20:37:50", "url": "https://files.pythonhosted.org/packages/a6/44/999d69255bcad39b95b8db70827086380c3d06c73229ac83696b33a24f1d/storjkademlia-0.5.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "5e5fd7db30afdb498e9b66f0bcc9968f", "sha256": "4f4737c7f80637e24774a59dc1fe545541393740ebe6115f0db6216fb9875b76" }, "downloads": -1, "filename": "storjkademlia-0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e5fd7db30afdb498e9b66f0bcc9968f", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 38482, "upload_time": "2016-02-05T18:11:18", "url": "https://files.pythonhosted.org/packages/fd/33/bbde579e82febbacbb31d601fe9f3efb1803a3610516787d452a04f801f9/storjkademlia-0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "edb6dfab305081e876652befae04a43d", "sha256": "e8c51d00fb069a57d084ce015a64c7d48ab5b4d80c6479d1866b744739447f3d" }, "downloads": -1, "filename": "storjkademlia-0.7.tar.gz", "has_sig": false, "md5_digest": "edb6dfab305081e876652befae04a43d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14394, "upload_time": "2016-02-05T18:11:00", "url": "https://files.pythonhosted.org/packages/71/07/0cbf5eb3be77e40c10af146a9f91fbfc04643efaab401cbf519001fcd0bc/storjkademlia-0.7.tar.gz" } ], "0.7.4": [ { "comment_text": "", "digests": { "md5": "73d8d087dbbd69a724ff0067ed15b859", "sha256": "108898346bde3212e51129e4ee5c046f9be2bc81f94312c14fabf93123f52b48" }, "downloads": -1, "filename": "storjkademlia-0.7.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73d8d087dbbd69a724ff0067ed15b859", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 38566, "upload_time": "2016-02-22T16:39:10", "url": "https://files.pythonhosted.org/packages/e1/6d/c88e772fc7e578d396d37d64bfa10b6959a31e95e5947cfdb3de13f3a5b2/storjkademlia-0.7.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f9752cdbc6dd46a8377b59eedd18098", "sha256": "553cd8a8eb65f8f008ea30a4242dcce43c4c7edc044689fe566fe065ca7d63b5" }, "downloads": -1, "filename": "storjkademlia-0.7.4.tar.gz", "has_sig": false, "md5_digest": "9f9752cdbc6dd46a8377b59eedd18098", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14456, "upload_time": "2016-02-22T16:38:57", "url": "https://files.pythonhosted.org/packages/33/06/9f6b1d1b7923159380a3a57e0f313e0b834fe9ac016f8d4ff393153e24dc/storjkademlia-0.7.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "73d8d087dbbd69a724ff0067ed15b859", "sha256": "108898346bde3212e51129e4ee5c046f9be2bc81f94312c14fabf93123f52b48" }, "downloads": -1, "filename": "storjkademlia-0.7.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73d8d087dbbd69a724ff0067ed15b859", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 38566, "upload_time": "2016-02-22T16:39:10", "url": "https://files.pythonhosted.org/packages/e1/6d/c88e772fc7e578d396d37d64bfa10b6959a31e95e5947cfdb3de13f3a5b2/storjkademlia-0.7.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f9752cdbc6dd46a8377b59eedd18098", "sha256": "553cd8a8eb65f8f008ea30a4242dcce43c4c7edc044689fe566fe065ca7d63b5" }, "downloads": -1, "filename": "storjkademlia-0.7.4.tar.gz", "has_sig": false, "md5_digest": "9f9752cdbc6dd46a8377b59eedd18098", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14456, "upload_time": "2016-02-22T16:38:57", "url": "https://files.pythonhosted.org/packages/33/06/9f6b1d1b7923159380a3a57e0f313e0b834fe9ac016f8d4ff393153e24dc/storjkademlia-0.7.4.tar.gz" } ] }