Building with HashGraph Part 1: Introduction

A diagram illustrating a gossip based protocol. Each node represents a gossip event being sent/received.

How HashGraph works

  • Option 1: read through the HashGraph paper to get a deeper understanding of how HashGraph works. The science behind this is super interesting and the paper is very accessible too so if you are scientifically inclined I can highly recommend this.
  • Option 2: take my word that this is a viable approach to consensus and just use the term ‘gossip about gossip’ to impress your friends. If you’re not scientifically inclined then this is a perfectly acceptable approach and isn’t going to stop you understanding the rest of these blogs. It’s arguably more important to understand the properties of the HashGraph than to understand the way it achieves these properties.

Properties of the HashGraph

Performance

  • Mining — In Bitcoin, each node needs to be capable of performing many redundant computations to try to win the ‘Proof of Work’ lottery. This wastes a huge amount of energy which is both bad for the environment and also means most nodes are high performance, expensive mining rigs. HashGraph doesn’t use this process and this means that nodes can be any sort of cheap, readily available hardware like a phone, laptop or RaspberryPi.
  • Pruning — The HashGraph is also more efficient than Bitcoin in that no transaction is ever discarded. Earlier I mentioned how Bitcoin occasionally has to choose between two different blocks which are mined at the same time. This means all the computational work that was used to put together the unused block is discarded. HashGraph uses a voting scheme that means if transactions collide, they will be ordered by consensus but not discarded. This means less work is wasted!
  • Network — In any consensus scheme, there is a lower bound on the amount of bandwidth required which is limited by the fact that all transactions need to be broadcast. HashGraph only adds a very small amount of bandwidth on top of this limit because the HashGraph data structure which is transmitted has a size which is only slightly greater than the size of all the transactions. I.e. bandwidth is not wasted on large data structures or sequences of votes.

Security

  • HashGraph uses cryptography to ensure that transactions are secure and can be validated by other participating nodes.
  • HashGraph also guarantees Asynchronous Byzantine Fault Tolerance — don’t worry I know it’s a scary term. This basically means that so long as 2/3 of the network are legitimate, then colluding adversaries will never be able to stop or alter the final consensus reached. This is pretty much a gold standard for distributed systems.

Fairness

  • Fairness refers to time-stamping and assigning a consensus order to transactions. The timestamps which transactions are assigned (after they are agreed upon by consensus) reflects the median time that nodes received the transaction. This means that if one adversarial node delays the receiving of a transaction by a really long time, it will barely effect the consensus time stamp. Therefore, transactions will be assigned fair timestamps and fair ordering.
  • Fairness also refers to how transactions can’t be prevented from entering the system by any adversarial node. This is because if a node gossips to an adversary that doesn’t pass on information about some transactions, this wont matter. This is because the node will soon after gossip to a genuine node due to the random nature of gossip, and then the information will be passed on.

Summary

--

--

We are a student-run technology society, promoting a culture of creators and innovators by organising workshops and events for any student who wants to take part. This blog is a platform to spread the thoughts, opinions and projects of the tech-enthusiasts who write for it.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Charlie Crisp

I’m a Software Engineer working in Modelling and Simulation. I’m interested in performance, networking and distributed systems — www.charliecrisp.com