Arbres de Merkle : la structure de données à l'origine de git, BitTorrent, Bitcoin, Ethereum, The DAO et autres blockchains
Merkle trees (1979)
Le principe est simple : calculer le hash d’un nœud à partir d’un hash de ses fils. Dans un arbre binaire, pour un nœud ayant pour fils $h_1$ et $h_2$ : \(h(noeud) = h(h1, h2)\).
Cette structure de données sera à l’origine de tout ce que je vais présenter.
git (2005)
Logiciel de gestion de versions centralisé. Mais comment garantir l’intégrité des données ? On calcule une hiérarchie de hashes :
Slide tirée de la présentation Code is not text! How graph technologies can help us to understand our code better.
Quelqu’un sur GitHub qui est parvenu à reverse-engineer le hash de git. Ce n’est pas secret, mais c’est un peu compliqué.
BitTorrent (2001)
- Tribler qui explique qu’on a besoin qu’un nombre $\log n$ de hashes de pour certifier un tronçon parmi $n$ d’un fichier torrent (authentifié par le hash de la racine) : pas besoin de calculer tous les hashes de l’arbre.
- Notez qu’on a également besoin du numéro du tronçon : sa décomposition en binaire permet de dire si les tronçons sont gauche ou droite, cf. cette réponse sur Bitcoin Stack Exchange.
- Fun fact : git + BitTorrent = IPFS (InterPlanetary File System)
Bitcoin (2009)
Tiens mais c’est pas mal ces arbres de Merkle, et si je fabriquais une monnaie avec ?
- Papier fondateur : bitcoin.org/bitcoin.pdf
- Curieusement, ce papier ne fait pas mention de la règle : « Pour construire un bloc, il faut trouver une nonce telle que le hash obtenu $< 2^{187}$. Si vous y parvenez, vous remportez 25 BTC soit à peu près 17500 $. » (La valeur 187 dépend du nombre de mineurs.)
- Ce qui me fascine, c’est que lorsqu’on construit un bloc, on ne sait pas encore si on est dans la bonne ligne de temps. C’est la popularité de notre chaîne de blocs qui nous dit si on a gagné ou pas. La chaîne la plus longue gagne.
Ethereum (2014)
Tiens mais c’est pas mal ces arbres de Merkle, et si je fabriquais un langage Turing-complet avec ?
What could possibly go wrong?
- Un article des auteurs qui explique la différence avec Bitcoin : il est à présent possible d’avoir accès à des états, et de pouvoir simuler la transition d’un état à un autre, donc de déclencher l’exécution d’un code et de certifier qu’elle aura lieu.
- Le Yellow Paper difficile à lire
The DAO (2016)
Tiens mais c’est pas mal ces arbres de Merkle, et si je fabriquais un fonds d’investissement décentralisé avec ?
DAO : decentralized autonomous organization. Bah oui tiens, pourquoi centraliser les votes lors d’une élection alors qu’on pourrait utiliser le même principe que pour les Bitcoin ?
- White Paper sur GitHub
- L’attaque du 17 juin 2016 : « Timing is everything » : « Il nous reste 25 jours pour sauver le monde, ça ressemble à un film mais c’est pour de vrai, mais avec de l’argent fictif »
- Un post sur Quora qui explique les différentes raisons pour lesquelles ça s’est mal passé
- Le post-mortem où l’on découvre que c’est une faute de frappe qui est à l’origine de la disparition de 3,5 millions d’ether. La Faute à l’algo ?
- Depuis cet incident, deux forks-monnaies d’Ethereum perdurent : Ethereum Classic (ETC) et Ethereum (ETH).
Certificate Transparency vs. DNSChain
Un autre lieu où on aimerait se passer de tiers de confiance, c’est pour les certificats SSL.
Le but de Google’s Certificate Transparency :
Make it impossible (or at least very difficult) for a CA to issue a SSL certificate for a domain without the certificate being visible to the owner of that domain.
- The Trouble with Certificate Transparency
- Certificate Transparency vs. China, 29 août 2016
- Je n’aime pas Ars Technica mais Google Chrome will banish Chinese certificate authority for breach of trust
« Et alors, il y en a qui font ça dans la recherche académique ? » demande Tito
Oui ! Andrew Miller, Michael Hicks, Jonathan Katz, and Elaine Shi. “Authenticated Data Structures, Generically”, POPL 2014.
Et la grande classe, c’est qu’ils proposent une implémentation en Caml sur GitHub.
Ledit Andrew Miller expose également son analyse d’Ethereum.
Des conférences pipeau à l’IHP (16/11/2016) et moins pipeau à Télécom ParisTech (15/11/2016) (lol ils abusent, ils pourraient communiquer).
Add-ons
- Namecoin, un fork de Bitcoin pour les noms de domaine et d’autres types de données
- Tezos, un peu méta : les joueurs peuvent voter pour changer les règles