La blockchain, tout le monde en parle mais qu'est-ce que c'est, comment ça marche, et à quoi ça sert ? Et si la blockchain était le déclencheur d'un profond changement de société ?
Sans langue de bois, avec des exemples concrets et plein de dessins, cette conférence vous aidera à vous décider si vous avez intérêt à parier sur cette technologie dans les années à venir.
Simplify your professional web development with symfony
La blockchain, quand l'individu sert au collectif... malgré lui
1. The Blockchain:
Find Trust In
Your Peers
François Zaninotto
@francoisz
marmelab
BlendWebMix 2016
Bonjour à tous. Je suis très heureux d’être parmi vous aujourd’hui. Je m’appelle
François Zaninotto et je dirige un atelier d’innovation digitale qui s’appelle
marmelab. Et je suis ici pour vous parler de la blockchain. Qu’est-ce que c’est, à
quoi ça sert, est-ce que c’est important ?
Salim Ismail
«The Blockchain is the most disruptive
technology I have ever seen.»
Julian Assange
«The most interesting intellectual development
on the Internet in the last five years.»
Al Gore
«I think the fact that within the Bitcoin universe
an algorithm replaces the functions of [the
government] … is actually pretty cool.»
Donald Trump
«Mexico will pay for it»
A cette dernière question, certains visionnaires répondent que la blockchain est
aussi révolutionnaire qu’Internet. Mais oui, rien que ça. Si c’est le cas, vu comme
Internet a transformé notre vie quotidienne, en à peine 10 dix ans, alors la
blockchain mérite bien une petite explication.
Trust
Pour comprendre la portée de la blockchain, il faut remonter à un de nos besoins
fondamentaux : le besoin de confiance. Quand vous étiez petit, on vous disait de
ne pas faire confiance aux inconnus. Mais en grandissant, vous avez bien du
apprendre à faire confiance, par exemple pour acheter à manger à des gens que
vous ne connaissez pas, ou pour choisir un employeur. La confiance, elle se bâtit
d’abord sur la proximité, puis rapidement, sur des intermédiaires.
Un intermédiaire de confiance, ça peut par exemple être une marque,
2. Une marque de jambon, tiens. Elle peut regrouper plein de producteurs différents,
mais comme vous avez confiance dans la marque, vous mangez les yeux fermés.
On fait beaucoup confiance grâce à ces intermédiaires que sont les marques,
mais aussi les notaires et les banquiers. Tous ces intermédiaires dépensent
énormément pour se construire une réputation, qui ensuite leur permet de gagner
votre confiance.
Cette question de la confiance, elle est encore plus sensible sur Internet, vous
savez, le royaume du spam, du piratage et du rançonnage. Internet c’est encore un
Far West, où on ne confie pas son adresse email au premier site venu. Comme
moi, vous cherchez probablement le logo Visa quand vous faites un paiement CB.
Trouver des intermédiaires de confiance est donc indispensable sur Internet.
Le problème, c’est qu’une fois qu’il a votre confiance, un intermédiaire peut en
abuser. Quand vous avalez ce bon produit bien rose, vous ne vous doutez pas
que sa couleur vient du nitrite de sodium, qui est un cancérigène probable. Et vous
avalez en fait surtout de l’eau, du sel et un peu de viande de porc industrielle, gavé
d’OGM, d’hormones et d’antibiotiques, et élevé dans des conditions déplorables.
3. Un intermédiaire de confiance concentre aussi les risques. Et s’il se fait pirater,
c’est tout de suite très grave. Souvenez-vous par exemple du PlayStation Network.
C’est un intermédiaire créé par Sony pour permettre à des joueurs d’acheter des
jeux à des éditeurs pour sa console Playstation. Eh bien cet intermédiaire a été
hacké en avril 2011, et plus de 2 millions de numéros de CB ont été volés puis
vendus au marché noir. Ce n’est qu’une histoire parmi des centaines. En fait, plus
l’intermédiaire est gros, plus il est rentable de le pirater, et donc plus il subit
d’attaques.
Remove
Trust
Intermediaries
Les intermédiaires de confiance on les appelle aussi les autorités centrales. Elles
dictent leur loi, leurs prix, elles choisissent leurs clients, elles abusent parfois de
leur autorité, et elles concentrent les risques. Vous voyez où je veux en venir : si on
se passait d’intermédiaires, on pourrait probablement échanger des biens et des
services de façon plus libre, à moindre coût. Mais dans ce cas, qui va sécuriser
les transactions ? Qui va jouer le rôle que jouait l’intermédiaire de confiance ?
Et si…
Code
Et si on programmait les conditions de l’échange et qu’on exécutait ce
programme sur une plateforme collaborative et publique ? Et si cette plateforme
d’échange sécurisée était entièrement automatisée et décentralisée ? De fait on
n’aurait plus besoin d’intermédiaire. C’est le pari de la blockchain, et c’est ce que
je vais tenter de vous expliquer pendant les prochaines 35 minutes.
4. Notez que si, au lieu de chercher la solution du côté des développeurs, on s’était
intéressé à une autre espèce de primates, que sont les bonobos, on serait parti
dans une direction sans doute plus intéressante. Vous savez que les bonobos
résolvent tous leurs problèmes de confiance par des relations sexuelles ? Tu
m’as volé ma banane ? Allez, montre-moi tes fesses et on n’en parle plus. Avouez
que cette conférence aurait pris une tournure plus singulière si on avait suivi leur
exemple. Mais non. C’est bien par le code et pas par le cul qu’on va essayer de
résoudre nos problèmes de conscience / de confiance.
Part 1/4
In Theory
Alors comment faire, quels mécanismes utiliser ?
La solution ne vient pas de la physique fondamentale, elle ne vient pas de la
recherche aéronautique. Non non. Une fois n’est pas coutume, elle vient d’un autre
champ d’innovation qui est :
La Finance. Eh oui. Tout a débuté en 2008,
5. Par la publication de la thèse d’un certain Satoshi Nakamoto, qui partageait avec
le monde entier son invention, le Bitcoin. Il décrivait un système monétaire qui
s’affranchit de la nécessité des intermédiaires de confiance de la finance (que sont
les banques). Ce qui est intéressant dans cette publication, ce n’est pas tant le
bitcoin que la technologie qu’il utilise, la blockchain.
Peer-to-Peer
Network
Asymmetric
Cryptography
Proof-of-work
Consensus
+
+
= Blockchain
La blockchain, c’est le nom que Satoshi Nakamoto a donné à la combinaison de
trois innovations majeures : les réseaux peer-to-peer, la cryptographie
asymétrique, et un consensus par la preuve de travail. Je vais vous expliquer ça en
détail. Au passage, ces trois innovations existaient bien avant la blockchain.
L’invention de Satoshi Nakamoto a été de les combiner.
D’ailleurs, Satoshi Nakamoto, c’est qui ? Eh bien, personne ne le connait - son
identité est un mystère. Si ça se trouve, il n’est pas japonais du tout. Mais il est
considéré, au même titre qu’Einstein, Max Planck ou Emmet Brown, comme un
des grands savants de ces 100 dernières années.
6. Peer-to-peer
Network
Alors, rentrons dans le vif du sujet. Les réseaux Pair à Pair, vous connaissez : des
réseaux d’échange sans serveur central. Vous en utilisez tous les jours, tenez par
exemple : qui a utilisé Bittorrent au cours de la dernière semaine ? [Kenny, tu veux
prendre une photo pour M6?] Attendez, gardez les mains levées, je prends une
photo, j’ai encore quelques amis dans l’audiovisuel.
Dans un réseau pair à pair, un noeud - c’est-à-dire un ordinateur du réseau - met à
la disposition des autres un fichier, par exemple le rip du dernier X-Men :
Apocalypse. Une grosse bouse, soit dit en passant.
De proche en proche, tous les noeuds copient ce fichier jusqu’à ce que tout le
réseau en possède une copie fidèle. Ca me fait bien évidemment penser à la
multiplication miraculeuse des pains par Jésus Christ. Sauf que là, c’est en
quelque sorte une multiplication des bouses. L’idée géniale de la blockchain,
c’est d’utiliser la technologie Peer to Peer non pas pour partager des films, ou de
la musique, ou des jeux piratés, mais pour partager… vous allez voir, c’est
vraiment génial…
7. Un registre comptable. C’est vous dire à quel point Satoshi Nakamoto est un
grand déconneur. Donc tout le monde partage le même registre. Et chaque fois
qu’un noeud ajoute une ligne dans ce registre, cette modification est
automatiquement répliquée, de proche en proche, sur toutes les copies.
Date From To Amount
22/08/16 Alice Bob 10 $
23/08/16 Bob Charlie 250 $
27/08/16 Alice Charlie 10 $
08/09/16 Charlie Alice 1 003 $
Pour mémoire, un registre comptable, ça ressemble à ça : une liste ordonnée de
transactions entre deux identifiants de comptes. Au passage, je vous présente
Alice, Bob et Charlie, qui sont souvent utilisés pour incarner les parties d’un
échange électronique. Bon, je vous ai dit que n’importe quel noeud peut ajouter
une ligne dans ce registre. Mais alors, comment éviter que Bob émette une
transition au nom d’Alice, ce qui serait une fraude ? Autrement dit, comment faire
pour que seule Alice puisse ajouter une ligne où elle est notée comme expéditeur ?
Asymmetric
Cryptography
C’est là qu’intervient la cryptographie asymétrique. Vous savez, ce truc compliqué
que vous n’avez jamais compris, qui repose sur des nombres premiers, et qui est à
la base de SSH et de HTTPS. En fait, c’est assez simple. On prend deux grands
nombres premiers (de 100 chiffres chacun au moins). On les combine grâce à une
formule mathématique, et on obtient deux nouveaux nombres. L’un qu’on garde
pour soi, qu’on appelle clé privée, et l’autre qu’on diffuse - c’est la clé publique.
8. -----BEGIN RSA PRIVATE KEY-----
MGICAQACEQCpODRrPQ+wY9uWbxcnALCHAgM
BAAECEDrBJBoz+lWQ1YNLY60Jn3kC
CQDgh64DDCtqJQIJAMDv8Nj39DI7AghzgRj
hdHc5CQIJAIXkvgdEpEJLAghotXXN
YcdGxw==
-----END RSA PRIVATE KEY——
-----BEGIN PUBLIC KEY-----
MCwwDQYJKoZIhvcNAQEBBQADGwAwGAIRAKk
4NGs9D7Bj25ZvFycAsIcCAwEAAQ==
-----END PUBLIC KEY-----
Voilà à quoi ressemble une paire clé privée / clé publique. C’est illisible, mais ce
n’est pas grave : on ne vous demande jamais de la lire, c’est votre ordinateur qui
la conserve. Et c’est un gros progrès par rapport aux mots de passe dont on doit
se souvenir et qu’on oublie toujours.
Mon petit cousin Kevin par exemple, il oublie tout le temps son mot de passe
Facebook. Eh bien un jour, il en a eu assez de répondre à des questions de
sécurité toutes les semaines, alors il a pris une mesure radicale:
Il s’est tatoué son mot de passe sur le bras. S’il avait pensé à la cryptographie
asymétrique, il aurait évité une attaque à son père.
Alice Bob
i
Alice, je t'aime
SRJOGVZGFSZ
THKLGHJYUKR
Alice, je t'aime
SRJOGVZGFSZ
THKLGHJYUKR
Alors comment on utilise ces deux clés ? L’usage le plus courant, c’est de crypter
des messages. Si Alice a créé une paire de clés, elle peut diffuser la clé publique
(c’est la verte) à tout le monde. Bob peut alors utiliser cette clé pour chiffrer un
message et l’envoyer à Alice. Il n’y a que la clé privée d’Alice qui peut déchiffrer ce
message. Donc le message est secret pour tout le monde sauf son destinataire.
C’est ce qui est utilisé pour la communication sécurisée sur Internet - le fameux
protocole TLS.
9. Alice Bob
i
Je suis Alice
YBHKKLGGDFF
GJUIEHIEVUI
YBHKKLGGDF
FGJUIEHIEVUI
Je suis Alice
A l’inverse, Alice peux utiliser sa clé privée pour chiffrer un message, et diffuser sa
clé publique pour que tout le monde puisse la déchiffrer. Alors vous allez me dire :
mettre un message dans un coffre-fort en donnant la clé à tout le monde, ça ne
serait pas un tout petit peu crétin ? Eh bien non. Ce qui est intéressant ici, ce n’est
pas le cryptage, c’est que comme Alice est la seule à disposer de la clé privée, il
n’y a aucun doute sur l’identité de l’expéditeur. C’est comme si Alice avait signé
son message de manière infalsifiable.
Date From To Amount
22/08/16 Alice Bob 10 $
Signed by Alice:
7d3cd42819cc4ad30ca78f92601dc265ed624665aea1bae6f1bf
c76a8785310702abe99df99e5ecf4fe991c20253f8a8490337f7ed
838af4c0d5e3c67cb3525e
C’est cette signature électronique qui est utilisée dans la blockchain.
L’expéditeur signe chacune de ses transactions avec sa clé privée. Il est donc le
seul à pouvoir transférer de l’argent depuis son propre compte.
En plus d’authentifier l’auteur d’une transaction, la signature empêche la
répudiation d’une transaction. Alice ne peut pas prétendre qu’un autre utilisateur a
déclenché la transaction à sa place, donc elle ne peut pas l’annuler.
Tom
Signed: My Daddy
One Handred Milllion
1o0,O0O,oo0
My birthday
C’est un énorme gain de sécurité par rapport à la signature manuscrite, qui ne
protège pas assez des fraudes. Aujourd’hui, contrefaire une signature, c’est à la
portée d’un gamin de six ans. Enfin, disons plutôt sept.
10. Date From To Amount
22/08/16 Alice Bob 10 $
Signed by Alice:
7d3cd42819cc4ad30ca78f92601dc265ed624665aea1bae6f1bf
c76a8785310702abe99df99e5ecf4fe991c20253f8a8490337f7ed
838af4c0d5e3c67cb3525e
27/08/16 Alice Charlie 10 $
Signed by Alice:
d30ca78f92601dc265ed624665aea1bae6f1bfc76a8785310702a
be99df99e5ecf4fe991c20253f8a8490337f7ed838af4c0d5e3c67
cb3525e
Bien, maintenant les transactions sont authentifiées, mais on n’est pas encore sûrs
qu’elles soient légitimes. Si Alice ajoute une transaction au registre, qui dit qu’elle
dispose de l’argent qu’elle transmet ? Qu’est-ce qui l’empêche d’envoyer de
l’argent imaginaire ?
Date From To Amount
Alice’s Balance : 20$
22/08/16 Alice Bob 10 $
27/08/16 Alice Charlie 10 $
Alice’s Balance : 0$
Si vous avez fait un tout petit peu de compta, vous savez comment ça marche : en
rejouant les transactions dans l’ordre, on peut calculer le solde d’un compte. Si
Alice avait 20$ au début, après deux transactions de 10$, elle n’a plus rien. Si elle
envoie une nouvelle transaction, elle sera refusée. En pratique, chaque noeud du
réseau doit faire ce calcul pour être en mesure de valider une transaction.
Date From To Amount
Alice’s Balance : 20$
22/08/16 Alice Bob 10 $
27/08/16 Alice Charlie 10 $
Alice’s Balance : 0$
Je vous ai dit : il faut rejouer les transactions dans l’ordre. Eh oui, mais dans quel
ordre ? On ne peut pas faire confiance à la date indiquée par l’expéditeur, parce
que rien ne l’empêcherait d’envoyer une transaction antidatée ou post-datée.
Donc cette date, elle ne sert à rien. Et on ne peut pas non plus se fier à la date à
laquelle une transaction a été reçue dans un noeud, parce que cette date varie
significativement dans un réseau peer-to-peer. Deux transactions envoyées au
même moment peuvent arriver dans un ordre différent dans deux noeuds du
réseau.
11. Date From To Amount
Alice’s Balance : 10$
22/08/16 Alice Bob 10 $
22/08/16 Alice Charlie 10 $
Regardez, dans cet exemple, Alice n’a que 10$ en banque. Elle a dépensé tout le
reste pour s’acheter des bonbecs. Elle va pourtant réussir à dépenser 20$.
Comment ? Il lui suffit d’envoyer deux fois ces mêmes 10$ à deux personnes
différentes, Bob et Charlie, au même moment.
Alice
Bob
Charlie
10$
10$
On appelle cette arnaque la « double dépense ». En fonction de la propagation
dans le réseau peer-to-peer, chaque noeud accepte une transaction (la première
qu’il a reçue) et refuse l’autre. Il est donc tout-à-fait possible que Bob et Charlie
soient tous les deux convaincus d’avoir reçu une transaction légitime.
Il va donc falloir trouver une astuce pour mettre tout le monde d’accord sur l’ordre
des transactions. Et pour mettre tout le monde d’accord, il existe une technique
imparable :
C’est de montrer une photo de chaton. Là, normalement, tout le monde dit: « qu’il
est mignon » en oubliant ses désaccords. Sauf que, désolé de vous décevoir, mais
les noeuds d’un réseau Peer-to-peer n’aiment pas les chats. On va donc devoir
trouver un autre moyen.
12. Proof-of-work
Consensus
Ce qui nous amène à la preuve de travail. Je vous rappelle le besoin : mettre
d’accord tous les noeuds d’un réseau sur un ordonnancement de transactions.
Mettre d’accord, ou trouver un consensus, c’est un problème courant dans les
systèmes distribués. Il y a plusieurs algorithmes pour y parvenir, dont la preuve de
travail.
13:20
A
Là, je vais avoir besoin de 5 minutes de votre attention. L’idée de la preuve de
travail est simple : on groupe les transactions dans des blocs. Chaque bloc
référence le précédent. Il n’y a donc qu’une seule suite de blocs, une seule chaine
de blocs. Cette chaine est répliquée dans tous les noeuds du réseau.
Donc si la transaction F est dans le block 21 (celui du milieu), et que la transaction
E est dans le block 22 (le dernier), alors tout le réseau, qui partage la même chaine,
s’accorde sur le fait que la transaction E est postérieure à la transaction F. Donc
on a ordonné les transactions. Avant de finir dans un bloc, les transactions sont
Petite précision de vocabulaire : les transactions finissent bien dans un bloc, et
non pas au bloc, ce qu’on ne souhaite à personne, pas même une transaction
financière.
13. Alors, comment on crée un bloc avec ces transactions en attente ? Eh bien les
noeuds du réseau essaient tous de créer un nouveau bloc en même temps. Pour
savoir lequel de ces blocs sera considéré comme légitime (parce qu’il ne peut y en
avoir qu’un), chaque noeud lance deux dés. Le premier noeud qui fait un double 6
gagne le droit de publier son bloc local sur le réseau. Eh oui, la blockchain, c’est
un peu des ordinateurs qui jouent au Yams.
Le bloc gagnant sera répliqué dans tous les autres noeuds, et toutes ses
transactions seront considérées comme légitimes. Et la chaine publique s’allonge
Mais pour être exact, les noeuds d’une blockchain ne jettent pas deux dés, ils en
jettent une tétrachiée.
0.000000000000000000000918
Sur la blockchain Bitcoin, la probabilité actuelle de créer block gagnant est de 9,18
fois 10 puissance moins 22. C’est bien un nombre tout petit, avec 21 zéros après
la virgule. D’où vient cette probabilité ? Je vous explique.
14. Hash
00000000013e10b8dc7fb51fcad87e8c
Previous Block Id
000000000c264d660980cbc7ad787e0c
Transactions
06f416de4154b07f15ec01e3b1059069
4451f28b863eaf98338843e04f5930b1
cc4a86a07c1db76025ffcf023db27493
ee45412f9fbcbd034da8c4fa5f58f507
Random number
ece85ed8e22c264ce2746538a66e2352
sha256
sha256
Au lieu de jeter des dés, un noeud utilise une fonction de hachage. Fonction de
hashage, vous connaissez ? checksum, md5, sha-1 ? Une fonction non réversible
qui calcule une signature courte pour une chaine de caractères. Dans la
blockchain, on hashe l’identifiant du bloc précédent, les identifiants de transaction
du bloc qu’on essaient de former, et une chaine aléatoire. Et ça forme une chaine
de chiffres et de lettres.
Bref : Un noeud gagne le droit de diffuser son bloc si le hash qu’il forme (un double
sha-256) comporte un grand nombre de zéros dans ses premiers chiffres. Gagner
Block 20
Fact B
Fact D
Fact E
Block 21
Fact C
Fact F
Fact H
Block 22
Fact E
Fact G
Fact I
Block 23
Fact H
Fact J
Fact K
10 min 10 min 10 min
Dans toute la blockchain, il se forme un seul bloc toutes les 10 minutes environ.
D’ailleurs, le nombre de zéros nécessaires pour avoir un hash gagnant s’ajuste
pour que le temps de formation d’un nouveau bloc reste constant même quand le
nombre de noeuds varie.
Pour récompenser les noeuds qui participent à cette grande loterie, le système leur
attribue une somme fixe à chaque fois qu’ils forment un bloc. C’est d’ailleurs
comme ça que la cryptomonnaie se crée. Avant le premier bloc, il n’y en avait pas,
et le montant total augmente toutes les 10 minutes.
Mine
Comme chercher des blocs rapporte de l’argent si on a de la chance, on a appelé
ça miner. Mais à l’inverse des vraies mines, où ce sont de jeunes enfants réduits
en esclavage qui creusent, le minage sur la blockchain est effectué par des
machines, en général majeures. La monnaie virtuelle se crée donc en respectant
des droits de l’homme virtuel.
15. Block Id
00000006e13e10b8dc7fb51fcad87e8c
Previous Block Id
000000000c264d660980cbc7ad787e0c
Transactions
06f416de4154b07f15ec01e3b1059069
4451f28b863eaf98338843e04f5930b1
cc4a86a07c1db76025ffcf023db27493
ee45412f9fbcbd034da8c4fa5f58f507
Block Id
000000001cc6bfb0722a7cf823b7edfd
Previous Block Id
00000006e13e10b8dc7fb51fcad87e8c
Transactions
a7416c3c7850993841175eca72738805
9d1bbdc2e54904d2e4b5afc858c39c59
Au passage, le hash d’un bloc est utilisé comme identifiant de ce bloc. Et je vous
l’ai dit, chaque bloc connait l’identifiant du bloc précédent. Grâce à ce système, si
Alice veut remplacer une transaction existante dans la chaine, ça ne va pas être
pas de la tarte.
Block Id
000000017a071086c758925826cbead0
Previous Block Id
000000000c264d660980cbc7ad787e0c
Transactions
06f416de4154b07f15ec01e3b1059069
ce38d4d9021bd4887faa9b36c35f0444
cc4a86a07c1db76025ffcf023db27493
ee45412f9fbcbd034da8c4fa5f58f507
Block Id
00000000595e794e916b90f6a7589029
Previous Block Id
000000017a071086c758925826cbead0
Transactions
a7416c3c7850993841175eca72738805
9d1bbdc2e54904d2e4b5afc858c39c59
Non seulement elle devra réussir à trouver un identifiant de bloc valide avec sa
nouvelle transaction, mais comme les blocs suivants référencent l’ancien
identifiant du bloc, elle devra aussi remplacer tous les blocs suivants, et donc
trouver des identifiants gagnants pour chacun. Et si former un bloc est déjà très
coûteux, former plusieurs blocs à la suite est tout simplement hors de prix.
Peer-to-Peer
Network
Asymmetric
Cryptography
Proof-of-work
Consensus
+
+
= Blockchain
Et voilà, c’est tout. En assemblant ces trois technologies, Satoshi Nakamoto a
effectivement créé un réseau transactionnel distribué et sûr, sans qu’il soit
nécessaire de faire confiance à qui que ce soit dans le réseau. Et ça, c’est
formidable.
16. Parce que même si le réseau contient un mouton noir, un pirate ou un espion de la
NSA qui souhaite voler de l’argent, il n’a aucune chance. Tenez, disons que ce
mouton noir, c’est Alice. Vous allez me dire, cette Alice qui avait l’air toute
mignonne au début, elle prend l’envergure d’un criminel international, un Kim Jong
Un du piratage.
Ca m’a intrigué aussi, et j’ai mené mon enquête. Qui est vraiment Alice, et
pourquoi est-elle si méchante ? Eh bien, j’ai le plaisir de vous dire qu’au terme
d’une recherche portant sur des milliers de comptes Facebook à travers 5
continents, j’ai retrouvé Alice. Et pour la première fois, en exclusivité mondiale,
Alice s’appelle en réalité Sébastien, et il vit chez sa mère à Chemiré-le-Gaudin
dans la Sarthe.
Et sa vie n’est pas rose. Chaque fois que Sébastien arrive à former un bloc qui
contient une transaction frauduleuse, 10 minutes plus tard, ce bloc est remplacé
par un autre bloc, un vrai, et la transaction frauduleuse est effacée.
Satoshi Nakamoto, le vrai, a calculé que le réseau reste sûr tant que la moitié des
mineurs jouent franc jeu. C’est donc extrêmement coûteux, et en pratique
infaisable, de casser une blockchain. C’est le nombre qui crée la sécurité, un
peu comme dans une assurance : vous ne connaissez pas les autres membres,
mais c’est pourtant grâce à eux que votre voiture est réparée.
19:30
17. Part 2/4
Applications
Bien, vous avez compris comment ça marche maintenant ? C’est pas si
compliqué. La question qui vient tout de suite après, c’est : à quoi ça sert ? Eh
bien, sur la base de la blockchain, on peut imaginer plein de services. Des services
qui suppriment les intermédiaires de confiance, on dit de services qui font de la
désintermédiaiton.
La plus célèbre de ces applications, c’est bien évidemment Bitcoin : un système
financier entièrement décentralisé, sans banques ni terminal de paiement. Ca
marche tellement bien qu’on peut payer des vrais objets avec des bitcoins : son
café, des ordinateurs, de la drogue. Les transactions sont bon marché, et
intraçables - c’est donc un moyen idéal pour frauder le fisc.
Smart Contract
Mais il y a plus. La blockchain permet aussi de distribuer des petits programmes
avec une mini base de données qui sont répliqués dans chaque noeud. On
appelle ça des contrats malins. Je vous donne un exemple : Alice - vous vous
souvenez d’Alice ? - choisit donner 10$ à Bob que Bob ne pourra utiliser que le
jour de son anniversaire. Elle codifie cette condition dans un programme qu’elle
accole à sa transaction à Bob. L’exécution de ce programme est garantie par la
blockchain, il est donc aussi sûr qu’un contrat en bonne et due forme - même pas
besoin de tribunal pour le faire appliquer puisqu’il ne peut pas y avoir de litige. Le
code, c’est la loi.
18. Avec un smart contract, on peut par exemple certifier des documents. Parce que
de nos jours, un coup de Photoshop suffit à falsifier un bulletin de paye, donc il
faut bien trouver mieux. Une startup nommée BitProof offre un service équivalent à
celui d’un acte notarié : envoyez-leur n’importe quel document et quelques
bitcoins en paiement, et ils vous renverront le document signé, tamponné, certifié
conforme. En prime, ce document sera embarqué dans un block, donc daté, et
recopié sur tous les noeuds de la blockchain - donc ultra redondé. Votre notaire de
famille, qui avait déjà pris un coup dans l’aile à cause de Montebourg et Macron,
ne va plus s’en relever.
Un smart contract permet d’enregistrer la propriété d’un bien, et aussi
éventuellement de la programmer. On appelle ça la smart property. Imaginez que
la serrure de votre appartement soit branchée sur la blockchain. Si vous voulez
louer votre appartement pour un week-end, plutôt que de faire appel à airbnb,
publiez un smart contract avec un système d’enchères. Le gagnant gagnera une
clé unique, non répudiable, qu’il pourra par exemple télécharger sur son mobile, et
qui lui garantira l’ouverture de la porte pendant la durée de la location - pas avant,
pas après - et qui vous garantira le paiement de la location. C’est le chemin
qu’explore slock.it, une startup allemande.
Eh bien, vous n’avez plus qu’à casser un carreau, rameuter les voisins, et finir
arrêté comme le seule homme sur terre qui s’est cambriolé lui-même.
19. Si on pousse l’idée un peu plus loin, on peut même imaginer un service de
covoiturage sans autorité centrale - en clair, un Blablacar sans Blablacar. C’est
l’idée qu’a suivi La Zooz, une startup israélienne. Leur levée de fonds n’a pas
abouti, mais ils ont quand même gardé le nom La Zooz, parce que c’est une des
meilleurs noms de produits depuis bien longtemps.
Les transactions d’une blockchain, ça peut aussi être des paris. Le site Augur
propose une plate-forme de prédiction collaborative et décentralisée - en fait,
une plate-forme de paris en ligne où n’importe qui peut être bookmaker. Vous
voulez miser sur le prochain président des Etats-Unis ? C’est possible. Pour
l’instant, Augur utilise de la monnaie de singe - le site est en bêta. Et au vu des
cotes qui ressortent, espérons que les parieurs sont aussi des bêtas, sinon on va
pas rigoler longtemps avec nos blockchains.
La blockchain permet aussi la création de sociétés sans dirigeants. Eh bien oui,
qu’est-ce que c’est qu’un manager, sinon un intermédiaire entre un actionnaire et
un grouillot ? La DAO, c’est ça : une Decentralized Autonomous Organization, un
groupement de capital risqueurs, une plate-forme de crowdfunding un peu comme
Kickstarter. Ses membres ont versé pour 150 millions de dollars dans ce fonds, et
les règles d’investissement sont régies par un smart contract. Mais on va en
reparler.
20. Enfin, si vous cherchez un espace de stockage, plutôt que de mettre vos photos
de famille sur une clé USB que vous perdrez de toutes façons, pourquoi ne pas
profiter d’un cloud décentralisé et crypté, un cloud formé par des individus comme
vous et moi, qui louent la partie inutilisée de leur disque dur ? C’est le pari de
storj.io, et ça marche sur la blockchain.
En fait, je pourrais en lister encore des tonnes, des idées de services basés sur la
blockchain. Il en sort un nouveau chaque jour. On les appelle des Decentralized
Apps, ou dApps. Ces applis ne s’exécutent pas sur votre smartphone, mais dans
la blockchain, qui est du coup une espèce de super-ordinateur distribué.
StudBook
Et je ne résiste d’ailleurs pas à la tentation de vous parler de cette dApp fabuleuse
qui s’appelle Studbook, et qui se définit comme un Tinder pour les chevaux sur la
blockchain. Que vous cherchiez un Mustang ou une jument Ardennaise, Studbook
est là pour vous, et les mensurations sont garanties par smart contract. Je me
demande juste comment les chevaux arrivent à faire un glisser vers la gauche avec
leurs sabots quand ils likent…
21. Part 3/4
In Practice
Vous l’avez vu, la blockchain permet en théorie de faire des choses merveilleuses.
Mais et nous, est-ce qu’on peut changer le monde avec ? Est-ce que au-delà du
buzz, vous et moi, on peut effectivement développer des applications sur la
blockchain ? Eh bien on a voulu vérifier.
25:45
Alors, pour développer des dApps, on n’utilise en général pas la technologie
BitCoin, qui a un langage de programmation trop rudimentaire. La plupart des
dApps que je vous ai présentées utilisent plutôt une autre implémentation de la
blockchain qui s’appelle Ethereum, et qui est aussi open-source. Dans Ethereum,
les smart contracts se programment grâce à un langage proche du JavaScript, qui
s’appelle Solidity. Les blocs, sur Ethereum, sont minés toutes les 10 secondes, et
non pas toutes les 10 minutes, et la monnaie s’appelle l’Ether, ou ETH.
Zero Dollar
Homepage
Alors comme on voulait mettre les mains dans le cambouis, on s’est lancés dans le
développement d’une dApp. On a choisi de construire un serveur de publicité pour
une de nos pages web, qui rémunère des contributions open-source par de la
publicité gratuite. En référence à un phénomène des années 2000, on a appelé ça
Zero Dollar Homepage.
22. Le principe est le suivant : lorsqu’un contributeur ouvre une pull request sur l’un de
nos repositories open-source sur Github, un bot commente sa pull request pour le
remercier et l’inciter à publier son annonce sur ZeroDollarHomepage.
En suivant le lien du commentaire, le contributeur arrive sur une page sur laquelle il
doit s’identifier avec son compte GitHub, et sur laquelle il peut uploader une image
de son choix.
Cette image se retrouve sur marmelab.com/zerodollarhomepage pendant 24h. Ca
offre une publicité gratuite aux contributeurs de projets open-source. C’est un bon
cas d’étude pour la blockchain : comment implémenter cet ad server sans ad
server, c’est-à-dire sans autorité centrale ?
23. L’architecture choisie est la suivante : on a un bot qui reçoit les hooks de merge
GitHub et qui commente dessus. Ensuite, une seconde application, l’appli sur
laquelle se connecte l’auteur de la PR, vérifie son compte Github et transfère
l’image uploadée sur un CDN. Elle inscrit aussi l’identifiant de l’image dans le
smart contract, que vous voyez au milieu. Une troisième application regarde toutes
les 24h dans le smart contract pour savoir quelle est la prochaine publicité à
afficher. Elle l’utilise pour remplacer l’image en cours, et tous les visiteurs la verront
ainsi pendant 24h.
La dernière fois que j’ai donné cette conférence, j’ai perdu deux trois personnes
dans le public, notamment une jeune fille qui se fait appeler Sophie Fonfec
(véridique). Si vous venez de décrocher, pas de panique, c’était le seul slide pour
les geeks. Enfin non, j’en ai encore un.
https://github.com/marmelab/ZeroDollarHomePage
Ca, c’est le code de notre smart contract : c’est un peu comme une classe qui
peut contenir des données (dans notre cas, la liste des pulls requests réclamées)
et des méthodes (par exemple, une méthode pour vérifier et ajouter une pull
request). Tout ce code est open-source, donc vous pourrez le regarder en détail
après la conférence si vous le souhaitez, ne vous abimez pas les yeux maintenant.
On peut voir un smart contract comme une mini-API avec sa propre base de
données. C’est écrit dans ce langage, Solidity. L’étape d’après, c’est de déployer
le contrat dans un noeud.
24. Rassurez-vous, vous n’aurez pas besoin de savoir faire un noeud pour déployer
un contrat dans un noeud. J’en vois au fond de la salle qui sont soulagés. Tout va
bien. Ethereum procure une ligne de commande qui permet de faire ça très bien.
Pour tester notre contrat d’ad server, on l’a chargé sur une blockchain privée,
montée sur nos propres serveurs, et pas connectée à l’extérieur. Le contrat s’est
répliqué automatiquement sur tous les noeuds, et on a pu appeler ses méthodes
depuis un serveur en node.js. On a eu pas mal de difficultés et de mauvaise
surprises - je vous en donne deux exemples.
Asynchronous
Responses
Quand on appelle une méthode d’un contrat qui modifie les données, la réponse
ne vient pas tout de suite. Il faut d’abord que la transaction soit « minée » par un
bloc du réseau. En pratique, la réponse à un appel en écriture, c’est un numéro
de transaction, comme un récépissé de la préfecture quand vous faites une
demande de passeport. Pour avoir la réponse, il faut appeler la préfecture toutes
les semaines, et se fader la petite musique d’attente. Bienvenue à la préfecture du
93. Toutes nos lignes sont actuellement occupées. Veuillez renouveler votre appel
dans six mois. Avec la blockchain, c’est pareil : il faut interroger le réseau (toutes
les 10 secondes à peu près) jusqu’à obtenir confirmation de l’enregistrement de la
25. Immutable
Code
Autre surprise: le code qu’on déploie sur une blockchain est immutable. Il est là
pour toujours. S’il contient un bug, on ne peut pas le corriger - il faut déployer un
autre contrat, en n’oubliant d’ailleurs pas d’y inclure un moyen pour récupérer les
données du contrat original - dans notre cas, la file des pull requests. L’ancien
contrat restera à jamais dans la blockchain, avec ses bugs, et les transactions
passées aussi. Je peux vous dire que ça ne facilite pas le debug.
L’étape d’après, c’est le passage d’une blockchain privée, qui est comme un
serveur de test, à la blockchain publique, la vraie blockchain Ethereum, qui
contient près de 6 500 noeuds. Et pour ça, il faut de l’Ether
Alors pas de l’éther pour le sniffer, on est des bad boys mais pas à ce point-là
quand même. Il faut de l’ether, la cryptomonnaie d’Ethereum.
26. Eh oui, parce que les noeuds du réseau n’exécutent pas une transaction à moins
qu’on l’accompagne d’un peu d’Ether pour dédommager du temps de calcul. Pour
obtenir de l’Ether, vous pouvez soit l’acheter sur une place de marché, où son
cours varie selon l’offre et la demande, soit la miner.
Nous, on a testé le minage : on a fait tourner une grosse instance EC2 sur
Amazon, et au bout de 3 jours elle a réussi à former un block - le bloc que vous
voyez affiché ici. On a obtenu 5 Ether en récompense. Ca nous a coûté un peu
plus de 50$, sachant que le prix de revente de ces 5 Ether était d’environ 55$ à
l’époque. D’après nos calculs, ces 5 Ethers étaient suffisants pour faire tourner
notre ad server ZeroDollarHomepage pendant 7 ans.
Et après pas mal de déconvenues, on a réussi à déployer notre contrat sur
Ethereum et à l’appeler depuis nos serveurs en Node.js. Et ça n’a l’air de rien, mais
je peux vous dire qu’on était content d’y arriver.
27. Ce que vous voyez, c’est l’adresse de notre contrat, ainsi que toutes les
transactions qui y sont liées. Tout est public sur Ethereum : tout le monde peut voir
toutes les transactions, même si elles sont anonymes - d’une clé publique à une
autre.
Il aura fallu 4 semaines à 2 développeurs chevronnés pour arriver tant bien que mal
à faire marcher notre contrat. Les développeurs ont lutté avec une doc pas à jour,
ils ont fait face à des bugs impossibles à localiser et à qualifier, ils se sont arrachés
les cheveux à cause de mises à jour intempestives qui faisaient qu’un code qui
marchait la veille ne marchait plus le lendemain.
33:10
Part 4/4
The Truth
Ce qui m’amène à la quatrième et dernière partie de mon exposé : la vérité sur la
blockchain. Parce qu’en développant notre propre dApp, on a compris tout un tas
de choses qu’on ne lit pas sur Internet. Tout un tas de trucs pas vraiment à
l’avantage de la blockchain.
28. Immature
Technology
D’abord, la technologie n’est pas prête. On en a fait les frais. Les exemples de
code qu’on trouve sur Internet ne marchent pas. Les développeurs en bavent
tellement qu’il demandent à changer de projet. Imaginez que je vous demande de
construire une tour de 30m de haut, en vous donnant seulement des legos comme
matériau de construction.
Ca a l’air rigolo au début, et puis vous vous dites que de bonnes vielles briques
auraient quand même mieux fait l’affaire. Eh bien, la blockchain, c’est pire.
Immature
Technology
En plus, on n’est pas capable d’estimer le temps d’implémentation d’une
fonctionnalité simple. La techno progresse vite, mais pour l’instant, difficile de
parier sur une technologie aussi immature.
29. No Outside
Contact
D’autre part, les smart contracts sont en fait assez stupides. Vous l’avez vu dans
notre schéma d’architecture, on ne peut pas leur demander grand chose. C’est
qu’ils ne peuvent pas communiquer avec le monde extérieur - ils sont contraints
à la blockchain pour des raisons de sécurité. Ca veut dire pas d’appels à des
APIs externes. Par exemple, pas d’appel à un service d’authentification, comme
l’OAuth de GitHub. Donc pour faire marcher une dApp, il faut pousser toutes les
données extérieures dans le smart contract. Vous imaginez la complexité ? Ca
explique pourquoi les dApps se restreignent à des cas d’utilisation très simples,
ou à des petites parties d’applications.
It’s
complicated
Les concepts de la blockchain sont très complexes. J’ai gratté la surface pour
essayer de vous donner l’impression de comprendre, mais en vérité vous n’y
comprenez toujours que pouic, croyez-moi. Essayez donc de lire un article
technique sur la blockchain pour voir.
C’est un peu comme essayer de résoudre un Rubik’s cube à 4 dimensions. 80
pièces, 216 faces, 10 puissance 120 combinaisons. [gros yeux]
30. It’s
complicated
Le résultat, c’est qu’à moins d’être un génie, vos dApps vont contenir des bugs.
Plein de bugs. On estime que le taux de bugs dans les smart contracts est environ
d’un bug toutes les 10 lignes. Des smart contracts qui tournent en production. Je
peux vous dire que les hackers se frottent les mains.
Not Secure
Ca veut dire que la blockchain ne résout pas encore le problème de la sécurité. Le
nombre de vols et de scandales sur des blockchains grimpe chaque jour. Tenez,
le dernier en date : Je vous ai parlé un peu plus tôt de la DAO, vous vous souvenez
?
BUGGY
Le kickstarter décentralisé. Eh bien un hacker a dérobé pour 50 millions de
dollars d’Ether sur ce smart contract. Et le pire, c’est que le hacker ne peut pas
être inquiété. En toute bonne foi, il s’est révélé au public, et il a déclaré qu’il a
respecté le mantra de la blockchain : le code c’est la loi. Si le contrat contenait un
bug, c’est la faute de son auteur. Donc le hacker n’était pas responsable.
31. Not Secure
C’est bien embêtant, car le manque de sécurité est ce qui nous motive à faire
appel à des intermédiaires de confiance. Si en supprimant les intermédiaires, on ne
garde pas la sécurité, eh bien la blockchain ne sert à rien.
Developer
Power
Et même si on écarte les hackers, mettre la loi dans les mains des
développeurs, je ne suis pas sur que ce soit une si bonne idée. Dans notre
imaginaire collectif, un monde gouverné par des machines, ce n’est pas
nécessairement le paradis. C’est que les développeurs sont des gens
irresponsables - je dis ça sans méchanceté, c’est juste qu’on ne les forme pas à
prendre des décisions politiques ou sociales pour le bien commun.
N’en jetez plus, la blockchain est une techno mal gaulée, vous avez compris. A ce
stade, vous vous dites que vous auriez probablement dû aller voir l’autre
Eh bien détrompez-vous : voilà le flux de la caméra de surveillance de la salle d’â
côté. Ils ronquent tous comme des loirs. Non croyez-moi, vous êtes bien mieux ici,
et en plus je n’en ai pas tout-à-fait fini avec la blockchain.
32. Waste
Je vous ai dit que les noeuds des mineurs se battent pour créer un bloc toutes les
10 minutes. En pratique, ces noeuds sont des fermes de serveurs surboostés, qui
tournent à plein régime… pour mettre à la poubelle le résultat de leurs calculs
dans 99,9% des cas - Eh bien oui, puisqu’il n’y a qu’un noeud qui gagne toutes les
10 minutes. Ah et cette stratégie de réplication du registre, vous vous souvenez ?
Chaque noeud contient la copie intégrale de toutes les transactions opérées sur le
réseau depuis le jour 1, celui qu’on retient,
Celui qui s'efface quand tu me remplaces. Eh oui, j’ai une fille de 9 ans.
Waste
Donc quand je démarre un noeud, je dois d’abord télécharger et vérifier
l’intégralité des transactions depuis le premier jour - ça représente des
dizaines de Giga-octets. Vous voyez le gâchis de stockage, de cpu, et donc
d’électricité. A l’heure où on s’inquiète du réchauffement climatique, les fermes de
mineurs sont en fait des radiateurs géants.
33. Very
Expensive
Et qui paye pour toute cette énergie gâchée ? Les utilisateurs de la blockchain,
pardi. Chaque transaction doit s’accompagner d’une petite commission qui va au
mineur qui arrive à former un bloc avec. Pour les transferts d’argent avec Bitcoin,
comptez environ 11 centimes par transaction - c’est loin d’être négligeable. Et si
Ethereum était une boulangerie, la baguette y couterait 50 000 euros pièce.
Elle est bonne cette baguette, je ne dis pas le contraire, mais je me demande
seulement si ça valait le coup d’étouffer ta grand-mère avec un oreiller pour hériter
tu vois.
Extremely
volatile
Par ailleurs, la valeur d’une cryptomonnaie dépend du montant en vraie monnaie
que des acheteurs sont prêts à dépenser pour en acquérir - c’est la loi de l’offre
et de la demande. Aujourd’hui, un bitcoin, c’est environ 600$. Mais on voit des
écarts de valeur de 100% en quelque mois. Si vous devez monter un business sur
la blockchain, il faudra bien planifier vos dépenses sur plusieurs années… mais
comment faire sur un marché si volatile ?
34. No Business
Model
Et puis quand on y réfléchit bien, il y a un vrai paradoxe : si la blockchain supprime
les intermédiaires, qui peut gagner de l’argent avec ? Les business model les plus
performants, les plus novateurs, sont ceux qui créent une position
d’intermédiaire - pensez à Google, qui est devenu notre intermédiaire avec le
web. Tous les exemples de services dont je vous ai parlé peuvent très bien exister
sans éditeur, puisqu’il s’agit uniquement de faire tourner des programmes sur une
blockchain. Donc c’est bien pour les individus, mais si les sociétés n’y trouvent
pas de vrai intérêt, il n’y aura pas d’investissement significatif sur la blockchain.
Slow
Ah, et j’ai gardé le meilleur pour la fin, si on la compare au technos web
habituelles, la blockchain, c’est affreusement lent. Il faut attendre au moins un
bloc avant d’avoir la confirmation d’une transaction - soit 10 secondes sur
Ethereum ou 10 minutes sur Bitcoin. En pratique, les spécialistes conseillent plutôt
d’attendre 6 blocs (soit 1 minute sur Ethereum, 1 heure sur Bitcoin) pour des
raisons de sécurité. Alors comparés aux délais financiers (où les compensations se
font en général à J+1), c’est un progrès, mais par rapport au reste du monde du
web, 10 minutes pour valider un formulaire de commande, c’est une grosse
régression.
Préparez-vous à regarder des spinners toute la journée, c’est le genre
d’expérience utilisateur qu’offrent toutes les dApps.
40:45
35. Conclusion
Bien. C’est l’heure de conclure. Vous l’avez compris, se passer d’intermédiaires de
confiance en se basant sur une communauté d’anonymes, c’est une idée
révolutionnaire. Et si ça peut faire avancer le schimilblick, on se dit : pourquoi
pas ? Mais mon opinion - et elle va à l’encontre de beaucoup de ce que vous
pourrez lire par ailleurs - mon opinion, c’est que les coûts l’emportent encore, et
de loin, sur les bénéfices.
La blockchain, c’est une grosse usine à gaz. Et puis c’est aussi un passe-droit
impossible à réguler et à sécuriser. En ce sens, la blockchain nous pousse vers
une société ultra libérale. C’est un outil déshumanisé, qui considère l’empathie et
Et comme on a une certaine expertise sur la blockchain, on nous a consultés pour
plusieurs projets d’innovation qui se basaient sur cette technologie. En y regardant
de plus près, 80% de ces projets devaient s’exécuter sur une blockchain privée,
accessible uniquement à des tiers de confiance - vous voyez le paradoxe. Alors la
blockchain, une fausse bonne idée ?
Open
Government
Il y a un intermédiaire de confiance dont je n’ai pas parlé, et qui lui a vraiment
besoin d’un coup d’innovation. C’est l’élu. Nos démocraties sont malades du
clientélisme et de la professionnalisation de la vie politique. Le résultat, ce sont des
gouvernants qui se disent incapables de changer la société, qui font des
promesses sans les tenir, et des extrêmes qui montent. Et si on inventait un
gouvernement décentralisé, où les engagements des élus seraient garantis par un
contrat impossible à répudier ? Et si on rétablissait la confiance là où on en a le
plus besoin, dans notre avenir ?
36. Eh bien croyez-le ou non, mais ça existe. BitNation est un gouvernement
décentralisé sur la blockchain. Il fournit des registres de naissance, des cartes
d’identités, des cartes de paiement, ils financent même une agence spatiale.
L’initiative est encore balbutiante, mais elle est là. Elle annonce la reprise de
contrôle de notre futur collectif, sans nous défausser de notre responsabilité
citoyenne sur des intermédiaires. La blockchain, c’est peut-être la relève de la
démocratie déclinante, et rien que pour ça, je suis prêt à parier dessus.
43:20
Questions?
François Zaninotto
@francoisz
marmelab
Interested by
a developer position
in Paris, Nancy or Dijon?
Apply at marmelab.com/jobs.