Bitcoin Core : Erreur  : Impossible de démarrer le serveur HTTP. Voir le journal de débogage pour plus de détails


Impossible de se lier (au port)

Impossible de lier un point de terminaison pour le serveur RPC

Il s'agit d'une erreur très courante pour les services réseau de toutes sortes. Les causes les plus courantes sont qu'il existe déjà un autre service lié au port (8332 dans ce cas) ou que l'utilisateur ne dispose pas d'autorisations.

Vous pouvez vérifier quel service est lié au port 8332 en utilisant quelque chose comme la commande netstat -anp.

Bitcoin Core : Erreur : Impossible de démarrer le serveur HTTP. Voir le journal de débogage pour plus de détails

Erreurs de liaison

Les exemples suivants sont sous Windows mais les commandes Linux ne présentent que des différences mineures (par exemple, utilisez grep au lieu de findstr)

voici une façon de vérifier quel processus existant utilise le port

C> netstat -anb | findstr /N « bitcoin 8332 » 63 : [bitcoind.exe]
65 : [bitcoind.exe]
67 : [bitcoind.exe]
69 : [bitcoind.exe]
70 : TCP 127.0.0.1:8332 0.0.0.0:0 ÉCOUTE 71 : [bitcoind.exe]
132 : TCP [::1]:8332 [::]:0 ÉCOUTE 133 : [bitcoind.exe]

Ce qui précède vous indique que bitcoind est déjà en cours d'exécution et qu'il écoute le réseau sur le port 8332, en attente de requêtes.

Test du RPC

Vous pouvez tester la connectivité de base comme suit

C> curl http://localhost:8332/ Le serveur JSONRPC gère uniquement les requêtes POST

Notez que je n’envoie délibérément pas d’informations d’identification ni de demande valide. Cependant, Bitcoind reçoit la demande et me dit quelque chose sur ce qu'il n'aime pas. Cela prouve que le service HTTP bitcoind fonctionne. Je ne reçois pas de message de refus de connexion de curl.

Voici un exemple qui montre la transmission des informations d'identification et la réception d'un message d'erreur

C> curl -v -u utilisateur:pass -d '{« method »: « getblockhash », « params »:[0], »id »:1}' http://localhost:8332/ * Essayer 127.0.0.1:8332… * Connecté au port localhost (127.0.0.1) 8332 (#0) * Authentification du serveur utilisant Basic avec l'utilisateur 'user ' > POST / HTTP/1.1 > Hôte : localhost:8332 > Autorisation : Basic dG9kYXk6dGVtcG9yYXJ5 > Agent utilisateur : curl/8.0.1 > Accepter : */* > Longueur du contenu : 39 > Type de contenu : application/x-www -form-urlencoded > < HTTP/1.1 500 Erreur interne du serveur < Type de contenu : application/json < Date : dimanche 16 juillet 2023 14:27:47 GMT < Longueur du contenu : 74 < {"result":null," error":{"code":-32700,"message":"Erreur d'analyse"},"id":null} * La connexion n°0 à l'hôte local est laissée intacte Dans ce cas, il y a une erreur HTTP 500 car bitcoind n'a pas pu analyser les données. Vous devrez spécifier -v pour être sûr de voir les messages d'erreur HTTP, mais cela n'est pas nécessaire une fois que les réponses JSON fonctionnent. Nous pouvons supprimer l'option -v pour réduire l'encombrement J'ai changé les guillemets des guillemets simples aux guillemets doubles. Vous ne devriez pas avoir à faire cela sous Linux, c'est une fonctionnalité Windows : C> curl -u user:pass -d « {\ »method\ »:\ »getblockhash\ »,\ »params\ »:[0],\ »id\ »:1} » http://localhost:8332/ {« result »:null, »error »:{« code »:-28, »message »: »Démarrage des threads réseau… »}, » identifiant »:1}

Désormais, Bitcoind n'a plus de problèmes pour analyser les données, mais indique qu'il est toujours en train de s'initialiser.

On peut lui poser une question qui ne dépend pas de l'état de la blockchain, etc.

C> curl -u user:pass -d « {\ »method\ »: \ »uptime\ », \ »params\ »: []} » http://localhost:8332/ {« result »:2063, »error »:null, »id »:null}

Bitcoind rapporte qu'il fonctionne depuis 2063 secondes

C> curl -u user:pass -d « {\ »method\ »: \ »uptime\ », \ »params\ »: []} » http://localhost:8332/ {« result »:2427, »error »:null, »id »:null}

Cela fait maintenant 2427 secondes depuis le démarrage de Bitcoind.

Si je passe à WSL sans autre raison particulière que d'essayer un appel RPC sous Linux, Bitcoind a terminé son initialisation et peut répondre aux questions sur les données de la blockchain.

$ curl -u aujourd'hui : temporaire -d '{« method »: « getblockhash », « params »:[0], »id »:1}' http://localhost:8332/ {« result »: »000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f », »error »:null, »id »:1}

Sur mon PC, avec de nombreux autres processus en cours d'exécution, cette requête peut prendre plusieurs minutes, vous devrez donc peut-être ajuster les délais d'attente des clients.