Blockchain is the answer, but what was the question? (VF)

Sajida Zouarhi
12 min readNov 23, 2016

--

Tout le monde a remarqué que la blockchain est en plein buzz, elle trône fièrement au sommet de la Hypecurve de Gartner depuis quelques temps déjà…

Banques, sociétés, institutions, aucune d’entre elles n’a été épargné par la déferlante blockchain qui s’est déchaînée depuis 2015.

En général on note deux types de réactions : la peur (« on va se faire désintermédier ! ») et l’excitation (« la blockchain est une opportunité, elle va réduire nos coûts, augmenter nos marges, sécuriser nos process, faire le café etc. »).

Or si on s’intéresse à la seconde approche — qui finalement peut rapidement tourner à : « je veux mettre de la blockchain partout » — et bien il y a un problème.

La blockchain n’est malheureusement pas la solution à tous vos problèmes et il faut souvent la coupler avec d’autres technologies pour l’utiliser voir même la rendre pertinente.

Saupoudrer de la blockchain sur n’importe quel cas d’usage ne suffit pas à lui donner du goût !

Avoir une telle approche (image ci-dessus) démontrerait une incompréhension de la technologie et une incapacité à en saisir le potentiel. Dans ces conditions, utiliser la blockchain « à tout prix » pour votre prochain projet n’est pas une bonne idée car :

  1. Tout le monde saura que vous n’avez pas compris à quoi servait la blockchain.
  2. Vous allez perdre du temps à travailler sur un « faux » cas d’usage, voire même griller vos cartouches (ressources) sur ce cas alors qu’avec un peu plus de réflexion vous auriez pu trouver une meilleure idée.

Bien sûr si votre objectif est de faire un « coup de com’ », le sujet blockchain est un bon générateur de buzz — mais au final, personne n’est dupe. ;)

Maintenant que le contexte est posé, la question qui vient naturellement est :

« Comment savoir si la technologie blockchain est pertinente pour mon cas d’usage ? »

Excellente question, voici quelques conseils …

Comprenez à quoi sert la blockchain.

Il ne s’agit pas d’en comprendre les subtilités techniques, il s’agit juste d’identifier les principales propriétés qui peuvent vous être utiles.

Exemples de description qu’on pourrait faire : la blockchain comme outil de traçabilité, d’intégrité, d’architecture transactionnelle multi-parties.

Exemple de ce que la blockchain ne peut pas faire (seule)
La blockchain vous permet de stocker de la donnée et vous assure que la donnée stockée ne sera pas corrompue. En revanche elle ne peut pas vérifier la véracité de la donnée qui est enregistrée. En effet la blockchain n’est pas intelligente, elle ne connait ni le contexte d’utilisation, ni votre secteur d’activité. Si vous permettez à un acteur du réseau d’enregistrer des informations sur la blockchain sans mettre en place un moyen de vérification, alors cet acteur pourra enregistrer de fausses informations sur la blockchain — mais au moins vous aurez la garantie que ces fausses informations ne seront pas modifiables par la suite. :)
A garder en tête pour les cas d’usage liés à la traçabilité d’assets notamment (nourriture, vin, bijoux, pièces auto etc.) contre la contre-façon par exemple.

Partez du cas d’usage, pas de la technologie !

Avez-vous identifié un besoin ? Un « pain point » comme on dit ?
Pensez-vous, en vous basant sur votre compréhension de la blockchain, que ce besoin pourrait ou devrait être adressé par une blockchain ?

Comprenez les possibilités et les limites de la blockchain.

A ce stade si vous avez validé les deux premiers items, il faut prendre un peu de recul et faire une liste de ce qui peut être résolu par la blockchain directement et de ce qu’il va falloir développer autour pour répondre à votre cas d’usage de façon adéquate.
Cela signifie comprendre là où la blockchain est plus efficace que les solutions traditionnelles et inversement, identifier les situations où la blockchain sera moins performante voire inadaptée. Soyez honnête avec vous-même.

Utilisez le potentiel de la blockchain ou bien optez pour une autre solution.

On parle souvent de « killer app » blockchain en mentionnant Bitcoin. La raison est simple, Bitcoin utilise toutes les propriétés intéressantes de la blockchain d’un point de vue technique, stratégique mais aussi social.
Bitcoin tire donc profit du potentiel de la blockchain de façon très efficace.

Qu’en est-il de votre cas d’usage ? Utilisez-vous seulement la blockchain pour faire du stockage ? Utilisez-vous la blockchain pour faire des transactions entre acteurs ? Ces transactions sont-elles de surcroit basées sur des données déjà enregistrées sur la blockchain ? Y a-t-il une incitation ou une récompense pour les acteurs du réseau ?

Vous voyez ici qu’en utilisant les différentes facettes de la blockchain vous gagnez en pertinence mais également vous garantissez un certain niveau de sécurité. En effet, sans rentrer dans les détails, si la blockchain fait référence à elle-même, alors la confiance sur la véracité des données stockées est déjà établie, ce qui n’est pas le cas quand on demande à la blockchain de gérer des données provenant de sources externes (par exemple avec des oracles, il faut alors fournir des preuves de véracité et passer par une tierce partie, c’est moins fluide, mais c’est faisable par exemple avec la solution Oraclize).

Arrêtons-nous là au risque de rentrer dans des considérations trop complexes — ce n’est pas l’objectif ici — et intéressons-nous au Blockchain Canevas proposé ci-dessous.

Un canevas pour vous aider à identifier la pertinence des blockchains pour votre cas d’usage.

Blockchain Canevas

English Version of the “ Blockchain Canvas” by the Healthcare Data Institute

www.theblockchaincanvas.com

Contexte

Problème
Expliquez simplement votre problème, utilisez des phrases courtes qui permettent de saisir le contexte et donc le besoin adressé.

Solution
Expliquez l’approche que vous proposez pour résoudre ce problème en y intégrant ou non le terme blockchain.

Acteurs

La blockchain présuppose d’avoir un réseau décentralisé, il y a donc plusieurs acteurs en jeu.
Rappelez-vous, faire une blockchain tout seul revient à utiliser une base de données. :)

Dans la partie Acteurs, vous allez devoir définir vos acteurs et catégories d’acteurs.

On cite souvent le « nombre » comme facteur de décentralisation (et donc de sécurité), j’y ajouterai également la « diversité ». En effet, une bonne diversité dans votre écosystème permet d’avoir des intérêts divergents au sein des acteurs et réduit donc le risque de coalition ou d’entente entre ces derniers. Pour remplir le canevas, essayer donc de visualiser votre écosystème.

Où vous situez-vous ?

Comme vous pouvez le remarquer, il n’y a pas de chiffre sur les axes, et ce pour une bonne raison ! On me demande souvent « combien de nœuds me faut-il pour être suffisamment décentralisé ? ».

Et bien cela dépend complètement du cas d’usage, des acteurs en jeu, du niveau de sécurité requis, du gain que pourrait tirer un attaquant. C’est avec l’ensemble de ces variables (entre autres) que l’on peut dimensionner le réseau requis.

Disons juste pour éviter la réponse de normand que faire tourner 10 nœuds n’est pas suffisant à priori si l’objectif est d’être « décentralisé », et que Bitcoin (lancée en 2008 et considérée comme la blockchain la plus sécurisée) possède un peu moins de 6000 nœuds de validation.

Concernant la diversité en revanche on peut considérer qu’à partir de 3 ou 4 catégories d’acteurs différentes le cas d’usage devient intéressant. De plus cette pluralité est un bon argument pour justifier l’utilisation d’une blockchain qui est un outil efficace pour gérer la complexité des interactions multi-parties.

Votre réseau

Vos transactions
Il s’agit de décrire la nature de vos transactions. S’agit-il de transférer de la valeur, de la propriété ou des droits, ou encore de journaliser des événements ou des informations importantes ?

Les pairs de votre réseau
Pair = un nœud du réseau. Un acteur peut avoir plusieurs pairs/nœuds qui tournent sur ses installations.

Si vous utilisez une blockchain pour votre application, vous aurez forcément besoin de Validateurs. Pour rappel, c’est via l’acceptation des Validateurs à la majorité (par exemple) qu’une transaction sera enregistrée sur la blockchain. Il est donc important de se demander qui aura ce rôle crucial.

Ainsi si vous utilisez une blockchain publique (Bitcoin, Ethereum …) vous n’avez pas de contrôle sur le système de validation des transactions car vous vous reposez sur une infrastructure existante pour déployer votre application.
Vous pouvez cependant développer vous-même une surcouche de vérification (elle-même décentralisée) si vous le souhaitez.

En revanche si vous optez pour une blockchain de consortium ou « privée » (par exemple en utilisant une implémentation de Hyperledger) vous allez pouvoir constituer votre réseau de Validateurs. Idéalement, il faudra répartir les Validateurs entre les différents acteurs de l’écosystème pour assurer une diversité et pluralité suffisante comme vue précédemment.

Bien entendu il peut en être autrement, tout est imaginable et il faut donc concevoir votre réseau en fonction de votre cas d’usage, du degré d’indépendance vis-à-vis d’une blockchain publique souhaitée et du niveau de décentralisation sur une blockchain privée visé.

Effort d’infrastructure faible = Niveau d’indépendance faible, c’est normal car vous utilisez une infrastructure blockchain existante, vous ne recréez pas une version personnalisée de la blockchain sur laquelle vous avez la main. Bien entendu, le coût qu’implique le déploiement d’une infrastructure décentralisée n’est pas négligeable (la montée en compétence n’est pas aisée et nécessite souvent de faire appel à des externes).

De la même manière, vous pouvez imaginer donner des rôles différents à vos pairs.
Sont-ils plusieurs à pouvoir écrire ou consulter des données? Détiennent-ils tous le « pouvoir de validation » c’est-à-dire la possibilité de participer au consensus pour valider une transaction entrante ?

Dynamique du réseau
Enfin, quelles sont les règles de vérification et de validation d’une transaction?
Comment vérifiez-vous qu’une transaction est correcte ?

Quel type de consensus allez-vous utilisez ? (dans le cas où vous choisissez de lancer votre blockchain avec Hyperledger par exemple, car avec Bitcoin ou Ethereum vous n’avez pas directement la main sur cet aspect)

En somme cela revient à réfléchir à la gouvernance de votre système. La gouvernance est de loin l’un des aspects des projets blockchains les plus compliqués à concevoir.

Données et traitement

L’idée tout simplement est de définir les données que vous allez manipuler. Sont-elles critiques ? Sont-elles volumineuses ?

La raison est simple, la blockchain croît au fur et à mesure que des transactions sont enregistrées, mieux vaut donc en faire un usage réfléchi. Il ne sert donc pas à grand-chose de stocker des informations à valeur faible ou superficielle et de remplir votre blockchain avec.
De la même manière, il est conseillé d’éviter de stocker des informations volumineuses (images médicales par exemple) directement sur la blockchain pour ces mêmes raisons.
En revanche il est tout à fait acceptable selon votre cas d’usage d’en garder l’empreinte (le hash) à des fins de journalisation et de vérification d’intégrité si jamais la donnée est stockée sur une tierce base de données.

Concernant le type de traitement, vous pouvez utiliser la blockchain comme un outil de stockage (après tout pourquoi pas, ça reste une base de donnée) et/ou comme un outil de calcul.

Sur Ethereum par exemple si vous écrivez des programmes (smart contract) qui vérifient des règles ou des conditions (contrat d’assurance, système de paris, action vers des objets connectés), vous allez pouvoir manipuler des informations et en tirer des résultats prouvables qui seront stockés sur la blockchain.

Par exemple si A ne fait pas confiance à B pour un certain calcul, B peut créer un smart contract sur Ethereum pour faire ce calcul de façon décentralisée (les pairs du réseaux seront donc sollicités) et stocker le résultat sur la blockchain ce qui aura valeur de preuve pour A et le rassurera.

La blockchain permet donc de se passer de la relation de confiance entre A et B en la substituant par une relation de confiance entre A et la blockchain, et B et la blockchain. Cela semble pour le mieux surtout si on part du postulat qu’il est plus sûr de faire confiance à un programme informatique qu’à un être humain… (d’un autre côté le programme informatique est codé par un être humain, oups)

Et pour finir …

La Valeur

Cette case du canevas est assez complexe à résumer (et à remplir) car elle dépend fortement de votre cas d’usage et n’est pas forcément obligatoire pour tous.

Pour faire simple, procédons par l’exemple et prenons deux cas d’usage très différents : Bitcoin et Everledger.

Sur le canevas on peut lire « Votre système s’appuie-t-il (ou utilise-t-il) un système de valeur permettant de faire le lien entre la blockchain et le monde réel? »

Pour Bitcoin le lien entre la valeur d’un bitcoin dans le monde réel et la valeur du bitcoin sur la blockchain se fait notamment grâce au travail des validateurs (mineurs) qui investissent de l’argent sur le hardware de mining et pour payer leur facture d’électricité. Ainsi « miner » du bitcoin requiert de l’énergie et consomme des ressources. La valeur du bitcoin peut être vue comme la résultante de ces efforts et investissements qui sont mis en œuvre par les validateurs (miners). Ces derniers ont également tout intérêt à ce que le bitcoin ait une valeur car sinon ça serait une perte d’argent pour eux.

Pour Everledger, rien à voir, il s’agit de lutter contre la contre-façon de diamant en « enregistrant » les vrais diamants sur la blockchain.

La valeur ou plutôt le lien entre le diamant réel (monde physique) et l’asset qui le représente (sur la blockchain) doit être fort car si ce lien peut être détruit ou corrompu, tout le système de traçabilité tombe à l’eau. Dans le cas du diamant, ils ont décidé de générer un ID unique qu’ils gravent sur le diamant lui-même et qu’ils enregistrent en parallèle dans la blockchain.

Le côté brillant de cette idée (joke intended) est qu’il est difficile de se procurer le matériel permettant la gravure de diamant et donc graver des faux diamants est une tâche compliquée ce qui constitue une barrière d’entrée aux potentiels fraudeurs. De plus, si quelqu’un essaie pour une raison ou une autre de modifier l’ID d’un diamant gravé par ses propres moyens, il risque d’endommager le diamant et donc de lui faire perdre considérablement sa valeur. Au final, son action malicieuse n’aura servi à rien!

Ces quelques propriétés — spécifiques au diamant — font de Everledger un bon système car elles permettent de se prémunir de certaines attaques.

Tous les cas d’usage n’ont pas forcément besoin de remplir ce critère, mais il est important de l’avoir en tête pour certaines situations.

Pour conclure

Si vous vous demandiez si une blockchain pouvait s’avérer utile pour votre cas d’usage, j’espère que cet article vous aura aidé.

Concernant le Blockchain canevas, c’est un outil qui peut être utiliser pour « brainstormer » et idéalement vous permettre de juger par vous-même de la pertinence de votre projet.

Le Blockchain Canvas est également un bon support de spécification si vous souhaitez aller plus loin. L’outil permet d’identifier les informations nécessaires permettant de faire des choix technologiques et d’architecture.

Le Blockchain Canvas est un outil puissant s’il est bien utilisé. Si vous souhaitez être accompagné dans votre projet, vous pouvez me contacter directement via le site : www.theblockchaincanvas.com

Le canevas est amené à évoluer au fur et à mesure des feedbacks que je reçois de celles et ceux qui l’utilisent. Il a été utilisé en Hackathon et Créathon pour travailler sur des cas d’usages et il est utilisé depuis 2016 par différentes entreprises, événements et professeurs du monde entier.

Sajida Zouarhi
Blockchain architect & hackathon organizer (
Le BlockFest)

Si vous souhaitez utiliser le canevas à des fins commerciales, événementielles ou bien l’améliorer par des illustrations ou des traductions, merci de me contacter.

Si vous souhaitez lire cet article en anglais, cliquez ici.

Noun project credits :
Teacher by Gan Khoon Lay
People by useiconic.com

--

--

Sajida Zouarhi

Blockchain architect & Speaker || ex @ConsenSys || Engineer || CS researcher || Co-founder @LeBlockFest @KidnerProject @HellHound