Срез рынка · ↗Курс Bitcoin$77,735Хешрейт сети936 EH/sСложность127.45 T

Пулы и выплаты

Bitcoin Core объединил исправления тайм-аута RPC-клиента и пустого ответа

Публикация источника: 2026-10-02 · Редакционный анализ опубликован: 2026-10-03

Ветка master теперь отличает Content-Length: 0 от отсутствующего заголовка и обновляет rpcclienttimeout для каждого ожидания сокета. Это объединённый код, а не выпущенный бинарный релиз.

Компьютерный терминал, контекстное фото администрирования через командную строку.
Иллюстративное архивное фото, а не конкретное устройство или объект из новости. Преобразовано в WebP; при необходимости уменьшен размер. Jacek Rużyczka · CC BY-SA 3.0

Анализ и практические выводы

В этом разделе — наш анализ и условные расчёты, отдельно от сообщения источника.

Два исправления клиента командной строки достигли мастера

2 октября специалисты по поддержке Bitcoin Core объединили запрос на включение 36299 в основную ветку. Изменение содержит два коммита и модифицирует HTTP-клиент командной строки, используемый такими инструментами, как bitcoin-cli. Один коммит корректно обрабатывает явно пустое тело ответа, а другой восстанавливает предполагаемое поведение rpcclienttimeout во время простоя. Слияние — это событие разработки исходного кода. Это не означает, что каждый установленный узел Bitcoin Core или двоичный пакет уже содержит исправления.

Сетевые серверы, контекстное фото; это не система Bitcoin Core из описанного исправления.
Иллюстративное архивное фото, а не конкретное устройство или объект из новости. Преобразовано в WebP; при необходимости уменьшен размер. VGrigas (WMF) · CC BY-SA 3.0

Пустое тело было перепутано с заголовком без длины.

Клиент представил отсутствующий заголовок Content-Length и существующий заголовок с нулевым значением таким же образом. Таким образом, ответ, явно объявляющий Content-Length: 0, может ввести путь для ответа без известной длины и продолжать чтение до тех пор, пока партнер не закроет соединение. Сервер Bitcoin Core RPC закрывает соединения из-за ошибок, включая неверный пароль, что ограничивает практический эффект в этом обычном случае, но клиент все равно должен распознавать, что пустое тело завершено.

Патч явно сохраняет различие

При изменении используется необязательное значение длины, поэтому состояния «отсутствие» и «присутствие, но ноль» различны. Когда сервер отправляет Content-Length: 0, клиент может завершить работу без необходимости закрытия соединения. Это исправление корректности протокола, а не изменение методов RPC, правил кошелька или консенсуса по майнингу. Это особенно важно для автоматизации, которая ожидает предсказуемого завершения команды, когда прокси, тестовые серверы или необычные конечные точки возвращают действительный пустой ответ.

Тайм-аут превратился в фазовый обратный отсчет.

После удаления предыдущей реализации клиента libevent rpcclienttimeout больше не измерял только периоды без прогресса сети. Обратный отсчет может продолжаться на протяжении всей фазы чтения, даже когда поступают новые данные. Таким образом, достаточно сильный или медленный ответ может быть прерван, несмотря на активную передачу. Объединенный патч применяет тайм-аут к каждому ожиданию сокета, восстанавливая предыдущую интерпретацию: клиент сдается после ожидания простоя, в то время как полученные данные допускают еще одно ожидание по времени.

Пулы часто автоматизируют рабочие процессы с большим количеством RPC.

Пулы майнинга, индивидуальные шлюзы и системы мониторинга обращаются к Bitcoin Core для получения шаблонов блоков, состояния цепочки, информации о мемпулах и отправки транзакций. Тайм-аут, игнорирующий прогресс, может привести к ложным сбоям при больших ответах или медленных соединениях, а неоднозначная обработка пустого тела может задержать отчет об ошибках. Объединенное изменение улучшает клиентскую часть этих рабочих процессов. Он не изменяет выходные данные getblocktemplate, поведение Stratum, проверку общего доступа, доказательство работы или алгоритм сложности сети.

Покрытие тестирования различается между двумя коммитами

В запрос на включение добавлен тест на поведение пустого ответа. Автор заявил, что надежный автоматический тест на тайм-аут, чувствительный к прогрессу, не был включен, поскольку предпринятые подходы были нестабильными или непропорционально сложными. Рецензенты признали этот подход и протестировали случай пустого ответа. Отсутствие специального регрессионного теста по тайм-ауту не делает код непроверенным, но операторы должны учитывать различные доказательства, доступные для каждой части исправления.

Производственные системы должны дождаться релиза

Коммит слияния — dd809d2c08a32d0775ddde771380f6f8eeae3a61 на мастере. Администраторы, использующие официальные двоичные файлы Bitcoin Core, получат изменение только в ветке выпуска и подписанной сборке, которая его содержит. Мастер строительства немедленно увеличивает подверженность несвязанным изменениям в процессе разработки. Более безопасный процесс — воспроизвести затронутое поведение при промежуточном этапе, отслеживать резервные порты или примечания к выпуску, проверять подписанные артефакты, а затем подтверждать сценарии при реалистичных размерах ответов и сетевой задержке.

Что подтверждено, а что неизменно

Подтвержденными фактами являются слияние 2 октября, два коммита, явное различие пустого тела и поведение таймаута ожидания для каждого сокета. Это изменение не объявляет об окончательной версии Bitcoin Core, чрезвычайной ситуации с безопасностью, консенсусном форке или улучшении производительности майнинга. Его эксплуатационная ценность более узкая: более надежное поведение RPC командной строки для пустых и медленно развивающихся ответов. Инженерам пула также следует пересмотреть свои собственные оболочки тайм-аута, поскольку внешний супервизор все равно может завершить команду независимо от настроек Bitcoin Core.

Источник: Bitcoin Core ↗

Калькулятор майнинга ↗

Ещё в этой рубрике