Введение
Масштабируемость в широком смысле означает способность системы расти для удовлетворения растущего спроса. При работе с компьютером вы можете повысить производительность своей машины, обновив ее оборудование, чтобы она быстрее выполняла определенные задачи. Когда мы говорим о масштабируемости блокчейнов, мы имеем в виду увеличение их способности обрабатывать больше транзакций.
Такие протоколы, как Биткойн, имеют много сильных сторон, но масштабируемость не входит в их число. Если бы Биткойн запускался в централизованной базе данных, администратору было бы относительно легко увеличить скорость и пропускную способность. Но ценностные предложения Биткойна (то есть устойчивость к цензуре) требуют, чтобы многие участники синхронизировали копию блокчейна.
Проблема масштабируемости блокчейна
Запуск узла Биткойн обходится относительно дешево, и это могут сделать даже простые устройства. Но поскольку тысячи узлов должны быть в курсе друг друга, существуют определенные ограничения на их пропускную способность.
На количество транзакций, которые могут быть обработаны в цепочке, установлены ограничения, чтобы не позволить базе данных вырасти до громоздких размеров. Если он слишком быстро станет слишком большим, узлы не смогут успевать за ним. Более того, если блоки слишком велики, их невозможно быстро передать по сети.
В результате мы оказываемся в каком-то узком месте. Блокчейн можно рассматривать как поезд, который отправляется через определенные промежутки времени. В каждом вагоне количество мест ограничено, и чтобы получить билет, путешественники должны сделать ставку, чтобы гарантировать место. Если все попытаются сесть в поезд одновременно, цена будет высокой. Аналогичным образом, сеть, перегруженная ожидающими транзакциями, потребует от пользователей платить более высокие комиссии, чтобы их транзакции были включены своевременно.
Одним из решений было бы сделать вагоны больше. Это будет означать больше мест, большую пропускную способность и более дешевые цены на билеты. Но нет никакой гарантии, что места не будут заполнены так же, как раньше. Каретки не могут постоянно расширяться, так же как блоки или пределы блочного газа не могут масштабироваться бесконечно. Последнее делает пребывание узлов в сети более дорогостоящим, поскольку для синхронизации им потребуется более дорогое оборудование.
Создатель Ethereum Виталик Бутерин придумал «Трилемму масштабируемости», чтобы описать проблему, с которой сталкиваются блокчейны. Он предполагает, что протоколы должны находить компромисс между масштабируемостью, безопасностью и децентрализацией. Они несколько противоречат друг другу: если уделять слишком много внимания двум объектам, третий будет плохим.
По этой причине многие рассматривают масштабируемость как нечто, чего следует достичь вне блокчейна, в то время как безопасность и децентрализация должны быть максимизированы в самом блокчейне.
Что такое решения для масштабирования вне сети?
Масштабирование вне цепочки относится к подходам, которые позволяют выполнять транзакции без раздувания блокчейна. Протоколы, подключаемые к цепочке, позволяют пользователям отправлять и получать средства без появления транзакций в основной цепочке. Мы углубимся в два наиболее заметных достижения на этом фронте: сайдчейны и платежные каналы.
Введение в сайдчейны
Что такое сайдчейн?
Сайдчейн — это отдельный блокчейн. Однако это не отдельная платформа, поскольку она каким-то образом привязана к основной цепочке. Основная и боковая цепи совместимы, а это означает, что активы могут свободно перетекать из одной в другую.
Существует несколько способов обеспечить возможность перевода средств. В некоторых случаях активы перемещаются из основной цепочки путем помещения на специальный адрес. На самом деле они не пересылаются — вместо этого они фиксируются по адресу, и соответствующая сумма выдается в сайдчейне. Более простой (хотя и централизованный вариант) — отправить средства кастодиану, который обменивает депозит на средства в сайдчейне.
Как работает сайдчейн?
Предположим, что у нашей подруги Алисы есть пять биткойнов. Она хочет обменять их на пять эквивалентных единиц в сайдчейне Биткойна — назовем их сайдкоинами. Рассматриваемый сайдчейн использует двустороннюю привязку, что означает, что пользователи могут переносить свои активы из основной цепи в сайдчейн и наоборот.
Помните, что сайдчейн — это отдельный блокчейн. Таким образом, он будет иметь разные блоки, узлы и механизмы проверки. Чтобы получить свои побочные монеты, Алиса отправляла ей пять биткойнов на другой адрес. Он может принадлежать кому-то, кто затем зачислит на свой адрес боковой цепи пять побочных монет, как только получит биткойны. Альтернативно, у него может быть какая-то настройка с минимизированным доверием, при которой побочные монеты автоматически зачисляются после того, как программное обеспечение обнаруживает платеж.
Алиса теперь конвертировала свои монеты в побочные монеты, но она всегда может обратить процесс вспять, чтобы вернуть свои биткойны. Теперь, когда она вошла в сайдчейн, она может свободно совершать транзакции в этом отдельном блокчейне. Она может отправлять побочные монеты или получать их от других, как и в основной цепочке.
Например, она могла бы заплатить Бобу одну монету за толстовку с капюшоном Binance. Когда она захочет вернуться в Биткойн, она сможет отправить оставшиеся четыре побочных монеты на специальный адрес. После подтверждения транзакции четыре биткойна будут разблокированы и доставлены на адрес, который она контролирует в основной цепочке.
Почему используются сайдчейны?
Вы можете задаться вопросом, какой в этом смысл? Почему Алиса просто не использует блокчейн Биткойна?
Ответ в том, что сайдчейн может делать то, чего не может сделать Биткойн. Блокчейны — это тщательно продуманные системы компромиссов. Хотя Биткойн является самой безопасной и децентрализованной криптовалютой, он не самый лучший с точки зрения пропускной способности. Хотя транзакции биткойнов выполняются быстрее, чем традиционные методы, они все же относительно медленны по сравнению с другими системами блокчейна. Блоки добываются каждые десять минут, и комиссии могут значительно вырасти, когда сеть перегружена.
По общему признанию, для небольших повседневных платежей, вероятно, нет необходимости в таком уровне безопасности. Если Алиса платит за кофе, она не будет ждать подтверждения транзакции. Она задержит очередь, и ее напиток остынет к тому времени, когда его передадут.
Сайдчейны не подчиняются одним и тем же правилам. Фактически, для работы им даже не нужно использовать Proof of Work. Вы можете использовать любой механизм консенсуса, доверять одному валидатору или настраивать любое количество параметров. Вы можете добавлять обновления, которых нет в основной цепочке, создавать более крупные блоки и обеспечивать быстрые расчеты.
Интересно, что в сайдчейнах могут быть даже критические ошибки, не затрагивающие основную цепочку. Это позволяет использовать их в качестве платформ для экспериментов и развертывания функций, которые в противном случае потребовали бы консенсуса большей части сети.
При условии, что пользователи будут довольны компромиссами, сайдчейны могут стать неотъемлемым шагом на пути к эффективному масштабированию. Узлы основной цепи не обязаны хранить каждую транзакцию из боковой цепи. Алиса могла войти в сайдчейн с помощью одной транзакции с биткойнами, выполнить сотни транзакций с сайдчейном, а затем выйти из сайдчейна. Что касается блокчейна Биткойн, она выполнила только два — один для входа и один для выхода.
Плазма Эфириума похожа, но имеет некоторые существенные отличия. Подробнее об этом читайте: Что такое Ethereum Plasma?
Знакомство с платежными каналами
Что такое платежный канал?
Платежные каналы служат той же цели, что и сайдчейны, с точки зрения масштабируемости, но по своей сути они сильно отличаются. Как и сайдчейны, они выталкивают транзакции из основной цепочки, чтобы предотвратить раздувание блокчейна. Однако, в отличие от сайдчейнов, для их работы не требуется отдельный блокчейн.
Платежный канал использует смарт-контракт, позволяющий пользователям совершать транзакции, не публикуя свои транзакции в блокчейне. Это достигается путем использования программного соглашения между двумя участниками.
Как работает платежный канал?
В таких моделях, как популярная сеть Lightning Network, две стороны сначала вносят монеты на адрес, которым они совместно владеют. Это адрес с несколькими подписями, который требует двух подписей для расходования средств. Таким образом, если Алиса и Боб создадут такой адрес, средства можно будет вывести только с согласия их обоих.
Допустим, каждый из них вносит по 10 BTC на адрес, на котором сейчас находится 20 BTC. Им было бы легко вести баланс, который начинается с того, что у Алисы и Боба есть по 10 BTC каждый. Если бы Алиса захотела дать Бобу монету, она могла бы обновить ее, указав, что у Алисы 9 BTC, у Боба 11 BTC. Им не придется публиковать данные в блокчейне, поскольку они продолжают обновлять эти балансы.
Однако, когда придет время, предположим, что у Алисы есть 5 BTC, а у Боба — 15 BTC. Затем они могли бы создать транзакцию, которая отправляет эти балансы на адреса, принадлежащие сторонам, подписать ее и транслировать.
Алиса и Боб могли записать на свой баланс десять, сто или тысячу транзакций. Но что касается блокчейна, они выполнили только две внутрисетевые операции: одну для первоначальной транзакции финансирования, а другую для перераспределения остатков после их завершения. За исключением этих двух, все остальные транзакции бесплатны и почти мгновены, поскольку происходят вне цепочки. Не нужно платить майнерам комиссию и не нужно ждать подтверждения блока.
Конечно, рассмотренный выше пример требует сотрудничества обеих сторон, что не является идеальной ситуацией для незнакомцев. Однако можно использовать специальные механизмы для наказания за любую попытку мошенничества, чтобы стороны могли безопасно взаимодействовать друг с другом без доверия.
Маршрутизация платежей
Очевидно, что каналы оплаты удобны для двух сторон, которые ожидают большого объема транзакций. Но становится лучше. Сеть этих каналов может быть расширена, а это означает, что Алиса может платить вечеринке, с которой она напрямую не связана. Если у Боба открыт канал с Кэрол, Алиса может заплатить ей, при условии, что у нее достаточная пропускная способность. Она передаст средства на сторону канала Боба, который, в свою очередь, перенаправит их на сторону Кэрол. Если Кэрол подключена к другому участнику, Дэну, можно сделать то же самое.
Такая сеть превращается в распределенную топологию, в которой каждый подключается к нескольким узлам. Зачастую к пункту назначения существует несколько маршрутов, и пользователи смогут выбрать наиболее эффективный.
Заключительные мысли
Мы обсудили два подхода к масштабируемости, которые позволяют совершать транзакции, не нагружая базовый блокчейн. Технология сайдчейнов и платежных каналов еще не достигла зрелости, но они все чаще используются пользователями, желающими обойти недостатки транзакций базового уровня.
Со временем, когда к сети присоединяется все больше пользователей, важно поддерживать децентрализацию. Это достижимо только путем введения ограничений на рост блокчейна, чтобы новые узлы могли легко присоединяться. Сторонники решений масштабируемости вне цепочки полагают, что со временем основная цепочка будет использоваться только для расчетов по транзакциям с высокой стоимостью или для привязки к сайдчейнам и выхода из них, а также для открытия/закрытия каналов.