{ "info": { "author": "ziggs", "author_email": "ziggs@airmail.cc", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "### Little Bird Kademlia P2P DHT Network\n\nA Python3 Kademlia overlay network implementation.\n\n[![Build Status](https://travis-ci.org/ZigmundVonZaun/little-bird.svg?branch=master)](https://travis-ci.org/ZigmundVonZaun/little-bird)\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/) \n\n\n\n### Demo.\n\n### Installation.\n\nFrom PyPi (Stable version)\n\n```bash\n\n$ mkdir tmp && cd tmp\n\n$ pip3 install little-bird\n\n```\n\nFrom GitHub (Bleeding Edge/Development version)\n\n```bash\n\n$ git clone https://github.com/ZigmundVonZaun/little-bird.git\n\n$ python3 -m virtualenv venv\n\n$ pip3 install -r requirements.txt\n\n```\n\n### Setup.\n\nCopy the ```.env.dist``` to ```.env``` found on the directory root \nand edit it as you see fit. \n\n```bash\n\n$ cp .env.dist .env && nano .env\n\n```\n\n### Introduction.\n\nKademlia is a pure P2P overlay network compromising also of a DHT (Distributed Hash Table).\n\nThe algorithm was proposed in the following paper:\n\nhttps://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf\n\nOften compared with the likes of Pastry and Chord, it is used in many projects in the networking\nworld including but not limited to BitTorrent, Ethereum, Gnutella, IPFS. \n\n### FAQ: Is this Kademlia implementation for you?\n\n#### Is it anonymous?\n\nNo. Nodes use naked IP addresses to locate each other and share information \nwithin the network\n\n#### Is the shared information encrypted?\n\nNo.Information is shared within the network without any encryption. However, adding an\nencryption mechanism is trivial. \n\nThis can be done by adding some logic to the `send_message()` logic and implementing a custom \nmessage received handler.\n\n#### Does this implementation work on the public Internet?\n\nDue to the complications of NAT punching, we decided to forego an implementation that could work on the Internet. \n\nHowever, this remains in our future plans.\n\n\n#### Is this also a database?\n\nYes. A distributed one with a very low failure rate. \nYou can store and retrieve values at will.\n\n\n #### Why does it have a low failure rate?\n\n Keys are automatically replicated within different nodes in the network. Nodes that have a longer uptime\n are also favoured in this setup. \n\n In fact the probability of failure is lower than the probability of a node leaving the\n network. The event of a node leaving the network does not affect the database in anyway.\n\n\n#### Is there a central tracker server, like a master coordinator?\n\nNo. Every node shares the same weight in the network.\n\nEach node holds substantial information which is useful in node and key lookups. \n\nConfiguration information also spreads automatically as a side effect of key lookups.\n\nDespite the lack of a tracker, all tracker functions are covered by Kademlia. \n\nFeature | Central Tracker Network | DHT Based Network\n--- | --- | ---\nNode Lookups | [x] | [x] \nKey Lookups | [x] | [x]\nPerformance Increases With Load | [ ] | [x]\nSusceptible to DDOS attacks | [x] | [ ]\nLow failure rate | [ ] | [x]\n\n#### Why do you keep on insisting that Kademlia is much more performant? Are you trying to sell it to me?\n\nBecause an increase in the number of nodes increases the performance of the network. \nLookups are much faster. \n\nWhereas in the case of a centralised network, a tracker might be \noverwhelmed, taking down the whole network with it.\n\n#### But wont the higher number of nodes effectively DDOS the network?\n\nNo. Kademlia favours older nodes over newer nodes.\n\nA DDOS attack would just put the attacking nodes on the networks \nwaiting list *chuckles villanously*\n\n### Tests\n\n python -m unittest\n\n### Behind the Scenes\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ZigmundVonZaun/little-bird", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "little-bird", "package_url": "https://pypi.org/project/little-bird/", "platform": "", "project_url": "https://pypi.org/project/little-bird/", "project_urls": { "Homepage": "https://github.com/ZigmundVonZaun/little-bird" }, "release_url": "https://pypi.org/project/little-bird/0.0.2/", "requires_dist": [ "python-dotenv", "logbook", "netifaces" ], "requires_python": "", "summary": "A Python3 Kademlia overlay network implementation.", "version": "0.0.2" }, "last_serial": 4004814, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "d4743d3d8522a2dc24b68cd03063d41b", "sha256": "5ae8a73c3e2c481cc11456a706073284b93bcd05f688d65a5efd20362ecd8e5f" }, "downloads": -1, "filename": "little_bird-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d4743d3d8522a2dc24b68cd03063d41b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10216, "upload_time": "2018-06-26T19:37:40", "url": "https://files.pythonhosted.org/packages/c0/53/36459ef6aa3209ad1cf3a129f9e9ace035cc2cbc5f8f24a514df376d56ff/little_bird-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51d074502673e07e65b4ea291af8a388", "sha256": "f36b3cc572171dcc3bed965c6bd9c9e1721606e7f12b8a9508df3cfcdd020e57" }, "downloads": -1, "filename": "little-bird-0.0.2.tar.gz", "has_sig": false, "md5_digest": "51d074502673e07e65b4ea291af8a388", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8374, "upload_time": "2018-06-26T19:37:41", "url": "https://files.pythonhosted.org/packages/08/0f/c353c3edf0a22f1fc32694a2600f88dc2b04613b9c7f8eb82649baae326f/little-bird-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d4743d3d8522a2dc24b68cd03063d41b", "sha256": "5ae8a73c3e2c481cc11456a706073284b93bcd05f688d65a5efd20362ecd8e5f" }, "downloads": -1, "filename": "little_bird-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d4743d3d8522a2dc24b68cd03063d41b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10216, "upload_time": "2018-06-26T19:37:40", "url": "https://files.pythonhosted.org/packages/c0/53/36459ef6aa3209ad1cf3a129f9e9ace035cc2cbc5f8f24a514df376d56ff/little_bird-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51d074502673e07e65b4ea291af8a388", "sha256": "f36b3cc572171dcc3bed965c6bd9c9e1721606e7f12b8a9508df3cfcdd020e57" }, "downloads": -1, "filename": "little-bird-0.0.2.tar.gz", "has_sig": false, "md5_digest": "51d074502673e07e65b4ea291af8a388", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8374, "upload_time": "2018-06-26T19:37:41", "url": "https://files.pythonhosted.org/packages/08/0f/c353c3edf0a22f1fc32694a2600f88dc2b04613b9c7f8eb82649baae326f/little-bird-0.0.2.tar.gz" } ] }