Как платить через Lightning Network: каналы, ликвидность и комиссии | IceAI

Как платить через Lightning Network: каналы, ликвидность и комиссии

Пошагово про Lightning Network: как открыть канал, принять платёж без входящей ликвидности, посчитать комиссию и не потерять деньги.

В тот вечер я переводила знакомому 150 000 сатоши за ремонт ноутбука. Ончейн-комиссия вышла 4 200 сатоши, а подтверждение пришло через 18 минут. Через неделю тот же платёж я провела по Lightning: две секунды, 151 сатоши комиссии. Разница не в «скорости технологии», а в том, что в одном случае мы писали в блокчейн, а в другом — перекладывали баланс внутри канала. Ниже — как это устроено на практике и где люди теряют деньги.

Платежи в Lightning Network: канал между двумя узлами и комиссии Кошелёк А 0,01 BTC Канал 1 000 000 сат Маршрут 2 узла, 0,1% Кошелёк Б + 150 000 сат 151 сат комиссии: база 1 + 0,1% от суммы Ончейн-перевод той же суммы стоил 4 200 сат и 18 минут

С чего начать

Сначала ответьте себе на один вопрос: вы собираетесь платить, принимать или и то и другое. От этого зависит тип кошелька.

Платить проще всего. Подойдёт любой некастодиальный кошелёк с автоматическими каналами — Phoenix, Breez, Alby. Вы ставите приложение, записываете seed-фразу на бумагу, пополняете ончейн-баланс, и кошелёк сам открывает канал при первой трате. Никаких настроек, но за входящую ликвидность такая схема берёт свою плату — обычно 0,5–1% от суммы первого пополнения.

Принимать платежи сложнее: нужен входящий баланс в канале, то есть деньги должны лежать не у вас, а на удалённой стороне. Об этом отдельный раздел ниже.

Полный контроль даёт свой узел: LND, Core Lightning или Alby Hub на домашнем сервере. Там вы сами решаете, с кем открывать каналы и какую комиссию брать за маршрутизацию. Для первых шагов это перебор — начните с 50 000–100 000 сатоши в обычном кошельке и посмотрите, как механика ведёт себя на практике.

Как устроен канал в двух словах

Канал — это мультисиг-адрес на два участника, открытый одной ончейн-транзакцией. Внутри него лежит ёмкость: скажем, 1 000 000 сатоши. Часть этой суммы — ваш локальный баланс, часть — удалённый. Платежи внутри канала не попадают в блокчейн: вы просто перераспределяете баланс и подписываете новое состояние.

Отсюда главное ограничение: отправить можно только то, что лежит на вашей стороне. Если в канале 1 000 000 сатоши, а локальный баланс 300 000, больше 300 000 вы не отправите, даже если ёмкость позволяет. И ещё нюанс: примерно 1% ёмкости биржа-протокол держит в резерве, поэтому реально доступно чуть меньше.

Первый платёж: что происходит по шагам

  1. Получатель присылает инвойс — строку, которая начинается на lnbc. Внутри зашиты сумма, хеш платежа и срок действия. По умолчанию инвойс живёт час, потом становится недействительным.
  2. Вы проверяете сумму и срок. Сумма в инвойсе фиксированная, дописать «ноль» на ходу не получится.
  3. Кошелёк ищет маршрут: цепочку каналов от вас до получателя, где на каждом шаге хватает баланса. Обычно это 1–4 прыжка.
  4. Перед подтверждением кошелёк показывает комиссию. Если она кажется большой — маршрут пересоберут или платёж не пройдёт.
  5. Платёж атомарный: либо деньги доходят до получателя целиком, либо возвращаются вам. Промежуточного состояния «списалось, но не дошло» здесь нет — за это отвечает хеш-таймлок в маршруте.

Входящая ликвидность: главная проблема

Самая частая жалоба: «канал открыл, а принять оплату не могу». Причина в том, что открытый вами канал даёт исходящую ликвидность. Чтобы принимать, нужен баланс на противоположной стороне канала — его кто-то должен вам предоставить.

Рабочих вариантов четыре.

  • LSP-кошелёк. Сервис открывает канал в момент входящего платежа и вычитает комиссию из суммы. Просто, но 1% от платежа — обычная цена.
  • Купить входящую ликвидность через сервисы вроде Magma или Loop. Платите фиксированную сумму за канал нужного размера.
  • Открыть канал с крупным узлом и попросить его выделить баланс на вашу сторону. Взамен вы маршрутизируете чужие платежи и получаете комиссию.
  • Держать два канала — один для отправки, второй, открытый встречной стороной, для приёма. Самый дешёвый способ, если у вас есть партнёр по бизнесу.

Как считаются комиссии

Маршрутизация стоит из двух частей: базовая ставка (обычно 1 сатоши, иногда 0) плюс процент, который задаётся в ppm — миллионных долях. 100 ppm — это 0,01%.

Считаем платёж на 150 000 сатоши по маршруту из двух узлов со ставкой 100 ppm и базой 1 сатоши на каждом: 150 000 × 0,0001 = 15 сатоши на узел, итого 30 плюс 2 базовых — 32 сатоши. Это 0,021% от суммы. В моём примере в начале статьи маршрут был дороже, около 0,1%, потому что узлы на пути держали более высокую ставку.

Отдельно стоит открытие канала — это обычная ончейн-транзакция. При ставке 15 сатоши за виртуальный байт и размере 141 vB выходит 2 115 сатоши. Закрытие по договорённости стоит примерно столько же, а принудительное (force close) дороже и добавляет задержку около 144 блоков, то есть примерно сутки, пока деньги не станут доступны.

Отсюда простое правило: для сумм до 10 000 сатоши Lightning дешевле всегда, для 1 000 000 сатоши счёт уже сопоставим (0,1% — это 1 000 сатоши против фиксированных 2 115 ончейн), а для 10 000 000 сатоши один ончейн-перевод обойдётся дешевле маршрута.

Если платёж не проходит

Ошибка «no route» значит, что кошелёк не нашёл путь с достаточной ликвидностью. Лечится не повтором, а сменой маршрута: подождать пару минут, уменьшить сумму или разбить платёж на части (MPP поддерживают почти все современные кошельки).

«Insufficient local balance» — на вашей стороне канала не хватает средств. Пополнить канал можно только ончейн-транзакцией, мгновенного способа нет.

Просроченный инвойс — самая обидная ошибка, потому что деньги уже списаны не были, а получатель ждёт. Проверяйте срок до оплаты, а не после.

Если статус платежа «в пути», не отправляйте его повторно по новому инвойсу: сначала дождитесь финального статуса. Атомарность защищает от двойного списания внутри одного платежа, но два разных платежа — это два разных перевода.

Безопасность и бэкапы

Одной seed-фразы для Lightning мало. Каналы хранят состояние вне блокчейна, и при восстановлении из seed без резервной копии каналов вы рискуете потерять деньги: пир может предъявить старое состояние, и оно будет считаться действительным. Поэтому некастодиальные кошельки делают static channel backup — файл, который нужно хранить отдельно от устройства.

Проверьте в своём кошельке три вещи: включён ли автоматический бэкап каналов, куда он сохраняется и как выглядит процедура восстановления. Если ответа нет — это повод сменить кошелёк до того, как на балансе появится заметная сумма.

И не держите крупные суммы в кастодиальном кошельке вроде Wallet of Satoshi: там ключи не у вас, а «мгновенно и без комиссий» — не то же самое, что «безопасно». Для ежедневных трат такой кошелёк удобен, для сбережений — нет.

Частые ошибки

  • Открыть канал на 20 000 сатоши. После резерва и ончейн-комиссии от суммы остаётся меньше половины, а платежи всё равно не проходят.
  • Путать сатоши и миллисатоши. В настройках комиссии значения часто в мсат, и 1 000 мсат — это один сатоши, а не тысяча.
  • Считать Lightning бесплатным. Открытие, закрытие и входящая ликвидность стоят денег, просто не видны в момент оплаты.
  • Держать весь баланс на одной стороне канала и удивляться, что нельзя ни отправить, ни принять.
  • Восстанавливать кошелёк из seed без бэкапа каналов и терять средства при закрытии.

Коротко

  • Канал — это ёмкость и два баланса внутри неё; отправлять можно только с локальной стороны.
  • Принимать платежи без входящей ликвидности нельзя — её покупают у LSP или получают от партнёра.
  • Комиссия маршрута = база плюс ppm; 100 ppm на 150 000 сатоши — это 15 сатоши на узел.
  • Открытие канала стоит как ончейн-перевод: около 2 115 сатоши при 15 сат/vB и 141 vB.
  • Для мелких сумм Lightning дешевле, для очень крупных — один ончейн-перевод.
  • Инвойс живёт час; проверяйте сумму и срок до оплаты.
  • Храните static channel backup отдельно от seed и не держите сбережения в кастодиальном кошельке.