{"id":13720296,"url":"https://github.com/helium/erlang-hbbft","last_synced_at":"2026-04-06T06:01:35.731Z","repository":{"id":37611913,"uuid":"128082900","full_name":"helium/erlang-hbbft","owner":"helium","description":"Erlang implementation of HoneyBadgerBFT","archived":false,"fork":false,"pushed_at":"2023-05-12T11:41:07.000Z","size":1790,"stargazers_count":70,"open_issues_count":5,"forks_count":15,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-03-28T18:54:56.706Z","etag":null,"topics":["consensus-algorithm","erlang"],"latest_commit_sha":null,"homepage":null,"language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/helium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-04T15:30:41.000Z","updated_at":"2025-03-13T04:38:17.000Z","dependencies_parsed_at":"2024-11-08T10:12:26.598Z","dependency_job_id":"0a2e0702-fcbe-4381-a31a-c942faea2e16","html_url":"https://github.com/helium/erlang-hbbft","commit_stats":null,"previous_names":[],"tags_count":139,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helium%2Ferlang-hbbft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helium%2Ferlang-hbbft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helium%2Ferlang-hbbft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helium%2Ferlang-hbbft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helium","download_url":"https://codeload.github.com/helium/erlang-hbbft/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249035519,"owners_count":21202102,"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":["consensus-algorithm","erlang"],"created_at":"2024-08-03T01:01:02.098Z","updated_at":"2026-04-06T06:01:30.658Z","avatar_url":"https://github.com/helium.png","language":"Erlang","funding_links":[],"categories":["General Libraries"],"sub_categories":[],"readme":"erlang_hbbft\n=====\n\n[![Build Status](https://badge.buildkite.com/e794bf0f28123f75870633e8f4a9fda955cbe19e981d12a5d3.svg?branch=master)](https://buildkite.com/helium/hbbft)\n\nErlang implementation of HoneyBadgerBFT's protocols.\n\nThe HoneyBadgerBFT paper defines 5 protocols:\n\n* HoneyBadgerBFT - the top level protocol, runs a new instance of ACS each round\n* Asynchronous Common Subset (ACS) - uses RBC and BBA to agree on set of\n  encrypted 'bundles' of transactions\n* Reliable Broadcast (RBC) - uses erasure coding to disseminate an encrypted bundle\n* Binary Byzantine Agreement (BBA) - uses a common coin to agree that a majority\n  of nodes agree that a RBC completed\n* Common Coin - uses threshold signatures to allow nodes to construct a common\n  random value used as a 'coin flip' in BBA\n\nThe protocols are implemented in a somewhat unconventional way, they are\nimplemented as pure data structures that take inputs (messages) and (sometimes)\nreturn outputs or results. They have no notion themselves of networking, time or\nactor identity (actors are simply numbered 0..N-1).\n\nExternal code is expected to provide networking, serialization and a mapping\nfrom real actor identity (eg PKI public keys and signatures or IP addresses,\nwhatever) to a consistent index into the consensus group.\n\nThe sub protocols are embedded in their parent protocols and their messages get\n'wrapped' by their containing protocols (and un-wrapped upon ingest). This makes\ntesting them individually and composing them very easy.\n\nBuild\n-----\n\n    $ make\n\nTest\n-----\n\n    $ make test\n\n\nTypeCheck\n-----\n\n    $ make typecheck\n\n\nCoverage\n-----\n\n    $ make cover\n\nReferences\n-----\n\n* [Honey Badger of BFT Protocols](https://eprint.iacr.org/2016/199.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelium%2Ferlang-hbbft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelium%2Ferlang-hbbft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelium%2Ferlang-hbbft/lists"}