40
Tout ce que vous ne savez (probablement) pas encore sur la Blockchain Fabrice CROISEAUX

Introduction à la Blockchain Voxxed day luxembourg

Embed Size (px)

Citation preview

Page 1: Introduction à la Blockchain Voxxed day luxembourg

Tout ce que vous ne savez (probablement) pas encore

sur la Blockchain

Fabrice CROISEAUX

Page 2: Introduction à la Blockchain Voxxed day luxembourg

Pourquoi une nouvelle technologie ?

Page 3: Introduction à la Blockchain Voxxed day luxembourg

3

Des acteurs hyper centralisés

• 46,000 recherches Google, 8,000 tweets, 1,600 appels Skype, par seconde

• 6 milliards d’heures de vidéo visionnées sur Youtube chaque mois

• Amazon a envoyé 5 milliards de paquets en 2014.

• Facebook représente 71% du trafficde l’ensemble des réseaux sociaux.

• Les 14 concurrents d’Amazon représentent ensemble seulement 1/5 de sa capacité.

Page 4: Introduction à la Blockchain Voxxed day luxembourg

4

Des acteurs hyper centralisés

• les utilisateurs confient leurs données et leurs fonds en faisant confiance à des sociétés privées.

• Les acteurs de la « Sharing Economy » : Uber, RBnB ont un pouvoir très importants

• Ils utilisent et monétisent les données des utilisateurs.

• Ils sont autant de « Single Point of Failure » exposés aux attaques.

“The Web’s future relies on individuals owningtheir data”

Tim Berners-Lee

Page 5: Introduction à la Blockchain Voxxed day luxembourg

5

Blockwhat ?

Centralisé Décentralisé

Page 6: Introduction à la Blockchain Voxxed day luxembourg

6

Qu’est ce que la confiance décentralisée ?

• Accorder une confiance forte à des informationsnon gérées de façon centralisée.

• Faire confiance aux informations sans faire confiance aux participants au réseau.

• Pas de Single Point Of Failure dans la chaine de confiance.

• Tous les participants au réseau ont un rôle symétrique.

Page 7: Introduction à la Blockchain Voxxed day luxembourg

7

=• N’importe qui peut entrer dans le système très facilement et sans contrôle,

• Le transfert de monnaie est :

• Quasi immédiat (environ 10 minutes en réalité),

• Irrévocable,

• Certain.

• Le système vérifie que la monnaie échangée est valide (parallèle avec le contrôle des billets de banque)

Page 8: Introduction à la Blockchain Voxxed day luxembourg

8

Comment ça marche ?

Page 9: Introduction à la Blockchain Voxxed day luxembourg

9

Etape 1. La transaction est envoyée à tout le réseau

Page 10: Introduction à la Blockchain Voxxed day luxembourg

10

Etape 2. Un participant est tiré au sort pour mettre ensemble toutes les

transactions en cours (créer un bloc)

Page 11: Introduction à la Blockchain Voxxed day luxembourg

11

Etape 3. Le “gagnant” reçoit la récompense (actuellement de 25 BTC)

Page 12: Introduction à la Blockchain Voxxed day luxembourg

12

Etape 4. Le bloc créé est sécurisé de manière cryptographique et ajouté à la

blockchain

Une fois dans un bloc, la transaction est “confirmée” et Bob a reçu son Bitcoin

Page 13: Introduction à la Blockchain Voxxed day luxembourg

13

Qu’est ce que la Blockchain ?

Registre centralisé Registre distribué

Page 14: Introduction à la Blockchain Voxxed day luxembourg

14

Qu’est ce que la Blockchain ?

Page 15: Introduction à la Blockchain Voxxed day luxembourg

15

Preuve de travail Preuve de participation

Validation des transactions

La probabilité de valider (miner) un bloc dépend de la quantité de travail effectuée par le nœud.

La récompense est donnée au mineur par création de monnaie

La probabilité de valider un bloc dépend de la quantité de monnaie virtuelle possédée par le nœud.

La récompense est donnée au mineur par des frais prélevés sur les transactions

Page 16: Introduction à la Blockchain Voxxed day luxembourg

16

UTXO Account Based

Connaître le solde d’un compte.

Les soldes des adresses ne sont pas stockés.Seule est vérifiée la possibilité de dépenser les crypto-currencies de la transaction.La somme des ouputs est égale à la somme des inputs.

Une adresse = un compte.Les soldes des comptes sont stockés.

Page 17: Introduction à la Blockchain Voxxed day luxembourg

17

Pseudonymité : 100% anonyme 100% transparent

N’importe qui peut se générer une adresse et interagir via cette adresse. Sans procédure KYC particulière, le système est anonyme.

Le fait de générer une adresse par transaction permet de ne pas connaître le solde d’une personne en analysant la blockchain qui est publique.

Il est possible d’analyser les transactions si l’on connaît les adresses. Le fait que la blockchain soit publique conduit certains analystes à dire que la blockchain est un système qui permet de faire des contrôles AML très efficacement si le KYC est bien réalisé.

Page 18: Introduction à la Blockchain Voxxed day luxembourg

18

Les limites du système

• Le problème des 51%

• Gestion et perte des comptes ou de cryptocurrency (transfert sur un compte mort)

• Confidentialité et KYC

• Impossibilité de refuser une transaction

• Impossibilité de révoquer une adresse

Page 19: Introduction à la Blockchain Voxxed day luxembourg

19

Smart Properties

Stockage dans la blockchain d’un titre de propriété dématérialisé.

Namecoin est par exemple un registre de nom décentralisé et open source qui se base sur la blockchain pour stocker les propriétaire de noms de domaines en .bithttp://namecoin.info/

• Cadastre,• Registre de propriété de véhicules,• Certificats de naissance, de décès,• Registre de Fonds d’Investissements,

Page 20: Introduction à la Blockchain Voxxed day luxembourg

20

Smart Contracts

Un Smart Contract est un agrément entre parties modélisé et stocké dans la blockchain et dont l’exécution est gérée automatiquement.

Exemples : • gestion de paris, • hypothèques, • héritage, • … Blockchain

T1 : Création du contrat

T2 : Dépôts des fonds par les parties

T3 : Evénement déclencheur

T4 : Paiement et déblocage

Page 21: Introduction à la Blockchain Voxxed day luxembourg

Développer sur laBlockchain

Exemple avec Ethereum

Page 22: Introduction à la Blockchain Voxxed day luxembourg

SoliditySolidity est un langage orienté objet permettant l’écriture de Smart Contract.

Via une syntaxe assez simple, on y trouve des types primitifs, la définition de fonction, une notion d’héritage, des structures de contrôle, la possibilité de définir des structures de données, …

contract MyContract{

address owner;

MyContract(){

owner = msg.sender;

}

function sayHello() returns(string) {

if (msg.sender == owner)

return "Hello my owner!";

else

return "Hello you!";

}

}

Page 23: Introduction à la Blockchain Voxxed day luxembourg

Du code source au contrat...Code

sourceSolidity

0100010010010010110111...

[{“inputs”:[],”outputs”:

[{“type”:”string”}],”name”:”sayHello”

},...]

code binaire + Application Binary

InterfaceCompilation Déploiement

0x18a73b389cf3...

adresse du contrat

Page 24: Introduction à la Blockchain Voxxed day luxembourg

IDEPour développer des Smart Contracts, il est nécessaire d’avoir au minimum un compilateur Solidity.

Il existe plusieurs implémentations : solc, solc-js, browser-solidity

Mix est un IDE Open Source utilisé pour le développement sur Ethereum.

Il embarque des éditeurs pour les différents code source, un compilateur Solidity, et différents outils pour tester les contrats.

Page 25: Introduction à la Blockchain Voxxed day luxembourg

Environnements de développement

L’instanciation et le déploiement de contrat sur la blockchain publique coûte de l’ether.

Durant le développement, les tests se font donc généralement sur des blockchains locales, pour faire abstraction de ces problématiques.

TestRPC est une implémentation de la blockchain Ethereum “en mémoire”, pratique pour le développement et les tests.

Page 26: Introduction à la Blockchain Voxxed day luxembourg

Frameworks

Des frameworks commencent à émerger pour le développement, notamment Truffle et Embark.

Ces packages NPM offrent un outillage classique pour les développeurs :

Automatisation de la compilation Solidity

Intégration aux outils de tests unitaires

Automatiser le déploiement

Page 27: Introduction à la Blockchain Voxxed day luxembourg

Communiquer avec la Blockchain

La Blockchain est donc par définition un “environnement fermé” : les seules opérations possibles sont celles définies par EVM.

Comment visualiser les données stockées par un Smart Contract ? Comment accéder à des données stockées à l’extérieur de la Blockchain ? Comment réagir à des événements survenus dans la Blockchain ?

Différentes solutions existent. Toutes reposants sur l’interface JSON RPC exposée par les noeuds Ethereum.

Page 28: Introduction à la Blockchain Voxxed day luxembourg

Dapp : decentralized applications

Ethereum node(geth)

Ethereum network

Frontend application

(JavaScript SPA) JSO

N-R

PC

WEB

3.JS TCP/IP

IPC

Le frontend de la “Dapp” est implémenté en JS (Angular 2, …) et utilise la librairie web3.js pour communiquer avec un noeud Ethereum.

Le backend (Smart Contracts) est déployé sur la Blockchain.

Le frontend est ensuite déployé publiquement (Swarm) et l’applicationest accessible à tous les utilisateurs d’Ethereum (via Mist par exemple).

Page 29: Introduction à la Blockchain Voxxed day luxembourg

Solidity Events

Un besoin courant est d’exécuter du code extérieur lorsque certains événements se produisent dans la Blockchain.

Ethereum propose pour cela un mécanisme d’Evénements :

Les Smart Contracts peuvent émettre des événements lors de l’exécution des fonctions

Ces Evenements peuvent être monitorés depuis l’extérieur via l’interface JSON RPC

Page 30: Introduction à la Blockchain Voxxed day luxembourg

Ethereum Oracles

Certains contrats ont besoin d’accéder à des ressources externes pour leur exécution (web service REST, exécution de code non supporté sur EVM, …).

Il y a donc besoin d’une interface, depuis la Blockchain, vers le monde extérieur.

Dans Ethereum, ce pattern est appelée Oracle

Page 31: Introduction à la Blockchain Voxxed day luxembourg

Ethereum Oracles - Exemple (simplifié)

“Off-chain”“In-chain”

Smart Contract“Oracle”

Smart Contract“Client” get(url)

Evt GET”

response(data)

Oracle HTTP client

Détecte les événements “GET”, contacte le service

REST et retourne le résultat

callback(data)

Souhaite accéder à une ressource externe

WWW

Page 32: Introduction à la Blockchain Voxxed day luxembourg

The DAO: un fond d’investissement décentralisé

D.A.O : Decentralized Autonomous Organization.

Organisation dont le mode de fonctionnement est basé sur des smart contracts. Concept lié aux blockchains et à leurs possibilités .

The DAO : un des premier DAO vraiment effectif. un fond d’investissement décentralisé sur Ethereum.finance potentiellement d’autres projets “autonome”, basé sur des smart contract.

En mai 2016: 11 millions d d’ETH levé, soit 146 millions d’euros!

Page 33: Introduction à la Blockchain Voxxed day luxembourg

Breaking NewsLe Split Gate

Page 34: Introduction à la Blockchain Voxxed day luxembourg

Une faille dans une fonction des contratsUne faille a été découverte dans une des fonctions de “The DAO”.

La fonction Split, permet de transférer le fond vers un nouveau DAO.

l’ETH est bloqué sur un compte pendant 27 jours.

=> Faille : appels récursif possible sur la fonction Split!

le 17 juin 2016: The DAO a été attaqué, 3 millions d’ETH ont été siphonnés.

Des solutions (Soft Fork & Hard Fork) ont été proposées mais nécessitent l’adhésion d’une majorité de nœuds.

Page 35: Introduction à la Blockchain Voxxed day luxembourg

Les questions soulevées

Ça a refroidit la communauté !

La fin de The DAO ? une nouvelle version prévue (sans failles ?).

Impacts financiers limités, mais si cela avait été découvert plus tard ?

Tout les détracteurs ont maintenant un exemple pour faire peur !

Montre la vulnérabilité du système à la faute dans le code (de TheDAO, pas Ethereum)=> Tests unitaires recommandés !

Sur la Blockchain plus qu’ailleurs la qualité des développements est primordiale. The Code is Law.

Page 36: Introduction à la Blockchain Voxxed day luxembourg

36

Avez-vous besoin d’une blockchain ?Avez vous besoin d’une base de données ?

Avez vous besoin d’accès partagé en écriture ?

Les participants sont-ils connus et de confiance ?

Voulez-vous utiliser unTiers de confiance ?

Faut-il contrôler les fonctionnalités ?

Les transactions doivent-elles être public ou privées ?

Les participants ont-ilsles mêmes intérêts ?

Nature du consensus

BlockchainPublique

BlockchainHybride

BlockchainPrivée

Pas besoin de Blockchain

Non

Non

Oui

Oui

Oui

privées

publiques

Non

Non

Non

Oui

Oui

Oui

Non

Intra firm

Interfirm

Page 37: Introduction à la Blockchain Voxxed day luxembourg

Quels Use Cases

Page 38: Introduction à la Blockchain Voxxed day luxembourg

38

Uberiser Uber grâce à la blockchain !

Smart Contract

User

Page 39: Introduction à la Blockchain Voxxed day luxembourg

39

Quels business models pour la blockchain ?

?

Page 40: Introduction à la Blockchain Voxxed day luxembourg

ContactPour plus d’informations

[email protected]+352 53-11-53-1

Merci