Как изменить порт RPC для биткойн? (rpcport=xxx в bitcoin.conf не работает)

Я запускаю узел биткойн тестовой сети и выполняю вызовы RPC на порту по умолчанию 18332.

Я добавил эту строку в ~/.bitcoin/bitcoin.conf:

rpcport=19832

И перезапустил службу биткойн. Я даже перезапустил всю машину.

Но по какой-то причине он все еще принимает вызовы RPC на порту 18332, а попытка сделать то же самое на порту 19832 дает «отказ в соединении».

Это определенно использует настройки в bitcoin.conf, например, если я изменю rpcuserили rpcpassword(и перезапущу снова) мне придется использовать новый пользователь + пароль в вызовах RPC, старые больше не работают.

Но как-то порт меняется.

Я делаю что-то неправильно? Настройка называется как-то иначе, чем rpcport=xxx?

Я знаю, что, вероятно, я также могу определить порт вручную в строке cmd (используя bitcoind -rpcport=xxxили что-то еще) при запуске bitcoind, но я хочу, чтобы все было настроено в bitcoin.conf (где оно принадлежит) и чтобы все это запускалось автоматически.

PS Подключаюсь на localhost, т.е. на самой машине. Я также использую брандмауэр ufw, и он настроен на прием соединений как на 19832, так и на 18832 (так что это определенно не брандмауэр, который блокирует здесь).

(редактировать) К вашему сведению, вот полный файл bitcoin.conf:

testnet=1
server=1
daemon=1
txindex=1
rpcuser=XXXXXXXXXXXXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
rpcport=19832
onlynet=ipv4
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333

А вот как я выполняю команды RPC:

curl http://XXXXXXXXX:XXXXXXXXX@localhost:18332 -H 'content-type:text/plain;' --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getwalletinfo","params":[]}'

Это работает нормально, хотя обратите внимание, что он подключается к 18332. Если я перехожу localhost:18332на localhost:19832него, он больше не работает (отказ в соединении).

Если моя версия актуальна, результат getwalletinfoсодержит "walletversion": 169900.

Как ты управляешь bitcoindсобой? Не могли бы вы также попробовать запустить только этот файл конфигурации? pastebin.com/mKWmKs00 , также попробуйте 127.0.0.1вместо localhostкоманды curl.
@Зеленый Я начинаю биткойн с sudo systemctl start bitcoindили sudo systemctl restart bitcoind. Попробовал ваш файл bitcoin.conf (и изменил имя пользователя и пароль на что-то новое, поэтому я уверен, что этот файл .conf используется) и перезапустил службу, но, к сожалению, тот же результат: он разрешает подключение на 18332 (с использованием нового пользователя и pasw), но не на 19832. Тоже пробовал 127.0.0.1вместо localhostс curlно опять без разницы. Странно да?
Я не могу воспроизвести вашу проблему, потому что у меня работает та же конфигурация. Возможно, что-то не так с вашей службой systemctl, запустите команду и покажите результат systemctl cat bitcoind.service.
@ Зеленый Результат systemctl cat bitcoind.service: pastebin.com/raw/JQS0yuJH Большое спасибо за ваши попытки помочь. Просто чтобы быть уверенным, вы также тестируете с помощью тестовой сети? (не основная сеть?)
Да, я тестировал его с помощью testnet и mainnet. Если честно ИДК, почему у тебя не работает. Вот мой сервис pastebin.com/raw/r4hrPkvt , а также мой биткойн-конфиг точно такой же pastebin.com/raw/mKWmKs00 .
@Зеленый Хм, очень странно. И версия вашего кошелька getwalletinfoтоже 169900?
Да, это. Попробуйте мой сервис и конфигурацию биткойнов.
@Зеленый Сделал это, но, к сожалению, без разницы. Очень странно :( Что ж, спасибо за все попытки помочь. Большое спасибо. Сейчас я просто продолжу использовать обычный порт и, возможно, переустановлю всю свою машину позже.
Не могли бы вы: распечатать результат запуска «sudo lsof -i | grep bitcoind | grep LISTEN» (вам нужно будет указать пароль root) А также можете ли вы предоставить нам результат запуска вручную: «sudo systemctl start bitcoind; " затем "/path/to/bitcoind -conf=/home/[ваш домашний каталог]/.bitcoin/bitcoin.conf". Учитывает ли он правильный порт при запуске вручную?
Ой, это должно быть "sudo systemctl stop bitcoind"
@AlistairMann Вот результат: pastebin.com/raw/MVcuVnWd При остановке службы (и проверке с помощью, sudo systemctl status bitcoindчтобы быть на 100% уверенным, что она остановлена) и последующем запуске вручную результат lsofтот же (ну, другие идентификаторы процессов, но три порта прослушивания одинаковы.
Я удалил свой последний запрос, потому что мне удалось воспроизвести вашу проблему на моей собственной машине. Скоро сообщим.

Ответы (2)

Решение найдено: rpcport должен находиться в разделе [test]

Пожалуйста, обновите исходный файл конфигурации, чтобы он читался следующим образом:

тестовая сеть = 1
сервер=1
демон=1
тхиндекс=1
rpcuser=XXXXXXXXXXXXXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
только сеть = ipv4
zmqpubrawblock=tcp://127.0.0.1:28332
zmqpubrawtx=tcp://127.0.0.1:28333
[тест]
рппорт = 19832

И перезапустите демон. Также взгляните на Невозможно указать rpcport для тестовой сети для связанных изменений в других параметрах. Нас предупреждали, что делать в лог-файле. ~/.bitcoin/testnet3/debug.logвключает в себя строкуWarning: Config setting for -rpcport only applied on test network when in [test] section.

Мы могли бы справиться с этим быстрее, если бы (мы прочитали файл журнала! И если бы) в примере bitcoin.conf было упомянуто, что теперь требуются разделы.

Было бы здорово, если бы вы могли вместо этого сделать это отмеченным галочкой решением!

Это похоже на ошибку: я воспроизвел такое же поведение на своей машине, используя текущую версию, Bitcoin Core Daemon version v0.17.99.0-g2945492424934fa360f86b116184ee8e34f19d0aтолько что загруженную с github. Однако я заметил, что @Зелёный выше не смог воспроизвести это, так что, возможно, ошибка находится в библиотеке, которой вы и я пользуемся, а он нет, а не в биткойнах. Конечно, там нет нерешенных вопросов, которые кажутся актуальными.

Я собираюсь просмотреть источник, чтобы увидеть, смогу ли я определить, что происходит. В зависимости от того, что я найду, я могу открыть с ними проблему. Дайте мне знать здесь, и я обновлю вас.

А пока я бы предложил добавить -rpcport=19832 в вашу командную строку - здесь это всегда соблюдалось!

Спасибо! Получил его для работы с -rpcport=19832в командной строке (я добавил его в /etc/systemd/system/bitcoind.service) 👍