Ellariel / BlockchainEngineering

Blockchain Engineering

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Blockchain Engineering is a collection of jupyter notebooks to teach fundamentals of any blockchain system.

Rather than other blockchain courses we follow a different approach we build up blockchain from scratch from bottom to the top. The main focus of this notebook is to explain and visually show the "Distribtued systems thinking", and Blokchain architehct thinking in particular.

After this course you will get what is the problems you will solve? What issues you might encounter? Why is it so hard to design a good system?

The notebooks are build as experiments with a discrete simulation SimPy, this allows you to simulate unreliable communication, malicious behavior and convergence algorithms.


Current topics

  • Distributed systems. Overlays and communication network. Introduction to simulation framework
  • Gossip. Convergence of the transactions, information
  • Faults in distributed systems: crashes and disruptions
  • Malicious nodes, adversary model
  • Consensus and agreement despite malicious nodes

If you notice anything unexpected, or you are want more topics, please open an issue and let us know. If you like the project and want to help us, contributions are very welcome! Feel free to open a feature request. We are motivated to constantly make it better.


Getting started

  1. Clone the repository:
git clone  https://github.com/grimadas/BlockchainEngineering.git
  1. Install python >= 3.7. Alternatively you can also use conda.
  2. Install required dependecies
  • To enable some of the animations used install graphviz.

  • Install required python dependecies:

    pip install -r requirements.txt
  1. You can start the exercises by opening the notebooks via:
 jupyter lab

About

Blockchain Engineering


Languages

Language:Jupyter Notebook 59.4%Language:Python 40.6%