Решение проблемы входящей пропускной способности в сети lightning
Если вы хотите принимать платежи через лайтнинг или правильно балансировать каналы, у вашего узла должна быть достаточная входящая емкость. В этой статье описывается, что это такое и каковы практические способы ее получения.
Проблема
Упрощенный пример. Левый график показывает каналы и их емкость - информацию, видимую публично. Правый график показывает, как балансы на самом деле распределены внутри каждого канала (недоступная публично информация) и направления движения средств. Из картинки слева может показаться, что узел E имеет лучшее соединение. Но на практике все его балансы локальны, у него нет входящей емкости, и он не может принимать или маршрутизировать платежи.
Функционирование платежей в Lightning Network (LN) отличается от ончейн биткоин-транзакций. Моя предыдущая статья описывает криптографическую магию, стоящую за LN, ниже приведены лишь некоторые практические моменты.
- Сеть лайтнинг состоит из двусторонних каналов, в которых и заблокированы монеты.
- Общее количество биткоинов, заблокированных в канале, называется емкостью канала.
- Сумма на вашей стороне канала называется локальным балансом. Сумма на стороне партнера по каналу называется удаленным балансом.
- Когда вы открываете новый канал — весь ваш баланс является локальным (здесь мы опускаем двойные каналы и проталкивание сумм с целью упростить пояснение).
- Емкость канала всегда остается неизменной (для простоты мы опускаем сплайсинг) и примерно равна сумме локального и удаленного балансов (из-за комиссий).
- Когда вы платите - баланс перетекает с вашей стороны канала на удаленную сторону. Когда вы получаете платежи — наоборот.
Что приводит нас к одной из основных проблем:
Для того чтобы получать платежи, ваш узел должен иметь достаточную входящую емкость: достаточное количество открытых каналов с достаточным удаленным балансом (иначе баланс не может перетекать на вашу сторону).
Увеличить входящую емкость означает как-то получить каналы с большим удаленным балансом. А для маленьких новых узлов это может быть очень сложно. И если данная проблема вас не пугает, имеет место еще один аспект:
Не каждая входящая емкость одинаково полезна. Канал от хорошо соединенного и сбалансированного узла соединит ваш узел с сотнями других узлов. Канал от нового непубличного узла — нет.
Недоумеваете, как получить достаточную входящую емкость? Не переживайте — есть способы!
Решение 1: Трата
Это — очевидное решение, но его необходимо упомянуть. Когда вы используете канал для траты монет, они списываются с локального баланса и добавляются к удаленному. Чем больше вы тратите — чем больше ваш удаленный баланс, тем больше входящая емкость.
Конечно, такой подход не решает всех проблем для каждого. Но если у вас есть возможность платить через LN — используйте ее, и в будущем у вас будет меньше проблем с входящими платежами.
Решение 2: Попросить открыть с вами входящий канал
Это, пожалуй, лучший вариант для большинства узлов: если вам нужна входящая емкость — запросите входящие каналы. Если вы мерчант — попросите своих клиентов, если вы знаете кого-то, кто держит полную ноду — попросите их.
Но, несомненно, самый простой способ - это использовать сервисы, которые занимаются открытием каналов. Перечислим некоторые из них:
- Thor - сервис от проекта Bitrefill, предлагающего продукты и услуги, которые предоставляют возможность платить криптовалютами за разнообразные сервисы. Они могут арендовать вам частный канал с емкостью от 0.003 до 0.16 BTC, который они обещают держать открытым как минимум 30 дней. В зависимости от вместимости он будет стоить от доллара и до более чем $20.
- Y'alls - услуга от Алекса Бошворта, которая позволяет вам заплатить менее доллара за канал с входящей емкостью в 0.02 BTC. И хотя это может показаться дешевле, чем Bitrefill, имейте в виду, что Y'alls устанавливает более высокие, чем обычно, тарифы на маршрутизацию (которые придется платить вашим клиентам).
- LightningTo.Me - мой личный некоммерческий хобби-проект, который бесплатно откроет канал BTC 0.02 с вашим узлом. И да, он также не взимает плату за маршрутизацию. Здесь вы можете найти ответы на некоторые часто задаваемые вопросы.
- LNBig.com - крупный провайдер ликвидности, который бесплатно откроет канал до 0.04 BTC. Их политика в отношении тарифов на маршрутизацию меняется довольно часто, так что обратите на это внимание.
Есть также узлы, которые обещают открыть канал с вашим узлом, если вы первым откроете канал с их узлом. Предлагаю обратить внимание на WILL_CONNECT_BACK или Lightning Power Users. Остерегайтесь, что это не всегда будет работать с нодами, на которых запущена c-lightning, которая разрешает только один канал между двумя узлами.
Решение 3: Кастодиальный обмен лайтнинг-биткоинов на ончейн-биткоины
Для некоторых это может показаться нелепым, но это действительно является одним из решений: вы можете обменять биткоины на биткоины. В каком-то смысле, это тоже форма траты: вы тратите лайтнинг-биткоины и получаете ончейн монеты взамен.
Я надеюсь, что достаточно скоро многие крупные биржи позволят осуществлять лайтнинг-депозиты, но на данный момент вариантов не так уж и много. Я упомяну некоторые из них: zigzag.io, fixedfloat.com, sideshift.ai, southxchange.com, btcduke.com, coinplaza.it, lightningconductor.net.
Пожалуйста, имейте в виду, что услуги биржи не всегда надежны. Проведите собственное исследование и сразу же после осуществления сделки выведите свои монеты.
Решение 4: Обратные некастодиальные субмарин-свопы.
Как и предыдущее решение, обратные некастодиальные субмарин-свопы реализуют обмен лайтнинг- (оффчейн) биткоинов на ончейн монеты. Но это решение лучше, чем предыдущее, так как оно не является кастодиальным (не требует доверия). На данный момент оно не очень удобно в использовании и больше ориентировано на разработчиков, поэтому я не буду в него углубляться. Пожалуйста, ознакомьтесь с этим блог-постом или перейдите непосредственно в репозиторий github.
Решение 5: Использовать кастодиальное хранилище
Это еще более опасный способ, потому что он требует от вас доверия к услуге в течение длительного периода времени. Исследование каждой площадки здесь еще более важно, чем в предыдущем случае. По сути, эти услуги позволяют вам предоставить свои средства им на хранение и обещают вернуть их, когда они вам понадобятся.
В качестве примеров можно привести различные кошельки для хранения средств: BlueWallet, Wallet of Satoshi or Bitlum. В данном случае все максимально просто: вы отправляете лайтнинг-биткоины с вашей ноды на их, освобождая локальный баланс вашей ноды.
Но если вы достаточно креативны, вы можете воспользоваться и другими услугами. Например, вы можете послать себе щедрый донат через tippin.me. Таким образом, вы будете хранить некоторую часть ваших средств на их узле.
Решение 6: Убедитесь, что ваш узел всегда в сети.
Если вы просто будете держать ваш узел всегда в режиме онлайн — вы, скорее всего, получите некоторую входящую емкость. Открывайте каналы на множестве хорошо обслуживаемых узлов (я был бы признателен, если бы мой узел был одним из них), убедитесь, что ваш узел публично рекламирует свой IP-адрес, проверьте, что порты открыты, и настройте мониторинг, чтобы убедиться, что программное обеспечение LN работает круглосуточно, семь дней в неделю.
Во-первых, пользователям нравятся узлы с хоть каким-то подключением, которые всегда находятся в сети, потому что эти узлы с большей вероятностью будут получать платежи от своих пользователей. Во-вторых, некоторые узлы работают на автопилоте, и если вы находитесь в сети — вы можете настроить канал с этими узлами просто случайно.
Заключение
Принимать платежи с помощью лайтнинг сложнее, чем принимать ончейн платежи, но не отчаивайтесь, используйте некоторые из приведенных выше советов. Со временем ваш узел созреет и все заработает как швейцарские часы.
У вас есть комментарии? Я что-то забыл? Пожалуйста, не стесняйтесь поделиться своими мыслями! Давайте продолжим улучшать этот пост и поможем лайтнинг расти. О, и следите за обновлениями LightningTo.Me в твиттере!