Skip to content

anoma/thyhbb-prototype

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ThyHBB

An actor-based prototype of the three Heterogeneous Bracha Broadcasting algorithms as designed by Jamie Gabbay Murdoch and Isaac Sheff

In a nutshell the three algorithms differ as follows

ThyHBB1: allows multiple proposals; participants vote only when the learner is safe (all quorum intersections have a sequential participant) ThyHBB2: single-proposal only; no safety requirement on votes ThyHBB3: single-proposal; adds a correlation relation between learners- correlated learners can justify votes for each other; learners deliver only for themselves. The Three-twined assumption guarantees that correlation can be compared meaningfully.

The history is a hereditarily-transitive set of {place, maybe-event, time (history when the event happened)} tuples. This data structure permits us to cryptographically bind 'what node knew what at what time' for verification and provenance and remove coordination requirements.

Running

iex -S mix to start a REPL, then run the examples directly.

mix test to run the tests.

Implementation Details

Events

Events are propagated via the event broker (https://github.com/anoma/event-broker)

Quorum Sets = A notification that a learner has a given set of quorums

Proposal = Initiation of a proposal of a value

History = A notification that a history has been updated and should be validated and ingested by other actors

Delivery = outcome of the ThyHBB protocol

Actors

An Actor in ThyHBB is an actor that composes and implements the below protocols. It uses them to validate whether it can merge in the history of other actors, or advance the history on its own terms, using its own rules, until it reaches a monotonic fixpoint. All actors also can broadcast learner quorum sets. A key registry exists alongside actors, as each actor provides and verifies asymmetric message signatures using the ed25519 algorithm.

Participant

A participant can:

  • Handle proposals

  • Handle echoes

  • Generate echo events

  • Generate vote events

It provides these rules for advancing history.

Learner

A learner can:

  • Handle votes

  • Generate delivery events

It provides these rules for advancing history.

Validity

The validity protocol implements the rules for determining whether a given history is valid. This means it differs between ThyHBB1-3.

Topology

A topology is a network of actors that describes the various protocols they ought to implement, along with learner quorums. This repository provides helpers in order to configure and initialise these networks. Each topology has a unique ID that prevents events from leaking.

About

A prototype for ThyHBB (Theory of Heterogeneous Bracha Broadcasting)

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages