Splicing — совместное изменение финансирования канала Lightning: новая on-chain транзакция расходует прежний финансирующий выход и создаёт новый. Стороны также готовят соответствующие commitment transactions — подписанные транзакции для возможного закрытия. Это продолжение того же канала, а не обычное закрытие с отдельным открытием другого.
Splice-in добавляет средства к балансу вносящей стороны, а splice-out переводит часть её баланса на выход вне канала. Взносы влияют и на общую ёмкость: если они компенсируют друг друга, она может не измениться. Средства канала всегда закрепляются за другим финансирующим выходом Bitcoin. Обычное совместное закрытие с последующим открытием не требуется. [1]
Сначала канал переходит в quiescence — короткую паузу для несовместимых обновлений. Инициатор отправляет splice_init, партнёр отвечает splice_ack. Совместная транзакция должна содержать ровно один вход, расходующий старый финансирующий выход, и ровно один новый выход для финансирования этого канала. Другие входы и выходы могут добавлять или выводить средства. Затем стороны обмениваются commitment_signed и tx_signatures с нужными подписями. [1]
После обмена подписями транзакции платежи могут возобновиться до приемлемой глубины подтверждения. Поэтому узлы одновременно хранят состояния обязательств для прежнего финансирования, нового splice и возможных замен RBF. Платёж должен быть действительным во всех активных вариантах. После разрыва связи нужно восстановить правильное незавершённое состояние; одной последней транзакции недостаточно. [1] [2]
Оба узла должны согласовать поддержку option_splice, транзакцию, ставку комиссии и взносы. Партнёр может отклонить предложение через tx_abort. Пока обе стороны не подтвердят один splice посредством splice_locked, новые обновления должны охватывать все активные commitment transactions. Односторонне переписать баланс другого участника нельзя. [1] [3]
Core Lightning в версии 26.04 включил Splicing по умолчанию. Добавил команды splicein, spliceout и перевод средств между двумя каналами — cross-splice. Однако важны версия второго узла и поддерживаемый тип канала. Одинаковое название функции в разных кошельках не доказывает одинаковых возможностей или совместимости. [4]
Splicing всё равно создаёт транзакцию Bitcoin, поэтому остаются on-chain комиссия, подтверждение и возможная реорганизация. Например, Eclair предоставляет rbfsplice для повышения ставки комиссии неподтверждённого splice. Нужно учитывать резервы канала, требования подтверждённых входов, пределы взносов и повторных попыток RBF, состояние резервных копий. Особый режим option_zeroconf меняет предположения о доверии; протокол запрещает в нём RBF. [1] [5]
Когда выбранный splice достигнет приемлемой глубины и обе стороны обменяются splice_locked для одного txid, старые и неудачные варианты можно перестать поддерживать. Меняется funding outpoint — ссылка на конкретный выход транзакции; ёмкость зависит от суммы взносов. У публичного канала меняется и short_channel_id, полученный из подтверждённой транзакции; стороны могут подготовить новые announcement_signatures. [1]
Проверьте поддержку обоих узлов, channel_id, знак и размер funding_contribution_satoshis, ставку комиссии, входы, выходы, резервы и подписи. Отслеживайте txid всех вариантов RBF. После завершения сравните splice_locked, новый funding outpoint и short_channel_id публичного канала. Проверьте также возобновление работы HTLC и принадлежность выведенного выхода нужному кошельку. [2] [1]
Для полной картины прочитайте эту статью вместе с Payment Channel, Lightning Network, UTXO, Ликвидность Lightning, Replace-by-Fee (RBF), Price Channel. На эту статью также ссылаются Ликвидность Lightning.
01Splicing — то же самое, что закрыть и снова открыть канал?+
Нет. Он тоже создаёт транзакцию Bitcoin, но стороны вместе переносят существующий канал на новый финансирующий выход. Обычное закрытие завершает старый канал, а последующее открытие создаёт отдельный.
02Можно ли и добавлять, и выводить средства?+
Да. Положительный взнос — splice-in, отрицательный — splice-out. Обе стороны должны принять изменение, а транзакция — соблюдать балансы, правила резервов и комиссии. Итоговую ёмкость определяет сумма взносов обеих сторон.