Рефакторизация структуры кода для улучшения читаемости и удобства сопровождения.

This commit is contained in:
2026-04-30 07:41:41 +03:00
parent eec534760e
commit 89b17ea2b2
1406 changed files with 38483 additions and 3 deletions
View File
+65
View File
@@ -0,0 +1,65 @@
manifestVersion: 1
id: circuitbreaker
category: bitcoin
name: Circuit Breaker
version: "v0.5.1"
tagline: Брандмауэр вашего узла Lightning
description: >-
Это позволяет узлам защитить себя от переполнения HTLC.
С помощью автоматического выключателя можно установить максимальное количество находящихся в полете HTLC для каждого узла.
Например, известным и доверенным узлам может быть назначен более высокий максимум, в то время как новый канал от ранее невидимого узла может быть ограничен лишь несколькими ожидающими HTLC.
Кроме того, можно применять ограничения скорости к количеству пересылаемых HTLC.
Это обеспечивает защиту от DoS-атак и спама, которые основаны на большом количестве HTLC с быстрым разрешением.
Ограничение скорости реализовано с помощью корзины токенов.
С помощью интерфейс можно указать минимальный интервал между HTLC.
Большое количество HTLC также требуется для проверки баланса каналов.
Снижение утечки информации посредством зондирования может стать еще одной причиной установить ограничение скорости для ненадежных узлов.
Режимы работы
Существует несколько режимов, в которых может работать автоматический выключатель. Режим по умолчанию и переопределения для каждого узла можно настроить через веб-интерфейс:
- сбой: возврат HTLC в случае превышения ограничений. Это сводит к минимуму блокировку ликвидности на входящей стороне, но влияет на вашу репутацию как узла маршрутизации.
- очередь: ставить HTLC в очередь при превышении лимитов. Элементы извлекаются из очереди, когда количество ожидающих HTLC ниже максимального и ограничение скорости допускает еще одну пересылку. Этот режим наказывает вышестоящие узлы за плохой трафик, блокируя ликвидность на маршруте. Это может подтолкнуть вышестоящие узлы к установке брандмауэра и ограничить работу неправильно работающего узла.
Даже в случае неисправности автоматического выключателя режим очереди никогда не должен вызывать принудительное закрытие канала из-за встроенной защиты lnd, которая автоматически отключает неразрешенные HTLC.
ВНИМАНИЕ: функция автоматического сбоя еще не выпущена и запланирована на версию 0.16. В более ранних версиях lnd существует риск принудительного закрытия!
-queue_peer_initiated: этот режим также ставит в очередь HTLC, но только те, которые поступают через каналы, для которых мы не являемся инициатором открытия канала. Отсутствие инициатора означает, что удаленный узел несет расходы за потенциальное принудительное закрытие из-за зависания HTLC. Для каналов, которые мы инициировали, используется более безопасный режим отказа.
- заблокировано: этот режим блокирует весь входящий трафик от узла.
ВНИМАНИЕ: См. предупреждение режима очереди.
releaseNotes: >-
В этом выпуске автоматический выключатель обновляется до версии 0.5.1, в которой добавлена ​​функциональность для отслеживания детальной информации о пересылке HTLC, которая не сохраняется LND. Эта подробная информация о пересылке HTLC также полезна для операторов узлов, желающих получить более подробное представление о своем потоке пересылки.
В частности, он будет сохранять записи истории пересылки с отметками времени для успешных и неудачных HTLC (LND сохраняет только успешные пересылки и не сохраняет временные метки). По умолчанию автоматический выключатель будет хранить только 100 000 записей, поэтому максимальный объем места, занимаемого этими записями, составляет примерно 14 МБ. Это значение можно изменить с помощью флага --fwdhistorylimit, который позволяет при нулевых значениях полностью отключить эту функцию.
Эта функция была разработана в рамках продолжающейся работы над протоколом для исследования предотвращения атак с глушением каналов в сети (https://lists.linuxfoundation.org/pipermail/lightning-dev/2023-August/004034.html). Добровольцы, заинтересованные в участии в этом исследовании путем выполнения *локального* анализа данных, собираемых автоматическим выключателем, могут выразить интерес по адресу https://docs.google.com/forms/d/e/1FAIpQLScm2xs4hNsrkI8UCBS4aTdO03YrmWT2X0-j6zXWpkZ7keKiUw/viewform?usp=sf_link или связаться с carla@chaincode.com для получения подробной информации.
Версия v0.5.1 содержит исправление для версии v0.5.0, которое регистрирует HTLC, пересылаемые по неизвестным исходящим каналам, а не завершает работу.
developer: Joost Jager
website: https://github.com/joostjager
dependencies:
- lightning
repo: https://github.com/lightningequipment/circuitbreaker
support: https://github.com/lightningequipment/circuitbreaker/issues
port: 9235
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
path: ""
defaultUsername: ""
defaultPassword: ""
submitter: Joost Jager
submission: https://github.com/getumbrel/dfwebos-apps/pull/394
+18
View File
@@ -0,0 +1,18 @@
version: "3.7"
services:
app_proxy:
environment:
APP_HOST: circuitbreaker_web_1
APP_PORT: 9235
web:
image: ghcr.io/lightningequipment/circuitbreaker:v0.5.1@sha256:1c73f4785dad73e279cfb06ec12b004df61f5905446cec06079ace5618490a1d
user: "1000:1000"
restart: on-failure
stop_grace_period: 1m
init: true
volumes:
- ${APP_LIGHTNING_NODE_DATA_DIR}:/data/.lnd:ro
- ${APP_DATA_DIR}/data:/data/.circuitbreaker
command: [ "--configdir=/data/.circuitbreaker", "--network=${APP_BITCOIN_NETWORK}", "--lnddir=/data/.lnd", "--rpcserver=${APP_LIGHTNING_NODE_IP}:${APP_LIGHTNING_NODE_GRPC_PORT}", "--httplisten=0.0.0.0:9235" ]