Categories: General Information
What is Virtual Voting? Unraveling the Key Aspect of Hashgraph Consensus
One of the essential things that make Hashgraph can become a trusted community - even when members do not necessarily trust each other - is its consensus based on the Virtual Voting protocol. This blog by Unicorn Ultra will explain what virtual voting is and the advantages surrounding this unique protocol.
Since the story called Trilemma has made Blockchain developers impatient, more and more topics are talking about Hashgraph as a potential alternative. The Hashgraph consensus algorithm enables distributed consensus in an innovative, efficient way. Thanks to Virtual Voting, a process to achieve consensus by leveraging the timestamps and "gossip about gossip" to order events and determine the majority opinion in the network.
Table of Contents
What is Virtual Voting?
Virtual voting is an integral part of the Hashgraph consensus algorithm. It allows nodes to know what others would vote for without needing actual votes sent over the internet. This is accomplished by examining the history of gossip (who/server spoke to whom/server and in what order) to determine how a node would vote based on the information it is likely to have.
Some pure voting approaches - with most Byzantine fault tolerance protocols without a leader - require agreeing on a linear ordering of the events and the transactions recorded inside each event. Some depend on members sending each other votes, and others require receipts of votes sent to everyone. And these may require multiple rounds of voting, which further increases the number of voting messages sent.
That above process, thus, becomes bandwidth restriction and impractical in a network of any significant size but has the properties of being the fairest and most secure method of reaching consensus. With Virtual voting, the Hashgraph consensus algorithm implements voting that achieves the same fair and secure properties but is also very fast and practical. Votes are calculated locally as a function of the ancestors of a given event.
The Process of Virtual Voting
Gossip about gossip
To understand the practicality of Virtual Voting, it is necessary to understand the concept of a related protocol (belonging to Hashgraph) as "gossip about gossip."
Literally, this means that a member, such as A, will choose another member at random, such as B, and then A will tell B all of the information A knows so far. A then repeats with a different random member. B repeatedly does the same, and all other members do the same. In this way, if a single member becomes aware of new information, it will spread exponentially fast through the community until every member is aware of it.
The history of how these events are related to each other through their parent hashes is called gossip about gossip. This history expresses itself as a directed acyclic graph (DAG), a graph of hashes, or a hashgraph. The Hashgraph records the history of how members communicate. It grows directionally over time as more gossip syncs occur and events are created. All members keep a local copy of the hashgraph, which continues to update as members sync with one another.
These Hashgraphs may be slightly different at any moment, but they will always be consistent. Consistent means that if A and B both contain event x, then they will both contain exactly the same set of ancestors for x and will both contain exactly the same set of edges between those ancestors.
Virtual voting process
This virtual voting has several benefits. In addition to saving bandwidth, it ensures that members always calculate their votes according to the rules. If A is honest, A will calculate virtual votes for the virtual B that are honest. Even if the real B is a cheater, B cannot attack A by incorrectly making the virtual B vote.
With this virtual voting algorithm, Byzantine agreement is guaranteed.
Virtual voting happens in 3 steps:
- Divide Rounds
- Decide Fame
- Find Order
To begin the virtual voting process, first need to define rounds and witnesses. In the Hashgraph history, the first event for a member's node is that node's first witness. So it is the beginning of that node's first round (r).
All subsequent events are part of (r) until a new witness is discovered - when a node creates a new event that can strongly see 70% of the witnesses in the current round. Example: Event w can clearly see event x when w can trace its ancestry through parent relationships that pass through other events that reside on at least 70% of the member nodes.
When an event is determined to clearly see 70% of the witness of the current round, that event is considered the next witness for that node. That new witness is that node's first event in the next round (r+1). Each event is assigned a round as the event is added to the Hashgraph.
The next step is deciding whether a witness is a famous witness or not. A famous witness if many of the witnesses in the next round can see it, and vice versa. Event W can see Event X if Event X is an ancestor of Event W. When deciding the fame of Witness X, we must look at the witnesses of the following round. If the witnesses of the subsequent round can see Witness X, they count as a vote in favor of Witness X's fame.
For Witness X to be considered famous, a future witness must be able to strongly see that at least 70% of voting witnesses have voted in favor of being famous. If 70% of voting witnesses voted that Witness X is not famous, then Witness X will not be recognized.
Now that we have calculated all witnesses of a round to be famous or not famous, we can determine the order of events that occurred before the famous witness events. This is done by calculating:
- The round received for all events that have yet to be ordered and occurred before a round where the fame of all witnesses has been decided. The event's round received is the first round where all famous witnesses of that round can see (or are descendants of) the event in question.
- The timestamp for each event. This is done by gathering the earliest ancestors of the famous witnesses of the round received that are also descendants of the event in question and taking the median timestamp of those gathered events.
- The ordering of events first by: round received, consensus timestamp, then signature.
Although the interpretation looks complicated and lengthy, in reality, the Virtual Voting process takes place quickly to ensure the most impressive performance efficiency.
Operations in the network are thus smooth and seamless, with the proven Hashgraph consensus algorithm capable of handling up to 10,000 TPS. This will construct a robust platform for builders to develop products that serve for decentralized and digital asset economic future and solve the chronic questions about blockchain trilemma.
With this article, Unicorn Ultra hopes to help you understand what is Virtual Voting and Virtual Voting Process.