Hashgraph-Database

command module
v0.0.0-...-52418b4 Latest Latest
Warning

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

Go to latest
Published: May 7, 2017 License: MIT Imports: 16 Imported by: 0

README

Distributed Fault-Tolerant Data Structure

A distributed database runnning on a Hashgraph network with the Swirlds© consensus algorithm.

What is this and what are it's advantages?

Distributed unpermissioned system such as Blockchain require a proof-of-work to prevent malicious nodes from disrupting the natural flow of the Blockchain.

A proof of work is a piece of data which is difficult (costly, time-consuming) to produce but easy for others to verify and which satisfies certain requirements.

This system negates the need for proof-of-work but keeps all the benefits and also introduces the concept of Fairness and Byzantine fault tolerance.

What's a Hashgraph?

A Hashgraph is a data structure that records who gossiped to whom, and in what order. Gossping; in this context is where one node selects another node at random and they both synchronize their Hashgraphs with each other.

hashgraph

What's a Consensus Algorithm?

For the system to work, every node must have the same exact copy of the Hashgraph this is acheived through the use of a Consensus Algorithm. Traditionally this would involve each node voting or a central server that would monitor each node. The Swirlds© consensus algorithm enables virtual voting.

Each node knows what every other node knows and will know how each node will vote.

Installing

This project uses Golang. Golang was chosen for it's high-performance and it's ease of parallelization.

This project was written and tested on Go 1.8

Author

This project was undertaken as part of my 4th year of Computing with Software Development

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

  • Peter Given - FYP Supervisor
  • Swirlds© - Consensus Algorithm

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

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