Définir la pile web3

Intermédiaire1/8/2024, 2:50:04 AM
L'article explore l'application et le développement de Web3 dans la blockchain.

Dans ce prochain segment de Construction sur web3, l'ingénieur en relations avec les développeurs d'Edge & Node, Nader Dabit, approfondit la pile web3 et explique comment les développeurs peuvent conceptualiser les différents aspects de la construction sur web3.


J'ai basculé vers le web3 en avril 2021 après avoir été un développeur full-stack traditionnel pendant environ 10 ans. En plongeant dans toutes ces nouvelles technologies et idées, la première chose que j'ai voulu savoir était "qu'est-ce que la pile web3?".

Lors de la construction d'une application web ou mobile traditionnelle, je compte souvent sur une poignée de blocs de construction pour accomplir la tâche.

  1. Serveurs API / application (REST ou GraphQL)
  2. Couche d'authentification (gérée ou personnalisée)
  3. Base de données
  4. Cadres, plates-formes et bibliothèques côté client
  5. Stockage de fichiers

En utilisant ces composants de base, je peux développer la plupart des types d'applications que je voudrais, ou du moins arriver à destination pour la plupart. Alors à quoi cela ressemblait-il dans web3?

Il s'avère que la réponse à cela n'est pas si simple car :

  1. Le paradigme est complètement différent à bien des égards
  2. Les outils, les technologies et l'écosystème de web3 sont moins matures que web2

Il m'a également été plus difficile de comprendre comment démarrer et développer des applications web3, car j'abordais les problèmes de la même manière que dans le monde web2.

Après avoir travaillé, fait des recherches, expérimenté et construit des choses au cours des 8 derniers mois environ, j'aimerais partager ce que j'ai appris.

Qu'est-ce que web3?

Avant de définir la pile web3, essayons de définir web3. Il existe d'innombrables définitions selon la personne à qui vous demandez, mais pour moi je trouve cecidéfinition spot on:

Web3 est l'ensemble des protocoles qui permettent des applications entièrement décentralisées.

Avec cette pile technologique décentralisée, nous pouvons commencer à construire des applications décentralisées qui ont leurs propres implications et caractéristiques.

Certaines des caractéristiques activées par web3 sont :

  • Infrastructure Web décentralisée
  • Propriété (de données, de contenu et de plateforme)
  • Paiements numériques natifs
  • Identité auto-souveraine
  • Infrastructure distribuée, sans confiance et robuste
  • Back-ends ouverts, publics et composables

Alors que certaines des applications construites sur des piles technologiques décentralisées remplaceront leurs prédécesseurs, un nouveau paradigme d'applications a également été rendu possible par les nouvelles primitives activées par les blockchains.

Paiements numériques natifs et infrastructure de support public - comme l'apprentissage automatique, les appareils mobiles, la réalité virtuelle, et d'autres primitives technologiques, plateformes et éléments constitutifs - permettent la création de tout nouveaux types d'applications, dont certaines restent à imaginer.

Est-ce que cela signifie que tout va être remplacé par web3? Pas nécessairement. Bien que je pense que construire sur une pile technologique décentralisée est un bien meilleur choix pour certains types d'applications - comme presque toute décision technique, cela dépend de ce que vous construisez.

Commençons maintenant à plonger dans la pile web3, divisée en cet ensemble de catégories :

  • Blockchain
  • Environnement de développement blockchain
  • Stockage de fichiers
  • Protocoles de données hors chaîne
  • API (indexation & interrogation)
  • Identité
  • Client (cadres et bibliothèques)
  • Oracles
  • Autres protocoles

Blockchain

Il existe d'innombrables blockchains sur lesquelles vous pouvez choisir de construire. Il n'y en a pas une seule qui soit "la meilleure", mais vous devriez plutôt prendre en compte les différents compromis entre elles.

Une chose qui est souvent importante pour moi lorsque j'apprends quelque chose de nouveau est l'idée d'appliquer le Principe de Paretoà ce que j'apprends, c'est-à-dire, quelle est la manière la plus efficace d'obtenir le meilleur rendement de cette quantité de temps et d'efforts. En suivant cette idée, je peux gagner le plus de traction et de dynamisme tout en apprenant quelque chose de nouveau en un minimum de temps.

Dans le monde de la Blockchain, apprendre Solidity et le EVM(ou Machine Virtuelle Ethereum) pourrait être le meilleur choix pour commencer en tant que développeur blockchain. En utilisant cet ensemble de compétences (et cette pile technologique), vous pouvez construire non seulement pour Ethereum, mais aussi pour d'autres Layer 2 d'Ethereum, sidechains, et même d'autres blockchains comme Avalanche, Fantom et Celo.

Cela dit, Rust commence à devenir de plus en plus populaire dans le monde de la blockchain, avec Solana, NEAR, Polkadot et d'autres bénéficiant d'un support Rust de premier ordre. Vous ne pouvez probablement pas vous tromper en apprenant l'un ou l'autre, mais pour le débutant, je dirais que Solidity restera le meilleur choix si quelqu'un me posait la question aujourd'hui.

Au-delà de ce conseil, voici un échantillon incomplet de blockchains qui ont une solide combinaison de technologie, d'utilité, de communauté, de dynamisme et de viabilité future :

  • Ethereum- plateforme originale de contrat intelligent
  • ZK rollups: ZKSync, Starknet, Hermez- Ethereum layer 2 à haut débit, mais pas nativement compatible avec l'EVM
  • Rollups optimistes : Arbitrum & Optimisme- Ethereum layer 2s, compatible EVM (apprenez-en plus sur les différences entre les rollups optimistes et ZKici)
  • Polygon- Ethereum sidechain
  • Solana- débit élevé, transactions peu coûteuses, temps de bloc rapides, mais plus difficile à apprendre que l'EVM (Rust)
  • NEAR- Blockchain de couche 1, peut écrire des contrats intelligents en Rust ou en Assemblyscript
  • Cosmos - un écosystème de blockchains interopérables
  • Polkadotplateforme informatique basée sur la blockchain qui permet aux blockchains construites dessus d'exécuter des transactions entre elles, créant un internet interconnecté de blockchains
  • Aurora- Chaîne compatible EVM fonctionnant sur le protocole NEAR.
  • Fantom- Couche 1 compatible EVM
  • Avalanche- Couche 1 compatible EVM
  • Celo- Couche 1 compatible EVM, conçue pour permettre à toute personne possédant un smartphone d'envoyer, de recevoir et de stocker des crypto-monnaies
  • Tezos- Couche 1 non compatible avec EVM, de nombreux projets NFT l'utilisent

Lors de l'interaction avec un réseau, vous devrez utiliser un point de terminaison RPC.

Il existe plusieurs façons de faire cela:

  1. Accéder à un point de terminaison RPC public
  2. Exécution de vos propres nœuds
  3. Accéder à un fournisseur de noeuds en tant que service
  4. Accéder à un fournisseur de nœuds décentralisés en tant que service

Les points de terminaison RPC publics sont souvent fournis par le réseau, mais pour la plupart des dapps de production, vous souhaiterez tirer parti de vos propres points de terminaison car ils ne sont pas stables ou recommandés pour la production.

Il existe quelques fournisseurs de services RPC, en voici quelques-uns :

Il y a aussi une solution web3 / décentralisée, Réseau Pocketqui semble gagner du terrain.

Toutes ces options sont probablement un bon choix pour interagir directement avec votre réseau.

Environnements de développement de la blockchain

Pour le développement EVM, il existe quelques bons environnements de développement disponibles:

  • Casque de chantier(JavaScript) est une option plus récente, mais qui gagne de plus en plus en popularité. Leurs docs sont excellents, l'outillage et l'expérience des développeurs sont soignés, et c'est ce que j'utilise personnellement pour construire des dapps.
  • Truffle(JavaScript) est un ensemble d'outils pour la construction et le développement d'applications sur l'EVM. Il est mature, éprouvé sur le terrain et bien documenté. Il existe depuis un certain temps et de nombreux développeurs l'utilisent.
  • Fonderie est un nouvel environnement de développement Solidity de Paradigm qui montre beaucoup de promesses. Les points saillants sont la possibilité d'écrire des tests en Solidity, le support du fuzzing et la vitesse (il est écrit en Rust). J'ai écrit une introduction séparée à ce sujet ici.
  • Brownie est un cadre de développement et de test basé sur Python pour les contrats intelligents pour le développement Solidity / EVM.

Pour le développement de Solana, Ancre is quickly becoming the entry-point for new developers. It provides a CLI for scaffolding out, building, and testing Solana programs as well as client libraries that you can use for building out front ends. It also includes a DSL that abstracts away a lot of the complexities that developers often run into when they get started with Solana and Rust development.

Stockage de fichiers

Où stockons-nous des images, des vidéos et d'autres fichiers dans le web3? Stocker quelque chose d'aussi volumineux on-chain est généralement prohibitif, donc nous ne voulons probablement pas les y stocker.

Au lieu de cela, nous pouvons utiliser l'un des quelques protocoles de stockage de fichiers :

  • IPFS- protocole de système de fichiers pair à pair
    • avantages: c'est fiable, bien documenté avec un grand écosystème
    • inconvénients : si les données ne sont pas épinglées, elles peuvent être perdues
  • Arweave- vous permet de stocker des données de manière permanente, en payant des frais de transaction uniques. Je suis fan d'Arweave et j'ai écrit un article de blog à ce sujetici.
  • Filecoin - de Protocol Labs, la même équipe qui a construit IPFS, il s'agit d'un protocole conçu pour fournir un système de stockage de données persistant. Il y a une poignée de façonspour les développeurs de construire sur Filecoin, y comprisweb3.storagece qui est assez sympa.
  • Skynet- Je ne l'ai pas encore utilisé en production, mais je l'ai essayé et il semble bien fonctionner. L'API icilooks great. I have questions like how long is the data persisted, and Skynet’s interoperability with other protocols.

Protocoles de données hors chaîne

En plus du stockage de fichiers et du stockage on-chain, vous pourriez également avoir besoin de stocker des données hors chaîne. Vous pourriez utiliser ces types de solutions de manière similaire à la manière dont vous pourriez utiliser une base de données dans une pile technologique traditionnelle, mais au lieu de cela, elles sont répliquées à travers n noeuds sur un réseau décentralisé, et donc plus fiables (du moins en théorie).

Quelques options sont :

  • Réseau en céramique- une plateforme décentralisée, open source pour créer, héberger et partager des données. Ceramic a également un protocole d'identité intéressant dont je parlerai plus tard. Probablement ma solution de stockage hors chaîne préférée pour le moment.Here’sune assez belle démo.
  • TextileThreadDB- une base de données multi-parties construite sur IPFS et Libp2p. Si je comprends bien, il pourrait être en train de subir un important changement d'API en ce moment. Je l'ai essayé et cela montre certaines promesses, mais la documentation et l'expérience développeur ont besoin d'amélioration.
  • GunDB- une base de données décentralisée, pair à pair. Gun existe depuis un certain temps et quelques applications assez intéressantesont été construits avec elle.

En termes de maturité, mon avis est que l'écosystème des solutions de stockage hors chaîne n'est pas encore là où il doit être pour développer certains des cas d'utilisation plus avancés que certains développeurs pourraient souhaiter. Certains défis ici sont les données en temps réel, la détection et la résolution des conflits, l'autorisation d'écriture, la documentation et l'expérience générale des développeurs.

Intégrer des solutions de données hors-chaîne avec des protocoles de blockchain est l'un des derniers grands obstacles que nous devons franchir avant d'avoir une pile de protocoles entièrement décentralisée capable de prendre en charge tout type d'application.

API (indexation & requête)

Il y a beaucoup de différences dans la manière dont nous interagissons et construisons sur les blockchains par rapport aux bases de données dans la pile technologique traditionnelle. Avec les blockchains, les données ne sont pas stockées dans un format pouvant être consommé directement et efficacement par d'autres applications ou interfaces utilisateur.

Les blockchains sont optimisées pour les opérations d'écriture. Vous entendez souvent parler de l'innovation centrée sur les transactions par seconde, le temps de bloc et le coût des transactions. Les données de la blockchain sont écrites en blocs au fil du temps, rendant toute opération de lecture autre que basique impossible.

Dans la plupart des applications, vous avez besoin de fonctionnalités telles que des données relationnelles, du tri, du filtrage, une recherche de texte intégral, une pagination et de nombreux autres types de capacités de requête. Pour ce faire, les données doivent être indexées et organisées pour une récupération efficace.

Traditionnellement, c'est le travail que les bases de données font dans la pile technologique centralisée, mais cette couche d'indexation manquait dans la pile web3.

Le Graph est un protocole d’indexation et d’interrogation des données de la blockchain qui facilite grandement ce processus et offre une solution décentralisée pour le faire. Tout le monde peut créer et publier des API GraphQL ouvertes, appelées sous-graphes, ce qui facilite l’interrogation des données de la blockchain.

Pour en savoir plus sur The Graph, consultez la documentationiciou mon tutorielici.

Identité

L'identité est un paradigme totalement différent dans le web3. En web2, l'authentification est presque toujours basée sur les informations personnelles d'un utilisateur. Ces informations sont généralement collectées soit via un formulaire, soit via un fournisseur OAuth qui demande à l'utilisateur de les fournir en échange de l'accès à l'application.

Dans le web3, l’identité tourne entièrement autour de l’idée de portefeuilles et de cryptographie à clé publique.

Bien que le terme "portefeuille" remplisse sa fonction, j'ai constaté que les personnes novices en web3 trouvent la terminologie confuse en ce qui concerne l'authentification et l'identité. J'espère qu'à l'avenir, nous pourrons trouver un autre moyen de transmettre ce qu'est un portefeuille, car il combine des aspects financiers mais aussi d'identité et de réputation.

En tant que développeur, vous devrez comprendre comment accéder et interagir avec le portefeuille et l'adresse de l'utilisateur de diverses manières.

À un niveau très basique (et une exigence très courante), vous voudrez peut-être demander l’accès au portefeuille de l’utilisateur. Pour ce faire, vous pourrez généralement accéder au portefeuille de l’utilisateur dans le contexte de la fenêtre (navigateur Web) ou en utilisant quelque chose comme WalletConnect (en anglais seulement)ouAdaptateur de portefeuille Solana.

Par exemple, s'ils disposent d'un portefeuille Ethereum disponible, vous pourrez accéder à window.ethereum. Il en va de même pour Solana (window.solana), Arweave (window.arweaveWallet) et quelques autres. WalletConnect est idéal pour le web mobile et React Native car il permet aux utilisateurs de s'authentifier en utilisant directement leurs portefeuilles mobiles depuis l'appareil.

Si vous souhaitez gérer l'authentification vous-même, vous pouvez permettre à l'utilisateur de signer une transaction, puis la décoder quelque part pour authentifier l'utilisateur, mais cela nécessite généralement un serveur.Iciest un exemple de ce à quoi cela pourrait ressembler en utilisant un portefeuille EVM, et iciest un exemple de comment faire cela avec Solana / Phantom.

Qu’en est-il de la gestion des profils d’utilisateurs de manière décentralisée ? Réseau en céramiqueoffre le protocole le plus robuste et la suite d'outils la plus complète pour gérer l'identité décentralisée. Ils ont récemment publiéun article de blogdécrivant certaines de leurs mises à jour les plus récentes et donnant des directives sur la manière dont tous les outils fonctionnent ensemble. Je commencerais par là et explorerais ensuiteleurs documentspour comprendre comment commencer à construire et envisager de consulter mon projet exempleiciqui utilise Ceramicself.id.

Si vous voulez récupérer un utilisateur’s ENSEnregistrements de texte, la bibliothèque ENSJS offre une belle API pour récupérer les données de l'utilisateur:

const ens = new ENS({ fournisseur, ensAddress: getEnsAddress(‘1’) })

const contenu = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceID (en anglais seulement) est aussi quelque chose qui semble prometteur mais je ne l’ai pas encore essayé.

Céramique et Épicéa les deux implémentent l’attribut LE W3C L’A FAIT spécification, qui est elle-même quelque chose que je considérerais comme un élément constitutif du web3. Cela étant dit, toute mise en œuvre centralisée des DID va à l’encontre de l’idée de ce que la spécification tente d’accomplir.

Client

En ce qui concerne les frameworks JavaScript, vous pouvez vraiment construire avec tout ce que vous voulez, car les SDK blockchain côté client sont pour la plupart indépendants du framework. Cela étant dit, un nombre impressionnant de projets et d’exemples sont créés dans React. Il y a aussi une poignée de bibliothèques comme Adaptateur de portefeuille Solanaqui offrent des utilitaires supplémentaires pour React, donc je dirais que d'apprendre ou d'être familier avec React va probablement être un choix judicieux.

Pour les SDK côté client sur Ethereum, il y a web3.jsetethers.jsPour moi, Ethers est plus accessible et possède une meilleure documentation, même si web3.js existe depuis plus longtemps.

En Solana, vous travaillerez probablement avec @solana/web3.jset / ouAncre. J'ai trouvé les bibliothèques client Anchor être mon choix pour construire des programmes Solana puisque j'utilise de toute façon le framework Anchor, et je l'ai trouvé beaucoup plus facile à comprendre que @solana/web3.js.

Oracles

Les oracles permettent aux développeurs d'accéder à la lecture de données du monde réel & des systèmes externes depuis un contrat intelligent.

Par exemple, la plupart des applications financières nécessitent des connaissances sur les données du monde réel & les événements se déroulant hors chaîne, c'est pourquoi les Oracles sont particulièrement importants dans la DeFi.

Chainlinkest un Oracle qui permet l'accès aux données du monde réel et au calcul hors chaîne tout en maintenant les garanties de sécurité et de fiabilité inhérentes à la technologie de la blockchain.

Flux est un oracle cross-chain qui fournit aux contrats intelligents un accès à des flux de données économiquement sécurisés.

Autres protocoles

Radicle est un protocole de collaboration de code décentralisé construit sur Git. Il pourrait être considéré comme une version décentralisée de GitHub.

Livepeerest un réseau de streaming vidéo décentralisé. Il est mature et largement utilisé avec plus de 70 000 GPU en direct sur le réseau.

Envelopper

Cet article sera un document vivant que je suivrai au fur et à mesure que j’apprendrai, expérimenterai et recueillerai les commentaires des développeurs qui construisent dans le web3.

Si vous avez des commentaires ou des idées concernant quelque chose que je n'ai pas ici, veuillez me contacter et partager vos pensées avec moi. C'est excitant de voir toute l'activité se dérouler autour du web3 alors que les développeurs se lancent et s'impliquent. Bien que l'infrastructure soit encore en évolution, la vision de construire des protocoles et des applications vraiment décentralisés permettant aux gens de coordonner sans avoir à donner de pouvoir et de contrôle à de grandes entreprises est importante et nous sommes proches de réaliser cette vision.

Avertissement :

  1. Cet article est repris de [ Gate edgeandnode]. Tous les droits d'auteur appartiennent à l'auteur original [Nader Dabit]. Si vous avez des objections à cette republication, veuillez contacter le Gate Learnéquipe, et ils s'en occuperont rapidement.
  2. Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l’auteur et ne constituent pas un conseil en investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe Gate Learn. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits est interdit.

Définir la pile web3

Intermédiaire1/8/2024, 2:50:04 AM
L'article explore l'application et le développement de Web3 dans la blockchain.

Dans ce prochain segment de Construction sur web3, l'ingénieur en relations avec les développeurs d'Edge & Node, Nader Dabit, approfondit la pile web3 et explique comment les développeurs peuvent conceptualiser les différents aspects de la construction sur web3.


J'ai basculé vers le web3 en avril 2021 après avoir été un développeur full-stack traditionnel pendant environ 10 ans. En plongeant dans toutes ces nouvelles technologies et idées, la première chose que j'ai voulu savoir était "qu'est-ce que la pile web3?".

Lors de la construction d'une application web ou mobile traditionnelle, je compte souvent sur une poignée de blocs de construction pour accomplir la tâche.

  1. Serveurs API / application (REST ou GraphQL)
  2. Couche d'authentification (gérée ou personnalisée)
  3. Base de données
  4. Cadres, plates-formes et bibliothèques côté client
  5. Stockage de fichiers

En utilisant ces composants de base, je peux développer la plupart des types d'applications que je voudrais, ou du moins arriver à destination pour la plupart. Alors à quoi cela ressemblait-il dans web3?

Il s'avère que la réponse à cela n'est pas si simple car :

  1. Le paradigme est complètement différent à bien des égards
  2. Les outils, les technologies et l'écosystème de web3 sont moins matures que web2

Il m'a également été plus difficile de comprendre comment démarrer et développer des applications web3, car j'abordais les problèmes de la même manière que dans le monde web2.

Après avoir travaillé, fait des recherches, expérimenté et construit des choses au cours des 8 derniers mois environ, j'aimerais partager ce que j'ai appris.

Qu'est-ce que web3?

Avant de définir la pile web3, essayons de définir web3. Il existe d'innombrables définitions selon la personne à qui vous demandez, mais pour moi je trouve cecidéfinition spot on:

Web3 est l'ensemble des protocoles qui permettent des applications entièrement décentralisées.

Avec cette pile technologique décentralisée, nous pouvons commencer à construire des applications décentralisées qui ont leurs propres implications et caractéristiques.

Certaines des caractéristiques activées par web3 sont :

  • Infrastructure Web décentralisée
  • Propriété (de données, de contenu et de plateforme)
  • Paiements numériques natifs
  • Identité auto-souveraine
  • Infrastructure distribuée, sans confiance et robuste
  • Back-ends ouverts, publics et composables

Alors que certaines des applications construites sur des piles technologiques décentralisées remplaceront leurs prédécesseurs, un nouveau paradigme d'applications a également été rendu possible par les nouvelles primitives activées par les blockchains.

Paiements numériques natifs et infrastructure de support public - comme l'apprentissage automatique, les appareils mobiles, la réalité virtuelle, et d'autres primitives technologiques, plateformes et éléments constitutifs - permettent la création de tout nouveaux types d'applications, dont certaines restent à imaginer.

Est-ce que cela signifie que tout va être remplacé par web3? Pas nécessairement. Bien que je pense que construire sur une pile technologique décentralisée est un bien meilleur choix pour certains types d'applications - comme presque toute décision technique, cela dépend de ce que vous construisez.

Commençons maintenant à plonger dans la pile web3, divisée en cet ensemble de catégories :

  • Blockchain
  • Environnement de développement blockchain
  • Stockage de fichiers
  • Protocoles de données hors chaîne
  • API (indexation & interrogation)
  • Identité
  • Client (cadres et bibliothèques)
  • Oracles
  • Autres protocoles

Blockchain

Il existe d'innombrables blockchains sur lesquelles vous pouvez choisir de construire. Il n'y en a pas une seule qui soit "la meilleure", mais vous devriez plutôt prendre en compte les différents compromis entre elles.

Une chose qui est souvent importante pour moi lorsque j'apprends quelque chose de nouveau est l'idée d'appliquer le Principe de Paretoà ce que j'apprends, c'est-à-dire, quelle est la manière la plus efficace d'obtenir le meilleur rendement de cette quantité de temps et d'efforts. En suivant cette idée, je peux gagner le plus de traction et de dynamisme tout en apprenant quelque chose de nouveau en un minimum de temps.

Dans le monde de la Blockchain, apprendre Solidity et le EVM(ou Machine Virtuelle Ethereum) pourrait être le meilleur choix pour commencer en tant que développeur blockchain. En utilisant cet ensemble de compétences (et cette pile technologique), vous pouvez construire non seulement pour Ethereum, mais aussi pour d'autres Layer 2 d'Ethereum, sidechains, et même d'autres blockchains comme Avalanche, Fantom et Celo.

Cela dit, Rust commence à devenir de plus en plus populaire dans le monde de la blockchain, avec Solana, NEAR, Polkadot et d'autres bénéficiant d'un support Rust de premier ordre. Vous ne pouvez probablement pas vous tromper en apprenant l'un ou l'autre, mais pour le débutant, je dirais que Solidity restera le meilleur choix si quelqu'un me posait la question aujourd'hui.

Au-delà de ce conseil, voici un échantillon incomplet de blockchains qui ont une solide combinaison de technologie, d'utilité, de communauté, de dynamisme et de viabilité future :

  • Ethereum- plateforme originale de contrat intelligent
  • ZK rollups: ZKSync, Starknet, Hermez- Ethereum layer 2 à haut débit, mais pas nativement compatible avec l'EVM
  • Rollups optimistes : Arbitrum & Optimisme- Ethereum layer 2s, compatible EVM (apprenez-en plus sur les différences entre les rollups optimistes et ZKici)
  • Polygon- Ethereum sidechain
  • Solana- débit élevé, transactions peu coûteuses, temps de bloc rapides, mais plus difficile à apprendre que l'EVM (Rust)
  • NEAR- Blockchain de couche 1, peut écrire des contrats intelligents en Rust ou en Assemblyscript
  • Cosmos - un écosystème de blockchains interopérables
  • Polkadotplateforme informatique basée sur la blockchain qui permet aux blockchains construites dessus d'exécuter des transactions entre elles, créant un internet interconnecté de blockchains
  • Aurora- Chaîne compatible EVM fonctionnant sur le protocole NEAR.
  • Fantom- Couche 1 compatible EVM
  • Avalanche- Couche 1 compatible EVM
  • Celo- Couche 1 compatible EVM, conçue pour permettre à toute personne possédant un smartphone d'envoyer, de recevoir et de stocker des crypto-monnaies
  • Tezos- Couche 1 non compatible avec EVM, de nombreux projets NFT l'utilisent

Lors de l'interaction avec un réseau, vous devrez utiliser un point de terminaison RPC.

Il existe plusieurs façons de faire cela:

  1. Accéder à un point de terminaison RPC public
  2. Exécution de vos propres nœuds
  3. Accéder à un fournisseur de noeuds en tant que service
  4. Accéder à un fournisseur de nœuds décentralisés en tant que service

Les points de terminaison RPC publics sont souvent fournis par le réseau, mais pour la plupart des dapps de production, vous souhaiterez tirer parti de vos propres points de terminaison car ils ne sont pas stables ou recommandés pour la production.

Il existe quelques fournisseurs de services RPC, en voici quelques-uns :

Il y a aussi une solution web3 / décentralisée, Réseau Pocketqui semble gagner du terrain.

Toutes ces options sont probablement un bon choix pour interagir directement avec votre réseau.

Environnements de développement de la blockchain

Pour le développement EVM, il existe quelques bons environnements de développement disponibles:

  • Casque de chantier(JavaScript) est une option plus récente, mais qui gagne de plus en plus en popularité. Leurs docs sont excellents, l'outillage et l'expérience des développeurs sont soignés, et c'est ce que j'utilise personnellement pour construire des dapps.
  • Truffle(JavaScript) est un ensemble d'outils pour la construction et le développement d'applications sur l'EVM. Il est mature, éprouvé sur le terrain et bien documenté. Il existe depuis un certain temps et de nombreux développeurs l'utilisent.
  • Fonderie est un nouvel environnement de développement Solidity de Paradigm qui montre beaucoup de promesses. Les points saillants sont la possibilité d'écrire des tests en Solidity, le support du fuzzing et la vitesse (il est écrit en Rust). J'ai écrit une introduction séparée à ce sujet ici.
  • Brownie est un cadre de développement et de test basé sur Python pour les contrats intelligents pour le développement Solidity / EVM.

Pour le développement de Solana, Ancre is quickly becoming the entry-point for new developers. It provides a CLI for scaffolding out, building, and testing Solana programs as well as client libraries that you can use for building out front ends. It also includes a DSL that abstracts away a lot of the complexities that developers often run into when they get started with Solana and Rust development.

Stockage de fichiers

Où stockons-nous des images, des vidéos et d'autres fichiers dans le web3? Stocker quelque chose d'aussi volumineux on-chain est généralement prohibitif, donc nous ne voulons probablement pas les y stocker.

Au lieu de cela, nous pouvons utiliser l'un des quelques protocoles de stockage de fichiers :

  • IPFS- protocole de système de fichiers pair à pair
    • avantages: c'est fiable, bien documenté avec un grand écosystème
    • inconvénients : si les données ne sont pas épinglées, elles peuvent être perdues
  • Arweave- vous permet de stocker des données de manière permanente, en payant des frais de transaction uniques. Je suis fan d'Arweave et j'ai écrit un article de blog à ce sujetici.
  • Filecoin - de Protocol Labs, la même équipe qui a construit IPFS, il s'agit d'un protocole conçu pour fournir un système de stockage de données persistant. Il y a une poignée de façonspour les développeurs de construire sur Filecoin, y comprisweb3.storagece qui est assez sympa.
  • Skynet- Je ne l'ai pas encore utilisé en production, mais je l'ai essayé et il semble bien fonctionner. L'API icilooks great. I have questions like how long is the data persisted, and Skynet’s interoperability with other protocols.

Protocoles de données hors chaîne

En plus du stockage de fichiers et du stockage on-chain, vous pourriez également avoir besoin de stocker des données hors chaîne. Vous pourriez utiliser ces types de solutions de manière similaire à la manière dont vous pourriez utiliser une base de données dans une pile technologique traditionnelle, mais au lieu de cela, elles sont répliquées à travers n noeuds sur un réseau décentralisé, et donc plus fiables (du moins en théorie).

Quelques options sont :

  • Réseau en céramique- une plateforme décentralisée, open source pour créer, héberger et partager des données. Ceramic a également un protocole d'identité intéressant dont je parlerai plus tard. Probablement ma solution de stockage hors chaîne préférée pour le moment.Here’sune assez belle démo.
  • TextileThreadDB- une base de données multi-parties construite sur IPFS et Libp2p. Si je comprends bien, il pourrait être en train de subir un important changement d'API en ce moment. Je l'ai essayé et cela montre certaines promesses, mais la documentation et l'expérience développeur ont besoin d'amélioration.
  • GunDB- une base de données décentralisée, pair à pair. Gun existe depuis un certain temps et quelques applications assez intéressantesont été construits avec elle.

En termes de maturité, mon avis est que l'écosystème des solutions de stockage hors chaîne n'est pas encore là où il doit être pour développer certains des cas d'utilisation plus avancés que certains développeurs pourraient souhaiter. Certains défis ici sont les données en temps réel, la détection et la résolution des conflits, l'autorisation d'écriture, la documentation et l'expérience générale des développeurs.

Intégrer des solutions de données hors-chaîne avec des protocoles de blockchain est l'un des derniers grands obstacles que nous devons franchir avant d'avoir une pile de protocoles entièrement décentralisée capable de prendre en charge tout type d'application.

API (indexation & requête)

Il y a beaucoup de différences dans la manière dont nous interagissons et construisons sur les blockchains par rapport aux bases de données dans la pile technologique traditionnelle. Avec les blockchains, les données ne sont pas stockées dans un format pouvant être consommé directement et efficacement par d'autres applications ou interfaces utilisateur.

Les blockchains sont optimisées pour les opérations d'écriture. Vous entendez souvent parler de l'innovation centrée sur les transactions par seconde, le temps de bloc et le coût des transactions. Les données de la blockchain sont écrites en blocs au fil du temps, rendant toute opération de lecture autre que basique impossible.

Dans la plupart des applications, vous avez besoin de fonctionnalités telles que des données relationnelles, du tri, du filtrage, une recherche de texte intégral, une pagination et de nombreux autres types de capacités de requête. Pour ce faire, les données doivent être indexées et organisées pour une récupération efficace.

Traditionnellement, c'est le travail que les bases de données font dans la pile technologique centralisée, mais cette couche d'indexation manquait dans la pile web3.

Le Graph est un protocole d’indexation et d’interrogation des données de la blockchain qui facilite grandement ce processus et offre une solution décentralisée pour le faire. Tout le monde peut créer et publier des API GraphQL ouvertes, appelées sous-graphes, ce qui facilite l’interrogation des données de la blockchain.

Pour en savoir plus sur The Graph, consultez la documentationiciou mon tutorielici.

Identité

L'identité est un paradigme totalement différent dans le web3. En web2, l'authentification est presque toujours basée sur les informations personnelles d'un utilisateur. Ces informations sont généralement collectées soit via un formulaire, soit via un fournisseur OAuth qui demande à l'utilisateur de les fournir en échange de l'accès à l'application.

Dans le web3, l’identité tourne entièrement autour de l’idée de portefeuilles et de cryptographie à clé publique.

Bien que le terme "portefeuille" remplisse sa fonction, j'ai constaté que les personnes novices en web3 trouvent la terminologie confuse en ce qui concerne l'authentification et l'identité. J'espère qu'à l'avenir, nous pourrons trouver un autre moyen de transmettre ce qu'est un portefeuille, car il combine des aspects financiers mais aussi d'identité et de réputation.

En tant que développeur, vous devrez comprendre comment accéder et interagir avec le portefeuille et l'adresse de l'utilisateur de diverses manières.

À un niveau très basique (et une exigence très courante), vous voudrez peut-être demander l’accès au portefeuille de l’utilisateur. Pour ce faire, vous pourrez généralement accéder au portefeuille de l’utilisateur dans le contexte de la fenêtre (navigateur Web) ou en utilisant quelque chose comme WalletConnect (en anglais seulement)ouAdaptateur de portefeuille Solana.

Par exemple, s'ils disposent d'un portefeuille Ethereum disponible, vous pourrez accéder à window.ethereum. Il en va de même pour Solana (window.solana), Arweave (window.arweaveWallet) et quelques autres. WalletConnect est idéal pour le web mobile et React Native car il permet aux utilisateurs de s'authentifier en utilisant directement leurs portefeuilles mobiles depuis l'appareil.

Si vous souhaitez gérer l'authentification vous-même, vous pouvez permettre à l'utilisateur de signer une transaction, puis la décoder quelque part pour authentifier l'utilisateur, mais cela nécessite généralement un serveur.Iciest un exemple de ce à quoi cela pourrait ressembler en utilisant un portefeuille EVM, et iciest un exemple de comment faire cela avec Solana / Phantom.

Qu’en est-il de la gestion des profils d’utilisateurs de manière décentralisée ? Réseau en céramiqueoffre le protocole le plus robuste et la suite d'outils la plus complète pour gérer l'identité décentralisée. Ils ont récemment publiéun article de blogdécrivant certaines de leurs mises à jour les plus récentes et donnant des directives sur la manière dont tous les outils fonctionnent ensemble. Je commencerais par là et explorerais ensuiteleurs documentspour comprendre comment commencer à construire et envisager de consulter mon projet exempleiciqui utilise Ceramicself.id.

Si vous voulez récupérer un utilisateur’s ENSEnregistrements de texte, la bibliothèque ENSJS offre une belle API pour récupérer les données de l'utilisateur:

const ens = new ENS({ fournisseur, ensAddress: getEnsAddress(‘1’) })

const contenu = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceID (en anglais seulement) est aussi quelque chose qui semble prometteur mais je ne l’ai pas encore essayé.

Céramique et Épicéa les deux implémentent l’attribut LE W3C L’A FAIT spécification, qui est elle-même quelque chose que je considérerais comme un élément constitutif du web3. Cela étant dit, toute mise en œuvre centralisée des DID va à l’encontre de l’idée de ce que la spécification tente d’accomplir.

Client

En ce qui concerne les frameworks JavaScript, vous pouvez vraiment construire avec tout ce que vous voulez, car les SDK blockchain côté client sont pour la plupart indépendants du framework. Cela étant dit, un nombre impressionnant de projets et d’exemples sont créés dans React. Il y a aussi une poignée de bibliothèques comme Adaptateur de portefeuille Solanaqui offrent des utilitaires supplémentaires pour React, donc je dirais que d'apprendre ou d'être familier avec React va probablement être un choix judicieux.

Pour les SDK côté client sur Ethereum, il y a web3.jsetethers.jsPour moi, Ethers est plus accessible et possède une meilleure documentation, même si web3.js existe depuis plus longtemps.

En Solana, vous travaillerez probablement avec @solana/web3.jset / ouAncre. J'ai trouvé les bibliothèques client Anchor être mon choix pour construire des programmes Solana puisque j'utilise de toute façon le framework Anchor, et je l'ai trouvé beaucoup plus facile à comprendre que @solana/web3.js.

Oracles

Les oracles permettent aux développeurs d'accéder à la lecture de données du monde réel & des systèmes externes depuis un contrat intelligent.

Par exemple, la plupart des applications financières nécessitent des connaissances sur les données du monde réel & les événements se déroulant hors chaîne, c'est pourquoi les Oracles sont particulièrement importants dans la DeFi.

Chainlinkest un Oracle qui permet l'accès aux données du monde réel et au calcul hors chaîne tout en maintenant les garanties de sécurité et de fiabilité inhérentes à la technologie de la blockchain.

Flux est un oracle cross-chain qui fournit aux contrats intelligents un accès à des flux de données économiquement sécurisés.

Autres protocoles

Radicle est un protocole de collaboration de code décentralisé construit sur Git. Il pourrait être considéré comme une version décentralisée de GitHub.

Livepeerest un réseau de streaming vidéo décentralisé. Il est mature et largement utilisé avec plus de 70 000 GPU en direct sur le réseau.

Envelopper

Cet article sera un document vivant que je suivrai au fur et à mesure que j’apprendrai, expérimenterai et recueillerai les commentaires des développeurs qui construisent dans le web3.

Si vous avez des commentaires ou des idées concernant quelque chose que je n'ai pas ici, veuillez me contacter et partager vos pensées avec moi. C'est excitant de voir toute l'activité se dérouler autour du web3 alors que les développeurs se lancent et s'impliquent. Bien que l'infrastructure soit encore en évolution, la vision de construire des protocoles et des applications vraiment décentralisés permettant aux gens de coordonner sans avoir à donner de pouvoir et de contrôle à de grandes entreprises est importante et nous sommes proches de réaliser cette vision.

Avertissement :

  1. Cet article est repris de [ Gate edgeandnode]. Tous les droits d'auteur appartiennent à l'auteur original [Nader Dabit]. Si vous avez des objections à cette republication, veuillez contacter le Gate Learnéquipe, et ils s'en occuperont rapidement.
  2. Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l’auteur et ne constituent pas un conseil en investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe Gate Learn. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits est interdit.
Розпочати зараз
Зареєструйтеся та отримайте ваучер на
$100
!