Как избежать «PeerDiscoveryException» при запуске узла RSK в Windows?
Я начал запускать узел RSK в Windows и когда попробовал:
curl -X POST -H "Content-Type:application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' http://localhost:4444
Я всегда получаю:
{"jsonrpc":"2.0","id":1,"result":"0x0"}
Это, очевидно, означает, что мой узел не синхронизируется, поэтому я проверил журналы и обнаружил
Address already in use
:
Exception in thread "UDPServer" co.rsk.net.discovery.
PeerDiscoveryException: Discovery can't be started.
At co.rsk.net.discovery.UDPServer$1.run(UDPServer.java:65) - caused by: java.net.BindException: Address already in use...
У меня нет других запущенных экземпляров RSK, поэтому я не уверен, почему я получаю эту ошибку.
1 ответ
Вам необходимо изменить порт обнаружения одноранговых узлов (
peer.port
), чтобы использовать другой. Это потому, что RSK Mainnet использует
5050
в качестве порта обнаружения одноранговых узлов по умолчанию, и Windows обычно имеет меньшие номера портов, уже назначенные для других целей.
Например, чтобы запустить RSKj с портом обнаружения однорангового узла
50506
используйте следующую команду:
java \
-D peer.port=50506 \
-cp <PATH-TO-THE-RSKJ-JAR> \
co.rsk.Start \
--regtest
Вы также можете установить
peer.port=50506
в соответствующем файле конфигурации.
ПРИМЕЧАНИЕ. Эта проблема обычно не возникает в тестовой сети RSK, поскольку его порт обнаружения одноранговых узлов по умолчанию
50505
, гораздо больший номер порта. Эта проблема обычно не возникает в других операционных системах, поскольку этот номер порта основной сети RSK обычно не используется.