Глоссарий / Lightning и layer 2
Платежный канал
Другие названия: Микроплатежный канал, Канал Lightning.
- Что такое Платежный канал?
- Платежный канал представляет собой двусторонний контракт в биткоине, пополняемый одной ончейн-транзакцией, внутри которого обе стороны могут тысячи раз переписывать распределение этих средств, не затрагивая блокчейн.
Представьте себе счет в баре, который оба посетителя подписывают после каждой порции. Выход финансирования представляет собой адрес 2-из-2, поэтому ни один из участников не может распорядиться деньгами в одиночку, а каждое обновление является полностью действительной транзакцией биткоина, которую мог бы опубликовать любая из сторон. Если вы держите биткоины в канале, вы полагаетесь на то, что программное обеспечение заметит плохое поведение, а не на то, что компания будет вести себя честно.
Как это работает
Платежный канал заменяет доверие двумя частями биткоин-скрипта: общим выходом и наказанием.
Открытие канала требует одной ончейн-транзакции, которая платит на адрес, требующий обе подписи. До того как эта транзакция будет разослана, участники обмениваются подписанными транзакциями обязательств, которые расходуют ее обратно в их пользу в согласованных пропорциях. Платеж внутри канала означает лишь подписание новой пары обязательств с новым распределением и последующую передачу секрета, который отзывает старое.
Именно отзыв делает схему безопасной. Каждая сторона хранит немного отличающуюся транзакцию обязательств, и версия, которая есть у вас, выплачивает ваш собственный баланс по скрипту, получить средства по которому можно только после задержки, обычно в 144 блока, около суток. В копии вашего контрагента такая же задержка действует для его стороны. Если кто-то из вас разошлет старое, более выгодное состояние, у другой стороны есть эта задержка, чтобы заметить это и с помощью секрета отзыва забрать весь баланс канала в качестве штрафа. Обман не блокируется, он становится невыгодным.
Ничего этого не было возможно до появления относительных блокировок времени. CHECKSEQUENCEVERIFY и блокировки на основе номера последовательности, определенные в BIP68, BIP112 и BIP113, действуют с блока 419 328 в 2016 году, и именно они позволяют скрипту говорить «доступно для расходования, но только через 144 блока после подтверждения этой транзакции».
Несколько небольших чисел в спецификации существуют исключительно для того, чтобы штраф оставался исполнимым. Каждый участник обычно держит резерв, который он никогда не может потратить, предложенный в размере 1 процента от общей суммы канала, чтобы у того, кто жульничает, всегда было что терять. Выходы ниже порога пыли, 330 сатоши для выходов pay-to-witness-script-hash, которые используют каналы, отбрасываются и уходят в комиссии вместо того, чтобы быть записанными в обязательство. Современные каналы также несут два якорных выхода по 330 сатоши, которые существуют для того, чтобы любая из сторон могла прикрепить дочернюю транзакцию с повышением комиссии, если сеть загружена, когда нужно закрыть канал. И сам номер обязательства скрыт: 48 его бит замаскированы и распределены между полями locktime и sequence, так что наблюдатель, увидевший одностороннее закрытие, не может подсчитать, сколько платежей прошло через канал.
Почему это важно при покупке биткоина
Каналы являются причиной того, что баланс в Lightning и баланс в холодном хранении не взаимозаменяемы, хотя оба представляют собой биткоин.
Деньгам в канале нужен ключ, который находится онлайн, и узел, который ведет наблюдение. Это подходит для кошелька для трат. Это неподходящее место для запаса, который вы планируете держать годами, потому что модель безопасности требует от вас действий постоянно, а не один раз. В наших обзорах аппаратных кошельков рассматривается обратный компромисс: ключи, которые никогда не соприкасаются с сетью и никогда не должны ни на что реагировать.
Отсюда следуют два практических последствия для любого покупателя. Во-первых, открытие и закрытие каналов являются ончейн-транзакциями, поэтому кошелек, который открывает канал за вас, тратит реальные комиссии от вашего имени, иногда молча. Проверьте, сколько мобильный кошелек Lightning берет за свой первый канал, прежде чем пополнять его на 30 $ и обнаружить, что треть ушла на настройку. Во-вторых, если приложение Lightning никогда не упоминает каналы, ключи или резервные копии, оно почти наверняка само хранит канал. Это кастодиальный счет с внешним лоском Lightning, и он относится к той же категории риска, что и биткоины, оставленные на бирже.
Последнее скучно, но дорого: состояние канала невозможно восстановить из сид-фразы. Резервная копия из двенадцати слов идеально восстанавливает ончейн-кошелек и ничего не восстанавливает о том, какое обязательство было текущим. Некастодиальные кошельки Lightning отдельно создают резервную копию состояния канала, и потеря этой копии может стоить вам баланса канала, даже если сид-фраза у вас остается.
Как выглядит закрытие одного канала
Проследите за завершением одного канала, и части перестанут быть абстрактными.
Два участника открывают канал на 1 000 000 сатоши, полностью финансируемый одним из них. После месяца платежей распределение составляет 400 000 и 600 000. Кооперативное закрытие является благоприятным сценарием: обе стороны подписывают одну закрывающую транзакцию, которая платит каждой стороне напрямую, она подтверждается, как любая обычная трата, и задержки на обоих выходах нет.
Одностороннее закрытие является запасным вариантом. Один участник исчезает, поэтому другой рассылает свое последнее обязательство. Его собственный баланс попадает в скрипт, которого он не может коснуться в течение согласованной задержки, баланс ушедшего участника сразу доступен ему для расходования, а якорные выходы остаются на случай, если понадобится повысить комиссию. Если исчезнувший участник позже разошлет устаревшее обязательство, в котором у него 900 000 сатоши, у честной стороны есть окно задержки, чтобы опубликовать отзыв и забрать все 1 000 000.
Платежный канал vs statechain
Платежный канал поддерживает в сети живой контракт между двумя сторонами; statechain передает право расходовать фиксированный выход. В канале баланс может быть любым числом и меняется с каждым платежом, а исполнение одностороннее. В statechain целый UTXO фиксированного размера передается от одного владельца к следующему с помощью сервера, которого просят удалить его старую долю ключа, поэтому модель опирается на то, что этот сервер действительно ее удалит. Каналы стоят вам одной ончейн-транзакции на открытие и дают вам доступный для расходования баланс; statechain стоят вам допущения о доверии и дают вам целую монету.