ReactJS, TypeScript, Micro FrontendsReact fwdays | 27 березня. Долучайся!
×Закрыть

Lightning Network. Мільйони біткоін-транзакцій в секунду

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

За якимось оманливим переконанням вважається, що мережа біткоіна не може стати альтернативою традиційним коштам, мовляв, транзакції довго проходять, і якщо всі люди планети будуть нею користуватись, то пропускної здатності просто не вистачить. Так от: існує lightning network, надбудова другого рівня мережі біткоін, і є стійке переконання, що цю проблему можна вирішити.

Для чого вона потрібна

Якщо коротко — щоб проводити велику кількість переказів незначного об’єму. Для розуміння потрібно розглянути кілька ключових моментів, які намагається вирішити lightning network.

Яка комісія за транзакцію

Оскільки в основній мережі комісія за кожну транзакцію висока (в силу обмеження пропускної здатності), проводити їх часто — не дуже економічно доцільно. Для прикладу, середня вартість транзакції становить 0.0005 BTC, що приближається до 10 USD. Це невелика ціна коли переміщається 1 BTC і більше, при цьому одноразово, і дуже велика, якщо потрібно зробити покупку за 0.005 BTC, а якщо ще й кілька покупок.

На відміну від основної мережі, у lightning network більш ліберальна позиція щодо комісій. Так, мінімальна комісія за транзакцію становить 1 sat (0.00000001 BTC або приблизно 0.0002 USD). Щоправда, у кожному окремому випадку вона буде різна. Далі буде приклад, що проллє світло на цю частину протоколу взаємодії.

Яка швидкість прийняття транзакції

Основне нарікання на біткоін, і більшість криптовалют загалом, у тому, що пропускна здатність блокчейну неймовірно мала. Під «мала» мається на увазі 2,5 транзакцій на секунду, в середньому, якщо йдеться про біткоін. Проте у випадку lightning такого обмеження немає, тому що пропускна здатність не лімітована за кількістю транзакцій, і залежить виключно від кількості нод мережі, активних у даний момент.

Як працює мережа

Для прикладу можна розглянути наступний сценарій: нехай існують дві ноди біткоіна А та В, у яких постійно відбувається фінансова взаємодія(А відправляє кошти В та В відправляє кошти А). Для того щоб не очікувати кожен раз на потрапляння транзакції у блок, і, відповідно, не сплачувати комісію щоразу, власники нод домовляються про налаштування каналу у lightning network. Для цього вони встановлюють до ноди біткоіна ще ноду lightning. Потім на якихось умовах відкривається lightning-канал, наприклад А кладе у канал 0.01 BTC і В кладе у канал стільки ж. Як тільки транзакція відкриття каналу попадає у блок мережі біткоіна, канал рахується відкритим, і власники А та В можуть майже миттєво переказувати кошти( затрачається час на генерування нового ключа, підпису нової lightning-транзакції, і, власне, передачі її через мережу). Нехай нода В налагодила фінансову взаємодію з С, і також відкрила lightning канал. Тепер існує два канали: А <-> В та В <-> С. Цікава властивість lightning полягає у тому, що А тепер може взаємодіяти з С майже миттєво, навіть не маючи прямого каналу, а використовуючи В як посередника. Щоправда В у цьому випадку бере комісію за проведення транзакції. Комісія за транзакцію буде складати (basefee + (amount * feerate / 1000000)) де basefee — базова комісія за транзакцію (1sat за замовчуванням), amount — об’єм транзакції (лімітований об’ємом покладеним у канал), feerate — коефіцієнт, який встановив власник В (1 за замовчуванням). Якщо посередників більше ніж один, то кожен з них буде брати комісію у об’ємі, розрахованому за тією ж формулою.

Як налаштувати ноду

Для прикладу будемо налаштовувати все на операційній системі Linux з встановленим Docker-ом. Також потрібно мати публічну ip-адресу у мережі Internet. Адреса потрібна для того щоб інші lightning ноди могли ініціювати канали з свіжоналаштованою нодою. Ще необхідна нода біткоіна, бажано повна, і синхронізована з мережею весь час.

Як підняти c-lightning

Для початку скачуємо докер контейнер sudo docker pull elementsproject/lightningd

Далі потрібно у контейнер змонтувати домашню директорію і вказати, що підключатись будемо до мережі біткоіна sudo docker run --name lightning -v ~/.lightning:/root/.lightning/ -e LIGHTNINGD_NETWORK=mainnet -d -p 9835:9835 elementsproject/lightningd
От і майже піднята lightning нода. Тепер потрібно трішки її налаштувати, бо так вона буде працювати навряд.

Як підключити до bitcoin network

У директорії яка створилась за адресою ~/.lightning потрібно добавити файл конфігурації з назвою config, у ньому будуть, як мінімум, наступні опції:

network=mainnet
bitcoin-rpcport=<порт керування вашою біткоін нодою>
bitcoin-rpcconnect=<адреса біткоін ноди>
bitcoin-rpcuser=<користувач>
bitcoin-rpcpassword=<пароль>
funding-confirms=6

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

Як бути без публічного IP

Ще одна важлива особливість: якщо публічної IP-адреси немає, або нема бажання її показувати, то є можливість пустити все через tor проксі. Для цього у файлі конфігурації потрібно дописати пару рядків:

proxy=<адреса tor проксі>:<9050 або 9150>
bind-addr=127.0.0.1:9735
addr=statictor:<адреса tor проксі>:<9051 або 9151>
always-use-proxy=true

І потрібно ще буде налаштувати tor onion service як описано за посиланням

як керувати нодою через rpc

Для зручності користування у lightning ноди є jsonrpc за допомогою якого можна виконати всі ті дії, які виконує lightning-cli. В даному випадку 9835 порт буде доступний на хост системі, бо його прокинули з контейнера. Посилання на опис всіх доступних команд тут

Як створити канал

Після того як lightning нода запускається можна добавити пірів, з якими потенційно буде відкритий канал. Всередині контейнера потрібно виконати:
lightning-cli connect 0215b2612bb44a592903aa757b716a3226b2a72c7effa39079d7695c7673fed01b <мережева адреса піра>
де 0215b2612bb44a592903aa757b716a3226b2a72c7effa39079d7695c7673fed01b — ідентифікатор ноди,
якщо все вдалось, команда lightning-cli getinfo буде відображати

«num_peers»: 1.

Далі потрібно в ноду внести кошти. Це можна зробити за допомогою створення адреси для поповнення (команда, яка повертає адресу — lightning-cli newaddr), на яку потрібно відправити біткоін транзакцію. Після відправки транзакції і попадання у блок команда lightning-cli listfunds відобразить у секції outputs кошти.
Тепер є все необхідне для відкриття каналу. Для ініціації каналу потрібно виконати lightning-cli fundchannel 0215b2612bb44a592903aa757b716a3226b2a72c7effa39079d7695c7673fed01b <об’єм у milisat>,
Після успішного створення каналу lightning-cli listfunds буде показувати у секції channels один запис з рядком

«state»: «CHANNELD_NORMAL»

Як провести платіж

Щоб провести платіж має бути виставлений інвойс. На іншому боці каналу буде виконано
lightning-cli invoice <об’єм у milisat> <тег> "<повідомлення>"

У результаті буде отримано такий рядок:

«bolt11»: «lnbcrt100n1p0a0dxhpp5plku23ven8rfnq4furhtkwgtuz4l7r7z0vh9jdduf0z6r
3w0pm7sdqvw3jhxarfdensxqyjw5qcqp2sp5nx5q7kqlq5syh5×3vfythm6l34p
sxpaet5pkc0uh7qkfkay63dns9qy9qsqfw246zsey5dln43va63afthr3s2fxq4ftz
whw5s67ue4e9gjflz8z2e0gjt0779ynnfp8nvy7mk2×494dvqumx99s5u4tyfqc
rat6lqqhwy9uq»

Де bolt11 і є інвойс.
Далі просто йде оплата за допомогою

lightning-cli pay lnbcrt100n1p0a0dxhpp5plku23ven8rfnq4furhtkwgtuz4l7r7z0vh9jdduf0z6r3 w0pm7sdqvw3jhxarfdensxqyjw5qcqp2sp5nx5q7kqlq5syh5x3vfythm6l34ps xpaet5pkc0uh7qkfkay63dns9qy9qsqfw246zsey5dln43va63afthr3s2fxq4ftz whw5s67ue4e9gjflz8z2e0gjt0779ynnfp8nvy7mk2x494dvqumx99s5u4tyfqc rat6lqqhwy9uq

Таким чином у каналі зменшиться доступний залишок на суму вказану у інвойсі і комісії.

Як отримати прибуток

З прикладу про функціонування мережі напрошується висновок: якщо стати посередником у активній фінансовій взаємодії, то можна отримувати комісію з кожної транзакції. І це дійсно так. Потрібно лише щоб у власника ноди були кошти на відкриття каналів, аби надавати ліквідність учасникам мережі.

З першого погляду здається, що якщо поставити високу комісію — буде більше прибутків, але потрібно зауважити, що алгоритм пошуку маршруту транзакції враховує комісію, і шукає найдешевший і найкоротший шлях до отримувача, а шляхів може бути більше ніж один.

PS: A має киплячу воду, В — чайну заварку, С — цукор. Всі мають чашки, люблять пити чай і, головне, регулярно його п’ють). Це — спарта капіталізм.

👍НравитсяПонравилось0
В избранноеВ избранном1
Подписаться на автора
LinkedIn

Похожие статьи

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
За якимось оманливим переконанням вважається,
є стійке переконання, що цю проблему можна вирішити.

Вступление обнадеживает.

То есть на бумажке записали кто кому сколько должен, и время от времени переводим итог через биткойн. Зачем тогда эта сложность «lightning» — обычной бухгалтерии недостаточно?

На відміну від lightning каналу, на бумажці складно гарантувати цілісність коштів, якщо каналів 3 і більше. Ось приклад з документації developer.bitcoin.org/...​html#micropayment-channel, який показує спрощену систему взаємодії. За допомогою таких примітивів як: Locktime і Multisig будується система взаємодії.

Все это костыли имхо.

Частично децентрализованная сеть (где блоки майнятся подмножеством нод выбранных по определенным законам (от голосовалки до рандома)) решает все вопросы и по скорости и по стоимости транзакций. Единственный недостаток это чуть меньше (буквально на процент) цензуростойкость и безопасность (были исследования что 100 супернод разбросанных по миру на практике ничем не хуже миллиона нод в плане децентрализации сети)

Но, биткоин/блокчейн максималисты ради этого процента удавятся, ведь все что не 100% децентрализовано это скам, shitcoin, и вообще хуже централизованных банков. А потом три года лепят костыли типа лайтинга, который тянет за собой купу компромиссов.

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

Ну так все правильно. Полностью децентрализованная PoW сеть требует довольно медленных блоков (от 10 секунд до 10 минут), чтобы сеть не хакнули резко добавив мощности, что провоцирует их переполнения (спасибо фиксированному размеру блока биткоина), что снижает количество транзакций которые сеть может запроцесить, что повышает стоимость самих транзакций

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

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

Если сеть можно хакнуть, резко добавив мощности, то её так же резко можно защитить, добавив куда меньше мощности, и разница в затратах растёт по экспоненте.

В любом случае, размер блока фиксирован by design, время генерация блока фиксировано by design а значит биткоин на уровне ядра не масштабируется вообще, by design. Только если костыли поверх биткоина фигачить типа лайтинга, что, как показывает практика, не просто. Итого сеть толком еще не взлетела, а уже обрастает костылями.

Это самое божество «by design» родилось во времена, когда за 50 000 BTC можно было купить пиццу, да и то чисто по приколу. Коль скоро биткоин стал деньгами, и спрос на него, чего греха таить, вырос (за счёт противозаконного бизнеса), то надо нахрен менять это самое «by design», например создавать отдельную цепь блокчейна для МЕЛКИХ операций, которая соответственно будет делать малорентабельным взлом отдельного блока. И принципиально запретить в ней крупные операции.

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

В противном случае может случиться одна очень простая банальщина: Lightning перестанет нуждаться в основной цепи биткоина, и те преимущества битка, которые считались незыблемыми — окажутся слишком малы чтобы перевесить её величество ЖАДНОСТЬ. Если кратко, биткоин можно отжать целиком как проект. И переотжать. Особенно весело, если применить военную силу и попросту уничтожить важные части инфраструктуры, чтобы под этим соусом выступить ядром стабильности в обстановке хаоса. А можно ли купить военную силу в сети тотального криминала — да говно вопрос!

Все верно, но это должно быть нейтивно на уровне протокола а не надстройкой над текущим протоколом. Клиент не должен парится о создании/закрытии каких-то каналов, отправлять какие-то специальные транзакции. Сеть сама должна все разруливать — динамически создавать/убивать шарды в зависимости от нагрузки, синхронизировать их.

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

Учитывая, что биткоин принадлежит китайской компартии, под контролем которой находится более 70% мощностей по генерaции хэшэй (тех самых «нод, работающих по PoS, доверяющих друг-другу и работающих по заранее известным правилам») — почему бы и нет?

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

Скажи это биткоин максималистам

биткоин-неадекватам...

Странно тогда, зачем китайская же компартия делает его нелегальным в своей же стране, когда вместо того чтобы бороться — можно возглавить? То есть создать свою подконтрольную биржу, сделать низкие комиссии «для своих», но назвавшись «своим» — напрочь теряешь анонимность.

Странно тогда, зачем китайская же компартия делает его нелегальным в своей же стране, когда вместо того чтобы бороться — можно возглавить?

Чтобы привлекать к коину миллионы леммингов. Ну кто, в здравом уме вложится в коин, продвигаемый китаёзами? (или зарегистрируется в телеграмме, если его начнёт продвигать гэбня)

А сколько процентов в здравом уме-то?

Захотели бы они закрыть уже давно бы закрыли. Это тебе не запад с конституцией, законами и судами. Там как сказала компартия так и будет, и никто ничего не скажет.

У китайцев сейчас стоит сложная задача — как остановить вывод средств из юаня в крипту и при этом не навредить крипте, не разогнать криптоактивистов в Китае.

Запад тоже не особо стремится закрыть, хоть все возможности есть. Складывается впечатление что все страны чего-то ожидают и никто не хочет делать резких движений.

А ведь с каждым годом, каждым днем, крипта набирает обороты и закрыть/запретить будет все сложнее и будет иметь все больше последствий.

Захотели бы они закрыть уже давно бы закрыли. Это тебе не запад с конституцией, законами и судами. Там как сказала компартия так и будет, и никто ничего не скажет.

Всё проще. Биток для Китая — это как бакс для Штатов. Можно закрыть и сразу всем «простить долги». Но зачем?

Вместо этого, заманил очередные десяток-другой ярдов лохов в чайна-коин (биток подорожал) — вывел баблос в Компартию (биток обвалился в цене). Далее снова заманил, и вывел. Итп... Как бабло-печатный станок. :)

У китайцев сейчас стоит сложная задача — как остановить вывод средств из юаня в крипту

Элементарно. Курс крипты болтается как *андон на проводе, соответственно лошьё будет выводить туда-сюда-обратно. Что собственно и делало до этого. На этом их и доят аки козлов

Курс крипты болтается как *андон на проводе, соответственно лошьё будет выводить туда-сюда-обратно. Что собственно и делало до этого. На этом их и доят аки козлов

Лошьё заводит => курс растёт.
Китаёзы выводят => куср обваливается.
Лошьё бросается покупать снова, т.к. "подешевело!"/"покупать на дне!" => курс растёт...

Но те кто провоцирует лошьё — явно не из альтруистических целей это делает.

Многие «инфлюенсеры» — раскручивают чайна-коин за китайский баблос.

Но и дебилов, верующих в «валюту будущего, контролируемую миллионами леммингов по всему миру» — тоже немало.

Идея прекрасная и сильно не новая. Прекрасна она тем, что если можно забыть что-то записать, то можно и не записывать. И что скорее всего более половины сети контролируется одним владельцем.

Лучший коин это тот, который в голове. Знания! С обязательным приложением в виде еще одного знания о том, как быстро и без проблем монетизировать все остальные знания.

учитель моего детства недавно вернулся на ютуб и реализовал биткоин приложение и планирует его запустить уже скоро на территории Америки, а в планах и во всём мире. кому интересно загуглить thenewboston bitcoin.

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

Цікава казочка. Але одразу напрошується 2 виводи:
1) Як саме транзакції Lightning потрапляють до блокчейну? Особисто я не бачу жодної можливості їм там врешті решт з′явитися, тим більше гарантуватися.
2) Що саме завадить шахраювати в цій мережі, особливо якщо велика частина мережі виявится підконтрольною одній злочинній групі, яка тупо завалить піраміду? Чи по традиції геніальної піраміди цих коїнів, валити будуть не повністю, а скажімо с коефіцієнтом 30...60%, щоб зберегти решту лохів та створити враження що зможуть відігратися?

Питаннячко: а що заважає знизити вартість транзакції в самому блокчейні? Там складність алгоритму встановлюється примусово.

PS. Уся цікавинка Lightning, як я розумію, у відкритті де-факто кореспондентських рахунків, що власне і дозволять транзакції у межах ВКЛАДЕНИХ коштів. На що власне і націлені зусилля агітаторів.

PPS. Будемо відверті: біткоїн це перш за все валюта злочинного світу. І те, що він фінансує, вас зазвичай не турбує. А дарма. Бо коли вас це торкнеться, ви дуже дивуватиметесь, як таке можливо, і чому саме вас.
Звісно, є і зворотна сторона: біткоїн дозволяє процеси, які давно мали б бути легалізовані та/або спрощені в легальних каналах оподаткування та контролю. Але ж ми пам′ятаємо, що 1кг повидла + 1кг лайна ≠ 2 кг повидла.

Ще більше бла-бла-бла з метою імітувати гарантованість.

Не прошло и 10 лет как запустили? Или пока еще не запустили?

github.com/...​lightning/#project-status , на реальних коштах працює з 2018, з 2016 працювало на тестнеті

Интересная статья

Pow со временем уйдет на второй план, в отличии от Pos

БиткоинЧайнакоин — китайский развод для лохов.

23000$ сегодня, btw

Китайская компартия снова надувает пузырь, заманивая в него лохов? Но скоро будет очередная стрижка...

Цена не в последнюю очередь зависит от кол-ва влитых грязных денег в виде мутных сделок между мутными субъектами. Ожидаемо, что в кризис такого больше.

Очевидно, с целью заработать. Очевидно, на ком-то. Очевидно, на тех, кто менее информирован, особенно на тех кто верит вбросам.

Каждый раз одно и то же, уже 100 раз могли бы заработать

Подписаться на комментарии