Présentation faite au Breizhcamp 2019
Blockchain, Ethereum, Smart-Contracts... on en entend souvent parler mais qu'est ce que ça donne réellement en production ?
Cette conférence sera l'occasion de présenter notre REX de mise en production d'une application web basée sur l'utilisation de Smart Contract Ethereum. Après avoir présenté brièvement les concepts clés de Blockchain Ethereum et Smart Contract, nous présenterons notre retour d'expérience sur le développement d'une application VueJs/Java permettant l'échange de cryptomonnaie dite "tokenisée" (EC-20) via Smart Contract Ethereum.
11. Date Description Crédit Débit Solde
01/12/2018 Report 5 000 €
02/12/2018 Achats carte 1 000 € 4 000 €
03/12/2018 Paiement Loyer 1 000 € 3 000 €
05/12/2018 Salaires 3 000 € 6 000 €
Paul donne 3 Coins à Marie
Paul donne 7 Coins à Philippe
Marie donne 2 Coins à Paul
Livre de compte
Registre
Liste de Transactions
Balance
Registre / Livre de compte
11
12. Paul possède le Titre A
Temps2017
Marie possède le Titre A
2018
Création d’un nouveau Bloc
Impossible de modifier
un Bloc existant
Bloc
#1
Bloc
#2
Bloc
#3
Bloc
#4
Bloc
#5
Blockchain
Registre immuable et distribué
12
17. Validation d’un nouveau Bloc
=
Résolution d’un problème algorithmique
Concurrence de tous les « mineurs »
-> résoudre le problème : « Preuve de Travail »
M
Au bout d’un certain temps...
-> un mineur trouve la solution
-> communique à l’ensemble des contributeurs M
Minage / Preuve de Travail
M
M
M
M
MM
M
M
MM
M
M
R
R
17
18. Bloc Validé : > 50% mineurs valident
la solution apportée
Le mineur est rémunéré :
- « récompense »
- frais de transactions
Minage / Récompense
R
M
M
M
M
MM
M
M
MM
M
M
R
18
20. Sécurité
• Repose sur la cryptographie
• Signature des transactions
• utilisateur / compte / wallet :
• 1 adresse & 1 jeu de clés / signature uniques
Clé Privée Clé Publique Adresse du compte
Elliptic Curve
Multiplication
Hashing
Function
21
23. La blockchain est une technologie distribuée
de stockage et de transmission de valeur,
transparente, sécurisée et fonctionnant sans
organe central de contrôle.
Définition
24
25. Ethereum
• Crée en 2013 par Vitalik Buterin
• Plus uniquement monétaire...
• Exécution de code
26
26. Smart Contract
Code déployé sur la blockchain Ethereum
• Immuable
• Transparent
• EVM
• Machine virtuelle sur chaque nœud
• « Ordinateur décentralisé »
Caractéristiques
• Accessible depuis une adresse
• Déterministe
• Stockage clé/valeur
27
27. Smart Contract
« Un smart contract nous garantie une exécution de code
immuable assurée par un consensus global inhérent à la
blockchain de façon décentralisé »
28
29. Tokens
Deux types de crypto-monnaies
• Ether
• permet de faire fonctionner la blockchain
• soumit à la spéculation
• Tokens
• au-dessus de l’Ether
• monnaie contrôlée par son créateur
• décorrelée (ou presque) du cours de l’Ether
30
34. Contexte fonctionnel
Plateforme d’échange de token ERC20
– Gestion des transactions
• Envoi / Réception / Consultation
– Abstraction de la blockchain Ethereum
• Fourniture en Ether
– Gestion de la sécurité des comptes
– Modèle de rémunération
– Politique monétaire
• Liquidités : 40 M de tokens, 18 décimales
• Taux de change 1€ = 1 Token
35
39. Stack technique
Deux écosystèmes JS/Java à réunir
• Automatisation de la génération du client Java depuis
les sources du smart contract
– compilation du smart contract via truffle
– génération du client Java via web3j
– déploiement de la librairie sur nexus
• Docker, Gitlab CI
40
41. Smart Contract
Caractéristiques
• Basé sur le standard de token ERC-20
• Implémentation assurée par OpenZeppelin
• Enrichi pour les besoins de la plateforme
42
42. Smart Contract
• Problématiques
– Immutabilité
• Déploiement sur les réseaux Ethereum
– Sécurité
• Failles
• Solutions
– Limiter le périmètre
– Auditable
– Testable
• Via Truffle (Mocha, Chai)
43
43. Problématiques
• Sécurité
– Gestion des droits
– Cérémonie de déploiement en production
• Interactions Smart Contract
– Gestion du temps réel
44
45. Smart Contract : Gestion des droits
Problématique
• Garder le contrôle des interactions et utilisations
du smart contract
• Gérer les souscriptions utilisateurs
• Isoler le plus possible le risque de compromission
46
46. Smart Contract : Gestion des droits
Solution
Déclaration au sein du smart contract de « rôles » :
• ROOT : créateur du contrat, peut ajouter les droits
d’administrations
• SPENDER : peut envoyer des tokens
• RECEIVER : peut recevoir des tokens
• ADMIN : peut ajouter les droits SPENDER et RECEIVER
• PAUSER : désactivation des méthodes du contrats
• MINTER : créateur de token
47
50. Smart Contract
Problématique
• Encadrer la génération et la fourniture des clés
déploiement du smart contract (compte ROOT)
• Limiter au maximum les facteurs de
compromission du smart contract
51
51. Smart Contract
Solution
• Génération du compte ROOT depuis un PC
• Règles de sécurité (intervenants, matériel, salles etc.)
• Utilisation d’un HD wallet
– Pas de clé privée partagée
– Mnemonic de 12 mots
• Stockage des 12 mots en 3 feuilles plastifiées stockées
à 3 endroits différents
• Déploiement du contrat
– Ajouts des droits admin aux comptes préalablement crées
52
53. Smart Contract : Gestion du temps réel
Problématique
L’utilisation de la blockchain induit de prévoir une
gestion du temps réel :
• Gestion du gas
– Une transaction (transfert de token, ajout de droits etc.)
peut prendre de 2 à 30min selon le gas utilisé
• Assurer une expérience utilisateur satisfaisante
• Validité de la transaction ?
54
54. Smart Contract : Gestion du temps réel
Solutions
Transfert de token
• 12 confirmations
– Une transaction peut être définitivement considérée
comme valide après que 12 blocks soient minés au
dessus du block contenant la transaction d’origine
• Assurer une expérience utilisateur satisfaisante
– Retour UX différent suivant l’état de la transaction
• Pending
• Minted
• 12 confirmations
55
58. Smart Contract : Gestion du temps réel
Solutions
Création des wallets utilisateurs
• Pool de Wallets Ethereum
– Droits de receiver et spender déjà ajoutés
– Gains de temps (7-8min) lors de la création du compte
utilisateur
59
60. Mise à jour « Serenity »
Scalabilité améliorée (1 000 Tx/s)
• Actuellement 20 tx/s
• Cryptokitties
• Visa/Mastercard 1700 tx/s (th. 56k tx/s)
Features
• « Sharding »
• « Proof of stake » au lieu de « Proof of work »
• EVM 2.0 : EWASM
• Smart Contract in several languages
Date… Soon™
Ethereum 2.0
62
REX Blockchain
Vulgariser la blockchain
Discours aux devs
Demystifier ?
Fait vendre
Ajouter
Fait vendre
Ajouter
Une ICO (Initial Coin Offering) est une méthode de levée de fonds fonctionnant via l’émission d’actifs numériques échangeables contre des cryptomonnaies durant la phase de démarrage d’un projet (définition de ICO Mentor).
Fintech : centralisation vs décentralisation
Une ICO (Initial Coin Offering) est une méthode de levée de fonds fonctionnant via l’émission d’actifs numériques échangeables contre des cryptomonnaies durant la phase de démarrage d’un projet (définition de ICO Mentor).
Fintech : centralisation vs décentralisation
Du a la nature P2P, si on supprime des nœuds du réseau, cela fonctionne encore
9k ETHEREUM
11k BTC
Déploiement smart-contract => sécurité
Cibler les applications à faible transaction
Créer des systèmes hybrides avec une forte couche d’abstraction pour optimiser l’adoption
Opportunités dev