Qu’est-ce qu’Ethereum ?

Bannière Amazon du livre Maîtriser Ethereum

Ethereum est souvent décrit comme "l’ordinateur du monde." Mais qu’est-ce que cela signifie ? Commençons par une description axée sur l’informatique, puis essayons de décrypter cela avec une analyse plus pratique des capacités et des caractéristiques d’Ethereum, tout en le comparant à Bitcoin et à d’autres plateformes d’échange d’informations décentralisées (ou « chaînes de blocs » pour court).

D’un point de vue informatique, Ethereum est une machine à états déterministe mais pratiquement illimitée, composée d’un état singleton globalement accessible et d’une machine virtuelle qui applique des modifications à cet état.

D’un point de vue plus pratique, Ethereum est une infrastructure informatique à source libre décentralisée à l’échelle mondiale qui exécute des programmes appelés contrats intelligents. Il utilise une chaîne de blocs pour synchroniser et stocker les changements d’état du système, ainsi qu’une cryptomonnaie appelée ether pour mesurer et limiter les coûts des ressources d’exécution.

La plate-forme Ethereum permet aux développeurs de créer de puissantes applications décentralisées avec des fonctions économiques intégrées. Tout en offrant une disponibilité, une auditabilité, une transparence et une neutralité élevées, il réduit ou élimine également la censure et réduit certains risques de contrepartie.

Comparé à Bitcoin

Beaucoup de gens viendront à Ethereum avec une expérience préalable des cryptomonnaies, en particulier du Bitcoin. Ethereum partage de nombreux éléments communs avec d’autres chaînes de blocs ouvertes : un réseau pair à pair reliant les participants, un algorithme de consensus byzantin tolérant aux pannes pour la synchronisation des mises à jour d’état (une chaîne de blocs de preuve de travail), l’utilisation de primitives cryptographiques telles que le numérique signatures et hachages, et une monnaie numérique (ether).

Pourtant, à bien des égards, le but et la construction d’Ethereum sont étonnamment différents de ceux des chaînes de blocs ouvertes qui l’ont précédé, y compris Bitcoin.

Le but d’Ethereum n’est pas principalement d’être un réseau de paiement en monnaie numérique. Alors que la monnaie numérique ether fait à la fois partie intégrante et nécessaire au fonctionnement d’Ethereum, l’ether est conçu comme une monnaie d’utilité pour payer l’utilisation de la plate-forme Ethereum en tant qu’ordinateur mondial.

Contrairement à Bitcoin, qui a un langage de script très limité, Ethereum est conçu pour être une chaîne de blocs programmable à usage général qui exécute une machine virtuelle capable d’exécuter du code d’une complexité arbitraire et illimitée. Là où le langage de script de Bitcoin est, intentionnellement, contraint à une simple évaluation vrai/faux des conditions de dépenses, le langage d’Ethereum est Turing complet, ce qui signifie qu’Ethereum peut fonctionner directement comme un ordinateur à usage général.

Composantes d’une chaîne de blocs

Les composantes d’une chaîne de blocs ouverte et publique sont (généralement) :

  • Un réseau pair à pair (P2P) connectant les participants et propageant les transactions et les blocs de transactions vérifiées, basé sur un "échange" protocolaire standardisé.

  • Messages, sous forme de transactions, représentant des transitions d’état

  • Un ensemble de règles consensuelles, régissant ce qui constitue une transaction et ce qui constitue une transition d’état valide

  • Une machine à états qui traite les transactions selon les règles du consensus

  • Une chaîne de blocs cryptographiquement sécurisés qui agit comme un journal de toutes les transitions d’état vérifiées et acceptées

  • Un algorithme de consensus qui décentralise le contrôle sur la chaîne de blocs, en forçant les participants à coopérer à l’application des règles de consensus

  • Un schéma d’incitation théoriquement valable (par exemple, les coûts de la preuve de travail plus les récompenses globales) pour sécuriser économiquement la machine d’état dans un environnement ouvert.

  • Une ou plusieurs implémentations logicielles à source libre des éléments ci-dessus ("clients")

Tous ou la plupart de ces composants sont généralement combinés dans un seul client logiciel. Par exemple, dans Bitcoin, l’implémentation de référence est développée par le projet à source libre Bitcoin Core et implémentée en tant que client bitcoind. Dans Ethereum, plutôt qu’une implémentation de référence, il existe une spécification de référence, une description mathématique du système dans le livre jaune (voir Lectures complémentaires). Il existe un certain nombre de clients, qui sont construits selon la spécification de référence.

Dans le passé, nous utilisions le terme "chaîne de blocs" pour représenter tous les composants que nous venons d’énumérer, comme une référence abrégée à la combinaison de technologies qui englobent toutes les caractéristiques décrites. Aujourd’hui, cependant, il existe une grande variété de chaînes de blocs avec des propriétés différentes. Nous avons besoin de qualificatifs pour nous aider à comprendre les caractéristiques de la chaîne de blocs en question, telles que ouverte, publique, globale, décentralisée, neutre, et résistante à la censure, pour identifier les caractéristiques émergentes importantes d’un système "chaîne de blocs" que ces composants permettent.

Toutes les chaînes de blocs ne sont pas créées égales. Quand quelqu’un vous dit que quelque chose est une chaîne de blocs, vous n’avez pas reçu de réponse ; vous devez plutôt commencer à poser beaucoup de questions pour clarifier ce qu’elles veulent dire lorsqu’elles utilisent le mot "chaîne de blocs". Commencez par demander une description des composants de la liste précédente, puis demandez si cette "chaîne de blocs" présente les caractéristiques d’être ouverte, publique, etc.

La naissance d’Ethereum

Toutes les grandes innovations résolvent de vrais problèmes, et Ethereum ne fait pas exception. Ethereum a été conçu à une époque où les gens reconnaissaient la puissance du modèle Bitcoin et essayaient d’aller au-delà des applications de cryptomonnaie. Mais les développeurs étaient confrontés à une énigme : ils devaient soit construire sur Bitcoin, soit démarrer une nouvelle chaîne de blocs. S’appuyer sur Bitcoin signifiait vivre dans les limites intentionnelles du réseau et essayer de trouver des solutions de contournement. L’ensemble limité de types de transactions, de types de données et de tailles de stockage de données semblait limiter les types d’applications pouvant s’exécuter directement sur Bitcoin ; tout le reste nécessitait des couches hors chaîne supplémentaires, ce qui annulait immédiatement bon nombre des avantages de l’utilisation d’une chaîne de blocs publique. Pour les projets qui avaient besoin de plus de liberté et de flexibilité tout en restant pertinent, une nouvelle chaîne de blocs était la seule option. Mais cela signifiait beaucoup de travail : démarrage de tous les éléments de l’infrastructure, tests exhaustifs, etc.

Vers la fin de 2013, Vitalik Buterin, un jeune programmeur et passionné de Bitcoin, a commencé à réfléchir à l’extension des capacités de Bitcoin et Mastercoin (un protocole Bitcoin de superposition étendu pour offrir des contrats intelligents rudimentaires). En octobre de la même année, Vitalik a proposé une approche plus généralisée à l’équipe Mastercoin, qui permettait à des contrats flexibles et scriptables (mais pas Turing-complets) de remplacer le langage contractuel spécialisé de Mastercoin. Bien que l’équipe Mastercoin ait été impressionnée, cette proposition était un changement trop radical pour s’intégrer dans leur feuille de route de développement.

En décembre 2013, Vitalik a commencé à partager un livre blanc qui décrivait l’idée derrière Ethereum : une chaîne de blocs à usage général complète de Turing. Quelques dizaines de personnes ont vu cette première ébauche et ont fait part de leurs commentaires, aidant Vitalik à faire évoluer la proposition.

Les deux auteurs de ce livre ont reçu une première ébauche du livre blanc et l’ont commentée. Andreas M. Antonopoulos a été intrigué par l’idée et a posé de nombreuses questions à Vitalik sur l’utilisation d’une chaîne de blocs distincte pour appliquer des règles de consensus sur l’exécution de contrats intelligents et les implications d’un langage Turing-complet. Andreas a continué à suivre les progrès d’Ethereum avec beaucoup d’intérêt, mais en était aux premiers stades de l’écriture de son livre Mastering Bitcoin, et n’a participé directement à Ethereum que bien plus tard. Dr. Gavin Wood, cependant, a été l’une des premières personnes à contacter Vitalik et à lui proposer de l’aider avec ses compétences en programmation C++. Gavin est devenu le cofondateur, le codesigner et le CTO d’Ethereum.

Comme le raconte Vitalik dans son article "Ethereum Prehistory" :

C’était l’époque où le protocole Ethereum était entièrement ma propre création. À partir de là, cependant, de nouveaux participants ont commencé à rejoindre le giron. De loin, le plus important du côté du protocole était Gavin Wood…​

Gavin peut également être largement crédité du changement subtil de vision d’Ethereum comme une plate-forme pour créer de l’argent programmable, avec des contrats basés sur la chaîne de blocs qui peuvent contenir des actifs numériques et les transférer selon des règles prédéfinies, à une plate-forme informatique à usage général. Cela a commencé par de subtils changements d’accent et de terminologie, et plus tard cette influence s’est renforcée avec l’accent croissant mis sur l’ensemble "Web 3", qui considérait Ethereum comme un élément d’une suite de technologies décentralisées, les deux autres étant Whisper et Swarm.

À partir de décembre 2013, Vitalik et Gavin ont affiné et fait évoluer l’idée, construisant ensemble la couche de protocole qui est devenue Ethereum.

Les fondateurs d’Ethereum pensaient à une chaîne de blocs sans but précis, qui pourrait prendre en charge une grande variété d’applications en étant programmée. L’idée était qu’en utilisant une chaîne de blocs à usage général comme Ethereum, un développeur pouvait programmer son application particulière sans avoir à mettre en œuvre les mécanismes sous-jacents des réseaux pair à pair, des chaînes de blocs, des algorithmes de consensus, etc. La plateforme Ethereum a été conçue pour abstraire ces détails en fournissant un environnement de programmation déterministe et sécurisé pour les applications chaîne de blocs décentralisées.

Tout comme Satoshi, Vitalik et Gavin n’ont pas simplement inventé une nouvelle technologie ; ils ont combiné de nouvelles inventions avec des technologies existantes d’une manière nouvelle et ont livré le code prototype pour prouver leurs idées au monde.

Les fondateurs ont travaillé pendant des années, construisant et affinant la vision. Et le 30 juillet 2015, le premier bloc Ethereum a été miné. L’ordinateur du monde a commencé à servir le monde.

Note

L’article de Vitalik Buterin "A Prehistory of Ethereum" a été publié en septembre 2017 et offre une vue fascinante à la première personne des premiers instants d’Ethereum.

Les quatre étapes de développement d’Ethereum

Le développement d’Ethereum a été planifié en quatre étapes distinctes, avec des changements majeurs à chaque étape. Une étape peut inclure des sous-versions, appelées "embranchements divergents" (hard forks), qui modifient les fonctionnalités d’une manière qui n’est pas rétrocompatible .

Les quatre principales étapes de développement portent le nom de code Frontier, Homestead, Metropolis et Serenity. Les embranchements divergents intermédiaires qui se sont produits (ou sont prévus) à ce jour portent les noms de code Ice Age, DAO, Tangerine Whistle, Spurious Dragon, Byzantium et Constantinople. Les étapes de développement et les embranchements divergents intermédiaires sont présentées sur la chronologie suivante, qui est "datée" par numéro de bloc :

Bloc #0

Frontier—L’étape initiale d’Ethereum, du 30 juillet 2015 à mars 2016.

Bloc #200 000

Ice Age—Un embranchement divergent pour introduire une augmentation exponentielle de la difficulté, pour motiver une transition vers PoS lorsque prêt.

Bloc #1 150 000

Homestead—La deuxième étape d’Ethereum, lancée en mars 2016.

Bloc #1 192 000

DAO—Un embranchement divergent qui a remboursé les victimes du contrat DAO piraté et a provoqué la scission d’Ethereum et d’Ethereum Classic en deux systèmes concurrents.

Bloc #2 463 000

Tangerine Whistle—Un embranchement divergent pour modifier le calcul du gaz pour certaines opérations lourdes en E/S et pour effacer l’état accumulé d’un déni de service (DoS) attaque qui a exploité le faible coût du gaz de ces opérations.

Bloc #2 675 000

Spurious Dragon—Un embranchement divergent pour traiter plus de vecteurs d’attaque DoS, et un autre effacement d’état. En outre, un mécanisme de protection contre les attaques par relecture.

Bloc #4 370 000

Metropolis Byzantium—Metropolis est la troisième étape d’Ethereum, en cours au moment de la rédaction de ce livre, lancée en octobre 2017. Byzance est le premier des deux embranchements divergents prévus pour Metropolis.

Après Byzance, il y a un autre embranchement divergent prévu pour Metropolis : Constantinople. Metropolis sera suivi de la dernière étape du déploiement d’Ethereum, baptisée Serenity.

Ethereum : une chaîne de blocs à usage général

La chaîne de blocs d’origine, à savoir la chaîne de blocs de Bitcoin, suit l’état de unités de bitcoin et leur propriété. Vous pouvez considérer Bitcoin comme une machine à états à consensus distribué, où les transactions provoquent une transition d’état globale, modifiant la propriété des pièces. Les transitions d’état sont contraintes par les règles du consensus, permettant à tous les participants de (éventuellement) converger vers un état commun (consensus) du système, après que plusieurs blocs aient été minés.

Ethereum est également une machine à états distribuée. Mais au lieu de suivre uniquement l’état de la propriété de la devise, Ethereum suit les transitions d’état d’un magasin de données à usage général, c’est-à-dire un magasin pouvant contenir toutes les données exprimables en tant que uplet clé–valeur. Un magasin de données clé-valeur contient des valeurs arbitraires, chacune référencée par une clé ; par exemple, la valeur "Mastering Ethereum" référencée par la clé "Titre du livre". À certains égards, cela sert le même objectif que le modèle de stockage de données de Random Access Memory (RAM) utilisé par la plupart des ordinateurs à usage général. Ethereum a une mémoire qui stocke à la fois le code et les données, et il utilise la chaîne de blocs Ethereum pour suivre l’évolution de cette mémoire au fil du temps. Comme un ordinateur à programme stocké à usage général, Ethereum peut charger du code dans sa machine d’état et exécuter ce code, en stockant les changements d’état résultants dans sa chaîne de blocs. Deux des différences critiques par rapport à la plupart des ordinateurs à usage général sont que les changements d’état d’Ethereum sont régis par les règles du consensus et que l’état est distribué à l’échelle mondiale. Ethereum répond à la question : "Et si nous pouvions suivre n’importe quel état arbitraire et programmer la machine à états pour créer un ordinateur mondial fonctionnant par consensus ?"

Composants d’Ethereum

Dans Ethereum, les composantes d’un système de chaîne de blocs décrit dans Composantes d’une chaîne de blocs sont, plus précisément :

Réseau P2P

Ethereum fonctionne sur le réseau principal Ethereum, qui est adressable sur le port TCP 30303, et exécute un protocole appelé ÐΞVp2p.

Règles de consensus

Les règles de consensus d’Ethereum sont définies dans la spécification de référence, le Yellow Paper (voir Lectures complémentaires).

Transactions

Les transactions Ethereum sont des messages réseau qui incluent (entre autres) un expéditeur, un destinataire, une valeur et une charge utile de données.

Machine d’état

Les transitions d’état Ethereum sont traitées par la Ethereum Virtual Machine (EVM), une machine virtuelle basée sur la pile qui exécute le bytecode (code intermédiaire ou instructions en langage machine). Les programmes EVM, appelés « contrats intelligents », sont écrits dans des langages de haut niveau (par exemple, Solidity) et compilés en code intermédiaire pour être exécutés sur l’EVM.

Structures de données

L’état d’Ethereum est stocké localement sur chaque nœud en tant que base de données (généralement LevelDB de Google), qui contient les transactions et l’état du système dans une structure de données hachée sérialisée appelée Arbre Merkle Patricia.

Algorithme de consensus

Ethereum utilise le modèle de consensus de Bitcoin, Nakamoto Consensus, qui utilise des blocs séquentiels à signature unique, pondérés en importance par PoW pour déterminer la chaîne la plus longue et donc l’état actuel. Cependant, il est prévu de passer à un système de vote pondéré PoS, nommé Casper, dans un proche avenir.

Sécurité économique

Ethereum utilise actuellement un algorithme PoW appelé Ethash, mais cela finira par être abandonné avec le passage au PoS à un moment donné dans le futur.

Clients

Ethereum a plusieurs implémentations interopérables du logiciel client, dont les plus importantes sont Go-Ethereum (Geth) et Parity.

Lectures complémentaires

Les références suivantes fournissent des informations supplémentaires sur les technologies mentionnées ici :

Complétude d’Ethereum et de Turing

Dès que vous commencez à lire sur Ethereum, vous rencontrerez immédiatement le terme "Turing complet". Ethereum, disent-ils, contrairement à Bitcoin, est Turing complet. Qu’est-ce que cela veut dire exactement?

Le terme fait référence au mathématicien anglais Alan Turing, qui est considéré comme le père de l’informatique. En 1936, il crée un modèle mathématique d’ordinateur consistant en une machine à états qui manipule des symboles en les lisant et en les écrivant sur une mémoire séquentielle (ressemblant à une bande de papier de longueur infinie). Avec cette construction, Turing a continué à fournir une base mathématique pour répondre (par la négative) aux questions sur la calculabilité universelle, c’est-à-dire si tous les problèmes peuvent être résolus. Il a prouvé qu’il existe des classes de problèmes qui ne sont pas calculables. Plus précisément, il a prouvé que le problème d’arrêt (s’il est possible, étant donné un programme arbitraire et son entrée, de déterminer si le programme finira par s’arrêter) n’est pas résoluble.

Alan Turing a en outre défini un système comme étant Turing complet s’il peut être utilisé pour simuler n’importe quelle machine de Turing. Un tel système s’appelle une machine de Turing universelle (UTM).

La capacité d’Ethereum à exécuter un programme stocké, dans une machine à états appelée Ethereum Virtual Machine, tout en lisant et en écrivant des données dans la mémoire en fait un système Turing complet et donc un UTM. Ethereum peut calculer n’importe quel algorithme pouvant être calculé par n’importe quelle machine de Turing, compte tenu des limites de la mémoire finie.

L’innovation révolutionnaire d’Ethereum consiste à combiner l’architecture informatique à usage général d’un ordinateur à programme stocké avec une chaîne de blocs décentralisée, créant ainsi un ordinateur mondial distribué à un seul état (singleton). Les programmes Ethereum s’exécutent "partout", mais produisent un état commun qui est sécurisé par les règles de consensus.

Complétude de Turing en tant que "fonctionnalité"

En entendant qu’Ethereum est Turing complet, vous pourriez arriver à la conclusion qu’il s’agit d’une fonctionnalité qui manque d’une manière ou d’une autre dans un système qui est incomplet de Turing. C’est plutôt le contraire. La complétude de Turing est très facile à réaliser ; en fait, http://bit.ly/2ABft33 [la machine d’état Turing complète la plus simple connue] a 4 états et utilise 6 symboles, avec une définition d’état qui ne compte que 22 instructions. En effet, il arrive parfois que des systèmes soient « accidentellement Turing complets ». Une référence amusante de tels systèmes peut être trouvée à http://bit.ly/2Og1VgX.

Cependant, l’exhaustivité de Turing est très dangereuse, en particulier dans les systèmes à accès ouvert comme les chaînes de blocs publiques, en raison du problème d’arrêt que nous avons évoqué plus tôt. Par exemple, les imprimantes modernes sont Turing complètes et peuvent recevoir des fichiers à imprimer qui les envoient dans un état figé. Le fait qu’Ethereum soit Turing complet signifie que n’importe quel programme de n’importe quelle complexité peut être calculé par Ethereum. Mais cette flexibilité pose des problèmes épineux de sécurité et de gestion des ressources. Une imprimante qui ne répond pas peut être éteinte et rallumée. Ce n’est pas possible avec une chaîne de blocs publique.

Implications de la complétude de Turing

Turing a prouvé que vous ne pouvez pas prédire si un programme se terminera en le simulant sur un ordinateur. En termes simples, nous ne pouvons pas prédire le chemin d’un programme sans l’exécuter. Les systèmes Turing-complets peuvent s’exécuter en "boucles infinies", un terme utilisé (en simplifiant à l’extrême) pour décrire un programme qui ne se termine pas. Il est trivial de créer un programme qui exécute une boucle qui ne se termine jamais. Mais des boucles sans fin involontaires peuvent survenir sans avertissement, en raison d’interactions complexes entre les conditions de départ et le code. Dans Ethereum, cela pose un défi : chaque nœud participant (client) doit valider chaque transaction, en exécutant tous les contrats intelligents qu’il appelle. Mais comme Turing l’a prouvé, Ethereum ne peut pas prédire si un contrat intelligent prendra fin, ou combien de temps il durera, sans réellement l’exécuter (éventuellement pour toujours). Que ce soit par accident ou exprès, un contrat intelligent peut être créé de telle sorte qu’il s’exécute indéfiniment lorsqu’un nœud tente de le valider. Il s’agit en fait d’une attaque DoS. Et bien sûr, entre un programme qui prend une milliseconde à valider et un autre qui s’exécute indéfiniment, il existe une gamme infinie de programmes désagréables, monopolisant les ressources, gonflant la mémoire et provoquant une surchauffe du processeur qui gaspillent simplement des ressources. Dans un ordinateur mondial, un programme qui abuse des ressources arrive à abuser des ressources mondiales. Comment Ethereum limite-t-il les ressources utilisées par un contrat intelligent s’il ne peut pas prédire l’utilisation des ressources à l’avance ?

Pour répondre à ce défi, Ethereum introduit un mécanisme de mesure appelé gaz. Comme l’EVM exécute un contrat intelligent, il comptabilise soigneusement chaque instruction (calcul, accès aux données, etc.). Chaque instruction a un coût prédéterminé en unités de gaz. Lorsqu’une transaction déclenche l’exécution d’un contrat intelligent, elle doit inclure une quantité de gaz qui fixe la limite supérieure de ce qui peut être consommé en exécutant le contrat intelligent. L’EVM terminera l’exécution si la quantité de gaz consommée par le calcul dépasse le gaz disponible dans la transaction. Le gaz est le mécanisme utilisé par Ethereum pour permettre un calcul complet de Turing tout en limitant les ressources que tout programme peut consommer.

La question suivante est, "comment obtenir du gaz pour payer le calcul sur l’ordinateur mondial Ethereum?" Vous ne trouverez pas de gaz sur les échanges. Il ne peut être acheté que dans le cadre d’une transaction et ne peut être acheté qu’avec de l’ether. L’ether doit être envoyé avec une transaction et il doit être explicitement affecté à l’achat de gaz, avec un prix du gaz acceptable. Comme à la pompe, le prix de l’essence n’est pas fixe. Le gaz est acheté pour la transaction, le calcul est exécuté et tout gaz non utilisé est remboursé à l’expéditeur de la transaction.

Des chaînes de blocs à usage général aux applications décentralisées (DApps)

Ethereum a commencé comme un moyen de créer une chaîne de blocs à usage général qui peut être programmé pour une variété d’utilisations. Mais très rapidement, la vision d’Ethereum s’est élargie pour devenir une plateforme de programmation de DApps. Les DApps représentent une perspective plus large que les contrats intelligents. Un DApp est, à tout le moins, un contrat intelligent et une interface utilisateur Web. Plus généralement, une DApp est une application Web qui repose sur des services d’infrastructure ouverts, décentralisés et pair à pair.

Une DApp est composée d’au moins :

  • Contrats intelligents sur une chaîne de blocs

  • Une interface utilisateur Web frontale

De plus, de nombreux DApps incluent d’autres composants décentralisés, tels que :

  • Un protocole et une plateforme de stockage décentralisé (P2P)

  • Un protocole et une plateforme de messagerie décentralisée (P2P)

Tip

Vous pouvez voir des DApps orthographiés comme ÐApps. Le caractère Ð est le caractère latin appelé "ETH", faisant allusion à Ethereum. Pour afficher ce caractère, utilisez le point de code Unicode 0xD0, ou si nécessaire l’entité caractère HTML eth (ou entité décimale #208).

Le troisième âge d’Internet

En 2004, le terme "Web 2.0" a pris de l’importance, décrivant une évolution du Web vers un contenu généré par l’utilisateur, des interfaces réactives et l’interactivité. Web 2.0 n’est pas une spécification technique, mais plutôt un terme décrivant le nouveau centre d’intérêt des applications Web.

Le concept de DApps est destiné à faire passer le World Wide Web à sa prochaine étape d’évolution naturelle, en introduisant la décentralisation avec des protocoles pair à pair dans tous les aspects d’une application Web. Le terme utilisé pour décrire cette évolution est web3, c’est-à-dire la troisième "version" du web. Proposé pour la première fois par le Dr Gavin Wood, web3 représente une nouvelle vision et une nouvelle orientation pour les applications Web : des applications détenues et gérées de manière centralisée aux applications basées sur des protocoles décentralisés .

Dans les chapitres suivants, nous explorerons la bibliothèque JavaScript Ethereum web3.js, qui relie les applications JavaScript qui s’exécutent dans votre navigateur avec la chaîne de blocs Ethereum. La bibliothèque web3.js comprend également une interface vers un réseau de stockage P2P appelé Swarm et un service de messagerie P2P appelé Whisper. Avec ces trois composants inclus dans une bibliothèque JavaScript exécutée dans votre navigateur Web, les développeurs disposent d’une suite complète de développement d’applications qui leur permet de créer des DApps web3.

Culture de développement d’Ethereum

Jusqu’à présent, nous avons expliqué en quoi les objectifs et la technologie d’Ethereum diffèrent de ceux des autres chaînes de blocs qui l’ont précédé , comme Bitcoin. Ethereum a également une culture de développement très différente.

Dans Bitcoin, le développement est guidé par des principes conservateurs : tous les changements sont soigneusement étudiés pour s’assurer qu’aucun des systèmes existants ne soit perturbé. Pour la plupart, les modifications ne sont mises en œuvre que si elles sont rétrocompatibles. Les clients existants sont autorisés à s’inscrire, mais continueront à fonctionner s’ils décident de ne pas effectuer la mise à niveau.

Dans Ethereum, en comparaison, la culture de développement de la communauté est axée sur l’avenir plutôt que sur le passé. Le mantra (pas tout à fait sérieux) est "avancez vite et cassez des choses". Si un changement est nécessaire, il est mis en œuvre, même si cela signifie invalider les hypothèses précédentes, rompre la compatibilité ou forcer les clients à se mettre à jour. La culture de développement d’Ethereum se caractérise par une innovation et une évolution rapide et une volonté de déployer des améliorations tournées vers l’avenir, même si cela se fait au détriment d’une certaine rétrocompatibilité.

Cela signifie pour vous, en tant que développeur, que vous devez rester flexible et être prêt à reconstruire votre infrastructure à mesure que certaines des hypothèses sous-jacentes changent. L’un des grands défis auxquels sont confrontés les développeurs d’Ethereum est la contradiction inhérente entre le déploiement de code sur un système immuable et une plate-forme de développement en constante évolution. Vous ne pouvez pas simplement "mettre à niveau" vos contrats intelligents. Vous devez être prêt à en déployer de nouveaux, à migrer les utilisateurs, les applications et les fonds, et à recommencer.

Ironiquement, cela signifie également que l’objectif de construire des systèmes avec plus d’autonomie et moins de contrôle centralisé n’est toujours pas pleinement atteint. L’autonomie et la décentralisation nécessitent un peu plus de stabilité dans la plate-forme que vous n’obtiendrez probablement dans Ethereum dans les prochaines années. Afin de "faire évoluer" la plateforme, vous devez être prêt à supprimer et redémarrer vos contrats intelligents, ce qui signifie que vous devez conserver un certain degré de contrôle sur eux.

Mais, du côté positif, Ethereum avance très vite. Il y a peu d’opportunités pour la "bike-shedding", une expression qui signifie retarder le développement en se disputant sur des détails mineurs tels que la façon de construire le garage à vélos à l’arrière d’une centrale nucléaire. Si vous commencez à faire du vélo, vous découvrirez peut-être soudainement que pendant que vous étiez distrait, le reste de l’équipe de développement a changé le plan et a abandonné les vélos en faveur de l’aéroglisseur autonome.

A terme, le développement de la plateforme Ethereum ralentira et ses interfaces deviendront fixes. Mais en attendant, l’innovation est le principe moteur. Vous feriez mieux de suivre, car personne ne ralentira pour vous.

Pourquoi apprendre Ethereum ?

Les chaînes de blocs ont une courbe d’apprentissage très abrupte, car elles combinent plusieurs disciplines en un seul domaine: programmation, sécurité de l’information, cryptographie, économie, systèmes distribués, réseaux pair à pair, etc. Ethereum rend cette courbe d’apprentissage beaucoup moins abrupte, vous pouvez donc démarrer rapidement. Mais juste sous la surface d’un environnement d’une simplicité trompeuse se cache bien plus. Au fur et à mesure que vous apprenez et commencez à chercher plus profondément, il y a toujours une autre couche de complexité et d’émerveillement.

Ethereum est une excellente plate-forme pour en savoir plus sur les chaînes de blocs et construit une communauté massive de développeurs, plus rapidement que toute autre plate-forme de chaîne de blocs. Plus que tout autre, Ethereum est une chaîne de blocs de développeurs, construite par des développeurs pour des développeurs. Un développeur familiarisé avec les applications JavaScript peut se lancer dans Ethereum et commencer à produire du code fonctionnel très rapidement. Pendant les premières années de la vie d’Ethereum, il était courant de voir des T-shirts annonçant que vous pouvez créer un jeton en seulement cinq lignes de code. Bien sûr, c’est une épée à double tranchant. Il est facile d’écrire du code, mais il est très difficile d’écrire du bon code sécurisé.

Ce que ce livre vous apprendra

Ce livre plonge dans Ethereum et examine chaque composant. Vous commencerez par une transaction simple, décortiquerez son fonctionnement, établirez un contrat simple, l’améliorerez et suivrez son parcours dans le système Ethereum.

Vous apprendrez non seulement comment utiliser Ethereum - comment cela fonctionne - mais aussi pourquoi il est conçu comme il est. Vous pourrez comprendre comment chacune des pièces fonctionne, comment elles s’emboîtent et pourquoi.