Welcome to Enterprise Blockchain Technologies, a flexible, extensible, open-source course 🎓
This course aims at providing a reliable basis for university students to get started in enterprise blockchain.
This course contains the practical part of a university course on enterprise blockchain technologies. Typically, a university course is divided into theory and laboratory classes. The theory explains the theoretical foundations behind what is learned in the laboratories.
✅ Understand the theory on blockchain: what is it (Lab 1, Lab2), and which problems it can solve (Lab 3)
✅ Get to know Hyperledger Fabric's components in detail, such as architecture and transactional model (Lab 4), chaincode (Lab 5), network, and how to develop an enterprise full-stack blockchain decentralized application (Lab 6)
✅ Leverage Hyperledger Umbra to study advanced topics on Fabric (Lab 7, Lab 8)
The course is divided into two modules:
Each laboratory is assumed to take 1.5h, supported by a teaching assistant. All laboratories assume 3h of theory classes. Thus, this course could be organized as a 7.5 ECTS university course.
For example:
For universities using semesters, a course on enterprise technologies uses 2 modules (4.5 weekly hours for \~ 5 months).
This course is flexible because you can pick the laboratories you wish to complete across modules. Currently, this course supports Hyperledger Fabric and Hyperledger Umbra but can be easily extended by adding modules.
Module | Lab Number | Topic | Contents | Support files | Public Mirror |
---|---|---|---|---|---|
I | Lab 01 | Fundamentals on Distributed Systems | ➡️ Introduction to distributed systems ➡️Introduction on state machine replication ➡️Introduction to consensus ➡️RAFT algorithm |
Guide Instructor's Guide |
|
I | Lab 02 | Fundamentals on Cryptography and Security | ➡️Background on Cryptography: symmetric and asymmetric cryptography, and digital signatures ➡️Background on Security: authentication, authorization, accountability ➡️RSA algorithm |
RSA implementation | Guide Instructor's Guide |
I | Lab 03 | A Primer on Blockchain | ➡️Introduction to blockchain ➡️Public vs private blockchains |
Blockchain4Students | Guide Instructor's Guide |
I | Lab 04 | Introduction to Hyperledger Fabric | ➡️The Hyperledger Ecosystem ➡️A Technical Viewpoint on Fabric ➡️A Use Case for Education: Blockchain4Students QUC |
Guide Instructor's Guide |
|
II | Lab 05 | Hyperledger Fabric: Infrastructure and Chaincode | ➡️ The B4S QUC System ➡️ Smart Contracts & Chaincode ➡️ Setting up B4S |
Blockchain4Students Fabric Version | Guide Instructor's Guide |
II | Lab 06 | Hyperledger Fabric: Full-stack dApp | ➡️Blockchain Network ➡️B4S Web App 6 User interface |
Blockchain4Students Fabric Version + Blockchain Client | Guide Instructor's Guide |
II | Lab 07 | Hyperledger Umbra: Introduction | ➡️Introduction to Hyperledger Umbra ➡️Simple scenario setting |
Support Code | Guide Instructor's Guide |
II | Lab 08 | TBD | TBD | Support Code | Guide Instructor's Guide |
MODULE C | LAB X | CLASS ON Y | CONTENTS Z | SUPPORT MATERIALS W | Guides |
docs
- contains rendered labs
source
- contains the LaTeX sources for the labs and theory classes.
support
- contains the support files for the labs.
To participate in the course, do the following:
Fork this repository via Github UI.
Clone the repository to your machine: git clone https://github.com/YOUR_USERNAME/university-course
Access the guides (Guide and Instructor's Guide) either by:
Do the lab. In case of doubts, open an issue at the official repository with the label "lab-question." In case of bugs, open an issue with the "bug" label.
The solutions are in the Instructors Guide file, available via step 3.
Share with your colleagues and provide feedback!
To teach this course, do the following steps:
Fork this repository via Github UI.
Clone the repository to your machine: git clone https://github.com/YOUR_USERNAME/university-course
Access the guides (Guide and Instructor's Guide):
You can also leverage the support files for your students to experiment. In case of doubts, open an issue at the official repository with the label "lab-question". In case of bugs, open an issue with the "bug."
Share with your students and provide feedback!
This course is not a finished product and needs contributions. Your contributions are very welcome! 🎉🎉
Note that contributions are not only code! There are a lot of tasks to build a successful open-source course for everyone. Generally, look for issues tagged with help-wanted. You can help to improve this project in the following ways:
Extend the course to other enterprise blockchain technologies. This can be done by adding a new Module. Since this course is modular, people, universities, and other learning institutions can build a customized course using various modules. Examples: Corda, Hyperledger Besu, Hyperledger Cactus, Hyperledger Sawtooth, Hyperledger Iroha, Cosmos, Polkadot, DAML.
Visually teach this course (e.g., YouTube tutorials, crash courses, Posters, flyers). You can use these materials for that!
Complete the current laboratories, as some labs are not 100% finalized. Some improvement options are present on the issues page.
Help improve the design of the lab guides.
Maintaining and disseminating this project. Contributions to disseminate and manage this project are welcome. Please contact Rafael Belchior <rafael.belchior (at) tecnico (dot) ulisboa (dot) pt>.
Contribute with technical expertise in the form of small articles, such as this introduction to the Libra Blockchain or this 2020 review on blockchain interoperability. Such articles can be added to a special module, in which students read and discuss them.
Add theory (slides, presentations, small videos) that can be used to complement the labs.
To contribute code, documentation, and others, please check the contributing guide.
Legend:
Focus: Public Blockchains / Private Blockchains / Both
Mainteiner | Github | Rocket Chat | |
---|---|---|---|
Rafael Belchior | rafaelapb | rafaelapb | rafael.belchior@tecnico.ulisboa.pt |
This project is part of Hyperledger Labs and Hyperledger Summer Internships.
This project is idealized and greatly supported by: