Ethereum vs Hyperledger Fabric
Au-delà de ce titre accrocheur, nous tenterons d’expliquer les principales différences entre blockchains publiques et chaînes privées. Nous supposerons que Ethereum (https://www.ethereum.org/) symbolise les blockchains publiques et Hyperledger Fabric (https://www.hyperledger.org/projects/fabric) les blockchains privées ou de consortium. Le lecteur devrait connaître les concepts de base de la blockchain. Si ce n’est pas le cas, vous pouvez trouver une explication rapide ici : https://en.wikipedia.org/wiki/Blockchain
Genèse
Lancé en décembre 2013, le projet Ethereum a été conçu pour construire des applications publiques, basées sur la blockchain et distribuées. Classé au sommet pour les applications distribuées au début, Ethereum a rapidement été utilisé pour les crypto-monnaies, et au moins pour l’Ether, qui a été utilisé pour payer les services de la plateforme. L’Éther devint rapidement l’une des crypto-monnaies les plus célèbres au monde.
Pourquoi l'Ethereum est si célèbre ? C’est la première blockchain à ajouter une nouvelle dimension au concept de la blockchain : les contrats intelligents.
Pour tous les nouveaux lecteurs de blockchain, un contrat intelligent est un morceau de code stocké dans la blockchain. Il permet d’interagir avec la blockchain et de valider ou de rejeter dynamiquement une transaction en exécutant ce morceau de code.
Suite au succès d’Ethereum, d’autres initiatives ont émergé, comme l’initiative Hyperledger (consortium sous la Fondation Linux) et son implémentation Fabric. Cette blockchain a rejoint la communauté Hyperledger début 2016, suite à une initiative d’IBM et de Digital Asset. Comme Ethereum, Hyperledger Fabric se concentre sur la construction d’applications décentralisées avec des contrats intelligents (mais appelé «chaincode»).
La principale différence entre Ethereum et Hyperledger Fabric est la façon dont ces blockchains traitent les pairs et les données.
Par sa conception, Ethereum est une blockchain publique, impliquant que tout le monde peut faire partie de la chaîne, agissant comme un pair. Le pair récupérera l’historique complet des transactions, pourra télécharger des contrats intelligents et proposer de nouvelles transactions.
D’autre part, Hyperledger Fabric a été conçu avec l’idée que tous les concepts de blockchain comme le registre distribué, la cryptographie, l’immuabilité des données, les contrats intelligents, la traçabilité, etc… Il s’agit de caractéristiques importantes, mais l’ouverture du système peut décourager les entreprises. Hyperledger Fabric se concentre sur la façon de gérer le système, et accorde des autorisations spéciales aux administrateurs pour choisir qui peut rejoindre la blockchain et quel morceau de données peut être lu ou écrit.
Introduction
Comme indiqué précédemment, Ethereum est une blockchain publique «sans autorisation», ce qui signifie sans gestion des autorisations. Public signifie que tout le monde peut accéder aux données dans le réseau. Cela veut dire que tout le monde peut se connecter au réseau et interagir avec celui-ci avec le même niveau de permission que tous les autres pairs.
L'une des principales caractéristiques de la technologie Ethereum est l'EVM (Ethereum Virtual Machine). Il s'agit d'une machine virtuelle construite à partir de zéro qui agit comme un terrain de jeu pour n'importe quel code de complexité algorithmique arbitraire. En informatique, nous dirions qu'elle est «Turing-complète». Cette EVM est utilisée pour exécuter des contrats intelligents.
Puisque Ethereum est une blockchain publique et que personne ne paie l’infrastructure ni les coûts de maintenance, l’EVM a besoin de quelque chose appelé «gaz» pour gérer les contrats intelligents. Le «gaz» peut être considéré comme de l’essence pour les voitures. Votre voiture a besoin d’essence autant que le contrat intelligent Ethereum a besoin de gaz pour fonctionner. Il a été créé afin d’empêcher quiconque de spammer la blockchain de transaction et les mineurs de blockchain incitatifs.
Pour votre information, à l’intérieur de l’EVM, chaque opération coûte du gaz.
Si vous voulez démarrer un contrat intelligent sur la blockchain de l'Ethereum, vous devrez d’abord fournir des ETH (la crypto-monnaie de l’Ethereum) afin de permettre à votre contrat intelligent d’être exécuté par le réseau.
Une fois que tout votre gaz est épuisé, l’EVM coupe son exécution.
De l'autre côté, Hyperledger Fabric est une blockchain fermée, ce qui signifie que les administrateurs choisissent ce qui est public, privé et qui peut lire ou manipuler des données dans la blockchain.
L’idée de base de Hyperledger Fabric est de pouvoir construire une architecture modulaire adaptée à vos besoins. De cette façon, vous pouvez choisir le consensus que vous voulez ou dont vous avez besoin, les acteurs et les entités qui peuvent lire et écrire des blocs, etc…
Puisque tous les pairs sont nommés par les administrateurs de la blockchain et qu'ils ont un intérêt commercial à participer à la blockchain, il n’y a pas besoin de gaz pour faire fonctionner les choses.
C’est une grande différence entre Ethereum et Hyperledger Fabric. Avec Fabric, vous n’avez plus besoin de cryptomonnaie pour exécuter vos contrats intelligents et gérer vos transactions, même si l’infrastructure et la maintenance de la blockchain ne sont pas gratuites !
Technique et Vélocité
Avec la blockchain Ethereum publique
D’un point de vue technique, la blockchain publique Ethereum prend environ 14 secondes pour construire un nouveau bloc. Donc, si vous envoyez une nouvelle transaction ou même rien du tout, un bloc sera créé toutes les 14 secondes. Chaque transaction validée sera finalement stockée dans un bloc, mais vous ne savez pas exactement quand. Vous pouvez attendre 14 secondes ou beaucoup plus. Cependant, gardez à l’esprit que s’il y a de nombreuses applications en cours d’exécution sur la blockchain Ethereum, beaucoup de transactions seront produites à travers le réseau, diminuant ainsi les performances. Par exemple, si le Royaume-Uni décidait d’utiliser la blockchain Ethereum pour élire son prochain premier ministre, il faudrait environ 40 jours pour traiter toutes les transactions (Merci Dominik Schiener pour son analyse).
Avec la blockchain Ethereum privée
Pour les entreprises qui ont besoin de blockchains pour leurs affaires mais qui ne veulent pas exposer leurs données et leurs contrats intelligents au public, Ethereum propose de déployer une instance privée de son infrastructure. Ce système est appelé «Private Ethereum Blockchain» (https://github.com/ethereum/go-ethereum/wiki/Private-network)
En construisant une blockchain Ethereum privée, une entreprise peut profiter de la liberté d’une blockchain sans permission en n'ayant aucun problème de gaz. Dans une blockchain Ethereum privée, vous pouvez pré-financer n’importe quel compte avec l’ETH maximum qu’un compte peut gérer (qui est d’environ 9e+56 Ether). Vous pouvez également réduire le Block Time qui améliorera ainsi la vitesse du réseau. Vous pouvez également choisir entre 2 consensus (ou construire le vôtre), Proof Of Work & Proof Of Authority. Cependant, ne perdez pas de vue que l’utilisation d’une blockchain privée Ethereum rendra votre contrat intelligent disponible uniquement pour votre blockchain privée et que, et même s’il n’y a plus de «manque de gaz», vous devez encore assumer le déploiement, l’infrastructure et les coûts d’entretien des nœuds.
Avec Hyperledger Fabric Blockchain
Contrairement à Ethereum, Hyperledger Fabric vous donne la liberté d’exécuter n'importe quel consensus. Vous pouvez utiliser un consensus pré-construit comme Solo ou Kafka ou créer le vôtre et votre propre workflow de transaction.
Dans Hyperledger Fabric, le consensus est divisé en 3 étapes :
- Approbation,
- Commande,
- Validation
En effet, comme cité dans son livre blanc “Hyperledger Fabric prend en charge le service de consensus pour les 3 phases. Les applications peuvent brancher différents modèles d'approbation, de commande et de validation en fonction de leurs besoins. En particulier, l'API du service de commande permet de brancher des algorithmes d'accord basés sur BFT”
De la même manière que la blockchain privée Ethereum, vous pouvez modifier le temps de bloc, cependant, s’il n’y a pas de transaction, aucun bloc ne sera créé, contrairement à Ethereum.
D’un point de vue technique et de vélocité, Hyperledger Fabric est mieux positionné que Ethereum, mais il faudra beaucoup de travail pour mettre en œuvre et déployer la solution.
Résumé technique
Hyperledger Fabric | Ethereum | Private Ethereum | |
Type | Privé (seulement les personnes // entités sélectionnées peuvent rejoindre la blockchain) | Public (tout le monde peut rejoindre et lire la blockchain) | Privé |
Autorisation | Autorisation requise (les administrateurs peuvent décider de qui peut lire et écrire, et quelles données de la blockchain) | Ouvert (tout le monde peut créer des nouvelles transactions et lire les données) | Ouvert |
Vitesse | Très rapide | Rapide | Très rapide |
Évolutivité* | Rapide | Moyenne | Ok |
Vulnérabilités
Au moment où nous écrivons ces lignes, le consensus Ethereum Blockchain est basé sur une Preuve de travail (Proof of Work). La vulnérabilité bien connue de ce consensus est «l’attaque à 50 pourcents». Si un mineur, ou un réseau de mineurs, possède plus de 50% de la puissance minière du réseau, alors il peut créer des blocs et gagner le consensus. Cependant, ce n’est pas une option rentable parce qu’elle nécessite une énorme quantité d’énergie minière. Pour éviter ce genre d’attaque, Ethereum pense à changer son consensus en une Preuve d’Enjeu (https://en.wikipedia.org/wiki/Proof-of-stake). Pour que tout le monde n'essaie pas de créer le bloc, le créateur est choisi d’une manière déterministe.
Une blockchain Ethereum privée aura les mêmes vulnérabilités que la version publique si elle fonctionne avec un consensus Proof of Work. Pour corrompre un consensus de preuve de travail, nous avons besoin de plus de 50% de la puissance de calcul du réseau. Plus le réseau est petit, plus le risque de corruption est grand. Cependant, dans le cas d’une blockchain Ethereum privée exécutant un consensus Proof of Authority (preuve d'autorité), les attaques viendraient de pairs corrompus à l’intérieur du réseau.
D’autre part avec Hyperledger Fabric, puisque chaque nœud est connu et désigné par les administrateurs, il n’y a pas besoin d’exploitation minière. La seule façon d’être attaqué est d’avoir un noeud compromis dans le réseau. Mais dans le cas d’une blockchain Hyperledger Fabric bien conçue avec un bon consensus et un bon workflow de transaction, les pairs corrompus seront rapidement découverts.
Langage de Programmation pour les Contrats Intelligents
Comme expliqué ci-dessus, les contrats intelligents Ethereum sont exécutés à l’intérieur de l’EVM. Les contrats intelligents doivent donc être écrits avec des langages de programmation spécifiques à Ethereum : LLL & Mutan, Serpent ou Solidity, qui est aujourd’hui le plus populaire.
D’autre part, HyperLedger Fabric utilise des langages de programmation bien connus pour écrire des contrats intelligents (aussi appelés chaincode) : Go, Java ou Javascript. Actuellement le SDK Fabric le plus populaire est celui qui utilise NodeJS.
Contrairement à Ethereum, si vous connaissez déjà un de ces langages, vous n’avez pas à en apprendre un nouveau.
Applications
Bien que la blockchain Ethereum n’ait aucune confidentialité et aucune restriction d’accès, si vous voulez construire un projet qui implique de nombreuses personnes, Ethereum est la voie à suivre.
Vous pouvez également utiliser la blockchain Ethereum privée si vous souhaitez gérer les accès et les pairs. Mais gardez à l’esprit que vous aurez toujours exactement les mêmes fonctionnalités que Ethereum classique et vous devrez gérer les coûts de déploiement et d’infrastructure au lieu d’acheter de l'ETH pour fournir du gaz à vos contrats intelligents.
Si votre projet a besoin de confidentialité, de personnalisation spécifique, de workflow et de flexibilité sur qui peut lire/écrire sur quoi, alors la blockchain Hyperledger Fabric est la solution dont vous avez besoin.
Par conception, Hyperledger Fabric est une blockchain construite de façon à être extrêmement modulaire et axé sur les affaires. Vous avez donc beaucoup de flexibilité sur tous les composants de la blockchain (du consensus aux nœuds, au certificat, etc…).
Par exemple, l’assurance française AXA a lancé Fizzy (https://fizzy.axa/) un service de remboursement automatisé en utilisant la blockchain publique Ethereum.
Utiliser une blockchain publique dans ce cas fait sens :
- tout est public : les clients peuvent lire le contrat intelligent et ont remarqué qu’ils sont correctement abonnés au service
- immuabilité du contrat intelligent. Une fois écrit, personne ne peut modifier les données.
- exécution : une fois les conditions de votre contrat intelligent remplies, les actions sont exécutées. Dans l’exemple précédent, si votre vol est retardé, vous serez remboursé dans les 10 prochaines minutes. En comparant avec la période de traitement habituelle, c’est une nette amélioration.
- coût de l’infrastructure : puisque Fizzy utilise la blockchain publique d’Ethereum, AXA n’a qu’à fournir du gaz à son contrat intelligent. Ils n’ont donc pas à assumer les coûts de déploiement ni les coûts d’infrastructure.
D’autre part, il y a beaucoup de cas d’utilisation où vous ne voulez pas exposer vos données et transactions à tout le monde :
- Dans le domaine médical par exemple, on peut imaginer une blockchain privée gérée par les hôpitaux, pour partager des données médicales entre eux,
- En finance, vous pouvez déployer une blockchain de consortium pour gérer le capital-investissement entre les actionnaires,
- En logistique, vous pouvez utiliser une blockchain de consortium entre vous et vos fournisseurs pour gérer tout votre workflow d’expédition et automatiser les factures et le paiement,
- Dans les institutions, vous pourriez vouloir déployer une sorte de numérisation des dossiers personnels et être en mesure de partager certaines données précises avec d’autres institutions.
Partenariats et Popularité
Ethereum est de loin la blockchain publique la plus puissante qui gère des contrats intelligents. Il y a une communauté importante et active et il ne fait aucun doute que cette solution restera le leader sur les blockchains publiques. De plus, Ethereum est maintenant soutenue par l’Enterprise Ethereum Alliance avec de nombreuses entreprises premium comme partenaires comme Shell, ING, Accenture, Credit Suisse et la Banque Nationale du Canada ( https://entethalliance.org/members-2/ ).
Hyperledger Fabric a également son propre consortium de partenariat, y compris IBM, Airbus, Intel ou l’énorme société chinoise Baidu (https://www.hyperledger.org/members). L’équipe Hyperledger Fabric est très active et propose 3 SDK différents. Enfin, Hyperledger Fabric, portée par la Fondation Linux, fournit de nouveaux outils : un outil d'exploration (Hyperledger Explorer), un système de déploiement (Cello) et une interface simplifiée afin de créer facilement un réseau de business blockchain (Composer).
Conclusion
Pour conclure, nous pensons que les blockchains Hyperledger Fabric et Ethereum sont à la fois célèbres et très susceptibles de réussir dans les prochaines années. Beaucoup d’outils sont disponibles pour travailler et interagir avec celles-ci et beaucoup de développeurs travaillent continuellement sur ces outils.
Cependant, malgré leur efficacité, ils ne visent pas les mêmes objectifs.
Ces solutions répondent à des cas d’utilisation vraiment différents. D’une part, vous avez une plateforme ouverte où tout est lisible avec un workflow des événements standard, et d’autre part, vous devez construire et déployer votre propre blockchain et être en mesure de mettre en œuvre le consensus dont vous avez besoin, vos règles de gestion, et choisir quelles entités seront impliquées dans la blockchain.
Si vous construisez un projet qui nécessite de la confidentialité et des autorisations, vous utiliseriez probablement Hyperledger Fabric. Si vous n’avez pas besoin de restrictions, vous pourriez envisager d’utiliser la blockchain Ethereum.
Nous n’avons parlé que de deux blockchains dans cet article. Il en existe beaucoup d'autres et même si certaines d’entre elles sont très similaires, elles ont été conçues à des fins différentes.
Chez chainHero, nous avons la compétence et l’expérience du développement blockchain. Nous avons la capacité d’évaluer votre projet, de vous donner un premier avis et nous pouvons mettre en place des prototypes ou des projets réels !
Si vous avez un projet blockchain, visitez notre site https://chainhero.io et contactez-nous ici [email protected]
Sources
- https://www.hyperledger.org/wp-content/uploads/2017/08/Hyperledger_Arch_WG_Paper_1_Consensus.pdf
- https://github.com/ethereum/wiki/wiki/White-Paper
- https://fr.wikipedia.org/wiki/Ethereum
- https://en.wikipedia.org/wiki/Hyperledger
- https://github.com/ethereum/go-ethereum/wiki/Private-network