-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clear up confusion by introducing definitions in hbbft #347
Comments
My remaining two gripes with this are that "faulty node" is no longer a meaningful term and "faulty participant" does not have the same ring to it. |
I think this is a step in the right direction. I really like the 'Auditor' term. I think we should probably continue to call a 'Participant' a 'Validator' though, in the interest of minimal disruption. You could then rename the DHB-Validator to 'Incumbent' (a term to be used in documentation, etc., not a type rename in code). |
I like these definitions. But I still have a few points for discussion. Please feel free to disagree. There are a few things that catch the attention in your scheme of definitions. Do you view a participant as a node in a distributed algorithm? I'm inclined to keep the term node since it is used in papers that define distributed algorithms we implemented. Renaming nodes as "participants" contradicts the established terminology. Maybe call them "algorithm nodes" in general? Possibly noting that we call those just "nodes" for short? Renaming nodes as "participants" runs outside the established terminology. I'd rather come up with a new name for constructs that we added to the theoretical algorithms to allow them to change their run-time parameters, at the level of algorithms. I'd say that instead we need a term to call peers in the sender queue. If "nodes" is taken by the algorithms then maybe "members"? |
Thanks for initiating - it helps clarify a lot! I can include as a glossary in the docs/wiki. Wondering if this simplification makes sense? Any algorithm network runs on top of a transport network. Nodes in the algorithm network can either be active or passive. Active Nodes: Nodes in the network actively running an algorithm. They send and receive messages.
Passive Nodes: Observer nodes that receive messages but have no influence on network functionality.
I’m not a huge fan of auditor because it suggests participation (and taxes) to me. Does witness, watcher, or listener do anything for you (or possibly defining observer terminology at the algorithm layer and using another term at the transport layer)? I can live with auditor but will need to adjust my attitude accordingly.. I believe Validators would be the same in this case for both HB and DHB - is that true? Not sure if Incumbent nodes need to be identified for testing or some other purpose? |
Also note the usage of the words "staker", "validator" and "observer" in the new contracts. |
This is the current nomenclature in the new contracts:
|
Here's the latest discussion result (missing some context from the video): TransportTransport Network -> Network Consensus ProtocolDistAlgorithm -> ConsensusProtocol Optional: Validator -> Member of a committee "Layer 3"Honey Badger: Broadcast: Dynmic Honey Badger: |
Thanks Marc, I appreciate the bottom up approach. If we keep |
Regarding quorum, it's not not the size, but the portion of the size that matters? @afck: Can you comment on quorum and usage/occurence frequency? I am not 100% set on the definition though, because it's more common to state that |
I don't think we should define "quorum" at all; it's not an I guess in our code, a quorum is often f + 1, but sometimes also N - f or 2 f + 1. |
The issue I have with "majority" is that cases like f + 1 often are not a majority =). Threshold is better, but do we run into confusion because it's closely associated with |
I'd say threshold cryptography is just one example of an algorithm that involves a threshold? I don't consider it a different meaning that would introduce ambiguity here. |
I hope this will be the final version then: DefinitionsNetwork LayerThe transport layer routes messages sent by nodes. Every transport network message has a destination, which is either a single node ID or
Consensus Protocol LayerA consensus protocol is a distributed algorithm that runs on top of a network.
Algorithm-specific layerThe third layer is different for every algorithm and may introduce new terms. Lower-layer terms should be reused though, to reduce vocabulary inflation. Some examples: Honey Badger, Dynamic Honey Badger
Broadcast
Optional termsOptional terms are not necessary to describe things, but are in common use:
Changes to be made:
|
There has been a bit of confusion between observers, nodes, validators and some other terminology, especially since it is not 100% clearly defined. Our main issues occur on the boundary between algorithms and network transport, also the "abuse" of the term "observer" has been an issue.
This is an attempt to define these terms clearly. Any suggestions/improvements are welcome, also we need a place to stick these (ideally, the hbbft docs?).
Finally, these should be checked for compatibility with other PoA projects.
(see end for up-to-date version)
## Transport layerThe transport layer routes messages sent by nodes. Every transport network message has a destination, which is either a single node ID orAll
. Messages destined toAll
are sent to any known node by the sender, this resolution happens at the latest possible time when the message is sent.* Node: Any instance of the program running, capable of receiving and sending messages. Every node is known to the transport network by an ID. Nodes may send and receive messages.* Peer: A node in the transport network that is not the current one.* Observer: A node that never sends messages. For this reason, it never influences the network (and is technically "invisible" to upper algorithm layers), but affects performance.* Transport network: An fully interconnected network of nodes.## Algorithm layer:Any algorithm network runs on top of a transport network.* Participant: A node that actively runs an algorithm. It sends and receives messages.* Auditor: An observer that runs an instance of an algorithm passively, e.g. to verify its output. It has no influence on the network.* Network: A complete graph of participants connected through a transport network.* Network size: A network's number of participants.* Faulty participant: A malicious or malfunctioning ("byzantine") participant.## Specific to DHBEvery node ever actively involved in DHB is a participant. However, any participant can be in one of two states:* Candidate: A participant seeking to be included in a future set of validators.* Validator: An "incumbent", active validator that actively signs blocks.The network sizes of DHB must not be confused with the network size of a contained Honey Badger instance inside DHB, as the size of DHB includes candidates.The text was updated successfully, but these errors were encountered: