acs

package
v0.5.0-alpha.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Here we implement the Asynchronous Common Subset algorithm from the HBBFT paper:

> Miller, A., Xia, Y., Croman, K., Shi, E., and Song, D. (2016). The Honey Badger of > BFT Protocols. In Proceedings of the 2016 ACM SIGSAC Conference on Computer > and Communications Security, CCS ’16, page 31–42, New York, NY, USA. > Association for Computing Machinery.

The HBBFT paper presents the algorithm as follows:

> Let {RBC_i}_N refer to N instances of the reliable broadcast protocol, > where P_i is the sender of RBC_i. Let {BA_i}_N refer to N instances > of the binary byzantine agreement protocol. > • upon receiving input v_i, input v_i to RBC_i > • upon delivery of v_j from RBC_j, if input has not yet been > provided to BA_j, then provide input 1 to BA_j. > • upon delivery of value 1 from at least N − f instances of BA, > provide input 0 to each instance of BA that has not yet been > provided input. > • once all instances of BA have completed, let C ⊂ [1..N] be the > indexes of each BA that delivered 1. Wait for the output v_j for > each RBC_j such that j ∈ C. Finally output ∪_{j∈C} v_j.

TODO: Erasure coding in RBC.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ACS

type ACS interface {
	AsGPA() gpa.GPA
}

func New

func New(nodeIDs []gpa.NodeID, me gpa.NodeID, f int, ccCreateFun func(node gpa.NodeID, round int) gpa.GPA, log *logger.Logger) ACS

> Let {RBC_i}_N refer to N instances of the reliable broadcast protocol, > where P_i is the sender of RBC_i. Let {BA_i}_N refer to N instances > of the binary byzantine agreement protocol.

type Output

type Output struct {
	Values     map[gpa.NodeID][]byte
	Terminated bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL