• This repository has been archived on 06/Mar/2023
  • Stars
    star
    179
  • Rank 213,957 (Top 5 %)
  • Language
    TeX
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Hyperledger Lab focused developing materials for a university course.

Enterprise Blockchain Technologies

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.

At the end of this course, you will:

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)

Course Organization

The course is divided into two modules:

  • Module I introduces enterprise blockchain (labs 1-4)
  • Module II focuses on Hyperledger Fabric (labs 5-8).

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:

  • Universities using trimesters, a course on enterprise technologies uses 1 module (4.5 weekly hours for ~ 3 months).

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.

Table of Contents

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

Folder organization

docs - contains rendered labs

source - contains the LaTeX sources for the labs and theory classes.

support - contains the support files for the labs.

I want to attend this course

To participate in the course, do the following:

  1. Fork this repository via Github UI.

  2. Clone the repository to your machine: git clone https://github.com/YOUR_USERNAME/university-course

  3. Access the guides (Guide and Instructor's Guide) either by:

    1. Public Mirrors (see the table of contents)
    2. Compile them at Overleaf or using a local LaTeX distribution. Create a .zip for the lab you want to attend. Upload that .zip to Overleaf following these instructions.
    3. Release files (contain compiled PDFs)
  4. 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.

  5. The solutions are in the Instructors Guide file, available via step 3.

  6. Share with your colleagues and provide feedback!

I want to teach this course

To teach this course, do the following steps:

  1. Fork this repository via Github UI.

  2. Clone the repository to your machine: git clone https://github.com/YOUR_USERNAME/university-course

  3. Access the guides (Guide and Instructor's Guide):

    1. Using Overleaf. Create a .zip for the lab you want to attend. Upload that .zip to Overleaf following these instructions.
    2. Change the guides as needed (e.g., university logo, course's name, dates, etc.).
    3. Compile and download.
  4. 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."

  5. Share with your students and provide feedback!

I want to create my own materials and contribute to this course

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:

  1. 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.

  2. Visually teach this course (e.g., YouTube tutorials, crash courses, Posters, flyers). You can use these materials for that!

  3. Complete the current laboratories, as some labs are not 100% finalized. Some improvement options are present on the issues page.

  4. Help improve the design of the lab guides.

  5. 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>.

  6. 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.

  7. 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.

List of contributors

  • Rafael Belchior <rafael.belchior (at) tecnico (dot) ulisboa (dot) pt>
  • Catarina Pedreira <catarina.pedreira (at) tecnico (dot) ulisboa (dot) pt>
  • Iulia Mihaiu <iulia.mihaiu (at) student (dot) unitbv (dot) ro>
  • Rafael Soares <joao.rafael.pinto.soares (at) tecnico (dot) ulisboa (dot) pt>
  • Raphael Rosa (Raphaelvrosa) via the Hyperledger Umbra project
  • banoris via the Hyperledger Umbra project

A list of university-level blockchain courses:

Focus Course Name University Country
Private Enterprise Blockchain Technologies Técnico Lisboa* Portugal 🇵🇹
Public CS 481A3 BLOCKCHAIN PRINCIPLES AND APPLICATIONS Colorado State University USA 🇺🇸
Public Blockchain-based Systems Engineering Technical University of Munich Germany 🇩🇪
Public Blockchain-based Systems Engineering
BLOCKCHAIN AND CRYPTOCURRENCIES Alma Mater Studiorum - Università di Bologna Italy IT
Web3MOOC: Web3 Foundation’s “Blockchain for Beginners” Web3 Foundation Switzerland
Private Hyperledger Besu Essentials: Creating a Private Blockchain Network LinuxFoundationX USA
Blockchain-based Systems Engineering Technical University of Munich Germany
Blockchain Developer Online Bootcamp 2021 with Certification ConsenSys Academy
PG Diploma in Blockchain Technology MIT, University India
MIPT Blockchain Master’s Program Moscow Institute of Physics and Technology Russia
Solidity, Blockchain, and Smart Contract Course – Beginner to Expert Python Tutorial freeCodeCamp.org
Cryptocourse Slovak University of Technology in Bratislava Slovakia
Cryptocurrency Class 2019 King's College London England
Blockchain Courses
Web3 Courses Web3

Legend:

Focus: Public Blockchains / Private Blockchains / Both

Maintainers

Mainteiner Github Rocket Chat Email
Rafael Belchior rafaelapb rafaelapb [email protected]

Acknowledgements

This project is part of Hyperledger Labs and Hyperledger Summer Internships.

This project is idealized and greatly supported by:

  • David Huseby - <dhuseby (at) linuxfoundation (dot) org>

More Repositories

1

blockchain-explorer

JavaScript
1,394
star
2

Scorex

Scorex 2.0 Core
Scala
545
star
3

minifabric

Do fabric network the right and easy way.
Jinja
299
star
4

blockchain-carbon-accounting

This project implements blockchain applications for climate action and accounting, including emissions calculations, carbon trading, and validation of climate claims. It is part of the Linux Foundation's Hyperledger Climate Action and Accounting SIG.
TypeScript
181
star
5

fablo

Fablo is a simple tool to generate the Hyperledger Fabric blockchain network and run it on Docker. It supports RAFT and solo consensus protocols, multiple organizations and channels, chaincode installation and upgrade.
Shell
179
star
6

mirbft

MirBFT is a consensus library implementing the Mir consensus protocol.
Go
157
star
7

convector

Smart Contract Systems the easy way. Open source development framework.
TypeScript
145
star
8

yui-ibc-solidity

IBC in Solidity
Solidity
132
star
9

private-data-objects

The Private Data Objects lab provides technology for confidentiality-preserving, off-chain smart contracts.
C++
112
star
10

fabric-operations-console

A UI for managing Fabric peers, orderers, and CAs
JavaScript
103
star
11

hyperledger-labs.github.io

Hyperledger Labs
100
star
12

SmartBFT

Implementation of the SmartBFT consensus library (https://arxiv.org/abs/2107.06922)
Go
88
star
13

fabric-token-sdk

The Fabric Token SDK is a set of API and services that lets developers create token-based distributed application on Hyperledger Fabric.
Go
80
star
14

microfab

Microfab is a containerized Hyperledger Fabric runtime for use in development environments
Go
73
star
15

fabric-docs-cn

This lab has graduated to the overall Fabric project.
71
star
16

TrustID

Decentralized Identity solution compatible with different Hyperledger platforms.
TypeScript
67
star
17

open-enterprise-agent

Open Enterprise Cloud Agent
Scala
62
star
18

minbft

Implementation of MinBFT consensus protocol.
Go
60
star
19

fabric-operator

Hyperledger Fabric Kubernetes Operator
Go
57
star
20

business-partner-agent

The Business Partner Agent is a SSI wallet and controller based on aries cloud agent python.
Java
55
star
21

weaver-dlt-interoperability

A platform, a protocol suite, and a set of tools, to enable interoperation for data sharing and asset movements between independent networks built on heterogeneous blockchain, or more generally, distributed ledger, technologies, in a manner that preserves the core blockchain tenets of decentralization and security.
Go
52
star
22

fabric-smart-client

The Fabric Smart Client is a new Fabric Client that lets you focus on the business processes and simplifies the development of Fabric-based distributed application.
Go
51
star
23

go-perun

🌔 Perun's Blockchain-Agnostic State Channels Framework in Go.
Go
47
star
24

hyperledger-fabric-based-access-control

A Hyperledger Fabric Based Access Control system to mediate access control flow from centralized applications.
HTML
41
star
25

nephos

Python library and Helm charts for deployment of Hyperledger Fabric to Kubernetes.
Python
37
star
26

nft-auction

NFT Auction application lets user to create NFTs and auction them off to other users in a marketplace model using Hyperledger Fabric
JavaScript
37
star
27

yui-fabric-ibc

IBC implementation in Hyperledger Fabric
Go
34
star
28

eThaler

Model a sample CBDC in TTF and implement in Besu
Java
34
star
29

cc-tools

The cc-tools package provides a relational-like framework for programming Hyperledger Fabric chaincodes.
Go
33
star
30

cordentity

The Cordentity app integrates Indy capabilities into the Corda platform.
Kotlin
32
star
31

yui-relayer

IBC Relayer implementations for heterogeneous blockchains
Go
32
star
32

orion-server

Go
30
star
33

yui-docs

Solidity
29
star
34

fabex

Block explorer for Hyperledger Fabric
Go
28
star
35

fabric-chaincode-wasm

Hyperledger Fabric Chaincode using WebAssembly
Go
28
star
36

fabric-chrome-extension

Hyperledger Fabric Chrome Extension
JavaScript
28
star
37

fabric-builder-k8s

Kubernetes chaincode builder for Hyperledger Fabric
Go
27
star
38

pubsub-interop

A blockchain interoperability solution for permissioned blockchain networks based on a publish/subscribe pattern.
HTML
26
star
39

cc-tools-demo

Basic example of how to use cc-tools to easily program a Hyperledger Fabric chaincode.
Shell
25
star
40

zeto

Privacy-preserving implementations of fungible and non-fungible tokens, using UTXO as the underlying transaction model
Solidity
24
star
41

fabric-opssc

Operations Smart Contract (OpsSC) for Hyperledger Fabric v2.x
Go
23
star
42

blockchain-analyzer

Analyze ledger data stored within a Hyperledger Fabric peer (key updates and operational data such as number of blocks and transactions).
Go
23
star
43

fabric-chaincode-haskell

Haskell support for smart contracts in Hyperledger Fabric
Haskell
23
star
44

pluggable-hcs

Go
20
star
45

yui-corda-ibc

IBC implementation in Corda
Kotlin
20
star
46

sawtooth-healthcare

This project focuses on interaction between Insurer, Insured Person (Patient), and Medical Facility
Python
20
star
47

harmonia

Regulated Network Interoperability
Java
20
star
48

acapy-java-client

Aries Cloud Agent Python Java Client Library
Java
18
star
49

agora-glass_pumpkin

agora-glass_pumpkin
Rust
18
star
50

perun-node

State channel node of the blockchain-agnostic state channels framework Perun.
Go
18
star
51

umbra

This lab is to make running Hyperledger distributed ledgers under the Mininet platform.
Python
18
star
52

fabric-debugger

A Hyperledger Fabric chaincode debugging plugin for VS code.
JavaScript
18
star
53

blockchain-verifier

bcverifier: Blockchain verification tool
TypeScript
16
star
54

fabric-machine

Xilinx Blockchain Machine for Hyperledger Fabric.
Go
14
star
55

crypto-lib

A lab for experimentation on creating shared cryptography modules for cross-project collaboration
Rust
14
star
56

aifaq

AI FAQ Proof-of-Concept project: it provides a chatbot that replies to the questions on Hyperledger Ecosystem
Jupyter Notebook
14
star
57

z-mix

z-mix will offer a generic way to create Zero-Knowledge proofs, proving statements about multiple cryptographic building blocks, containing signatures, commitments, and verifiable encryption.
Rust
14
star
58

private-transaction-families

Provides a mechanism for privacy over Hyperledger Sawtooth by enforcing a policy of access control to the ledger.
C
13
star
59

cckit

Programming toolkit for developing and testing Hyperledger Fabric applications, started as https://github.com/s7techlab/cckit
Go
13
star
60

agora-unknown_order

agora-unknown_order
Rust
12
star
61

hlf-connector

Integrate with Hyperledger Fabric using REST and Kafka with Block and Chaincode Event emitter.
Java
12
star
62

SParts

The Software Parts (SParts) lab delivers a Sawtooth-based ledger that provides both accountability and access to the open source components used in the construction of a software part. A software part is any software component (e.g., library, application, container or an entire operating system runtime) that is comprised of between 0% and 100% open source.
Go
12
star
63

fabric-block-archiving

Go
11
star
64

fabric-multi-channel-network-samples

This lab provides samples for multi channel network using Hyperledger Fabric.
Shell
11
star
65

keyhole-fabric-api-gateway

Client Access to Hyperledger Fabric Blockchain Network through Restful API's
JavaScript
11
star
66

PerformanceSandBox

Sandbox for Hyperledger Projects Performance research usage
Shell
11
star
67

orion-sdk-go

Go
10
star
68

cardea-mobile-agent

JavaScript
9
star
69

bdls-lab

BDLS
Go
9
star
70

perun-eth-contracts

🌔 Perun's Ethereum State Channel Contracts
TypeScript
9
star
71

hyperledger-community-management-tools

Tools used to manage and evaluate the Hyperledger Community
JavaScript
9
star
72

solidity2chaincode

This tool converts Solidity contract into Javascript chaincode through source-to-source translation for running them onto Hyperledger Fabric.
JavaScript
9
star
73

solang-vscode

A VSCode plugin for a Solidity to WASM compiler written in Rust
Rust
8
star
74

learning-tokens

Uses the composable Interwork Alliance Token Taxonomy Framework (IWA TTF) to produce a Learning Token
TypeScript
8
star
75

perun-doc

Blockchain-agnostic state channels framework
Python
8
star
76

cardea

8
star
77

modern-pharmacy-management

This Lab will focus on leveraging blockchain to transform and modernize prescriptions management by enabling flexibility and managing fraud
Shell
8
star
78

fabric-ansible-collection

Ansible collection for building Hyperledger Fabric networks
Python
8
star
79

chaincode-analyzer

Go
8
star
80

karma-charity-platform

Blockchain-based charity foundation platform
TypeScript
7
star
81

patient-consent

Python
7
star
82

aries-fabric-wrapper

TypeScript
7
star
83

fabric-chaincode-ocaml

OCaml support for smart contracts in Hyperledger Fabric
OCaml
7
star
84

weft

CLI tool to work with Hyperledger Fabric identities and connection profiles; enables conversion between the various forms used by different codebase.
TypeScript
7
star
85

besu-operator

Kubernetes operator to provide an easier way of packaging, deploying, and managing Hyperledger Besu network.
Go
7
star
86

did-webs-resolver

A reference implementation for the did:webs DID method specified here https://github.com/trustoverip/tswg-did-method-webs-specification. The original work for the reference impl started here https://github.com/WebOfTrust/did-keri-resolver
Python
7
star
87

fabric-consortium-management

Go
5
star
88

byzantine-config

GUI Utility that simplifies creating configuration blocks and generating user keys
JavaScript
5
star
89

perun-cosmwasm-backend

Go-Perun CosmWasm Backend
Go
5
star
90

dancap

A lab for exploring attestation portability
C++
5
star
91

cardea-mobile-secondary-verifier-agent

JavaScript
5
star
92

HL-Starterkit

Hyperledger CLI Starter Kit
Shell
5
star
93

documentation-template

Template for creating documentation for Hyperledger projects
HTML
5
star
94

fabric-topologies

Scripts and configurations to easily setup various Hyperledger Fabric topologies that exercise advanced Hyperledger Fabric capabilities.
Shell
4
star
95

perun-credential-payment

Trustless payment for verifiable credentials using go-perun.
Go
4
star
96

fabric-vms-provision

This entry will provide an example on how to provision, using Ansible, Hyperledger Fabric native binaries on multiple Softlayer vms. A build your second network example.
Python
4
star
97

aries-sdk-mendix

Aries SDK for Mendix low-code platform
SCSS
4
star
98

milk-donor

Donor Milk Transparency and Traceability
JavaScript
3
star
99

pdo-contracts

C++
3
star
100

business-partner-agent-chart

Smarty
2
star