3. 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 traffic
de l’ensemble des réseaux sociaux.
• Les 14 concurrents d’Amazon
représentent ensemble seulement
1/5 de sa capacité.
4. 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’sfuture relies
on individuals owning
their data”
Tim Berners-Lee
6. 6
Qu’est ce que la confiance décentralisée ?
• Accorder une confiance forte à des informations
non 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. 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)
9. 9
Etape 1. La transaction est envoyée à
tout le réseau
10. 10
Etape 2. Un participant est tiré au sort
pour mettre ensemble toutes les
transactions en cours (créer un bloc)
11. 11
Etape 3. Le “gagnant” reçoit la
récompense (actuellement de 25 BTC)
12. 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. 13
Qu’est ce que la Blockchain ?
Registre centralisé Registre distribué
15. 15
Preuve de travail Preuve de participation
Validationdes 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. 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. 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. 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. 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 .bit
http://namecoin.info/
• Cadastre,
• Registre de propriété de véhicules,
• Certificats de naissance, de décès,
• Registre de Fonds d’Investissements,
20. 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
22. Solidity
Solidity 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!";
}
}
23. Du code source au contrat...
Code
source
Solidity
0100010010010010110111...
[{
“inputs”:[],
”outputs”:
[{“type”:”string”}],
”name”:”sayHello”
},...]
code binaire +
Application Binary
Interface
Compilation Déploiement
0x18a73b389cf3...
adresse du
contrat
24. IDE
Pour 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.
25. 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.
26. 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
27. 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.
28. Dapp : decentralized applications
Ethereum
node
(geth)
Ethereum
network
Frontend
application
(JavaScript SPA)
JSON-RPC
WEB3.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’application
est accessible à tous les utilisateurs d’Ethereum (via Mist par
exemple).
29. 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
30. 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
31. 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
32. 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!
34. Une faille dans une fonction des contrats
Une 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.
35. 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. 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 un
Tiers de confiance ?
Faut-il contrôler les
fonctionnalités ?
Les transactions doivent-
elles être public ou privées ?
Les participants ont-ils
les mêmes intérêts ?
Nature du consensus
Blockchain
Publique
Blockchain
Hybride
Blockchain
Privée
Pas besoin de
Blockchain
Non
Non
Oui
Oui
Oui
privées
publiques
Non
Non
Non
Oui
Oui
Oui
Non
Intra firm
Interfirm