21st International Symposium on Stabilization, Safety,
and Security of Distributed Systems (SSS 2019)

Pisa, Italy
Oct 22 - Oct 25, 2019


The theory of blockchains


The blockchain technology appeared for the first time in 2008 in the white paper of Satoshi Nakamoto, where it was designed to be the fully distributed ledger behind the first decentralized cryptocurrency: Bitcoin. Briefly, the blockchain is an append-only chain of blocks, such that in the Bitcoin case, it contains all the Bitcoin transactions that once confirmed in the blockchain, can be reverted only with a small probability that becomes negligible with the time. Blockchain is not only Bitcoin. Indeed after 2008, different kind of blockchains have been further defined and for different purposes rather than cryptocurrencies, making clear that the Blockchain technology can serve as a more general notarization tool that can be employed when there is the need to notarize information produced by entities that do not necessarily trust each other. Indeed, with the blockchain they can trust that the information in the blockchain are immutable. The goal of this tutorial is to understand the main mechanisms behind the Bitcoin blockchain such as the blockchain object structure itself, how the blocks are appended, and the kind of information contained into the blocks. Indeed, blocks do not contain only transactions but also non-turing complete scripts allowing flexibility in the transaction management or the creation of side chains payment channels. The takeaway of this tutorial is the understanding of the blockchain technology itself, its potentialities and limitations, using the Bitcoin blockchain as case of study.

Hands on blockchains


When Bitcoin was introduced 11 years ago, it has created a lot of opportunities for academics and industrial. Basically, the Bitcoin protocol is a distributed database specifically built for exchanging cryptocurrency, but it works between any number of unknown participants. The core protocol was soon after used to store other kind of data for different purposes. Each application, running on its own Blockchain, is executed by all the participants that may or may not know or trust each other. Then, Ethereum was created as a single clockchain that can execute arbitrary applications, called smart-contracts. Applications can interact together on the the Ethereum blockchain and functions can be triggered by transactions. Ethereum makes it very easy to develop new distributed applications. And looking at its code, one can easily trust an applications, even if it has been developed by someone unknown. This add values to the data stored by an application in the blockchain as a participant really owns its data (input data comes from signed transactions). One famous example is the cryptokitties game where any one can buy, exchange and breed virtual cats. The game would probably not have gain much attention if the virtual cats owners were just defined by rows in a standard database. Instead, cats are associated with the public key of their owner and only the owner of the private key can sell a cat, without intermediary. In this tutorial I will present quickly how Ethereum makes that possible. Then, I will develop a small application. To achieve this, I will present the Solidity language, how to compile, deploy and interact with a smart- contract. I will also present several important cryptographic primitives that allow, for instance, proving something without reveling too much information.

If you want to install/download the example projects featured in the tutorial, please go to this website.

Photos on this page courtesy of S├ębastien Tixeuil.