jghms / thesis

Repository for master thesis
0 stars 0 forks source link

Checo #2

Closed jghms closed 6 years ago

jghms commented 6 years ago

A blockchain system with horizontally scalable consensus on checkpoints. Checo builds on the multi-chain data structure with each node having it's own hashchain with their own transactions. It implements three protocols: the transaction, consensus and validation protocol.

jghms commented 6 years ago

Three components - consensus protocol, transaction protocol, validation protocol

Consensus protocol Is run on randomly elected nodes, called the facilitators, which collect checkpoint blocks from all other nodes, which are the input to the consensus algorithm. With the result of the consensus all nodes on the network are allowed to create new checkpoint nodes.

The consensus protocol does not validate any of the transactions. It only creates checkpoint blocks which have been accepted

Transaction protocol Transactions between nodes are communicated with a simple request, response protocol. Both nodes create a new TX block on their respective chains.

Validation protocol When a nodes wishes to validate a transaction it gets the part of the chain between two checkpoints which contains the transaction block on the chain of the other transaction party. The node then checks whether the checkpoint blocks are actually in some consensus result. Nodes have to validate their own transactions by initiating the validation protocol.

Transaction and validation protocol only make point-to-point transactions which enables horizontal scalability. This has not yet been put into a working system.

jghms commented 6 years ago

Consensus is reached only on the checkpoints, not on all transactions like in other blockchain systems. This makes the chain scalable but means that transactions are not automatically validated. The validation is left to the user. However the consensus makes it possible for each user to validate every transaction by finding the fragment, piece of chain between checkpoints, in which the transaction block is placed.