{"id":17156679,"url":"https://github.com/manuels/bulletinboard-dht","last_synced_at":"2025-04-09T20:10:40.333Z","repository":{"id":32259863,"uuid":"35834292","full_name":"manuels/bulletinboard-dht","owner":"manuels","description":"Your internet-wide general-purpose DHT to store key/value pairs","archived":false,"fork":false,"pushed_at":"2018-02-07T21:19:48.000Z","size":94,"stargazers_count":125,"open_issues_count":4,"forks_count":5,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-09T20:10:36.003Z","etag":null,"topics":["dht","distributed-hash-table","key-value","peer-to-peer"],"latest_commit_sha":null,"homepage":"https://manuels.github.io/bulletinboard-dht/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manuels.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-18T18:11:23.000Z","updated_at":"2025-03-09T11:51:40.000Z","dependencies_parsed_at":"2022-08-24T14:23:11.818Z","dependency_job_id":null,"html_url":"https://github.com/manuels/bulletinboard-dht","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuels%2Fbulletinboard-dht","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuels%2Fbulletinboard-dht/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuels%2Fbulletinboard-dht/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manuels%2Fbulletinboard-dht/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manuels","download_url":"https://codeload.github.com/manuels/bulletinboard-dht/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103872,"owners_count":21048245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dht","distributed-hash-table","key-value","peer-to-peer"],"created_at":"2024-10-14T22:07:05.998Z","updated_at":"2025-04-09T20:10:40.311Z","avatar_url":"https://github.com/manuels.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://github.com/manuels/bulletinboard-dht/raw/master/icon.png \"Logo\") BulletinBoard DHT\n=================\n\n[![Build Status](https://travis-ci.org/manuels/bulletinboard-dht.svg?branch=master)](https://travis-ci.org/manuels/bulletinboard-dht)\n[![Crates Version](https://img.shields.io/crates/v/bulletinboard.svg)](https://crates.io/crates/bulletinboard)\n\n[https://github.com/manuels/bulletinboard-dht](https://github.com/manuels/bulletinboard-dht)\n\nIntroduction\n------------\n\nBulletinBoard is a general-purpose Distributed-Hash-Table based on [Kademlia](http://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf).\n\nThe interface is provided as a D-Bus service via these commands (see [example below](#usage) or [python example](https://github.com/manuels/bulletinboard-dht/tree/master/examples/example.py)):\n\n    Service: org.manuel.BulletinBoard\n      Object Path: /\n      Interface:   org.manuel.BulletinBoard\n      Commands:\n       - Store(app_id: str, key: [u8], value: [u8], lifetime_sec: u64)\n       - Put(app_id: str, key: [u8], value: [u8])\n       - Get(app_id: str, key: [u8]) -\u003e (values: [[u8]])\n\nPlease note that the value must not exceed 2048 bytes!\n\nThe lifetime for a value you Put() in the DHT is 15 minutes, so you should call Put() every, say, 10 minutes to make sure it stays in the DHT (or just use Store()).\n\n\nInstallation\n------------\n\n1) **Download**\n\n         # Debian/Ubuntu\n         wget 'https://github.com/manuels/bulletinboard-dht/releases/download/v0.5.3/bulletinboard_0.5.3_amd64.deb'\n\n         # Fedora\n         wget 'https://github.com/manuels/bulletinboard-dht/releases/download/v0.5.3/bulletinboard-0.5.3-1.x86_64.rpm'\n\n2) **Install bulletinboard**\n\n         # Debian/Ubuntu\n         sudo dpkg -i bulletinboard_0.5.3_amd64.deb\n\n         # Fedora\n         sudo rpm -ivh bulletinboard-0.5.3.x86_64.rpm\n\nUsage\n-----\n\nUsually BulletinBoard is used by any third-party applications to store and lookup data.\nYou can use the DBus interface to do this by hand for example in your shell scripts.\n\n### Storing Data\n\nThe Put() command stores data in the DHT.\nIn this example we store under the key *what did you eat?* the value [8B,AD,F0,0D] using\nthe application ID *mytestapp*:\n\n         $ dbus-send --session \\\n            --type=method_call \\\n            --dest=org.manuel.BulletinBoard / \\\n            org.manuel.BulletinBoard.Put \\\n            string:\"mytestapp\" \\\n            array:byte:\"what did you eat?\" \\\n            array:byte:0x8B,0xAD,0xF0,0x0D\n\n### Retrieving Data\n\nNow we can get the stored data by asking the DHT what is stored under\nthe key *what did you eat?*.\nUsing the Get() command, we get back the [8B,AD,F0,0D] value we stored previously:\n\n         $ dbus-send --session \\\n            --reply-timeout=60000 \\\n            --print-reply \\\n            --type=method_call \\\n            --dest=org.manuel.BulletinBoard / \\\n            org.manuel.BulletinBoard.Get \\\n            string:\"mytestapp\" \\\n            array:byte:\"what did you eat?\"\n\n         array [\n            array of bytes [\n               8B AD F0 0D\n            ]\n         ]\n\nDeveloping\n----------\n\n1)   Get [Rust](http://www.rust-lang.org/)\n\n2)   Clone\n\n         git clone https://github.com/manuels/bulletinboard-dht.git\n\n3)   Build\n\n         cargo build --release\n\n     (in bulletinboard-dht dir)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanuels%2Fbulletinboard-dht","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanuels%2Fbulletinboard-dht","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanuels%2Fbulletinboard-dht/lists"}