La blockchain en détail - Devoxxfr 2016 - Benoit Lafontaine - Yann Rouillard
Click here to load reader
-
Upload
benoit-lafontaine -
Category
Technology
-
view
1.738 -
download
0
Transcript of La blockchain en détail - Devoxxfr 2016 - Benoit Lafontaine - Yann Rouillard
#DevoxxFR
La Blockchain en détails
Benoit Lafontaine Yann Rouillard
1
#DevoxxFR
OCTO
2
#DevoxxFR
Benoît Lafontaine!Directeur Technique [email protected] !@joel1di1!
Yann Rouillard!Consultant Senior [email protected] !@yannrouillard!
3
#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
#DevoxxFR
Bitcoin, comment ça marche?
6
#DevoxxFR
Bitcoin est un réseau pair à pair permettant de transférer de
l'argent, sans avoir recours à une entité centrale, telle une banque
7
#DevoxxFR
Notions de base en cryptographie
Fonction de hachage & signature électronique
(rien de bien nouveau sous le soleil)
8
#DevoxxFR
Fonction de hachage ou « Hash »
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
#DevoxxFR
Exemple de hash (SHA256)
69ac2bc80759bd67c763198ffe9c3bc88ff96caaf4a6fee25776149abab64a66
11
#DevoxxFR
Propriétés des hashs
Rapide ! Résistant à la collision!
Origine H(origine)
Mon message 78baf23503
Non réversible !
12
#DevoxxFR
Signature électronique
13
#DevoxxFR
Principe de la signature électronique
Kpub, Kpriv = GenerateKeys!!!Signature = sign(Kpriv, message) !!!isValid = verify(Kpub, message, signature) !
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
#DevoxxFR
Après la crypto, les structures de données
17
#DevoxxFR
Block chain (en 2 mots)
18
#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
#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
#DevoxxFR
Merkle Tree
H( ) !
21
#DevoxxFR
Merkle Tree
H( ) !
22
#DevoxxFR
Assemblage
23
#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
#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
#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
#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
#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
#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
#DevoxxFR
Diffusion d’une transaction
30
#DevoxxFR
Comment trouver un consensus ?
Sans entité centrale
Sans faire confiance aux participants
31
#DevoxxFR
Détail d’un bloc
32
#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
#DevoxxFR
Tirage au sort => Proof of Work
34
#DevoxxFR
Tirage au sort
H() !
Trouver une valeur du nonce pour laquelle H(_) < valeur !
35
#DevoxxFR
Algorithme du Proof Of Work
while block_hash > difficulty ! nonce = rand() ! block_hash = hash( block_header :: nonce ) !
36
#DevoxxFR
Exemple de valeurs d’un bloc Hash : 000000000000000001e2e3256cc81bf2c1c3e1d9230b1124c5cfd411adf03be2! Nonce : 104098959
37
#DevoxxFR
Forks
A à B !
A à C!
38
#DevoxxFR
Une transaction ancienne est plus « sûre »
Potentiellement écrasable!
Peu probable d’être écrasée !
Considérée comme sûre!
39
#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
#DevoxxFR
"If you’re good at something, never do it for free." A happy Bitcoin miner
41
#DevoxxFR
Rémunération
42
#DevoxxFR
Enjeux
43
#DevoxxFR
Enjeux
Vitesse Proof of Work
Scalabilité SmartContracts
44
#DevoxxFR
Proof of work
45
#DevoxxFR
Evolution de la difficulté
46
#DevoxxFR
Le problème des pools de minage
47
#DevoxxFR
Alternatives
LiteCoin!
NXT!
48
#DevoxxFR
Vitesse et scalabilité
49
Temps entre les blocs (10 mins)! Nombre de transactions par bloc !
#DevoxxFR
Bitcoin, monnaie programmable Langage de script, limité Multisignatures (ex: 2 sur 3) LockTime Whiteliste
50
#DevoxxFR
Pause, questions
51
#DevoxxFR 52 #DevoxxFR
#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
#DevoxxFR
Ethereum c’est …
54
décentralisé
un ordinateur
infalsifiable
toujours disponible
accessible de partout …
… et par tout le monde !
#DevoxxFR
Ethereum c’est …
55
#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
#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 {
#DevoxxFR
Une Blockchain plus rapide
58
#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
#DevoxxFR
Impact d’un block time court
60
1
1
1
2 1' ✗
12 s! 18 s! 24 s!
25%
50%
25%
2
✗ 2
✗
✗A
B
C
BLOCK TIME: 6 S
3
2'
0 s! 6 s!
#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
#DevoxxFR
Avant …
62
Orphan block
Orphan block
#DevoxxFR
Avant …
63
Orphan block
Orphan block
#DevoxxFR
Après …
64
Uncle block
Uncle block
#DevoxxFR
Des données dans la blockchain
65
#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…
#DevoxxFR
Les comptes Ethereum
67
• Un compte par utilisateur… et par Smart Contract !
}
1 2 3 4 5 6 . . . . 10
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
#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 . . . . 10
contrat { 256 bits ↔ 256 bits
#DevoxxFR
Un dropbox décentralisé ?!
69
• Paiement à l’écriture uniquement !
• Rétribution pour l’effacement
• No limit ! (enfin presque…)
#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
#DevoxxFR
Des contrats intelligents
71
#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
#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
#DevoxxFR
Transactions et Smart Contracts
74
1234
"abc"
0xe6f
Ethereum State N
4419
"def"
0xde9
Ethereum State N+1
}
1 2 3 4 5 6 . . . .
10
contrat { Ethereum Computer
0x7f6a65…
Transaction Numéro 12!Montant 4 Ξ!
Destinataire 0x7f6a65… Données 2, "toto" !
Code Execution Acteur externe
#DevoxxFR
Interactions entre Smart Contracts ConContracts
75
}
1 2 3 4 5 6 . . . .
10
contrat {
Les Smart Contracts parlent aux Smart Contracts !
}
1 2 3 4 5 6 . . . .
10
contrat {
}
1 2 3 4 5 6 . . . .
10
contrat {
Contrat de notation
Contrat de titrisation Contrats
de prêt }
1 2 3 4 5 6 . . . .
10
contrat {
}
1 2 3 4 5 6 . . . .
10
contrat {
}
1 2 3 4 5 6 . . . .
10
contrat {
Contrat d’investissement
automatique
Récupère!la liste de prêts!
Récupère les infos!de remboursement!
Récupère remboursement !
Demande la note!
Achète !
#DevoxxFR
Interactions entre Smart Contracts ConContracts
76
}
1 2 3 4 5 6 . . . .
10
contrat {
Les Smart Contracts parlent aux Smart Contracts !
}
1 2 3 4 5 6 . . . .
10
contrat {
}
1 2 3 4 5 6 . . . .
10
contrat {
Contrat de notation
Contrat de titrisation Contrats
de prêt }
1 2 3 4 5 6 . . . .
10
contrat {
}
1 2 3 4 5 6 . . . .
10
contrat {
}
1 2 3 4 5 6 . . . .
10
contrat {
Contrat d’investissement
automatique
Récupère!la liste de prêts!
Récupère les infos!de remboursement!
Récupère remboursement !
Demande la note!
Achète !function request_notation (…) { // return score(load) return "Triple A" }
#DevoxxFR
Des propriétés intéressantes
77
• Immutabilité
• Durabilité (ou presque)
• Atomicité • Séquentialité • Durabilité
Transactions
Code
#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)
#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)
#DevoxxFR
Les langages de développement
80
Solidity#DevoxxFRSoli
dity
Serpent
LLL
~Javascript
~Python
~Lisp MOST POPULAR
#DevoxxFR
Les Ðapps
81
Decentralized Applications (le futur)
}
1 2 3 4 5 6 . . . .
10
contrat {
Ethereum
HTML application
Smart Contract
Backend Frontend
Decentralized Storage
(IPFS, Swarm…)
Mist Web 3.0 Browser
Desktop
#DevoxxFR
Les Ðapps
82
Decentralized Applications (actuellement)
}
1 2 3 4 5 6 . . . .
10
contrat {
Ethereum
HTML application
Smart Contract
Backend Frontend
Web Server
Web Browser
Desktop
#DevoxxFR
Live Demo
83
#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 €
#DevoxxFR
Exécution des transactions
85
New (kid on the)
Block
Tx 1 (…) Tx 2 (…)
State Root
Data 4 Data 3 Data 2 Data 1
State Root
State Root
Data 4 Data 3 Data 2 Data 1
State Root
Data 4 Data 3 Data 2 Data 1
Tx 1 (…) Tx 2 (…)
Transactions Pool
Prev Hash Prev Hash
State Root
#DevoxxFR
Vérification des transactions
86
New Block
Tx 1 (…) Tx 2 (…)
State Root
Data 4 Data 3 Data 2 Data 1
State Root
State Root
Data 4 Data 3 Data 2 Data 1
State Root
Data 4 Data 3 Data 2 Data 1
Prev Hash Prev Hash
Tx 1 (…) Tx 2 (…)
State Root
= ?
#DevoxxFR
Exemple de service
87
#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…)
#DevoxxFR
Les oracles: mode synchrone
89
}
1 2 3 4 5 6 . . . .
10
contrat {
Smart Contract
}
1 2 3 4 5 6 . . . .
10
contrat {
Ethereum
Oracle Contract
External Program
Transmet!à l’oracle! 1112 Récupère!
l’info!13 Interroge!l’oracle!
Régulièrement!
#DevoxxFR
Les oracles: mode asynchrone
90
}
1 2 3 4 5 6 . . . .
10
contrat {
Ethereum
Oracle Contract
External Program
Régulièrement!
13 Récupère!l’info!
13 Interroge!l’oracle!
Transmet!à l’oracle!
14
11Interroge!l’oracle!
12 Notification !
Transmet!au contrat!
15 }
1 2 3 4 5 6 . . . .
10
contrat {
Smart Contract
#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
#DevoxxFR
Les évolutions futures
92
#DevoxxFR
Ethereum 1.5, 2.0 … 3.0
93
• Mist Web 3.0 Browser
• Proof of Stake
• Amélioration de la scalabilité
• Support des transactions privées
#DevoxxFR 94 #DevoxxFR
Mais bordel à quoi ça sert ce truc ?!!
#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
#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
#DevoxxFR
Certifications
97
Certification des diplômes d’école d’ingénieurs
Enregistrement des créations et des droits d’auteurs dans la blockchain
Enregistrement du cadastre au Ghana et au Honduras
#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é
#DevoxxFR
L’Internet des objets
99
Système de verrous piloté par Smart Contract
ADEPT: Plateforme pour la gestion d’objets connectés
#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
#DevoxxFR
La gouvernance
101
#DevoxxFR 102
Eviter la censure
#DevoxxFR 103
#DevoxxFR 104
Smart Contracts
#DevoxxFR 105
#DevoxxFR 106
#DevoxxFR 107
#DevoxxFR 108
Qui contrôle le code ?
#DevoxxFR 109
Hashocracy ?
#DevoxxFR 110
#DevoxxFR 111
#DevoxxFR 112
#DevoxxFR 113
#DevoxxFR 114
#DevoxxFR 115
Derrière la technologie, des hommes
#DevoxxFR 116
Ne pas faire de choix c’est faire un choix
#DevoxxFR
" We should have built payments in the browser "
Marc Andreessen Mosaic, Netscape " We tried "
117
#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
#DevoxxFR 119
Merci de votre attention
#DevoxxFR
OCTO De 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