710 / 736SPL

Splicing

Додавання або виведення коштів із наявного каналу Lightning

Щоб додати bitcoin у канал Lightning або вивести частину коштів, не завжди потрібно закривати його й відкривати інший. Splicing переносить наявний канал на новий вихід транзакції Bitcoin. Обидві сторони погоджують зміну, а канал може продовжити роботу.

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. Обидві сторони мають прийняти зміну, а транзакція — дотриматися балансів, правил резервів і комісій. Підсумкову місткість визначає сума внесків обох сторін.

DOC · 001BOLT 2 — Channel SplicingСпецифікація DOC · 002BOLT 2 — Splicing Test VectorsСпецифікація DOC · 003BOLT 9 — Assigned Feature FlagsСпецифікація DOC · 004Core Lightning v26.04 release notesПервинне джерело DOC · 005Eclair API — Splice-in, Splice-out and RBF SpliceДокументація
Переглянуто: Спочатку джерела · Не інвестиційна порада