La Blockchain est la techno "hype" du moment (avril 2016). Celle qui aurait le pouvoir de changer le monde comme le Web l'a fait ces dernières décennies. Mais, finalement, sur qu'est-ce que la Blockchain ? Comment ça marche ? que pouvons-nous faire avec ? Cette session University va nous permettre de voir en détail ce qui se cache réellement derrière le Buzz.
Cette présentation revient sur le fonctionnement technique de Bitcoin, première implémentation de la Blockchain, pour ensuite décortiquer les nouvelles possibilités offertes par les plateformes comme Ethereum. Dans une seconde partie, elle détaille des exemples de code afin de comprendre précisément ce qu'est un smart-contract. Dans une troisième partie, elle s'intéresse aux différents cas d'usages qui sont à l'étude où déjà implémentés et enfin parle des enjeux sociaux que la Blockchain introduit.
Benoit Lafontaine, @joel1di1
Yann Rouillard, @yannrouillard
4. #DevoxxFR
Agenda
Origine : Bitcoin, Pourquoi, Comment ?
Présent :
Ethereum et les smarts-contract
Les usages d’aujourd’hui
Futur :
Les usages de demain…
La question de la gouvernance
5
9. #DevoxxFR
Hash
Origine H(origine)
Voici un texte super long f272bcf903
Bonjour Devoxx! d1be9c0ff4
Bonjour Devoxx. 0084a53e9d
Bonjour Devoxx. 0084a53e9d
N’importe quelle!
taille d’entrée!
Taille de sortie fixe!
La moindre variation!
produit un hash
différent!
Une même entrée produit
toujours le même hash!
10
10. #DevoxxFR
Exemple de hash (SHA256)
69ac2bc80759bd67c763198ffe9c3bc88ff96caaf4a6fee25776149abab64a66
11
14. #DevoxxFR
Propriétés des signatures électroniques
1 message => 1 signature
Non forgeable, même en connaissant la clé publique
Attention à ne pas divulguer sa clé privée
15
17. #DevoxxFR
Block chain (en 2 mots)
Blocs de données qu’on lie entre eux !
en y incorporant le hash du bloc précédent!
19
18. #DevoxxFR
Merkle tree
Franchement, on aurait pu se passer de l’explication technique. Mais on
en trouve partout dans Bitcoin et les autres Blockchains, à tel point
qu’on dit que la Blockchain n’est qu’un gigantesque Merkle Tree. Du
coup, on s’en dit que c’était pas mal d’en parler. Enfin, surtout Yann,
moi j’étais moins chaud, mais comme il a les cheveux longs je lui ai
laissé cette victoire. Et puis comme ça vous pourrez briller en société.
Parce qu’entre nous, si vous ne parlez pas de Blockchain en 2016,
sérieux…
20
22. #DevoxxFR
La transaction dans Bitcoin
Règle #1 : On ne peut transférer que les bitcoins que l’on possède
Transactions de type « Paye »
Règle #2 : Seuls les mineurs peuvent créer des bitcoins (on verra comment plus
tard)
Transactions de type « CoinBase »
24
23. #DevoxxFR
Exemple : Michel veut donner 1 bitcoin à Alice
CoinBase!
Signée par CléPrivéeMichel!
Paye(CléPubliqueAlice, H( ))!
Signée par CléPrivéeMichel!
Paye(CléPubliqueBob, H( ))!
Signée par CléPrivéeAlice!
25
24. #DevoxxFR
Problème #1
Donner plusieurs bitcoins en même temps
CoinBase!
Signée par CléPrivéeMichel!
Paye(CléPubliqueAlice, H( ), H( ))!
Signée par CléPrivéeMichel!
CoinBase!
Signée par CléPrivéeMichel!
26
25. #DevoxxFR
Problème #2 : La division de bitcoins
CoinBase!
Signée par CléPrivéeMichel!
Paye(CléPubliqueAlice, H( ), H( ))!
Signée par CléPrivéeMichel!
CoinBase!
Signée par CléPrivéeMichel!
27
26. #DevoxxFR
Problème #2 : La division de bitcoins
Paye(CléPubliqueAlice, H( ), H( ))!
Signée par CléPrivéeMichel!
Paye([ CléPubliqueBobà 1.5),!
CléPubliqueAliceà 0.5)]!
H( ))!
Signée par CléPrivéeAlice!
Paye(CléPubliqueChris, H( ))!
Signée par CléPrivéeBob!
Paye(CléPubliqueDavid, H( ))!
Signée par CléPrivéeAlice!
28
27. #DevoxxFR
Problème #3 : La double dépense
CoinBase!
Signée par CléPrivéeMichel!
Paye(CléPubliqueAlice, H( ))!
Signée par CléPrivéeMichel!
Pay (CléPubliqueBob, H( ))!
Signée par CléPrivéeAlice!
Paye(CléPubliqueChris, H( ))!
Signée par CléPrivéeAlice!
29
31. #DevoxxFR
Algorithme simplifié
1) Nouvelles transactions sont broadcastés
2) Chaque noeud créé un bloc avec les transactions qu'il a vues, à la suite de sa chaine
3) Un noeud est « tiré au hasard »
4) Ce noeud broadcast son bloc
5) Les autres noeuds recoivent et valident ce block
6) S'il est valide, ils le rajoute à leur chaine
33
38. #DevoxxFR
Point à retenir
Le travail des mineurs est de sécuriser le réseau en :
Validant les transactions
Validant les blocs
S’accordant sur la chaîne
40
51. #DevoxxFR
Ethereum kezaco ?
53
Le début
du web 3.0 ?
dela
Le successeur
de bitcoin ?
dela
Le nouvel investissement avec
1000% de gain garantie ?
dela
54. #DevoxxFR
Mais Ethereum c’est aussi…
56
où tout(e action) se paie !
un ordinateur
qui produit des résultats cohérents
… à terme
aussi rapide … qu’un smartphone
des années 90
55. #DevoxxFR
Les évolutions clés d’Ethereum
57
Des Smart Contracts
Turing Complet
dela
Une blockchain
plus rapide
Une blockchain qui
stocke des données
dela
}
1
2
3
4
5
6.
.
.
.
10
contrat {
57. #DevoxxFR
Block size et Block time
59
600 s
12 s
• Un délai entre 2 blocs
beaucoup plus court !
• Une taille de bloc qui
s’adapte progressivement !
Vers l’infini
et au delà !!
~ 90 kB
58. #DevoxxFR
Impact d’un block time court
60
1
1
1
21'
✗
12 s! 18 s! 24 s!
25%
50%
25%
2
✗ 2
✗
✗
A
B
C
BLOCK TIME: 6 S
3
2'
0 s! 6 s!
59. #DevoxxFR
Solution:
61
GHOST: Greedy Heaviest Observed Subtree
Les blocs orphelins sont:
• inclus dans le calcul du poids d’une
chaîne
• récompensés en Ξther
(jusqu’à la 7ième génération)
le protocole Fantôme
64. #DevoxxFR
Un livre de comptes on steroid !
66
…avec de la donnée
dedans !
Key/Value Storage
Key Value
0x87a7b7…! 4419!
0x87a7b7…! "abc"!
…! …!
structuré par comptes…
Account
Id 0x7f6a65…!
Balance 12 Ξ!
Nonce 14!
Storage Root
Code Hash
Key/Value Storage
Key Value
0x87a7b7…! 4419!
0x87a7b7…! "abc"!
…! …!
Key/Value Storage
Key Value
0x87a7b7…! 4419!
0xa5fc701…! "abc"!
…! …!
Code Storage
Code Hash Code
0x87a7b7…! 010010010…!
…! …!
Account
Id 0x7f6a65…!
Balance 12 Ξ!
Nonce 14!
Storage Root
Code Hash
Account
Id 0x7f6a65…!
Balance 12 Ξ!
Nonce 14!
Storage Root 0x9b65ac…
Code Hash 0x78ab5f6…
65. #DevoxxFR
Les comptes Ethereum
67
• Un compte par utilisateur…
et par Smart Contract !
}
1
2
3
4
5
6.
.
.
.1
0
contrat {
• Simplifie la gestion par les Smart
Contracts et les clients légers
• Identifiant =
{Hash(clé publique) si utilisateur
Hash(clé publique, nonce)
si Smart
Contract
66. #DevoxxFR
L’espace de stockage des contrats
68
• A bas-niveau: une simple base clé / valeur
• Support de tous les types classiques
par les langages de haut-niveau
chaîne de caractères, tableau, mapping…
• Non accessible par les autres contrats …
mais lisible de l’extérieur !
}
1
2
3
4
5.
.
.
.
1
0
contrat {
256 bits ↔ 256 bits
67. #DevoxxFR
Un dropbox décentralisé ?!
69
• Paiement à l’écriture
uniquement !
• Rétribution pour l’effacement
• No limit ! (enfin presque…)
68. #DevoxxFR
… pas vraiment …
70
• Très cher !! ~130 000 € / Go
IN DA
BLOCK
CHAIN
A partir de
1000 €
IN DA
BLOCK
CHAIN
A partir de
320 €
• Limité par
la capacité moyenne des noeuds
le faible débit actuel
70. #DevoxxFR
Un Smart Contract
72
… est un simple programme !!
• stocké dans la blockchain
• capable de modifier l’état de la blockchain
• associé à un identifiant / compte unique
71. #DevoxxFR
Ils sont complètement Turing !!
73
• Permet d’implémenter
tous les algorithmes de calcul
• Des instructions de
conditions et boucles
• Mémoire et stack infinie
76. #DevoxxFR
Et des contraintes
78
• Exécution déclenchée par l’extérieur
uniquement
• Pas d’accès direct aux données externes
• Temps d’exécution limité (par votre argent)
77. #DevoxxFR
C’est qui qui paie ? C’est bibi !
79
• Principe de l’exécuteur - payeur
• Unité de facturation: le Gas
• Monnaie de paiement: l’Ξther
• Ratio Gas / Ξther défini par l’offre et la demande
(à terme)
78. #DevoxxFR
Les langages de développement
80
Solidity
#Devox
xFRSoli
dity
Serpent
LLL
~Javascript
~Python
~Lisp
MOST POPULAR
82. #DevoxxFR
Coût des opérations
84
Operation Gas Ξther Euro
Ajouter!
2 nombres!
3! 3.10-8 Ξ! ~0,00003 ¢!
Saut
conditionnel!
10! 1.10-7 Ξ! ~0,0001 ¢!
Lecture!
Stockage!
50! 5.10-7 Ξ! ~0,0005 ¢!
Ecriture!
Stockage!
20000! 0,0004 Ξ! ~0,4 ¢!
Création
d’un contrat!
32000! 0,00064 Ξ! ~0,64 ¢!
… … … …
Faire la somme
de 100 000 nombres
Tri Quicksort d’un
tableau de 1000 entrées
A partir de
15 €
A partir de
40 €
83. #DevoxxFR
Exécution des transactions
85
New
(kid on the)
Block
State Root
Data 4Data 3Data 2Data 1
State Root
State Root
Data 4Data 3Data 2Data 1
State Root
Data 4Data 3Data 2Data 1
Tx 1 (…) Tx 2 (…)
Transactions Pool
Prev Hash
Prev Hash
State Root
86. #DevoxxFR
Les oracles
88
• Principe: Des Smart Contracts qui
fournissent des informations sur l’état
du monde extérieur
• Permet aux Smart Contracts de
réagir sur des conditions externes
(météo, taux de changes, vue youtube…)
89. #DevoxxFR
Binding javascripts
Framework de tests de contrats
Outils de développement
91
Embark
Les frameworks de développement et déploiement Ðapps
Ðapps(contracts
Automatisent
Construction, tests et déploiement
Gestion des environnements
Fournissent
93. #DevoxxFR
Les apports
95
• Une plateforme transactionnelle ouverte à tous et
disponible
• Des transactions auditables
• Des coûts de transactions faibles
• Du paiement à l’usage
• Des transactions sans besoin de confiance mutuelle
94. #DevoxxFR
Les grands types d’usage
96
Certifications,
preuve d’antériorité
Echanges pair à pair
et pouvoir de la foule
Internet
des objets
Produits
financiers / monétaires
96. #DevoxxFR
Les échanges pair à pair
98
Place de marché pour la location
d’appartements ou de biens
Place de marché
pour les prédictions
LaZooz
Plateforme de co-voiturage
décentralisé
98. #DevoxxFR
Produits financiers
100
Automatisation de l’émission
et la gestion des obligations
Utilisation d’une monnaie spécialisée
pour le stockage décentralisé
Place de marché des titres
de société non côtés
sur la blockchain
115. #DevoxxFR
" We should have built
payments in the browser "
Marc Andreessen
Mosaic, Netscape
" We tried "
117
116. #DevoxxFR
Take away
Bitcoin et la technologie Blockchain vont impacter le monde
La nature et l’ampleur de l’impact restent inconnus
Ecrivons l’histoire…
... et évitons que d’autres le fasse à notre place
118
118. #DevoxxFR
OCTODe la startup à la multinationale, OCTO intervient
partout où l’informatique joue un rôle déterminant dans
la transformation des sociétés.
On recrute J
120