April 27, 2022

Масштабируемость блокчейна и решения для масштабирования L1

В последние годы новые блокчейны уровня 1 активно рекламируют свою масштабируемость в форме TPS = количество транзакций в секунду. Но действительно ли это все, что касается масштабируемости, и как сети пытаются масштабироваться на базовом уровне? Читай дальше что бы узнать.

Что такое вообще масштабируемость?

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

Я бы назвал фирму масштабируемой, если она извлекает выгоду из эффекта масштаба. Это означает, что она может без особых дополнительных затрат обеспечить снабжение. Отличным примером бизнеса, извлекающего выгоду из таких эффектов, являются фирмы, предлагающие программное обеспечение как услугу. Хотя изначально им приходится тратить огромное количество капитала и труда на создание своих продуктов, в конечном итоге они смогут легко разместить 100, 1000 или даже один миллион клиентов.

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

Теперь вы знаете, что масштабируемость включает в себя различные аспекты, но все же…

А как насчет масштабируемости блокчейна?

В мире блокчейна, кажется, принято выражать масштабируемость простой мерой: снова здравствуйте, количество транзакций в секунду (TPS). Легко присвоить ему число и легко сравнивать сети, используя это число.

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

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

Централизованная организация, такая как Visa, может легко управлять 24 000 транзакций в секунду, поскольку для проверки правильности этих транзакций не требуются тысячи узлов.

Но почему блокчейн не может иметь всего этого?

Трилемма блокчейна

Трилемма — это идея, впервые придуманная Виталиком Бутериным. Он пришел к выводу, что любой конкретный блокчейн может достичь только двух из трех свойств:

  • децентрализация
  • безопасность
  • масштабируемость

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

Вот несколько моментов, о которых разработчики протоколов блокчейна должны подумать при масштабировании цепочки:

  • стоимость: сколько стоит проверка и отправка транзакций?
  • размер блокчейна : есть ли предел хранения или он просто бесконечно растет?
  • задержка: сколько времени требуется, чтобы состояние цепочки распространилось на все или большинство узлов по мере того, как существует больше узлов?
  • нагрузка на сеть: сколько транзакций может обработать сеть? Сколько можно хранить в мемпулах и что происходит, когда они заполнены?
  • энергия: сколько энергии будет потреблять сеть при ее масштабировании?

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

Начнем с самого очевидного — и простого для понимания.

Большие блоки

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

Изначально Накамото при создании Биткойна добавил к размеру блока ограничение в 1 МБ, что приводило к 3–7 транзакциям в секунду. Биткойн-сообщество разрывалось между увеличением размера блока для размещения большего количества транзакций и внесением изменений в то, что хранится в блоках, что привело бы к увеличению количества транзакций (SegWit, подробнее об этом ниже).

В конце концов, сторонники увеличения размера блока разветвили протокол и создали Bitcoin Cash. Bitcoin Cash взял код биткойна и увеличил ограничение размера блока сначала до 8 МБ, а затем до 32 МБ, что позволило обрабатывать до 116 транзакций в секунду.

Большие блоки = лучше?

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

Он может работать нормально с транзакциями, которые обрабатывает в секунду, но его большие блоки даже не заполнены. Средний размер блока составляет 0,22 МБ, при этом более 30 МБ остаются пустыми в блоках. Он масштабировался за счет децентрализации и огромной неэффективности в виде пустого блочного пространства.

А как насчет другого лагеря биткойнеров, выступающих за SegWit?

SegWit

Когда был создан Биткойн, каждая транзакция включала цифровые подписи. Эти подписи требовали много места для размещения и были причиной ошибки взлома транзакций.

Ошибка пластичности является прямым следствием того, как работает хеширование. Когда вы используете SHA 256 для шифрования текста, даже одно небольшое изменение в исходном тексте (низкий предел вместо высокого) создаст совершенно другой хэш.

Уязвимость, возникшая в результате этого, позволит получателям транзакции изменить подпись отправителя и перезаписать существующую транзакцию.

Внедрение SegWit (сокращение от Segregated Witness, поскольку информация о подписи также известна как информация о свидетеле) устранило ошибку пластичности, которая ранее препятствовала разработке протокола второго уровня для биткойнов.

Хотя целью было устранить ошибку, удалив подписи из транзакций, они стали меньше. Следовательно, в один блок можно добавить больше транзакций даже без изменения размера блока; повышение масштабируемости.

Благодаря SegWit в сеть могут быть добавлены другие функции, включая подписи Шнорра и сеть Lightning.

SegWit ограничен биткойнами, поэтому не распространяется на другие L1. Вот почему многие из них в наши дни рассматривают параллельную обработку с помощью шардинга.

Разделение

Шардинг — это метод разделения базы данных. Что это обозначает? Это означает, что база данных разбита на разделы, которые обрабатывают только части базы данных, а не всю базу данных.

Эта концепция используется с 1990-х годов в традиционных базах данных по всему миру.

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

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

Есть одна загвоздка, атака 1%.

Чтобы шардинг работал, шарды должны взаимодействовать друг с другом. Если мы предположим, что сеть разделена на 100 сегментов, где каждый сегмент содержит 1% хэш-мощности, злоумышленнику потребуется всего 1% от общего хэш-мощности, чтобы завладеть сегментом.

На этом осколке у них будет полная свобода действий для двойного расходования или удаления данных законных транзакций.

Мы говорим о хешрейте сети, потому что атака 1% возможна только в сегментированных PoW-сетях. Все существующие в настоящее время блокчейны, в которых реализовано сегментирование, используют Proof-of-Stake или форму BFT в сочетании с PoS, включая Zilliqa и NEAR.

Является ли Proof-of-Stake с Sharding ответом на трилемму блокчейна?

Краткий ответ: нет, потому что Proof-of-Stake не обеспечивает настоящей децентрализации.

Более длинный ответ: Proof-of-Stake может быть энергоэффективным, но когда безопасность и построение цепочки привязаны к чьему-то богатству, он имеет тенденцию отдавать предпочтение богатым. Если мы хотим добиться децентрализации, безопасности и масштабируемости, отказ от децентрализации — не вариант.

Как только вы отказываетесь от децентрализации, вы жертвуете сопротивлением цензуре и создаете векторы атаки. Вы также можете столкнуться с проблемами доступности, поскольку в этом году простои таких сетей, как Polygon.

Вот почему считаю, что единственным алгоритмом, делающим возможной децентрализацию, является PoW .