Lava Network : une couche d’accès modulaire pour le Web3

Dans l’univers multi-chaînes d’aujourd’hui, Lava Network permet non seulement d’accéder facilement au Web3 dans son ensemble, mais propose également un écosystème dynamique où les fournisseurs de services Web3 sont rémunérés pour leur travail. Les blockchains de couche primaire peuvent se connecter à Lava, et les requêtes des utilisateurs sont acheminées vers le meilleur fournisseur de données disponible. Lava Network est donc également une solution de scalabilité pour les Layers 1. De part sa modularité, le protocole Lava et ses différents outils confèrent de nombreux avantages aux développeurs d’applications décentralisées.

Nous allons tout d’abord présenter les notions préalables à la compréhension de Lava Network. Une fois que nous serons familiers avec les concepts d’API et de RPC, nous étudierons l’architecture et le fonctionnement de Lava.

Transparence financière : nous informons nos lecteurs que l’entreprise Journal du Coin a participé à la levée de fonds de ce projet.

Qu’est-ce que Lava Network ?

Lava est une blockchain de couche primaire, développée grâce au kit de développement de Cosmos, le Cosmos SDK. Elle fonctionne en preuve d’enjeu (proof of stake ou PoS) et fournit des services pour les principaux Layers 1 du marché.

Les utilisateurs de Lava peuvent accéder aux données blockchain en envoyant des requêtes aux opérateurs des nœuds du réseau, qui se comportent comme des fournisseurs de données. L’écosystème Lava permet donc d’établir des marchés de la donnée autour de n’importe quel service relatif aux chaînes intégrées au réseau. La qualité des données et de la communication inter-chaînes est assurée par des incitations économiques pour les fournisseurs, qui doivent répondre à certaines exigeances. Il s’agit donc d’une solution de scalabilité pour toutes ces couches primaires, grâce à son réseau de fournisseurs de points de terminaison RPC et d’API.

Lava Network - Vue d'ensemble
Vue d’ensemble du fonctionnement de Lava Network

Afin de comprendre le réseau Lava, il nous faut expliciter ces deux aspects importants de la communication inter-chaînes : les API (Application Programming Interfaces) et les RPC (Remote Procedure Calls).

Les API blockchain

API est l’acronyme d’application programming interface. Il s’agit d’un ensemble normalisé de classes, de méthodes, de fonctions et de constantes permettant à un “consommateur” (développeur ou logiciel) d’accéder à d »autres services logiciels. Dans le domaine des blockchains, les API permettent donc d’accéder aux données et aux fonctionnalités d’une ou plusieurs chaînes. Cela permet aux développeurs d’applications d’intégrer facilement leur dApp au sein de systèmes externes à la blockchain, et d’utiliser les données on-chain de façon optimale. Les API permettent notamment de réduire les coûts de développement, et de monétiser ses dApps, en facturant l’accès à ces données et à ces fonctionnalités.

Les RPC

RPC signifie remote procedure call. Il s’agit d’un protocole de communication logiciel qui permet à un programme de requêter des services ou des processus à distance. Dans l’univers blockchain, on appelle nœuds RPC les serveurs permettant aux utilisateurs de lire des données blockchain, d’envoyer des transactions au sein de différents réseaux. Les points de terminaison ou RPC endpoints définissent la localisation où les programmes (dApps) transfèrent leurs requêtes pour accéder aux données serveur.

Exemples de RPC pour différents réseaux blockchain.

Les fonctionnalités de Lava Network

Lava Network est donc un écosystème de RPC modulaire offrant de nombreux avantages à ses utilisateurs :

  • Qualité de service ;
  • Fiabilité des données ;
  • Confidentialité et anonymat ;
  • Scalabilité ;
  • Accès décentralisé ;
  • Développement open source.

Lava Network supporte d’ores et déjà plus de 30 Layers 1 différents.

Lava Network - Chaînes
Exemples des chaînes déjà intégrées à Lava Network

Ainci, on peut voir Lava Network comme un bureau de poste et une place de marché pour les RPC. Les requêtes sont acheminées de façon optimale au sein des différentes chaînes et services. La flexibilité modulaire de Lava Network offre de multiples fonctionnalités et possibilités pour les acteurs du réseau.

Les différents acteurs au sein de Lava Network

On distingue 5 types d’acteurs sur Lava, qui ont des rôles distincts. Le réseau Lava aligne les intérêts économiques de tous les participants afin de créer une place de marché dynamique répondant à l’offre et à la demande pour tout type de service ou de chaîne.

Nous allons détailler les interactions entre ces différents acteurs.

Les consommateurs

Il s’agit des individus qui souhaitent accéder aux données blockchain et aux services offerts par Lava Network. Il peut donc s’agir de développeurs d’applications décentralisées, de fournisseurs de données, ou tout simplement d’utilisateurs souhaitant accéder aux différents services.

Les validateurs

La blockchain de Lava est conçue grâce au Cosmos SDK et fonctionne en preuve d’enjeu : son mécanisme de consensus est donc basé sur le célèbre Tendermint. Les validateurs sont les nœuds chargés de produire les blocs, d’exécuter les transactions et participent aussi à la gouvernance du réseau. Ils sécurisent le réseau via le staking de jetons LAVA et sont récompensés via les frais de transaction et les récompenses de bloc.

Les fournisseurs

Les providers opèrent des nœuds relais RPC pour les chaînes intégrées à l’écosystème, et répondent aux requêtes des consommateurs. En échange, ils reçoivent des jetons LAVA, qui correspondent s’agit des frais payés par les consommateurs.

Afin de devenir un fournisseur, il faudra staker des jetons Lava, et disposer de nœuds relais RPC opérationnels, respectant les spécifications. Les fournisseurs proposent donc de multiples API et interfaces pour les différentes chaînes, accessibles via un point d’entrée unique. Ils ont accès à plusieurs fonctionnalités :

  • Suivi des récompenses ;
  • Mise en cache pour réduire les coûts d’utilisation des services et améliorer la performance globale du réseau ;
  • Addons et extensions, qui permettent d’aller au-delà des spécifications de base ;
  • Possibilité de suspendre l’accès au service – freeze et unfreeze ;
  • Configuration de méthodes d’authentification avancées ;
  • Équilibre de la charge réseau (load balancing).

Les fournisseurs reçoivent les preuves cryptographiques des services délivrés. Elles sont ensuite soumises on-chain, ce qui leur permet d’accumuler des unités de calcul (CU) donnant droit à leurs récompenses en jetons LAVA. Le calcul des récompenses est relativement complexe, et dépend de la qualité du service (QoS) lorsque les preuves sont valides. On distingue 3 degrés de QoS :

  • Qualité passable ;
  • Qualité excellente ;
  • Prison : ce mécanisme (jailing) permet de désactiver un fournisseur en cas de défaillance, pour une période donnée.

La qualité du service est évaluée pour chaque session et affecte donc le montant des récompenses. Elle dépend de trois métriques : disponibilité, latence et fraîcheur (âge des preuves de bloc, relativement à celui des autres fournisseurs).

Les détenteurs de jetons

Les holders de LAVA peuvent déléguer leurs jetons, et participer ainsi à la gouvernance, tout en bénéficiant des récompenses de staking potentielles.

Les contributeurs ou Champions

Les contributeurs, aussi appelés Champions, sont les membres du réseau qui créent et maintiennent les spécifications des API, des RPC et des différents modules disponibles sur Lava. Ils peuvent également offrir d’autres types de contributions (indexeurs, oracles) et participer à différents programmes de bounties rémunérateurs.

Lava Network - Architecture
Vue d’ensemble de l’architecture de Lava

Le principal rôle des contributeurs est donc de créer et de maintenir l’ensemble des spécifications pour les API déployées sur le réseau Lava. Nous allons désormais explorer en détails la structure de ces spécifications, qui sont fondamentales au bon fonctionnement du système.

Les spécifications

Les spécifications ou specs détaillent les pré-requis pour chaque API déployée via Lava Network. Elles comprennent notamment :

  • Les chaînes supportées ;
  • Les différentes méthodes d’accès ;
  • Les coûts opératifs ;
  • Les conditions d’utilisation ;
  • Les vérifications à effectuer.

Les spécifications sont écrites au format JSON. Pour chaque nouvelle API intégrée à Lava, de nouvelles spécifications sont écrites. C’est donc grâce aux spécifications que le protocole Lava peut s’adapter de façon dynamique et modulaire aux différentes chaînes et API composant son écosystème.

Structure d’une spécification

Les spécifications sont composées de la manière suivante :

  • L’index : il s’agit du nom référençant une spécification.
  • Les imports : ils regroupent les fonctions qui ont été empruntées à des sources externes. De cette façon, il n’y a pas de besoin de réintégrer des API identiques pour des chaînes ou des API présentant la même architecture. On peut alors implémenter de nouvelles logiques une fois que les méthodes d’une spécification existante ont été importées.
  • Les collections d’API : chaque spécification possède son api_collection; il s’agit de la liste des méthodes ou des API qui sont activées et de leurs interfaces respectives. Les collections référencent donc toutes les API ou méthodes nécessaires à l’intégration d’une chaîne particulière, comme par exemple “jsonrpc” ou “tendermintrpc”.
  • Les unités de calcul : les Compute Units ou CU servent à quantifier le coût nominal de chaque appel à une API. Grâce à cette métrique, le coût en calcul des appels peut être évalué de manière transparente. Cela permet ainsi aux consommateurs de mesurer le coût de leurs appels et aux fournisseurs d’être récompensés proportionnellement à l’intensité des calculs fournis.
  • Les addons : il s’agit des nouvelles méthodes et API n’entrant pas dans les spécifications pré-requises pour chaque chaîne ou API. On peut les voir comme des modules qui peuvent être utilisés par les consommateurs ou les fournisseurs pour obtenir des fonctionnalités supplémentaires.
  • Les extensions : elles permettent d’ajuster ou d’améliorer des méthodes/API existantes pour des cas d’usage spécifiques. On peut ainsi personnaliser, optimiser ou étendre les fonctions d’une spécification à la demande. La flexibilité des extensions permet aux consommateurs d’accéder à des requêtes spéciales.
Lava Network - Structure d'une spécification
Structure d’une spécification

Comment ajouter une nouvelle spécification ?

Le protocole Lava est très flexible et parfaitement modulaire : il est toujours possible d’ajouter de nouvelles fonctionnalités en intégrant les spécifications correspondantes, sans modifier le protocole. Ce sont les contributeurs qui écrivent les specs pour chaque nouvelle API, chaîne ou indexeur.

Les contributeurs jouent donc un rôle très important au sein de l’écosystème, et lorsque le mainnet sera déployé, ces derniers seront récompensés pour leur travail. Chaque nouvelle spec permet d’étendre le réseau Lava, et de créer des API à la demande. La communauté des contributeurs peut modifier chaque collection d’API selon les besoins des consommateurs. C’est ce qui confère à Lava sa grande modularité. Ceux qui créent et maintiennent les spécifications sont incités économiquement à sécuriser et à améliorer l’écosystème du réseau Lava.

Afin d’implémenter une nouvelle spécification, les contributeurs vont tout d’abord écrire le fichier JSON correspondant. Pour cela, ils doivent respecter certains standards, qui sont disponibles dans la documentation :

Il faut ensuite détailler les fonctions au sein de la spec. Tous les imports, extensions et add-ons correspondant à la chaîne/API y sont spécifiés.

Une fois que la spécification est écrite, elle est soumise à la communauté. Elle doit bénéficier d’un soutien suffisant (via le vote des validateurs du réseau Lava) pour être acceptée on-chain. Les Pull Requests (PR) permettent d’ajouter la spécification au sein du Cookbook, avant toute mise à jour.

Le guide de référence des spécifications

Le Spec Reference Guide fournit les références détaillées de toutes les spécifications du Lava Network. Il permet aux développeurs, aux validateurs et autres utilisateurs du réseau d’avoir une compréhension claire de la structure des propositions, des spécifications, des collections d’API et de leurs extensions.

Il regroupe donc les différents champs des spécifications, des collections d’API, ainsi que leur description respective. Pour chaque champ, un exemple est également fourni.

Le format des données reçues varie en fonction des différentes chaînes. L’analyse syntaxique de ces données (parsing) s’effectue grâce à différentes parsing functions.

Création d’une spécification pas à pas

La documentation de Lava propose un guide détaillé pour les développeurs/contributeurs qui souhaitent écrire une spécification. Le processus peut paraître fastidieux, mais il est en réalité très simple. Chaque étape est détaillée au sein du guide.

Proposition

Tout d’abord, il faut créer la proposition en écrivant le fichier JSON correspondant. Le guide propose trois méthodes :

  • Utilisation du Cookbook, qui contient toutes les specs déjà déployées sur Lava ; 
  • Via des canevas (templates) contenant les champs vides à remplir ;
  • Écriture directefrom scratch. Cette méthode permet d’éliminer les champs superflus.

Héritage

La deuxième étape concerne l’héritageinheritance. En effet, lors de la définition d’une API, il est très possible qu’elle utilise des méthodes et des API préexistantes on-chain. Le contributeur/développeur peut donc les utiliser, ce qui permet de sauver un temps précieux. Ce procédé s’appelle l’héritage.

Les imports permettent alors de récolter les directives, vérifications, collections d’API et API par défaut des spécifications déjà déployées. Il suffit d’utiliser le champ import correspondant. Bien entendu, on peut réécrire n’importe quel comportement au sein de la spec. Cette approche confère une grande modularité au protocole. Il est possible d’importer une API spécifique au sein d’une collection (champ inheritance_apis).

Chaque spécification comporte différentes catégories de collections d’API. Il faut donc spécifier les collections et interfaces nécessaires pour les Fournisseurs

Lors de la conception de nouvelles API qui ne sont pas héritées d’une spécification existante, il faut décrire la méthode de parsing des données, et les unités de calcul correspondant à chaque appel.

Vérification

Vient ensuite l’étape de vérification. Il s’agit des tests permettant de s’assurer qu’un Fournisseur renverra les bonnes données. Le protocole Lava effectue ces vérifications en comparant les directives de parsing avec la valeur attendue (parse directive et expected value). Chaque collection d’API comporte un ensemble de vérifications. Par défaut, un Fournisseur ne pourra pas servir d’API si ces tests échouent. 

Addons et extensions

Ces ensembles additionnels de collections d’API permettent d’offrir plus de fonctionnalités aux consommateurs sur le réseau. Créer un addon est similaire à la création d’une collection d’API.

En revanche, les extensions sont conçues comme des sous-ensembles d’une collection, via un tableau dédié. Ces API optionnelles devront également passer une étape de vérification. 

Étape finale : test en local

Une fois Lava installé sur sa machine, le développeur peut utiliser un script pour exécuter automatiquement les tests en local. Enfin, il faut ajouter le fichier JSON de la spécification au répertoire local correspondant au Cookbook de Lava.

Nous venons de découvrir comment Lava Network offre un accès flexible à une multitude d’API grâce aux spécifications. Cette flexibilité modulaire confère de nombreux avantages aux utilisateurs, notamment la facilité d’accès à tout un ensemble de données et de services sur différentes chaînes. Afin d’utiliser Lava Network, il existe différents outils, correspondant à différents cas d’usages.

Utiliser Lava Network

Les développeurs conçoivent et maintiennent des spécifications pour de nouvelles blockchains et API. Ils sont donc aussi consommateurs des API du réseau via le portail dédié (Lava Gateway) et vont également proposer du code, débugger le code existant, créer des applications décentralisées et des plateformes utilisant le kit de développement de Lava (Lava SDK) ou le Server Kit. Nous allons passer en revue ces différents outils, pour mieux comprendre comment utiliser Lava.

Le Lava Gateway

Le Lava Gateway permet d’accéder facilement aux API Web3, directement via un navigateur. Cette interface web simplifiée permet ainsi d’accéder directement aux données blockchain de façon simple et intuitive. Le processus est décrit en détail dans la documentation de Lava Network, et assorti d’une vidéo de présentation. Les étapes sont très simples :

  • Création d’un compte ;
  • Création d’un projet ;
  • Sélection des API et des accès ;
  • Configuration des contrôles de sécurité ;
  • Choix des points de terminaison RPC.

Le Server Kit

Le Server Kit, en cours d’expérimentation, est une implémentation de référence (en langage GO) qui fournit un accès par passerelle auto-hébergée aux API. Il est conçu pour fonctionner en tant que serveur backend :

  • Multiples points de terminaison RPC ;
  • Haut débit et sessions multiples ;
  • Configuration facile.

Le Lava Server Kit peut accepter des requêtes RPC brutes, les regrouper au niveau du protocole, et les envoyer directement au Fournisseurs sur le réseau, de manière décentralisée. Il est donc particulièrement utile pour les applications requérant un haut débit et une bonne scalabilité.

Le Lava SDK

Actuellement en version bêta, le Lava SDK est une librairie JavaScript/TypeScript mise à disposition des développeurs. Elle permet d’accéder de manière décentralisée à toutes les chaînes supportées par Lava, dans un environnement serveur ou via un navigateur.

Pour l’utiliser, il faudra préalablement créer un compte sur le Lava Gateway, créer un projet Node.JS, puis importer le SDK. Qu’il s’agisse d’une utilisation backend ou frontend, toutes les étapes sont décrites dans la documentation.

En fonction des cas d’usage, les développeurs vont donc utiliser le Gateway, le SDK ou le Server Kit. Une application frontend (comme une dApp ou un smart contract) passera par le Gateway ou le SDK. Une application backend (micro-service, client, daemon ou utilitaire) utilisera le SDK ou le Server Kit. Enfin, il faudra passer par le Server Kit pour héberger un point d’accès centralisé et haut débit au Lava Network.

Lava peut être utilisé avec la plupart des librairies Web3 comme ethers.js, web3.js, cosmjs et viem. Les développeurs peuvent ainsi intégrer Lava à leurs applications décentralisées via leurs outils de développement favoris.

Les points de terminaison RPC officiels publics de Lava – sur le testnet – sont listés ici.

Les Incentivized Public RPC (ipRPC)

Il est possible d’utiliser Lava Network en passant par ses points de terminaisons RPC officiels. Cependant, on a beaucoup à gagner en fournissant des ipRPC.

Les ipRPC sont des points de terminaisons RPC mis à disposition par divers fournisseurs, pour chaque chaîne. Les fournisseurs sont rémunérés au sein de ces différents écosystèmes, et permettent alors aux développeurs de bénéficier de la haute disponibilité de ces points de terminaison, à l’aide d’une URL unique. Toutes les URL sont listées ici.

Lava Network - iRPC
Les avantages des iRPC de Lava Network par rapport aux RPC publics

Les ipRPC permettent ainsi de consolider les points de terminaisons publics existants, en routant les requêtes vers les fournisseurs les plus performants. Le score des fournisseurs, comme nous l’avons vu, dépend de facteurs tels que leur disponibilité, de leur latence et de leur degré de synchronisation. À terme, la qualité de service au sein du réseau deviendra stable et optimale. L’utilisation de ces points de terminaison reste gratuite pour les utilisateurs.

Participer à Lava Network

Il existe de nombreuses façons de contribuer au développement de Lava Network. Le simple détenteur de jeton peut déléguer ses LAVA aux fournisseurs de données et récolter un pourcentage des récompenses de staking. Pour aller plus loin et devenir l’un des fournisseurs du réseau, il est vivement recommandé de rejoindre le Discord de Lava Network (tous les liens utiles sont en fin d’article).

La feuille de route

Lava Network a réussi une levée de fonds en seed de 15 millions de dollars, menée sous l’égide de Jump Capital, Hashkey Capital and Tribe Capital. Le Mainnet devrait voir le jour très bientôt, menant à la troisième phase de son développement, nommée Magma. Il s’agit d’embarquer de nombreux utilisateurs et développeurs sur le réseau, et pour cela, un programme incitatif est mis en place.

Les utilisateurs peuvent gagner des points en participant de diverses façons. Tout d’abord, il suffit tout simplement de connecter son wallet à Lava et d’utiliser les RPC du réseau. Cela peut-être aussi simple que de vérifier le solde de son compte sur l’une des blockchains supportées (NEAR, Ethereum, Evmos, Axelar et Starknet). Bien entendu, on peut aussi effectuer des transactions et récolter plus de points. Différents tutoriels détaillent la marche à suivre pour changer la connexion de son wallet et utiliser Lava sur les différentes chaînes.

Il existe également d’autres façons de récolter des points : programme d’affiliation (10% des points des affiliés) et utilisation des wallets partenaires.

À l’avenir, Lava vise à devenir une plateforme unifiant les fournisseurs de données pour toutes les chaînes et tous les services : RPC, indexeurs, oracles, API MEV, séquenceurs, etc. Tous les contributeurs seront récompensés : développeurs d’applications, délégateurs, spec champions, fournisseurs de données.

Ressources

Vous trouverez ci-dessous tous les liens utiles pour en savoir plus sur Lava Network :

Morgan Phuc

Cofounder @ 8Decimals & Partner @ Node Guardians - Making crypto great again - Journal du Coin / BitConseil