In this course, we present the basic principles behind blockchain tools and their main applications. The objective of this course is to provide the knowledge necessary to understand the difference between the variants of blockchain technologies, understand their strengths and weaknesses, and decide if such a tool is relevant (or not) to solve a particular problem. The first part of the course focuses on some applications of blockchains: digital cash, distributed ledger with data integrity, verifiable computation, smart contracts. In the second part of the course, we study the building blocks of those chains: cryptography, peer-to-peer networks, consensus algorithms (e.g. proof-of-work and proof-of-stake), and programming languages and their virtual machines (i.e. smart contracts).
- Cryptography: hashing functions, signatures, attacker model, digital payment protocols
- Peer-to-peer networks and blockchains: Bitcoin in practice
- Blockchains and variants
- Consensus algorithms: proof-of-work and proof-of-stake
- Programming languages over blockchains – Smart contracts. Ethereum and Solidity programming in practice. Security properties and attacks over Smart contracts.
- Technological survey on attacks on Ethereum, verification tools, and alternatives to Ethereum.
Blockchain, peer-to-peer networks, consensus algorithms, smart contracts.
- Impossibility of Distributed Consensus with One Faulty Process, by Michael J. Fischer, Nancy A. Lynch, Michael S. Paterson, 1985
- The Part-Time Parliament, by Leslie Lamport, 1998
- Chord: A scalable peer-to-peer lookup service for internet applications, by Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan, 2001
- A Scalable Content-Addressable Network, by Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp and Scott Shenker, 2001
- Ethereum white paper: A Next-Generation Smart Contract and Decentralized Application Platform, by Vitalik Buterin, 2014
- Tezos – a self-amending crypto-ledger White paper, by L.M. Goodman, 2014
- Bitcoin: A Peer-to-Peer Electronic Cash System, by Satoshi Nakamoto, 2008
Teaching team biography
Thomas Genet is Professor in Computer Sciences at the University of Rennes 1. His research focuses on verification, term rewriting, tree automata and cryptographic protocol verification. He carries his research with the Epicure/Celtique team at IRISA.
Emmanuelle Anceaume holds a PhD in Computer Sciences and is a senior researcher scientist of CNRS at IRISA. Emmanuelle Anceaume investigates dependability and security issues in large scale and dynamic systems. For the last few years, she has been working on data stream algorithms, reputation mechanisms, dependability issues in peer-to-peer systems, and more recently on blockchain technologies.
Romaric Ludinard holds a PhD on fault characterisation in large scale networks. He is currently an associate professor at IMT Atlantique. His research mainly focuses on models, safety and performance of distributed systems as well as Blockchain protocols and their guarantees.