Accès aux nœuds Substrate

Salut à vous,
Je n’ai pas.compris comment je pouvais accéder aux nœuds, depuis l’API RPC générée par Substrate ?
Une idée @cgeek, @elois ?

Tu parles d’accéder à l’API RPC ou de découvrir la liste des peers ? Dans le doute je vais répondre aux deux :slight_smile:

Par défaut l’endpoint RPC en websocket est sur 9944, et l’endpoint RPC en HTTP sur 9933.

Il te faut donc mapper les bons ports avec l’option docker -p. Aussi, par défaut le noeud substrate écoute sur 127.0.0.1, donc il est injoiniable dans son conteneur. Il faut ajouter les options --rpc-external ou/et --ws-external si tu veux que le noeud écoute sur 0.0.0.0.

Toutes ces options, et bien d’autres, sont expliquées dans le --help :wink:

Concernant les peers, tu as une méthode RPC nommée system_peers, elle ne prend aucun paramètre, et retourne un tableau des peers actuellement connectés, mais ça te donnera leur endpoint p2p, pas leurs endpoints rpc.

Substrate ne semble pas avoir prévu de manière de récupérer une liste d’enpoint RPC connus, il faut gérer ça en externe.

On peut heureusement ajouter les méthodes qu’on veut à l’API RPC, mais faut t’il encore avoir la data qu’on veut retourner, et les endpoints RPC des autres nœuds n’en font pas partie.

Il semble qu’on puisse également amender le protocole réseau libp2p (rajouter des requêtes/réponses), mais je n’ai jamais fait ça et cette partie est encore très obscure pour moi, un point de plus à ajouter à la roadmap qui s’allonge :sweat_smile:

EDIT: Je viens de creuser davantage ce sujet (que j’avais seulement survolé jusque la), et il semble que l’on puisse effectivement injecter son propre prococole réseau dans la couche libp2p de substrate, ça promet de belles possibilités :smiley:

Je me suis rédigé quelques notes sur un ticket gitlab pour ne pas oublier: https://git.duniter.org/nodes/rust/duniter-v2s/-/issues/20

2 Likes