Liste des endpoints

Désormais tu as plusieurs endpoints sur le réseau si tu veux tester :

Sortie curl
{
    "peerings": [
      {
        "peer_id": "12D3KooWGvtbSM9SXMTAukT9zQo26QWegPcvP7pRhPU4HxK151Sx",
        "endpoints": [
          {
            "protocol": "rpc",
            "address": "wss://gdev.cgeek.fr"
          }
        ]
      },
      {
        "peer_id": "12D3KooWN7QhcPbTZgNMnS7AUZh3ZfnM43VdVKqy4JbAEp5AJh4f",
        "endpoints": [
          {
            "protocol": "rpc",
            "address": "wss://gdev.cgeek.fr"
          }
        ]
      },
      {
        "peer_id": "12D3KooWJmjLNArKNerjUgVyEQmHuZgNTBe2mQb6vjmuGR635Vuh",
        "endpoints": []
      },
      {
        "peer_id": "12D3KooWLwrbxC95wP6rTSv8TPy4hxaAYqPqN1KQnBgoza5K94XH",
        "endpoints": []
      },
      {
        "peer_id": "12D3KooWBfuEahrFypghc8niTseEq6ZVYkyXTUjTTcX6kkbFVgYB",
        "endpoints": []
      },
      {
        "peer_id": "12D3KooW9uwYi4KqyT4tEUYCSfTYaTEn2Wna7HTKfD863R3CQNRw",
        "endpoints": [
          {
            "protocol": "rpc",
            "address": "wss://gdev.p2p.legal/ws"
          },
          {
            "protocol": "squid",
            "address": "https://gdev-squid.axiom-team.fr"
          }
        ]
      },
      {
        "peer_id": "12D3KooWBsKGva2UuHRGwPU9JnKe5iptSf3oxKpm9ygbwBPweLtz",
        "endpoints": []
      },
      {
        "peer_id": "12D3KooWM8K51KUBb86ydstAKBvzAHwo1pnKi62wnt9qzkTEwbVJ",
        "endpoints": [
          {
            "protocol": "rpc",
            "address": "wss://archive-rpc.gdev.de.brussels.ovh/"
          },
          {
            "protocol": "squid",
            "address": "https://squid-hasura.gdev.de.brussels.ovh/v1/graphql"
          }
        ]
      }
    ]
  }

Les nœuds communiquent entre eux via une couche P2P (libp2p), avec de la découverte Kademlia notamment. Cette couche est sécurisée avec de l’authentification par clés asymétriques (d’où le PeerId), et il y a plusieurs sous-protocoles établis à l’intérieur du “tunnel” établi entre pairs.

J’espère que c’est plus clair :slight_smile:

2 Likes

Du coup; outre la possibilité d’accéder aux infos via l’API sur le port RPC (9944); il y a également un échange qui est fait automatiquement via la couche P2P (et du coup via les ports 30333 par défaut) ?

Oui c’est exactement ça. Mais le port 30333 (par défaut) qui sert à la couche P2P est vraiment orienté machine-to-machine. Pour la synchro des blocs, des transactions, de grandpa, …

3 Likes

J’ai l’impression que la liste peering rpc ne se propage pas correctement sur le réseau gtest.

Voyez par vous même:

for node in "https://gt.elo.tf" "https://gtest.cgeek.fr" "https://gt.p2p.legal/ws" "https://gtest.coinduf.eu"; do echo "=== Découverte depuis $node ==="; curl -s -m 10 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"duniter_peerings","params":[],"id":1}' "$node" | python3 -c "
import sys,json
try:
    data=json.load(sys.stdin)
    peerings=data.get('result',{}).get('peerings',[])
    rpc_endpoints=[]
    squid_endpoints=[]
    for peer in peerings:
        for endpoint in peer.get('endpoints', []):
            if endpoint.get('protocol') == 'rpc':
                rpc_endpoints.append(endpoint.get('address'))
            elif endpoint.get('protocol') == 'squid':
                squid_endpoints.append(endpoint.get('address'))
    print(f'RPC endpoints ({len(rpc_endpoints)}): {rpc_endpoints}')
    print(f'Squid endpoints ({len(squid_endpoints)}): {squid_endpoints}')
    print()
except Exception as e:
    print(f'Error: {e}')
    print()
"; done

=== Découverte depuis https://gt.elo.tf ===
RPC endpoints (4): ['wss://gtest.1000i100.fr/', 'wss://gtest.cgeek.fr', 'wss://gtest.cgeek.fr', 'wss://gt.p2p.legal/ws']
Squid endpoints (1): ['https://gt-squid.axiom-team.fr']

=== Découverte depuis https://gtest.cgeek.fr ===
RPC endpoints (1): ['wss://gtest.cgeek.fr']
Squid endpoints (0): []

=== Découverte depuis https://gt.p2p.legal/ws ===
RPC endpoints (1): ['wss://gt.p2p.legal/ws']
Squid endpoints (1): ['https://gt-squid.axiom-team.fr']

=== Découverte depuis https://gtest.coinduf.eu ===
RPC endpoints (1): ['wss://gtest.coinduf.eu/']
Squid endpoints (1): ['https://squid.gtest.coinduf.eu/v1/graphql']
4 Likes

J’ai exécuté la même commande aujourd’hui, c’est un peu plus élogieux mais effectivement ça manque de cohérence sur l’ensemble du réseau :

=== Découverte depuis https://gt.elo.tf ===
RPC endpoints (6): ['wss://gtest.1000i100.fr/', 'wss://gtest.cgeek.fr', 'wss://gtest.cgeek.fr', 'wss://gt.p2p.legal/ws', 'wss://gtest.coinduf.eu/', 'wss://archive-rpc.gtest.fr.brussels.ovh/']
Squid endpoints (3): ['https://gt-squid.axiom-team.fr', 'https://squid.gtest.coinduf.eu/v1/graphql', 'https://squid.gtest.fr.brussels.ovh/v1/graphql']

=== Découverte depuis https://gtest.cgeek.fr ===
RPC endpoints (3): ['wss://gtest.cgeek.fr', 'wss://gtest.coinduf.eu/', 'wss://archive-rpc.gtest.fr.brussels.ovh/']
Squid endpoints (2): ['https://squid.gtest.coinduf.eu/v1/graphql', 'https://squid.gtest.fr.brussels.ovh/v1/graphql']

=== Découverte depuis https://gt.p2p.legal/ws ===
RPC endpoints (1): ['wss://gt.p2p.legal/ws']
Squid endpoints (1): ['https://gt-squid.axiom-team.fr']

=== Découverte depuis https://gtest.coinduf.eu ===
RPC endpoints (3): ['wss://gtest.coinduf.eu/', 'wss://gtest.cgeek.fr', 'wss://archive-rpc.gtest.fr.brussels.ovh/']
Squid endpoints (2): ['https://squid.gtest.coinduf.eu/v1/graphql', 'https://squid.gtest.fr.brussels.ovh/v1/graphql']

Consigné dans #322

2 Likes

On dirait que ce sont les noeuds de Elois et moi qui se sync mal.
Je ne sais pas si ça peut être lié au fait que mon noeud est encore sur une mauvaise image sans les bootnodes, avec le bootnode d’elois set dans mon docker compose.
Elois aussi peut être vue qu’il a lancé le réseau. Mais c’est peut être un hasard.

Peut être analyser plus de noeuds pourrait aider à diag.

Je me suis remis un peu dans le sujet, en fait c’est tout à fait normal : la fonctionnalité de publication des endpoints Duniter (RPC, Squid et autres) n’est pas là pour recueillir l’intégralité des endpoints connus sur tout le réseau, mais juste pour collecter ceux des pairs auxquels notre propre nœud est connecté.

Donc finalement ce que tu vois c’est plutôt la représentation des connexions : on voit que gt.elo.tf est connecté à mon nœud, celui de 1000i100 et au tiens.

D’ailleurs dès que l’un des nœuds se déconnecte, ses endpoints Duniter disparaissent aussi (tu peux tester).

Pour avoir la “vue réseau” complète, il faut soi-même la parcourir : c’est ce que j’avais fait ici, et c’est cela que je vais reproduire dans la future vue Réseau de Cesium.

5 Likes