Git Product home page Git Product logo

blockchainengineering's Introduction


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

As opposed to other blockchain courses we follow a different approach - we build the blockchain up from scratch, starting from bottom to the top. The main focus of this notebook is to explain and visually show how to understand distributed systems and think like a blockchain architect.

At the end of this course you will have a better understanding of the challenges faced while designing a blockchain system and how to overcome them.

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

Start the exercises by forking the repo and go through the notebooks one by one.


Topics covered

  • 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 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/Fork 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 from your cloned directory:
 jupyter lab

blockchainengineering's People

Contributors

dependabot[bot] avatar grimadas avatar lebdron avatar satwikprabhu avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.