Подавляющее число людей, достаточно подкованных, чтобы понимать что такое криптовалюты, проблемы с производительностью блокчейна bitcoin и lightning network, все еще наивно полагают, что эта технология способна решить все проблемы в одночасье, и позволит масштабировать блокчейн чуть ли не до бесконечности.
Постараюсь развеять эти заблуждения.
Классический блокчейн в чистом виде, где каждый узел пропускает через себя все транзакции, не способен, на текущем уровне технологий, хранить и обрабатывать большое количество транзакций. Даже если не ограничивать размер блока хранения транзакций лимитом (в bitcoin — это 1мб + 3мб от сайдчейна segwit), скорость обработки транзакций ограничена возможностями конечных узлов (я не говорю про SPV кошельки, которые полностью доверяют проверку транзакций полным нодам), сейчас это считанные сотни миллионов транзакций в сутки (250 миллионов транзакций полностью проверяются при первоначальной загрузке блокчейна при новой установке bitcoin-qt, на современной машине это происходит за приимерно 12 часов, при отличном интернет соединении и ssd-диске, на слабой машине intel celeron — загрузка затягивается на 3 суток) — сейчас это порядка 5-6 тысяч транзакций в секунду (например тесты блокчейна bitshares инфраструктуры graphene показывают 2500 tps но при использовании серверного железа с большим количеством процессоров, с другой стороны теоретический максимум 150т tps).
Задача проверки транзакций линейно масштабируется, если распределить нагрузку на несколько компьютеров, но это так же линейно повышает стоимость оборудования от нагрузки на всю сеть, что само собой неудобно, если вы пожелаете поднять свой сервис, принимающий средства от пользователей и не готовый доверять какому то другому сервису.
Это очевидно — блокчейну нужны технологии, позволяющие масштабировать его производительность нелинейно.
Сайдчейны — лучшее, что было предложено за последнее время в криптоэкономике, и в то же время потенциально губительное для той составляющей криптовалют, за которую ее полюбили — независимость от единой точки отказа и централизации контроля над финансами пользователей.
Сайдчейны, которые хранят дополнительную информацию в своем хранилище
Отличным примером такого сайдчейна является — segwit, это обновление-костыль, позволяющее расширить возможности блокчейна bitcoin (и его форки) без необходимости кардинально ломать совместимость со старыми клиентами. Главный способ, с помощью которого segwit позволяет увеличить количество транзакций в блоке, без его расширения, это вынести часть информации о транзакциях в отдельное хранилище. Т.е. каждая транзакция оставляет след в блокчейне.
Заметного увеличения производительность блокчейна это не даст, средние прогнозы — 2-2.5 кратное увеличение, а теоретический максимум — в 4 раза больше транзакций, если все они будут multisig p2sh (например клиринг LN).
Если сравнивать segwit с обычным увеличением размера блока до 4мб — то это ничем не отличается, даже чуть выше нагрузка на процессор получается. Но segwit принес с собой и другие технологии, а так же совместимость с легаси клиентами. Это вынужденная мера от которой трудно отказаться.
Самый простой и эффективный сайдчейн — это обычный банк (или некоторые биржи)
… со счетом в криптовалюте — вы переводите монеты на свой счет в банке и сможете переводить между клиентами этого банка свои монеты, не размещая транзакции в публичном блокчейне (для некоторых криптовалютных бирж — это перевод кодом). Само собой, банк хранит в своем формате эти транзакции, для себя и для фин-мониторинга. Понятно, что при попытке сделать перевод в другой банк, появится блокчейн-транзакция, но, банки могут договориться между собой о совершении этих переводов по своим правилам, например с использованием государства как гаранта, что сделки будут исполнены.
Таким образом транзакции могут вообще никогда не попасть в блокчейн, тем самым полностью его разгрузив.
Недостатки обычных банков элементарны — требуется полное доверие банку, плюс нет никаких гарантий, что монеты, которые вы перевели им 'на хранение' останутся без использования, мало того это обычная практика, использовать вложения пользователей для собственных нужд. Это очень гнилая практика, и именно она является следствием регулярных крахов банковских систем, ведь в случае кризиса, банки просто не могут исполнить свои обязательства и выдать уже потраченные деньги своим клиентом.
Более продвинутая технология — lightning network
… когда вместо того, чтобы слепо доверять банку свои деньги, можно договориться об двухстороннем залоге, когда пара пользователей (один из которых не обязательно банк), блокируют в блокчейне специальной транзакцией (контрактом), одинаковые суммы с таким расчетом, что разница в балансах будет показывать взаимные долговые обязательства. И самое главное, на таких договоренностях можно построить сеть связанных обязательствами пользователей, которые будут отвечать своими заблокированными балансами за прохождение транзакций по ним.
Перевод по сети между участниками представляет из себя одновременное изменение взаимных долговых обязательств на сумму перевода, тех участников, находящихся в сети между отправителем и получателем. Эти изменения никак не отражаются в блокчейне, но если количество переводов в одну сторону в сумме превысят объем заблокированных средств, потребуется клиринг — выравнивание балансов каким либо способом, например использованием петлей в сети LN, либо отправкой необходимых средств через блокчейн.
Отсюда видим, что единственная стратегия, при которой LN позволяет бесконечно масштабировать количество обрабатываемых транзакций — это если пользователи будут слать монеты друг другу с нулевым суммарным средним изменением балансов. Очевидно, что такое возможно только если сеть вырождается в одну центральную ноду, у которой все клиенты — пользователи блокчейна, но при этом нет необходимости хранить и доверять свои средства ему.
Надежно, эффективно и централизованно, ведь в такой схеме возможен отказ в переводе монет по любым предлогом, например блокировать все переводы от людей, не исполняющих требования финмониторинга. Или, например, если внезапно ваша страна попала под санкции одной из крупнейших экономических зон — Евросоюза/США/Китая/..., ваши залоги могут быть заблокированы по решению суда, или, когда банк пожделает возложить на вас свои риски потери средств, когда транзакции являлись обменом на товары или услуги, являющиеся запрещенными и которые государство смогло отобрать в свою пользу.
Это будет не так страшно, если LN не будет единственно доступным способом использования блокчейна, но опасность существует, о чем я писал раньше, если количество транзакций в блоке останутся лимитированы 1 или 2 мб.
На сколько сильно позволит lighting network расширить производительность переводов?
Исходя из основной особенности LN, вместо совокупного количества транзакций, необходимо рассматривать количество блокчейн и клиринговых транзакций, которые могут понадобиться на одного пользователя за определенный период, так как пользователи могут друг другу слать последовательно одну и ту же сумму в любых количествах, без комиссий, если между ними нет промежуточных нод.
Во-первых, каждый новый пользователь сети, должен будет сделать как минимум одно пополнение своего кошелька, и это должна быть блокчейн транзакция. Пользователи сети LN могут быть только с ненулевым балансом.
Во-вторых, для подключения к сети LN необходима открывающая транзакция, блокирующая балансы у входной ноды и пользователя.
В-третьих, но не обязательно, это закрывающая транзакция для выхода пользователя из сети LN, например для переключения к другой ноде сети, с целью оптимизации комиссий.
В-четвертых, самый большой объем транзакций — это клиринг, выравнивание балансов на счетах нод LN. Каждый крупный перевод по сети увеличивает шанс появления такой транзакции, причем у каждой промежуточной ноды в сети. Причем возможна ситуация, что очередная транзакция одного пользователя потребует каждой ноде в сети выпустить клиринговую, если сеть выстроена не эффективно (отсутствуют циклы). Чем больше величина залогов между узлами LN, тем реже понадобится клиринг. Крупные ноды смогут и будут оптимизировать свои расходы таким образом, чтобы минимизировать или вообще исключить клиринг через блокчейн, но обычный пользователи этого сделать не смогут. Даже в лучшем случае, активные пользователи будут блокировать только небольшую долю от среднего пополнения (например выплата зарплаты раз в месяц или получение вознаграждения за работу) а значит в течении периода между получением средств, им понадобятся клиринговые транзакции. Получается в идеальном случае один пользователь будет делать 1 блокчейн транзакцию в месяц.
Четвертый пункт вносит наибольшее количество транзакций, и можно оценить, как много таких активных пользователей смогут использовать блокчейн.
Количество транзакций в блокчейне с 1мб лимитом без segwit — 262т. в сутки или 7883т. в месяц. Умножаем на 2.5 коэффициент, который будет доступен благодаря segwit, получим 19 миллионов транзакций.
Итог — 19 миллионов активных пользователей, это максимум, сколько себя сможет вместить 1мб блок legacy bitcoin.
И никакие разовые расширения лимита блока до 2 или до 8 мб заметно это число не изменят. 19 миллионов человек или 190 миллионов — это катастрофически мало. Будущее криптовалют — миллиарды активных пользователей.
Конечно, очевидно, что в ближайшем будущем, 1-3 года, типичный активный пользователь bitcoin не получает зарплату ежемесячно, и траты его так же не регулярны, это значит оценка 1 клиринг в месяц может быть ошибочной, но для ее оценки необходим серьезный анализ блокчейна, и это не та работа, которую можно сделать в рамках написания простой статьи.
Если в течении этого времени, не найти технического и организационного решения, для увеличения лимита на размер блока, пользователи сети будут вынуждены уйти от использования и хранения своих средств под собственным контролем на локальных кошельках, в онлайн-кошельки и банки. И сделать это их заставит повышающаяся стоимость блокчейн переводов.
Автор: rPman