Торговля ликвидностью в сети Биткоин
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: 0 msats
Forwarding Fee Rate: 1000 ppm
Automatic Multipath Payments (AMP): On
Timelock Delta: 144 blocks
Первые два задают начальное значение ваших комиссий. Base лучше оставить нулевыми для всех, это сейчас comme il faut. Fee rate вы будете постепенно снижать, отыскивая порог, с которого ликвидность начнет вытекать, но не слишком быстро. AMP позволит посылать большие платежи через несколько путей. 144 блока по 10 минут это 24 часа на ожидание подтверждений оплаты, чтобы уменьшить риск закрытия каналов по форс-мажору (forced close).
Теперь нужно подсоединиться к своему узлу через SSH (umbrel@umbrel.local) и установить Balance of Satoshis вместе с Телеграм-ботом. Через них вы сможете получать информацию о происходящем, где бы вы не находились. Установите Tails из App Store, чтобы иметь возможность заходить в свой Umbrel удаленно. Соединяться с другими узлами Umbrel будет через Tor, никакие порты в роутере открывать не нужно. Установите LNDBoss и в настройках включите Amboss Health Check. Также установите 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, другие явно, в таких как Breeze и Blixt. Их создатели зарабатывают самые большие комиссионные, будучи первым узлом, куда подсоединяется кошелек. Кто-то открывает каналы как вы сейчас — для своего собственного узла, чтобы не платить комиссии чужим кошелькам.
Большинство из начинающих роутеров быстро натыкаются на вампиров и теряют много крови (канал опустел, прежде чем заработанные комиссии покрыли расходы на его открытие). И либо продолжают бороться, открывают более полезные каналы и учатся их активно ребалансировать (герои), либо сдаются и сидят без движения (зомби). Узнать положение дел на чужом узле невозможно.
Каналы желательно открывать на живые и не слишком большие узлы, которые активно управляют своей ликвидностью, имеют достаточно связей (от 50) и capacity от 5 BTC. Их можно найти на LN+ среди тех, кто открывает большие свопы (размером от 10 000 000) или переходя по ссылкам на сайте Amboss. Лучше, если такие узлы максимально отдалены друг от друга (имеют мало общих партнеров). Тщательно составив такой список, можно одновременно открыть до 10 каналов, заплатив onchain fee лишь один раз: раздел Batching в LNDg. Pubkey — это часть адреса канала до @. Amount (sats) — 5 000 000 или 10 000 000 каждый. Opening Fee Rate — из Mempool.
После завершения открытия всех каналов нужно вернуть половину баланса (Outbound Total в LNDg) на блокчейн командой loop out
Сразу скажу, что треугольники, квадраты и пентаграммы открывают только новички. У профи нет терпения ждать, когда найдется столько участников, подпадающих под их критерии. Хорошие узлы предлагают и клюют только на 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% заполнен и уже много дней стоит без движения. Ваши контрагенты, если они умны, должны делать то же самое. Тем самым создаются условия для круговых ребалансировок — платежей самому себе из переполненного канала в пустой. Чем более разнообразны связи узла с внешним миром, тем больше шансов на успех такой ребалансировки (с затратами не выше указанного вами предела). Для автоматического поиска таких путей рекомендую установить Lightning Jet с его Телеграм-ботом.
Меры безопасности
Как и в ситуации с холодным кошельком, главное хранить seed в надежном месте и ни с кем не говорить про Биткоин