La blockchain en détail - Devoxxfr 2016 - Benoit Lafontaine - Yann Rouillard

Preview:

Citation preview

#DevoxxFR

La Blockchain en détails

Benoit Lafontaine Yann Rouillard

1

#DevoxxFR

OCTO

2

#DevoxxFR

Benoît Lafontaine!Directeur Technique !bla@octo.com !@joel1di1!

Yann Rouillard!Consultant Senior !yro@octo.com !@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

Recommended