Во-первых, что такое масштабируемость?

В программировании масштабируемость относится к способности приложения, сети, алгоритма, протокола или системы развиваться в соответствии с растущей нагрузкой, чтобы штатно выполнять более широкий круг функций и обслуживать нарастающее число пользователей. В централизованных вычислительных системах производительность можно повысить двумя способами: обновить программное обеспечение оборудования, чтобы оно более эффективно выполняло увеличивающийся спектр задач, либо добавить вычислительные мощности (серверы). Под масштабируемостью блокчейна чаще всего имеется в виду способность обрабатывать большее количество транзакций в секунду, так называемый, TPS (transactions per second).

Проблема масштабируемости блокчейна  на примере Эфира

Растущая нагрузка на сеть эфира сильно увеличивает стоимость транзакций. Проблема заключается в том, что сетевые комиссии, которые рассчитываются в единицах газа, – динамические. В периоды всплесков нагрузки на сеть валидаторы могут выбирать и обрабатывать те транзакции (крипто транзакции), которые предлагают больше газа, тем самым усиливая конкуренцию и дальнейшее увеличение комиссии сети. Это является одним из основных препятствий для разворачивания на сети эфира все большего количества приложений и, соответственно, роста числа пользователей. В своей последней статье Виталик Бутерин обозначил проблему “трех переходов” (Three transitions). Автор подчеркивает, что без решения трех вызовов, одним из которых как раз является масштабируемость, эфир не только не сможет привлечь больше пользователей, но ускоренными темпами начнет терять существующих.

Анимация ниже иллюстрирует, как отправители конкурируют за включение транзакции в блок путем увеличения сетевой комиссии.

Everscale – масштабируемый блокчейн пятого поколения

У Everscale уникальная архитектура гетерогенного блокчейна с горизонтальным масштабированием (о таких сложных конструкциях мы подробнее расскажем в другой статье), в которой все является смарт-контрактом. Взаимодействие между смарт контрактами осуществляется с помощью сообщений. Даже ваш криптовалютный кошелек на базе Everscale является смарт-контрактом. Проще говоря, смарт-контракт это объект с такими атрибутами как адрес, код, баланс и прочими данными. Помимо хранения данных смарт-контракт может исполнять инструкции, получаемые от других смарт-контрактов. Обмен инструкциями между смарт-контрактами происходит путем передачи сообщений. Получение сообщения и последующее успешное выполнения кода инструкции TVM (Threaded Virtual Machine) может приводить к следующим изменениям в смарт-контракте или шарде:

  1. Перезаписывание данных в смарт-контракте (инструкций, балансов и других данных);

  2. Отправка смарт-контрактом исходящего сообщения для создания другого смарт-контракта;

  3. Отправка смарт-контрактом множества исходящих сообщений.


Взаимодействие смарт-контрактов:

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

Что дальше?

Цепочки

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

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

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

Разделение шардов – масштабируемость

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

Разделение шардов:

Разделение шарда невозможно, если он обрабатывает сообщения только одного смарт-контракта.

Слияние шардов

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


Неравномерное распределение нагрузки:

Слияние шардов возможно только в том случае, когда в воркчейне существует более одного шарда – сообщения от смарт-контрактов обрабатываются не единственным шардом.

Блокчейн​

В Everscale совокупность всех шардов с обслуживаемыми ими аккаунтами, взаимодействующими в соответствии с установленными правилами, называется воркчейном (workchain).

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

Главный Воркчейн

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

Мастерчейн (masterchain)

Архитектурная особенность Everscale требует чтобы ноды достигали консенсуса относительно состояния. Именно здесь в игру вступает мастерчейн, так как его блоки содержат последние хэши блоков остальных шардов сети. Каждые две-три секунды каждый шард отправляет в мастерчейн, так называемые, доказательства выпуска блоков. Таким образом определяется состояние всех шардов сети с помощью одного лишь блока мастерчейна.

Взаимодействие мастерчейна с остальными воркчейнами сети и кросс-воркчейн коммуникация:

В ближайшем будущем можно будет создать новые воркчейны

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

Комментарии (26)


  1. PuerteMuerte
    21.06.2023 20:27
    +3

    Как на самом деле должен работать масштабируемый блокчейн

    2023-й год на дворе, ребята. Кого сейчас ещё интересует, как на самом деле должен работать масштабируемый блокчейн?


    1. srchost
      21.06.2023 20:27
      +1

      А почему бы и нет? Хорошая же статья.


      1. Hardcoin
        21.06.2023 20:27

        Не очень. Ни слова про то, как будут обмениваться сообщениями два кошелька из разных шардов.


        1. mr_tron
          21.06.2023 20:27

          Ну тяжело пересказать все огромные 5 вайтпейперов на сотню страниц в одной статье.
          Можно почитать оригиналы :)
          https://ton.org/whitepaper.pdf
          https://ton.org/tvm.pdf
          https://ton.org/catchain.pdf

          Впрочем и на хабре есть пара статей:
          https://habr.com/ru/articles/354568/
          https://habr.com/ru/articles/706648/


      1. PuerteMuerte
        21.06.2023 20:27

        Не сильно хорошая. При росте количества транзакций можно разделить воркчейн на шарды, при уменьшении количества транзакций шарды можно объединить, вот и вся суть статьи. Вопросов больше, чем ответов. Например, как шардировать, если рост количества транзакций самый типовой - линейный, между произвольными кошельками? Когда нельзя как-то кластеризовать в группы кошельки, между которыми идут транзакции? Или далее - допустим, кластеризовали. Чё делать, если транзакции между кошельками в разных шардах?


        1. broxus Автор
          21.06.2023 20:27

          Например, как шардировать, если рост количества транзакций самый типовой - линейный, между произвольными кошельками? 

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

          Чё делать, если транзакции между кошельками в разных шардах?

          Это самый основной кейс. Когда шард > 1, то в цепочке практически всегда есть транзакции между шардами. Шарды синхронизируются между собой через мастер-чейн. Он выпускает блоки с заголовками шард-блоков. После этого шарды импортируют с других шардов блоки с этими загловоками. Таким образом все имеют один стейт. Возможно, в статье стоило описать этот процесс чуть подробнее.


    1. phillennium
      21.06.2023 20:27
      +1

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


      1. PuerteMuerte
        21.06.2023 20:27
        +2

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


        1. phillennium
          21.06.2023 20:27
          +1

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


          1. PuerteMuerte
            21.06.2023 20:27
            +1

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

            В какой-то степени верно. Но нам, с одной стороны, от платёжной системы нужны не шашечки (особенности архитектуры), а ехать (скорость проведения транзакций). С другой стороны, каждый валидатор вычисления проводит на своих локальных мощностях, и их там более чем достаточно. Эти 400К транзакций в день, они не потому, что сеть больше не умеет (она раза в три больше может и без всяких нашлёпок вроде лайтнинга), а просто потому, что нет потребности. Там нечего ни сейчас масштабировать, ни в обозримом будущем. Операций немного, даже самая нагруженная сеть совершенно недогружена.


            1. Hardcoin
              21.06.2023 20:27

              Но нам, с одной стороны, от платёжной системы нужны не шашечки (особенности архитектуры)

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

              Биткоин интересен только особенностями архитектуры (и вытекающими свойствами). Во всем остальном он хуже банков.


            1. phillennium
              21.06.2023 20:27

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

              Если бы это было так, то блокчейном просто никто не пользовался бы изначально. Однако количество транзакций растёт.

              Операций немного, даже самая нагруженная сеть совершенно недогружена.

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


              1. PuerteMuerte
                21.06.2023 20:27

                Если бы это было так, то блокчейном просто никто не пользовался бы изначально. Однако количество транзакций растёт.

                Наверное, вообще не секрет, что блокчейном пользуются не по назначению, задуманному его создателем. Он мало кого интересует как штука, где неизменно хранится история операций. Он в первую очередь интересен как штука, куда можно занести N денег сегодня, и завтра получить N*M денег, причём так, чтобы M было больше единицы. Во вторую очередь (причём многократно уступающую первой по популярности) он интересен как штука, где можно относительно анонимно переслать кому-то деньги.

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


                1. phillennium
                  21.06.2023 20:27

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

                  Если открыть исходный вайтпейпер Сатоши Накамото, по первым же словам видно, что «назначение создателя» заключалось не в «неизменно хранится история операций», а в «payments directly from one party to another without going through a financial institution». Неизменное хранение истории — лишь способ достичь этой цели. И сегодня его зачастую для этой цели и используют.

                  Он в первую очередь интересен как штука, куда можно занести N денег сегодня, и завтра получить N*M денег

                  Году в 2017-м, когда биткоин бурно рос и все проводили ICO, действительно было много спекулятивного хайпа и обещаний быстрого обогащения. Но в 2023-м, после двух криптозим с масштабными потерями, эта пена уже схлынула, и без неё оказалось, что блокчейн вполне интересен людям по другим причинам. В последние годы становятся всё популярнее стейблкойны. А стейблкойн — это по определению штука, на которой не «получишь завтра N*M денег», так что рост их популярности явно показывает, что интерес людей в другом.


                  1. PuerteMuerte
                    21.06.2023 20:27

                    И сегодня его зачастую для этой цели и используют.

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

                    В последние годы становятся всё популярнее стейблкойны

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

                    К слову, насчёт "всё популярнее", не слишком актуальное утверждение. Вот самый популярный стейблкойн:

                    https://coinmarketcap.com/uk/currencies/terrausd/


                    1. phillennium
                      21.06.2023 20:27

                      стейблкойны - это по определению скам

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

                      Вот самый популярный стейблкойн:

                      По какой именно метрике он самый популярный? Вы ссылаетесь на сайт coinmarketcap, а там главной метрикой считают рыночную капитализацию, и по ней из топ-5 криптовалют целых три оказываются стейблкойнами.


                      1. PuerteMuerte
                        21.06.2023 20:27

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

                        Я вам показал пример. ещё как отменяет. Уже не в тренде, как и NFT :)

                        а там главной метрикой считают рыночную капитализацию

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


                      1. phillennium
                        21.06.2023 20:27

                        Уже не в тренде, как и NFT :)

                        рыночная капитализация - прямой синоним популярности

                        Капитализация — прямой синоним популярности, стейблкойны в ней суммарно растут, но при этом они не в тренде. Что-то я уже запутался в вашей логике.

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


                      1. PuerteMuerte
                        21.06.2023 20:27

                        Капитализация — прямой синоним популярности, стейблкойны в ней суммарно растут, но при этом они не в тренде.

                        Хм. А с чего вы взяли, что суммарно растут? Я вот сейчас наугад потыкал, нет, в долгосрочном тренде не растут, снижается капитализация.

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

                        Простите, но принцип у них у всех одинаковый - есть некое финансовое или товарное покрытие, которое должно, собственно, покрывать продажу стейблкойна на рынке, в широком диапазоне. У алгоритмического стейблкойна всё то же самое, только в покрытие добавлена ещё одна криптовалюта с плавающим курсом, чтобы при необходимости можно было бы часть привлечённых денег вкладчиков автоматически помножить на ноль, и ничего никому за это бы не было. Чего с обычным покрытием происходить как бы не должно.


                      1. phillennium
                        21.06.2023 20:27

                        А с чего вы взяли, что суммарно растут?

                        Хмм, я такое читал в аналитических текстах и ощущал «на глаз» (вроде того же топ-5 на CMC), но не проверял тыканием — вы сейчас как именно тыкали?

                        У алгоритмического стейблкойна всё то же самое...

                        Я не очень внимательно следил за историей Terra/Luna и могу что-то недопонимать, но вроде бы рынок по этому случаю сошёлся во мнении, что на крахе алгоритмического стейблкойна сказалась как раз «алгоритмическая» составляющая. Так или нет? Если так, то мой вопрос остаётся прежним: ну и что тогда этот случай говорит нам о стейблкойнах в целом, если у большинства популярных этой составляющей просто нет?


    1. TTkachev
      21.06.2023 20:27
      +1

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


      1. PuerteMuerte
        21.06.2023 20:27

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

        Вот в том-то и проблема. Никто не в состоянии объяснить, чем запись в блокчейне лучше записи в базе данных. Блокчейн сам по себе решает несуществующую проблему катастрофически неэффективным способом.


  1. Mike_666
    21.06.2023 20:27

    А чем такое решение лучше, к примеру, bitcoin lightning?


    1. broxus Автор
      21.06.2023 20:27

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


  1. Kvanto88
    21.06.2023 20:27

    А сколько сейчас развернуто воркчейнов?


    1. broxus Автор
      21.06.2023 20:27

      На данный момент есть основной нулевой воркчейн и мастерчейн.