{"id":78,"date":"2019-05-14T08:45:00","date_gmt":"2019-05-14T11:45:00","guid":{"rendered":"https:\/\/dcoder.io\/blog\/blockchain-entreprise-hyperledger-fabric\/"},"modified":"2019-05-14T08:45:00","modified_gmt":"2019-05-14T11:45:00","slug":"blockchain-entreprise-hyperledger-fabric","status":"publish","type":"post","link":"https:\/\/dcoder.io\/blog\/fr\/blockchain-entreprise-hyperledger-fabric\/","title":{"rendered":"Blockchain d&#8217;entreprise : quand Hyperledger Fabric se justifie et quand ce n&#8217;est qu&#8217;un co\u00fbt"},"content":{"rendered":"<p><strong>Une blockchain \u00e0 permissions ne se justifie que lorsque plusieurs organisations qui ne se font pas pleinement confiance doivent partager un registre qu&#8217;aucune ne contr\u00f4le seule.<\/strong> Si tous les participants appartiennent \u00e0 la m\u00eame entreprise, une base de donn\u00e9es avec piste d&#8217;audit produit le m\u00eame r\u00e9sultat pour une fraction du co\u00fbt.<\/p>\n<p>Apr\u00e8s avoir construit des r\u00e9seaux Hyperledger Fabric pour de la tra\u00e7abilit\u00e9 industrielle, la le\u00e7on qui reste est moins technique qu&#8217;on ne l&#8217;imagine. La partie difficile n&#8217;a jamais \u00e9t\u00e9 le chaincode. C&#8217;\u00e9tait la gouvernance entre les organisations participantes.<\/p>\n<h2>Le test en trois questions<\/h2>\n<p>Avant toute preuve de concept, r\u00e9pondez honn\u00eatement :<\/p>\n<ol>\n<li><strong>Plusieurs organisations \u00e9crivent-elles dans le registre ?<\/strong> Sinon, arr\u00eatez-vous l\u00e0. Vous voulez une base de donn\u00e9es.<\/li>\n<li><strong>Ces organisations ont-elles des int\u00e9r\u00eats divergents ?<\/strong> Fournisseur et acheteur, assureur et garage, producteur et certificateur. Si ce sont toutes des directions de la m\u00eame entreprise, un administrateur syst\u00e8me r\u00e8gle cela avec des permissions.<\/li>\n<li><strong>Quelqu&#8217;un accepterait-il d&#8217;\u00eatre propri\u00e9taire de la base ?<\/strong> Si tout le monde s&#8217;accorde pour que l&#8217;entreprise X h\u00e9berge et administre, vous avez un probl\u00e8me de contrat, pas de technologie.<\/li>\n<\/ol>\n<p>Trois oui et le dossier est r\u00e9el. Un non et la r\u00e9ponse est probablement PostgreSQL avec une table d&#8217;audit et des signatures num\u00e9riques.<\/p>\n<h2>Ce que Fabric apporte r\u00e9ellement<\/h2>\n<p>Contrairement aux r\u00e9seaux publics, Hyperledger Fabric fonctionne avec permissions. Les participants poss\u00e8dent une identit\u00e9 d\u00e9livr\u00e9e par une autorit\u00e9 de certification, il n&#8217;y a ni minage ni cryptomonnaie. Ce qu&#8217;il offre :<\/p>\n<ul>\n<li><strong>Un registre partag\u00e9 et r\u00e9pliqu\u00e9<\/strong> qu&#8217;aucune organisation ne peut modifier seule apr\u00e8s coup.<\/li>\n<li><strong>Des canaux<\/strong>, qui permettent qu&#8217;un sous-ensemble seulement de participants voie certaines transactions. Des concurrents peuvent cohabiter sur le m\u00eame r\u00e9seau sans voir les volumes les uns des autres.<\/li>\n<li><strong>Des politiques d&#8217;endossement.<\/strong> Vous d\u00e9finissez combien et quelles organisations doivent signer une transaction pour qu&#8217;elle soit valide. C&#8217;est l\u00e0 que r\u00e9side la valeur r\u00e9elle.<\/li>\n<li><strong>Des contrats ex\u00e9cutables<\/strong> en Go ou en Node.js, sans les contraintes de langage des cha\u00eenes publiques.<\/li>\n<\/ul>\n<h2>Ce qu&#8217;il n&#8217;apporte pas<\/h2>\n<p>Autant \u00eatre direct, car les attentes arrivent souvent gonfl\u00e9es.<\/p>\n<p>Il ne valide pas le monde physique. Si quelqu&#8217;un saisit \u00ab caf\u00e9 biologique \u00bb pour un lot qui ne l&#8217;est pas, le r\u00e9seau enregistre ce mensonge avec une int\u00e9grit\u00e9 parfaite, pour toujours. La blockchain garantit que la donn\u00e9e n&#8217;a pas \u00e9t\u00e9 alt\u00e9r\u00e9e apr\u00e8s son \u00e9criture. Elle ne garantit rien sur sa v\u00e9racit\u00e9 avant.<\/p>\n<p>Il n&#8217;est pas rapide non plus. Le consensus entre organisations co\u00fbte de la latence : ne le placez pas sur le chemin critique d&#8217;un \u00e9cran utilisateur. Et il n&#8217;est pas simple \u00e0 exploiter : autorit\u00e9s de certification, MSP, canaux, ordonnanceurs, mises \u00e0 jour coordonn\u00e9es des contrats entre entreprises. C&#8217;est de l&#8217;infrastructure s\u00e9rieuse, qui demande des gens pour la maintenir.<\/p>\n<p>Enfin, il ne r\u00e9sout pas la conformit\u00e9 RGPD. Un registre immuable et des donn\u00e9es personnelles font tr\u00e8s mauvais m\u00e9nage. Les donn\u00e9es personnelles restent hors du registre. C&#8217;est l&#8217;empreinte qui y va.<\/p>\n<h2>L\u00e0 o\u00f9 cela fonctionne bien<\/h2>\n<p>Les cas qui ont tenu dans la dur\u00e9e partagent un motif commun : une cha\u00eene de production \u00e0 plusieurs maillons et un besoin de preuve vis-\u00e0-vis d&#8217;un tiers, qu&#8217;il s&#8217;agisse d&#8217;un auditeur, d&#8217;un certificateur ou d&#8217;un r\u00e9gulateur.<\/p>\n<p>Tra\u00e7abilit\u00e9 de l&#8217;origine, calcul d&#8217;empreinte environnementale \u00e0 partir de donn\u00e9es provenant de plusieurs fournisseurs, compensation entre op\u00e9rateurs, certification de provenance. Dans ces cas, la valeur n&#8217;est pas dans le mot \u00ab blockchain \u00bb. Elle est dans le fait de disposer d&#8217;un chiffre que personne dans la cha\u00eene ne peut modifier seul et qu&#8217;un auditeur peut v\u00e9rifier sans demander de faveur \u00e0 aucune des parties.<\/p>\n<h2>L&#8217;architecture qui fonctionne g\u00e9n\u00e9ralement<\/h2>\n<p>Dans les d\u00e9ploiements ayant surv\u00e9cu \u00e0 leur premi\u00e8re ann\u00e9e, la forme est toujours semblable. L&#8217;application fonctionne normalement sur une base relationnelle, et toute l&#8217;exp\u00e9rience utilisateur en d\u00e9coule. Seuls les \u00e9v\u00e9nements n\u00e9cessitant une preuve entre organisations rejoignent le registre partag\u00e9, ce qui repr\u00e9sente g\u00e9n\u00e9ralement une petite fraction des op\u00e9rations. Documents et donn\u00e9es personnelles restent \u00e0 l&#8217;ext\u00e9rieur, dans un stockage ordinaire, seule l&#8217;empreinte et un pointeur figurant au registre. L&#8217;\u00e9criture se fait de fa\u00e7on asynchrone, par file d&#8217;attente, de sorte que si le r\u00e9seau ralentit l&#8217;utilisateur ne le ressent pas.<\/p>\n<p>Placez la blockchain au centre de l&#8217;application et vous construisez un syst\u00e8me lent sur une mauvaise base de donn\u00e9es. Placez-la en p\u00e9riph\u00e9rie, comme couche de preuve, et vous construisez un syst\u00e8me normal avec une garantie de plus.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un test en trois questions pour savoir si votre cas d&#8217;usage a r\u00e9ellement besoin d&#8217;une blockchain \u00e0 permissions, ou si une base de donn\u00e9es avec journal d&#8217;audit fait le m\u00eame travail pour un dixi\u00e8me du prix.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-78","post","type-post","status-publish","format-standard","hentry","category-sem-categoria"],"_links":{"self":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/78","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/comments?post=78"}],"version-history":[{"count":0,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/posts\/78\/revisions"}],"wp:attachment":[{"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/media?parent=78"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/categories?post=78"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dcoder.io\/blog\/wp-json\/wp\/v2\/tags?post=78"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}