Глоссарий / Lightning и layer 2
Сплайсинг
- Что такое сплайсинг?
- Сплайсинг меняет размер открытого канала Lightning, тратя его финансирующий выход на новый, больший или меньший, так что канал сохраняет свою историю и остается работоспособным на протяжении всего процесса.
До появления сплайсинга изменение размера канала означало его закрытие и открытие другого: две ончейн-транзакции, две комиссии и промежуток, когда канала не существовало. Сплайс делает это одной транзакцией. Сообщения splice_init, splice_ack и splice_locked входят в спецификацию Lightning, а Core Lightning выпустил экспериментальную реализацию в v23.08 в августе 2023 года.
Как это работает
Сплайсинг тратит старый финансирующий выход и создает новый в той же транзакции, причем обе стороны подписывают ее.
Сначала стороны договариваются о том, что меняется. Одна из них отправляет сообщение splice_init с указанием суммы, которую нужно добавить или убрать; другая отвечает сообщением splice_ack. Затем они вместе строят транзакцию сплайса по протоколу интерактивного построения, и каждая добавляет свои входы и выходы, поэтому сплайс, добавляющий средства, привлекает ончейн-биткоины того, кто пополняет канал, а сплайс, убирающий средства, создает выход со сдачей, который выплачивает напрямую этой стороне.
Ценность сплайсинга в том, что происходит, пока транзакция не подтверждена. Канал не останавливается. Обе стороны одновременно держат транзакции обязательств против старого финансирующего выхода и против нового, и платежи продолжают идти в тех состояниях, которые остаются действительными. Как только сплайс получает достаточно подтверждений, сообщение splice_locked выводит из оборота старый выход, и канал продолжает работу со своим новым размером, прежней идентичностью канала и накопленной историей маршрутизации.
Затраты составляют одну ончейн-транзакцию вместо двух, и экономия больше, чем кажется. Закрытие и повторное открытие также ломают публичную репутацию канала, вынуждают узел заново выстраивать отношения маршрутизации и оставляют средства недоступными, пока подтверждаются обе транзакции. Сплайсинг избегает всех трех последствий. Он также позволяет показывать ончейн-баланс и баланс Lightning в одном кошельке одним числом, поскольку средства могут перемещаться между ними, и канал при этом никогда не завершается.
Где это встречается
Сплайсинг заметнее всего в кошельках, которые перестали показывать вам два баланса.
Core Lightning добавил его под флагом experimental-splicing в v23.08, открыв splice_init, splice_update и splice_signed как низкоуровневые команды. ACINQ выпустил его для обычных пользователей в Phoenix для Android v2.0.0 в августе 2023 года вместе с двойным финансированием, и именно так этот кошелек перестал различать в своем интерфейсе ончейн-средства и средства Lightning: пополнение ончейн встраивается сплайсом в существующий канал, а не открывает второй.
Для оператора узла практическая польза состоит в перебалансировке капитала без оборота каналов. Канал, ставший слишком малым для проходящего через него трафика, пополняется на месте. Из канала, держащего больше, чем нужно, часть средств переводится в холодное хранение, а канал остается открытым. Раньше и то и другое означало закрытие, ожидание и повторное открытие, с двумя ончейн-комиссиями и сбросом истории маршрутизации.
Поддержка не повсеместна. И реализация, и ее сторона в канале должны понимать сообщения сплайсинга, поэтому возможность сделать сплайс конкретного канала зависит от того, кто находится на другом его конце. Если ваш кошелек по-прежнему предлагает закрыть канал, чтобы вывести средства, значит, контрагент или программное обеспечение еще не внедрили сплайсинг.
Сплайсинг vs принудительное закрытие
Сплайсинг меняет размер канала, сохраняя его работающим; принудительное закрытие завершает канал в одностороннем порядке. Принудительное закрытие делают, когда другая сторона канала недоступна или ведет себя неправильно: вы транслируете свою последнюю транзакцию обязательств, ваш собственный баланс блокируется на задержку примерно в один день, и канал исчезает. Сплайс требует, чтобы обе стороны сотрудничали и подписывали, дает работающий канал и не накладывает задержку ни на чьи средства. Сплайсинг является плановой операцией обслуживания; принудительное закрытие является запасным вариантом, который стоит вам времени и невыгодной ставки комиссии.