Upload
fabrice-croiseaux
View
613
Download
0
Embed Size (px)
Citation preview
Tout ce que vous ne savez (probablement) pas encore
sur la Blockchain
Fabrice CROISEAUX
Pourquoi une nouvelle technologie ?
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é.
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
5
Blockwhat ?
Centralisé Décentralisé
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.
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)
8
Comment ça marche ?
9
Etape 1. La transaction est envoyée à tout le réseau
10
Etape 2. Un participant est tiré au sort pour mettre ensemble toutes les
transactions en cours (créer un bloc)
11
Etape 3. Le “gagnant” reçoit la récompense (actuellement de 25 BTC)
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
13
Qu’est ce que la Blockchain ?
Registre centralisé Registre distribué
14
Qu’est ce que la Blockchain ?
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
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.
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é.
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
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,
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
Développer sur laBlockchain
Exemple avec Ethereum
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!";
}
}
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
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.
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.
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
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.
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).
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
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
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
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!
Breaking NewsLe Split Gate
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.
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.
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
Quels Use Cases
38
Uberiser Uber grâce à la blockchain !
Smart Contract
User
39
Quels business models pour la blockchain ?
?