Blockchain Révolution ou illusion : présentation des enjeux par les cas d’usage
Sous le capot blockchain : décryptage du fonctionnement de la blockchain
Comment démarrer : étapes clés pour bâtir vos premiers cas d’usage
2. 2
Découverte et exemples
Sous le capot BC
Clés pour démarrer
Perspectives
AGENDA
https://www.youtube.com/watch?v=lytxafTXg6c
Richard Feynman explique le sentiment de confusion
« Lorsque vous pensez à quelque
chose que vous ne comprenez pas,
vous avez un inconfortable
sentiment appelé confusion (...) »
3. 3
« La blockchain va clairement
transformer notre industrie, mais
personne ne sait encore exactement
quand, où et comment »
Stéphane Boujnah, directeur général d’Euronext, Avril 2017
http://www.latribune.fr/entreprises-finance/banques-finance/la-blockchain-a-le-potentie
de-transformer-le-trading-actions-selon-moody-s-686575.html
4. 4
Le problème de la confiance
Pour collaborer, nous nous appuyons
sur des autorités de confiance
En étant factuel, ces tiers sont trop souvent
Compromis (Google/Facebook&co vs NSA)
Biaisés (Visa/Mastercard/Paypal vs Wikileaks)
Incompétents (Yahoo vs les voleurs)
Corrompus (Supply Chain)
Non disponibles (AWS S3)
Inconnus (SSL)
https://notepad-plus-plus.org/news/notepad-7.3.3-fix-cia-hacking-issue.html
https://techcrunch.com/2017/02/28/amazon-aws-s3-outage-is-breaking-things-for-a-lot-of-websites-and-apps/
https://www.bloomberg.com/news/articles/2017-01-19/data-breaches-hit-record-in-2016-as-dnc-wendy-s-co-hacked
https://www.theregister.co.uk/2015/09/21/symantec_fires_workers_over_rogue_certs/
“Trust is like a
mirror, you can fix it
if it's broken, but
you can still see the
crack in that mother
fucker's reflection.”
Lady Gaga explique la confiance
5. 5
C’est quoi la
blockchain ?
C’est une technologie de stockage et de transmission
d’informations sécurisée et transparente qui
fonctionne sans organe central de contrôle
registre sécurisé transparent décentralisé
6. 6
Que fait la
blockchain ?
Elle stocke des enregistrements
ordonnés chronologiquement et
immuables.
immuableregistre sécurisé transparent décentralisé
7. 7
Et concrètement à quoi ça ressemble ?
immuableregistre sécurisé transparent décentralisé
9. 9
La blockchain permet de
s’échanger
de la valeur
de pair à pair
sans intermédiaire
Et en quoi est-ce une révolution ?
immuableregistre sécurisé transparent décentralisé
10. 10
appellés “smart contracts”
La blockchain permet de
déclencher des contrats
intelligents automatiquement
Mais encore ?
qui exécute des contrats intelligentsimmuableregistre sécurisé transparent décentralisé
"code is law"
11. 11
Quels impacts ?
Crypto-monnaie
E-commerce, paiements,
prêts P2P, micro finance
Actifs
Equity, marchés privés,
dette, crowdfunding
Smart Contracts
Droits numérique,
intermédiaires
Mise sous séquestre
Enregistrement des titres,
propriété, vote, propriété
intellectuelle
qui exécute des contrats intelligentsimmuableregistre sécurisé transparent décentralisé
12. 12
Quelques exemples
Echanges d’électricité pair à pair
Bouygues Immo : Quartier Lyon Confluence
Energie
Simplification administrative
BC Delaware Initiative : actes de sociétés
Administration
Trade Finance PME Intl.
Consortium Trade Chain (HSBC, Natixis, SG, …)
Commerce
Know Your Customer
Consortium R3 (60 Membres, BC Corda)
Banque
Lutte contre la fraude aux impressions
MetaX: adChain
Publicité
Accélerer les déclarations/remboursements
Dynamis : IoT / Smart Contracts
Assurance
https://www.cbinsights.com/blog/industries-disrupted-blockchain/
qui exécute des contrats intelligentsimmuableregistre sécurisé transparent décentralisé
13. 13
3 typologies de cas d’usages
REGISTRE
MEDIACHAIN
PROPRIETE INTELLECTUELLE
POUR LES MEDIAS
TRANSFERT
D’ACTIFS
BITLAND
TRANSFERT DE PROPRIETÉ
SMART
CONTRACTS
LENDERBOT
MICRO-ASSURANCE
Cadastre pour l’Afrique
80% des biens non enregistrés
Impact pour le e-commerce
Registre global des droits
Proteger les artistes
Racheté par Spotify en 2017
Déclenchement instantané
Faciliter les déclarations
Assurance entre particuliers
landing.bitland.world mediachain.io stratumn & deloitte
qui exécute des contrats intelligentsimmuableregistre sécurisé transparent décentralisé
14. 14
OpenBazaar, la marketplace blockchainisée
Réseau décentralisée de commerce en ligne (en bitcoin) sans commissions ni restrictions
« Notre objectif est que les
acheteurs et vendeurs aient
une expérience meilleure en
utilisant OpenBazaar qu’en
utilisant les anciennes
plates-formes centralisées. »
En cas de litige ?
‘2-or-3 multisig’ : 3 personnes doivent etre
d’accords pour accepter le transfert ‘bitcoin’,
un vendeur, un acheteur et un modérateur
Frais de modération: 2%
https://blog.openbazaar.org/how-moderators-and-dispute-resolution-work-in-openbazaar
15. 15
Sous le capot blockchain :
décryptage du fonctionnement de la blockchain
OU
18. 18
Cartographie des blockchains majeures
Description
Blockchain généraliste
2016
Blockchain généraliste
2015
Blockchain de paiement
2009
Type Permissioned
Permissioned
Permissionless
Permissionless
Gouvernance Linux Foundation Enterprise Ethereum Alliance Développeurs Bitcoin
Monnaie Aucune Ether BTC
Gratification mineurs N/A Oui Oui
Consensus Byzantine fault-tolerance Mining (Preuve d’enjeu) Mining (Preuve de travail)
Réseau Privé (par défaut) ou Public Public (par défaut) ou Privé Public
Anonymat De Ouvert à Privé Ouvert Ouvert
Smart Contrats
Multiples langages de
programmation
Langage ‘Solidity’ Possible, mais pas évident
19. 19
Maturité du développement Blockchain
Avons-nous tous les outils en 2017 ?
Web 2.0
Web 3.0 (dApps)
en 2014
Web 3.0 (dApps)
en 2017
Maturité
Calcul à l’échelle Amazon EC2 ? Ethereum, Truebit En cours
Stockage fichiers Amazon S3 ? IFPS/Filecoin, Storj En cours
Données externes API 3rd parties ? Oracles (Augur) En cours
Monétisation Pub ? Modèle de token Prêt
Paiement
Carte de crédit,
paypal
Bitcoin Ethereum, Bitcoin Prêt
20. 20
Focus sur les applications décentralisées (dApps)
Un app store déjà disponible
https://dapps.ethercasts.com/
25. 25
Développer une dApp de vote
Chaine de développement
1/ Blockchain en local
• Ligne de commande: goethereum (geth) ou ethereumjs-testrpc ou ethereum-cpp
• Mist pour la gestion du Wallet
2/ Librairies
• Node.js pour node et npm
• Web3.js (connection à la BC en JSON-RPC)
• Solidity pour le dév des Smart Contract
• Truffle pour accélérer le dev (scaffolding, tests unitaires)
3/ Outils
• Browser-solidity : https://ethereum.github.io/browser-solidity/
• Ethereum Studio : https://live.ether.camp
4/ Process de dev
• Développer le smart contract en Solidity: compiler et déployer dans la blockchain de test
• Développer la dApp en HTML/JS: tester avec le smart contract déployé dans la blockchain de test
• Déployer le smart contract dans la blockchain live, tester puis livrer la dApp
26. 26
Développer une dApp de vote
1/ Smart Contract pragma solidity ^0.4.6; // We have to specify what version of compiler this code will compile with
contract Voting {
/* mapping field below is equivalent to an associative array or hash. */
mapping (bytes32 => uint8) public votesReceived;
bytes32[] public candidateList;
/* This is the constructor which will be called once when you deploy the contract to the blockchain.
When we deploy the contract, we will pass an array of candidates who will be contesting in the election
*/
function Voting(bytes32[] candidateNames) {
candidateList = candidateNames;
}
// This function returns the total votes a candidate has received so far
function totalVotesFor(bytes32 candidate) returns (uint8) {
if (validCandidate(candidate) == false) throw;
return votesReceived[candidate];
}
// This function increments the vote count for the specified candidate.
function voteForCandidate(bytes32 candidate) {
if (validCandidate(candidate) == false) throw;
votesReceived[candidate] += 1;
}
function validCandidate(bytes32 candidate) returns (bool) {
(…) }
}
Voting.sol
27. 27
Développer une dApp de vote
2/ Déploiement
SmartContract
node
// Connexion à la blockchain
> Web3 = require('web3')
> web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
// Visualisation des comptes utilisateurs
> web3.eth.accounts
['0x9c02f5c68e02390a3ab81f63341edc1ba5dbb39e',
'0xc26bda5f3370bdd46e7c84bdb909aead4d8f35f3']
// Compilation du contrat
>code = fs.readFileSync('Voting.sol').toString()
>contract = web3.eth.compile.solidity(code)
// Deploiement du contrat
>VotingContract = web3.eth.contract(contract.info.abiDefinition)
>deployedContract = VotingContract.new(['Rama','Nick','Jose'],{data: contract.code, from:
web3.eth.accounts[0], gas: 4700000})
// Récupération du contrat dans la BC
>contractInstance = VotingContract.at(deployedContract.address)
// 2 Votes pour Rama
>contractInstance.voteForCandidate('Rama', {from: web3.eth.accounts[0]})
>contractInstance.voteForCandidate('Rama', {from: web3.eth.accounts[0]})
// Recupération des résultats
>contractInstance.totalVotesFor.call('Rama').toLocaleString()
'2'
En ligne de commande
29. 29
Développer une dApp de vote
4/ Code JS web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
abi =
JSON.parse('[{"constant":false,"inputs":[{"name":"candidate","type":"bytes32"}],"name":"totalVotesFor","o
utputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs »:
(…)
[{"name":"candidateNames","type":"bytes32[]"}],"payable":false,"type":"constructor"}]')
VotingContract = web3.eth.contract(abi);
contractInstance = VotingContract.at('0x2a9c1d265d06d47e8f7b00ffa987c9185aecf672');
candidates = {"Rama": "candidate-1", "Nick": "candidate-2", "Jose": "candidate-3"}
function voteForCandidate(candidate) {
candidateName = $("#candidate").val();
contractInstance.voteForCandidate(candidateName, {from: web3.eth.accounts[0]}, function() {
let div_id = candidates[candidateName];
$("#" + div_id).html(contractInstance.totalVotesFor.call(candidateName).toString());
});
}
$(document).ready(function() {
candidateNames = Object.keys(candidates);
for (var i = 0; i < candidateNames.length; i++) {
let name = candidateNames[i];
let val = contractInstance.totalVotesFor.call(name).toString()
$("#" + candidates[name]).html(val);
}
});
index.js
30. 30
Limites de la blockchain
SECURITE
• Obsolescence des algorithmes cryptographiques
utilisés
• "Code is Bug"
TECHNIQUE
• Passage à l’échelle
DROIT
• Responsabilité des clés privées sans autorité de
certification identifiée
• Reconnaissance juridique des smart contracts
http://www.usine-digitale.fr/article/la-blockchain-pose-de-serieux-problemes-de-
confiance-de-droit-et-de-securite.N401527
31. 31
Smart Ideas
For Your Money
A cool way to represent your
information
Comment
démarrer ?
Les clés pour bâtir
vos premiers cas
d’usage
La blockchain.
32. 32
Comprendre où la blockchain apportera de la valeur
Et comment …
1/
Réfléchir
Trouver le cas
d’usage
2/
Dompter
POC
3/
Expérimenter
Essai terrain
4/
Se lancer
Mise en
production
• Réunir l’équipe
• Mesurer la valeur
• Evaluer la faisabilité
• Fixer les KPIs de succès
• Réaliser un premier cas
• Découvrir les technologies
• Naviguer dans l’écosystème
• Trouver les partenaires
• Intégrer un consortium
• Valider le business model
• Itérer sur la roadmap stratégique
33. 33
8 caractéristiques pour choisir le cas d’usage
Base de données
De multiples
contributeurs
Absence de
confiance
Désintermédiation
Présence de
transactions liées
Présence de règles
métiers
Présence de
validateurs
Présence d’actifs
Le cas d’usage devrait respecter au moins trois de ces caractéristiques
http://www.multichain.com/blog/2015/11/avoiding-pointless-blockchain-project/
34. 34
Blockchain : hyper hype ou pas ?
Une technologie à
fort potentiel,
mais qui doit
encore gagner en
maturité
37. 37
Révolution ou évolution
« Le mode de fonctionnement coopératif d’Internet
n’est pas conçu pour offrir des services
commerciaux. »
1994. rapport Théry, intitulé « Les autoroutes de l’information »
https://philippesilberzahn.com/2013/01/07/les-trois-erreurs-prediction-rapport-thery-autoroutes-information-1994/