Как стать автором
Обновить

Торговля ликвидностью в сети Биткоин

Время на прочтение10 мин
Количество просмотров4.6K
LNDg
LNDg

Краткое руководство, как приобрести, настроить и управлять своим собственным Bitcoin Lightning Node, избегая подводных камней и типичных ошибок.

Кому это интересно

Если вы не уверены, для чего был изобретен Биткоин, или усматриваете в нем лишь спекулятивный аспект, рекомендую начать знакомство с этой базовой информации. Тех, кто априори считает, что все это надувательство, скам и т.п., а также поклонников других блокчейнов, просьба пройти мимо, не минусовать и не комментировать. Для оставшихся макси, кто понимает и верит в технологию, уже накопил по меньшей мере один целый биткоин, научился не доверять биржам, кастодиальным кошелькам и стэйкингу, и не боится командной строки линукса (а также любит стратегические игры!) - вам должно быть любопытно узнать больше. Предстоит довольно сложный, но очень интересный путь в Кроличью Нору. 

Сразу предупреждаю, что речь не идет о какой-либо серьезной доходности на вложенные средства. По крайней мере, за первый год покрыть заработанными комиссиями затраты на покупку оборудования, открытие каналов и необходимые ребалансировки вряд ли получится. Лучше рассматривать это занятие как интерактивную игру с элементами обучения экономике. Я лишь могу подсказать, как избежать лишних трат, обрести нужные навыки максимально быстро, повысить свою эрудицию и получить эндорфины. 

Объем потока ликвидности в сети Lightning постоянно растет. В игру уже начали вступать коммерческие банки, и со дня на день присоединится Бинанс. Научившись ориентироваться в этой паутине, вы сможете превратить микрокомпьютер в своей спальне в полноценного члена финансовой системы завтрашнего дня. Ваш узел и его связи добавят ликвидность и повысят устойчивость экосистемы Биткоин, косвенно повлияв на рост его стоимости. Плюс, полученные знания придадут вам уверенности в уже сделанной инвестиции. В перспективе, собственный Lightning Node может пригодиться как “банк в кармане” для обслуживания платежей малого бизнеса.

Как работает Lightning Network

Платежи через блокчейн Биткоин очень надежны и ограничены лишь балансом вашего кошелька. Недостатки - комиссия от 0.5$ и выше зависит от загруженности сети, а скорость платежа, уже и так черепашья, зависит от выбранной вами комиссии. Оплачивать чашку кофе или покупки в магазине крайне дорого и неудобно. Lightning была придумана как надстройка над блокчейн для решения этой проблемы. Работает она примерно так: делается транзакция сразу на большую сумму (0.01-0.1 Биткоин и выше) со смарт-контрактом, доступ к которому имеют две стороны, Алиса и Боб. С его помощью они ведут учет, кто кому сколько должен, и тем самым совершают микроплатежи между собой. Только когда, через год или больше, они решают разорвать отношения, итоговый баланс записывается обратно на блокчейн.

Этот "платежный канал" можно представить себе как нитку с бусами (сатоши), которые Алиса и Боб передвигают туда-сюда между собой. Изначально все бусы на стороне Алисы, так как она инициировала открытие канала. Это называется исходящая ликвидность. По мере платежей Бобу, исходящая ликвидность у Алисы убывает, а у Боба растет. В то же время, у Алисы появляется возможность пополнять баланс обратно - возникает и растет входящая ликвидность (а у Боба убывает).

Если Алиса - это кастодиальный кошелек Wallet of Satoshi, а Боб - p2p платформа Robosats, все будет прекрасно работать для их клиентов. Сатоши будут ходить туда-сюда в замкнутой системе, мгновенно и бесплатно. Но как только кто-то захочет пополнить свой кошелек извне, Алисе нужен новый канал - с тем узлом, откуда приходят деньги. Причем этот канал должен будет открыть отправитель, чтобы у Алисы сразу возникла входящая ликвидность от него.

Но это еще полбеды. Когда такой клиент захочет отправить свои сатоши на Robosats, у Алисы может не хватить исходящей ликвидности в канале с Бобом. Нужно будет увеличить канал или создать новый путь через четвертого игрока. И так далее. На сегодняшний день, сеть Lightning уже выросла до размера 18 000+ узлов, 76 000+ каналов и общей ликвидности 5 600+ BTC. Рост продолжается, так как все больше людей во всем мире учатся отправлять и принимать такие микроплатежи.

Оператор каждого узла в сети сам решает, на какие другие узлы открывать каналы и какие ставки комиссионных назначать за исходящую ликвидность. Алгоритм Lightning автоматически выбирает путь от отправителя платежа до конечного получателя, решая Задачу коммивояжера для минимизации итоговой комиссии. Потоки платежей можно представить как воду, текущую по лабиринту труб с разным сечением, где у половины перекрыты вентили (закончилась исходящая ликвидность). Или как растение, с разветвленными корнями, ветками и множеством стволов. Вашей задачей будет управление потоком ликвидности через свой узел путем регулирования размеров комиссий и ребалансировками.

Umbrel

Самый простой и дешевый способ создать свой узел - это купить Raspberry Pi 4 с SSD на 1 тб и установить на него Umbrel, следуя инструкциям на сайте. Такая система очень компактна, потребляет минимум энергии и вполне адекватна для узла среднего размера. Синхронизация блокчейна займет несколько дней. А пока, установите Lightning Node из App Store и запустите его. В Advanced Settings, выберите для своего узла название и цвет фона в Personalization. В разделе Routing введите следующие параметры:

Base Forwarding Fee: 1000 msats
Forwarding Fee Rate: 1000 ppm
Automatic Multipath Payments (AMP): On
Timelock Delta: 144 blocks

Первые два задают начальное значение ваших комиссий. Base fee берется независимо от суммы платежа и 1 сатоши (1000 милисатоши) является нормой. Fee rate вы будете постепенно снижать, отыскивая порог, с которого ликвидность начнет вытекать, но не слишком быстро. AMP позволит посылать большие платежи, разбивая их на несколько путей. 144 блока по 10 минут это 24 часа на ожидание подтверждений оплаты, чтобы уменьшить риск закрытия каналов по форс-мажору (forced close). 

Теперь нужно подсоединиться к своему узлу через SSH (umbrel@umbrel.local) и установить Balance of Satoshis вместе с Телеграм-ботом. Через них вы сможете получать информацию о происходящем, где бы вы не находились. Установите Tails из App Store, чтобы иметь возможность заходить в свой Umbrel удаленно. Соединяться с другими узлами Umbrel будет через Tor, никакие порты в роутере открывать не нужно. Также установите LNDg. Это будет ваш центр управления. 

Когда блокчейн синхронизируется, рекомендую пополнить кошелек сразу на 1 Биткоин. Так легче запомнить, с чего вы начали, чтобы сравнить через год. Адрес для пополнения взять в Lightning Node - Bitcoin Wallet - Deposit или в LNDg на главной странице справа: New Onchain Address.

Как открывать каналы

Открытие каждого канала стоит вдвое дороже, чем обычный платеж по блокчейн (смотрим в MemPool, нас интересует Low Priority sat/vB). Часть баланса будет сразу зарезервирована на комиссию по закрытию (по обоюдному желанию или форс-мажорно, если один из контрагентов вдруг пропадет). Просто так открывать каналы на понравившиеся узлы таит две проблемы: 1) вся ликвидность будет исходящей, и узел не сможет работать маршрутизатором (нет входящей ликвидности), и 2) их владельцы могут в любой момент закрыть ваш канал, если он иссякнет.

Чтобы получать входящую ликвидность одновременно с исходящей, придумали открывать каналы кольцами из трех (А на B, B на C, C на А) и более узлов. Подписаться на такое открытие можно на сайте LN+. Для авторизации используйте “Sign a Message” внизу главной страницы LNDg.

Однако, сразу возникнет проблема курицы и яйца. Никто на этом сайте не захочет сотрудничать с вашим пустым узлом! Все предложения будут содержать требования о минимальном количестве и общей сумме, а на вашу собственную инициативу никто не откликнется. Так что первые несколько каналов все равно придется открыть самостоятельно и отбалансировать ликвидность через Loop (перегнать половину исходящего баланса обратно на блокчейн). Все это будет похоже на прокачку своего героя в RPG игре. На пути вам встретятся другие герои, зомби и много вампиров. И все будут играть с вами в покер.

LOOP

Познакомиться с этим узлом стоит в самом начале путешествия. Это главный вампир, черная дыра, куда сливается вся ликвидность. Дело в том, что превратить свои on-chain биткоины в off-chain Lightning может любой желающий за стоимость открытия канала. А вот наоборот, если вам постоянно присылают Lightning, и вы хотите превратить их в on-chain для холодного хранения, дешевой альтернативы нет. Распиаренный Boltz берет за это 0.5% от суммы, плюс 0.00005-0.00001 BTC “Network Fee”. Bitfinex сделает конвертацию бесплатно, но возьмет за вывод 0.0004 BTC. Kraken - 0.0002 BTC. Для суммы 0.1 BTC это 0.2%. Через Muun и Robosats еще дороже. А LOOP сделает такой “атомный своп” за ~0.1% плюс реальные комиссии по пересылке. Но сначала нужно его установить.

Идем в терминал и печатаем (версию файла заменить на последнюю для arm64): 

wget https://github.com/lightninglabs/loop/releases/download/v0.24.1-beta/loop-linux-arm64-v0.24.1-beta.tar.gz
sudo tar -C /usr/local -xzf loop-linux-arm64-v0.24.1-beta.tar.gz
sudo mv /usr/local/loop-linux-arm64-v0.24.1-beta /usr/local/loop

cd /etc/systemd/system/
sudo touch loopd.service
sudo nano loopd.service

Вставляем следующий текст, сохраняемся и выходим:

#Systemd unit for loopd
#/etc/systemd/system/loopd.service
[Unit]
Description=loopd
Wants=lnd.service 
After=lnd.service 

[Service] 
ExecStart=/usr/local/loop/loopd --lnd.tlspath=/home/umbrel/umbrel/app-data/lightning/data/lnd/tls.cert --lnd.macaroonpath=/home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/admin.macaroon
User=umbrel
Restart=always
TimeoutSec=120
RestartSec=30
StandardOutput=null
StandardError=journal

[Install]
WantedBy=multi-user.target

Теперь запускаем сервис и проверяем:

sudo systemctl start loopd.service
sudo systemctl status loopd.service

Если все работает, запрашиваем котировку на своп:

loop quote out 10000000 --verbose

Здесь и далее все суммы в сатошах. Конвертировать меньший объем дороже в процентном отношении, так как on-chain fee фиксирована. Показанная котировка не учитывает комиссию за пересылку с вашего узла до узла LOOP. На это нужно заложить еще примерно 0.15-0.2% (или 1500-2000 ppm - parts per million). Напрямую открыть канал на LOOP, чтобы эта комиссия была нулевой, можно, но бессмысленно. Ваша исходящая ликвидность сольется за один прогон, и пополнить ее будет неоткуда. То же произойдет, если вы откроете канал на Kraken, Bitfinex, Bitrefill, Boltz и многие другие, а также узлы, питающие их. Это все вампиры, или “sink nodes”, их лучше избегать. Понять, что перед вами вампир, можно по высоким комиссиям на него от других узлов (peer rate).

Откуда изначально берется ликвидность, протекающая по дереву Биткоина и питающая его? В основном, от майнеров вроде Nicehash и новых пользователей, открывающих каналы. Одни это делают незаметно для себя в таких кошельках как Muun, другие явно, в таких как Breez и Blixt. Их создатели зарабатывают самые большие комиссионные, будучи первым узлом, куда подсоединяется кошелек. Кто-то открывает каналы как вы сейчас - для своего собственного узла, чтобы не платить комиссии чужим кошелькам. 

Большинство из начинающих роутеров быстро натыкаются на вампиров и теряют много крови (канал опустел, прежде чем заработанные комиссии покрыли расходы на его открытие). И либо продолжают бороться, открывают более полезные каналы и учатся их активно ребалансировать (герои), либо сдаются и сидят без движения (зомби). Узнать положение дел на чужом узле невозможно. 

Каналы желательно открывать на живые и не слишком большие узлы, которые активно управляют своими комиссионными, имеют достаточно связей (от 50) и capacity от 10 BTC. Их можно найти на LN+, выставив фильтр. Лучше, если такие узлы максимально отдалены друг от друга (имеют мало общих партнеров). Тщательно составив такой список, можно одновременно открыть до 10 каналов, заплатив onchain fee лишь один раз: раздел Batching в LNDg. Pubkey - это часть адреса канала до @. Amount (sats) - 5 000 000 или 10 000 000 каждый. Opening Fee Rate - из Mempool. 

После завершения открытия всех каналов нужно вернуть половину баланса (Outbound Total в LNDg) на блокчейн командой loop out <amt_in_satoshis>. То есть, потратив один биткоин целиком, вы получите capacity на 1 BTC и 0.5 BTC вернется, чтобы открывать каналы дальше в режиме swap. Ведь теперь у вас есть узел, который уже не стыдно предлагать на LN+. Устанавливайте/соглашайтесь на размер не меньше 5 000 000, чтобы не морочиться с администрированием кучи мелких каналов. Ваш Raspberry Pi не справится, если итоговое количество каналов будет больше 40-50.

Сразу скажу, что треугольники, квадраты и пентаграммы открывают только новички. У профи нет терпения ждать, когда найдется столько участников, подпадающих под их критерии. Хорошие узлы предлагают и клюют только на Dual Funded Swaps на 10 000 000 (в заявке на LN+ Funding Amount = 5 000 000). Для их открытия используется команда bos open-group-channel. Инициатор создает группу из двух участников и делится ключем-приглашением. Второй участник той же командой принимает приглашение. Комиссия за открытие делится поровну, и канал открывается сразу сбалансированным 50/50.

Управление ликвидностью

После открытия каждого канала начинается игра в покер - каждая сторона нащупывает, до какого уровня нужно понизить начальную комиссию, чтобы началось движение. Слишком быстрое движение, наоборот, нежелательно и пресекается повышением комиссии. На эту динамику влияет очень много параметров, включая все остальные ваши каналы - их балансы и комиссии между вами и между их собственными peers. Понизив комиссию в одном канале, чтобы дать ему ребалансироваться, можно вызвать активность в других (assisted revenue). В LNDg можно настроить Auto Fees, чтоб помочь себе в этом деле. Разработчики уже пообещали, что в новой версии этот бот будет еще умнее. 

Понять, что на что влияет и выработать стратегию можно только начав торговать самому. В первом приближении, по мере убывания исходящей ликвидности в канале нужно повышать его Fee Rate, а по мере нарастания - понижать. Вплоть до нуля, если канал на 100% заполнен и уже много дней стоит без движения. Ваши контрагенты, если они умны, должны делать то же самое. Тем самым создаются условия для круговых ребалансировок - платежей самому себе из переполненного канала в пустой. Чем более разнообразны связи узла с внешним миром, тем больше шансов на успех такой ребалансировки (с затратами не выше указанного вами предела).

Вторым, равнительно новым и более продвинутым способом ребалансировать полный канал, не закрывая его, является Liquid PeerSwap.

Продажа входящей ликвидности

Когда ваш узел вырастет до 50+ каналов с общей емкостью 4 биткоина и выше, вы можете начать продавать каналы другим людям на маркетплейсе Ambos Magma. Вашими клиентами будут узлы, которые нуждаются во входящей ликвидности - например, магазины, продающие свои товары за Lighting Bitcoin. При размещении заявки можно привязать стоимость такого канала к текущему значению Fee Rate в Bitcoin Mempool. Т.е. к реальным расходам на его открытие и закрытие. А также дать обязательства по его продолжительности и максимальной комиссии PPM. Все это транслируется в процентную доходность APR, по которой клиенты смогут сортировать все такие предложения.

Меры безопасности

Как и в ситуации с холодным кошельком, главное хранить seed в надежном месте и ни с кем не говорить про Биткоин 🙂. Придумать надежный пароль на вход в Umbrel и не давать доступ к своему WiFi хакерам. После каждого изменения в каналах, BOS bot будет вам автоматически присылать бэкап, чтобы можно было восстановиться после катастрофического сбоя. Такие возможны из-за внезапного отключения питания, так что лучше приобрести UPS. Если по какой-то причине ваш узел долго будет оффлайн, возможно недобросовестное поведение контрагентов. Для защиты от этого нужно настроить Сторожевую Башню (ввести параментры в Lightning Node - Advanced Settings - Watchtower). Можно найти партнера через Watch Swaps, чтобы следить друг за другом. Наконец, на странице вашего узла в Amboss (ссылка в левом верхнем углу LNDg), укажите свои контакты и настройте уведомление по Телеграм. Если друг ваш сервер упадет, вы сразу же об этом узнаете.

В заключение

Я очень кратко пробежался по основным моментам, чтобы предоставить общую картину и дать вам возможность самостоятельно изучать вопросы по мере продвижения. Не стесняйтесь напрямую общаться с владельцами других узлов, почти все охотно делятся опытом. Те, кто занимается этим делом год-два давно поняли, что ключ к успешному роутингу - это помогать своим контрагентам развиваться, расширять свои связи и совершенствовать навыки. 

Управлять Lightning узлом - это как ухаживать за прихотливым растением. Давно находящаяся в засохшем состоянии ветка может вдруг ожить, благодаря вновь возникшим путям для ликвидности из-за новых каналов. А совсем редко, можно увидеть настоящее чудо - арбитраж.

PS. Более подробное продолжение темы здесь (на английском).

Теги:
Хабы:
Всего голосов 13: ↑9 и ↓4+5
Комментарии32

Публикации

Истории

Работа

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область