Credits: 3-0-0-0- [9]
Prerequisite: Expertise in programming, basic knowledge of computer security, cryptography, networking, concurrent or parallel programming would help a student to understand the topics.
Co-requisite: CS628 [Computer Systems Security] (Not necessary but preferable)
Who can take the course: Ph.D., Masters, 3rd and 4th year UG Students
Instructor: Prof. Angshuman Karmakar
Departments that may be interested: Electrical Engineering
Blockchain is an emerging technology platform for developing decentralized applications and data storage, over and beyond its role as the technology underlying the cryptocurrencies. The basic tenet of this platform is that it allows one to create a distributed and replicated ledger of events, transactions, and data generated through various IT processes with strong cryptographic guarantees of tamper resistance, immutability, and verifiability. Public blockchain platforms allow us to guarantee these properties with overwhelming probabilities even when untrusted users are participants of distributed applications with ability to transact on the platform. Even though, blockchain technology has become popularly known because of its use in the implementation of Cryptocurrencies such as BitCoin, Ethereum, etc., the technology itself holds much more promise in various areas such as time stamping, logging of critical events in a system, recording of transactions, trustworthy e-governance etc. Many researchers are working on many such use cases such as decentralized public key infrastructure, self-sovereign identity management, registry maintenance, health record management, decentralized authentication, decentralized DNS, etc. Also, corporations such as IBM and Microsoft are developing their own applications in diverse fields such as the Internet of Things (IoT), etc., even enabling blockchain platforms on the cloud.
Considering the need to disseminate the emerging concepts for students, we decided to prepare the a new course on blockchain technology platforms and applications.
The students will be exposed to the following topics:
The course will be very heavy on projects and require ability to quickly configure a new development platform and use it, develop applications, and move to a new one. At least three blockchain platforms will be used in projects in the course. The course will consist of instructor presentations, demonstrations, and hands-on projects.
Module |
Topic |
No. of 1 hour Lectures |
Introduction |
Need for Distributed Record Keeping Modeling faults and adversaries Byzantine Generals problem Consensus algorithms and their scalability problems Why Nakamoto Came up with Blockchain based cryptocurrency? Technologies Borrowed in Blockchain – hash pointers, consensus, byzantine fault-tolerant distributed computing, digital cash etc.
|
3 |
Basic Distributed Computing |
Atomic Broadcast, Consensus, Byzantine Models of fault tolerance |
4 |
Basic Crypto primitives |
Hash functions, Puzzle friendly Hash, Collison resistant hash, digital signatures, public key crypto, verifiable random functions, Zero-knowledge systems |
4 |
Blockchain 1.0 |
Bitcoin blockchain, the challenges, and solutions, proof of work, Proof of stake, alternatives to Bitcoin consensus, Bitcoin scripting language and their use |
5 |
Blockchain 2.0 |
Ethereum and Smart Contracts, The Turing Completeness of Smart Contract Languages and verification challenges, Using smart contracts to enforce legal contracts, comparing Bitcoin scripting vs. Ethereum Smart Contracts |
8 |
Blockchain 3.0 |
Hyperledger fabric, the plug and play platform and mechanisms in permissioned blockchain |
8 |
Privacy, Security issues in Blockchain |
Pseudo-anonymity vs. anonymity, Zcash and Zk-SNARKS for anonymity preservation, attacks on Blockchains – such as Sybil attacks, selfish mining, 51% attacks - -advent of algorand, and Sharding based consensus algorithms to prevent these |
8 |
Total Lecture hours |
|
40 hours |
There will be other resources put on the web by the instructor.