Shardeum и динамическое состояние Шардинг: другая возможность для Шардинга
15 сентября 2022 года Ethereum завершил долгожданное слияние (Merge). Это исторический момент, к которому Ethereum готовился 5 лет, откладывая 6 раз. Из-за постоянной отладки и долгой разработки многие ошибочно полагали, что слияние автоматически приведет к более высокой масштабируемости, безопасности и устойчивости, но это не так. Переход от PoW к PoS - это лишь замена рельсов и колес, он не приведет напрямую к более высокой скорости, большей емкости или меньшим затратам. Реализовать это могут лишь целый ряд решений: основная сеть с возможностью шардинга в сочетании с решениями Layer2, повышающими масштабируемость.
Как указал основатель Ethereum Виталик Бутерин, Шардинг является решением для масштабируемости в условиях тройной дилеммы, разделяя узлы сети на более мелкие группы для обработки различных наборов транзакций и достижения параллельной обработки. Распределяя нагрузку по обработке огромного объема данных, необходимого для сводки по всей сети, это похоже на то, как мы покупаем в супермаркете: открывая несколько касс для расчета, мы можем наглядно сократить время ожидания в очереди и повысить эффективность расчетов.
Это логика Шардинга, она прямая и простая, однако дьявол кроется в деталях. Принцип и направление верные, но на практике всегда возникают множество проблем. В этой статье я хочу прояснить направление и трудности на пути к "Шардингу", создав карту исследователя Шардинга, который смотрит на звезды и стоит на земле. Также, сравнив существующие решения по Шардингу, мы найдем некоторые общие проблемы и предложим жизнеспособное направление исследований: Shardeum и динамический Шардинг.
Проще говоря, учитывая ограничения невозможного треугольника, начиная с Ethereum в качестве исходной точки координат (0,0), мы разделим текущие методы масштабирования блокчейна на две большие категории: по "вертикальному" и "горизонтальному" подходам.
Вертикальное масштабирование(Vertical Scaling): достигается за счет повышения производительности существующего аппаратного обеспечения системы. Создание децентрализованной сети, в которой каждый узел обладает суперкомпьютерной мощностью, то есть каждому узлу требуется "лучшее" оборудование. Этот метод прост и эффективен, может привести к первоначальному улучшению пропускной способности, особенно подходит для высокочастотной торговли, игр и других приложений, чувствительных к задержкам. Однако такой способ масштабирования ограничивает уровень децентрализации сети, поскольку затраты на эксплуатацию узлов-валидаторов или полных узлов возрастают. Поддержание уровня децентрализации ограничено приблизительной скоростью роста производительности вычислительного оборудования( это так называемая "Закон Мура": количество транзисторов на чипе удваивается каждые два года, а стоимость вычислений уменьшается вдвое).
Горизонтальное масштабирование(Horizontal Scaling): Горизонтальное масштабирование обычно имеет несколько подходов. Один из них в контексте блокчейна заключается в распределении объема вычислений транзакций в определенной экосистеме по нескольким независимым блокчейнам, каждый из которых имеет своих производителей блоков и исполнительные способности. Этот способ позволяет полностью настраивать уровень исполнения каждого блокчейна, например, требования к аппаратному обеспечению узлов, функции конфиденциальности, gas-расходы, виртуальные машины и настройки разрешений и т.д. Другим подходом к горизонтальному масштабированию является модульный блокчейн, который разделяет базовую инфраструктуру блокчейна на уровень исполнения, уровень доступности данных(DA) и уровень консенсуса. Наиболее распространенный модульный механизм блокчейна - это rollup. Еще один способ заключается в том, чтобы разделить один блокчейн на множество шардов и выполнять их параллельно. Каждый шард можно рассматривать как отдельный блокчейн, что означает, что многие блокчейны могут выполняться параллельно. Кроме того, обычно существует одна основная цепочка, единственной задачей которой является поддержание синхронности всех шардов.
Следует отметить, что вышеупомянутые подходы к масштабированию не существуют изолированно, каждое решение находит компромисс в рамках невозможного треугольника, сочетая его с дизайном механизма стимулов, созданного экономическими силами в системе, для достижения эффективного баланса на макро- и микроуровнях.
Чтобы обсудить "Шардинг", нам нужно начать с основ.
Предположим такую ситуацию: оплата покупок в супермаркете. Чтобы повысить эффективность расчетов и сократить время ожидания клиентов, мы расширяем одну кассу до 10 кассовых окон. Чтобы избежать ошибок в расчетах, в это время нам необходимо установить единые правила:
Во-первых, если у нас есть 10 кассиров, как распределить их по окнам?
Во-вторых, если у нас есть 1000 клиентов, ожидающих в очереди, как мы можем решить, к какому окну должен подойти каждый клиент для расчетов?
Третье, как провести сводку по 10 отдельным книгам учета, соответствующим этим 10 окнам?
Четвертое, как предотвратить ошибки кассиров, чтобы избежать несоответствия в учетах?
Эти вопросы на самом деле соответствуют нескольким ключевым вопросам в Шардинге, а именно:
Как определить, к какому Шардингу принадлежат узлы/валидаторы всей сети? То есть: как осуществляется (Network Sharding);
Как определить, какой шардинг назначается каждой транзакции? То есть: как провести шардирование транзакции (Transaction Sharding);
Как хранить данные блокчейна в разных Шардинг? То есть: как осуществлять состояние шarding (State Sharding);
Сложность означает риск, на основе всего вышесказанного, как избежать разделения безопасности всей системы?
Если мы просто понимаем блокчейн как децентрализованный реестр, то как механизм консенсуса PoS, так и PoW предназначены для того, чтобы различные узлы по определенным заранее установленным правилам боролись за право ведения учета, при этом гарантируя правильность реестра. Шардинг сети означает, что требуется другой установленный набор правил для разделения блокчейн-сети на фрагменты, при этом минимизируя взаимные коммуникации, и каждый фрагмент обрабатывает транзакции в цепочке, борясь за право ведения учета - то есть, правила группировки узлов.
Однако в этом процессе возникла проблема: по мере того как узлы внутри блокчейна разделяются на разные Шардинги, сложность и стоимость атакующего будут стремительно снижаться. Мы можем предположить, что если правила и результаты этого процесса группировки фиксированы и предсказуемы, то атакующему для контроля над всей сетью блокчейна достаточно целенаправленно контролировать один из Шардингов, подкупив часть узлов внутри него.
Основатель одной из публичных блокчейнов описал эту проблему следующим образом: если одна цепь с X валидаторами решает провести хард-форк в шардированную цепь и разделяет X валидаторов на 10 шардов, то в каждом шарде теперь будет только X/10 валидаторов, и для разрушения одного шарда потребуется уничтожить всего 5.1%)51% / 10( общего числа валидаторов. Это подводит нас ко второму пункту: кто выбирает валидаторов для каждого шарда? Только если все 5.1% валидаторов находятся в одном шардe, контроль над 5.1% валидаторов будет вреден. Если валидаторы не могут выбрать, в каком шарде они будут проводить валидацию, то маловероятно, что участники, контролирующие 5.1% валидаторов, смогут разместить всех валидаторов в одном шарде, что значительно снизит их способность разрушить систему.
Шардинг-системы должны разработать механизм, чтобы доверять сети, что она не будет отменять эти транзакции из внешних шардингов. До сих пор, возможно, лучшим ответом является обеспечение того, чтобы количество валидаторов внутри шардинга было выше некоторого минимального порога, чтобы вероятность того, что нечестные валидаторы преобладают в одном шардинге, была очень низкой. Наиболее распространенный способ - создать некоторую степень беспристрастной случайности, полагаясь на математические методы, чтобы минимизировать вероятность успеха атакующих. Например, в Ethereum решение заключается в случайном выборе валидаторов для конкретного шардинга из всех валидаторов, и каждые 6.4 минуты ) длина эпохи ( валидаторы меняются.
Говоря проще, это значит случайным образом разбивать узлы на группы, а затем распределять работу для независимой проверки узлов в каждой группе.
Однако следует отметить, что случайность в блокчейне является очень сложной темой. Логически, процесс генерации этого случайного числа не должен зависеть от вычислений в каком-либо конкретном Шардинге. Для этого вычисления многие существующие концепции разработаны для создания отдельного блокчейна, который поддерживает всю сеть. Такие цепочки в Ethereum и Near называются Beacon цепочками, в PolkaDot — Relay цепочками, а в Cosmos — Cosmos Hub.
! [10 000 слов подробное объяснение новой публичной сети Shardeum: еще одна возможность шардинга])https://img-cdn.gateio.im/webp-social/moments-6e8d3331d7d68cb512eb2eb47bd9064d.webp(
) 02 транзакции шардинг ###Transaction Sharding(
Шардинг транзакций относится к правилам о том, "какие транзакции должны быть распределены по каким шардам", что позволяет достичь цели параллельной обработки и избежать проблемы двойной траты. Различия в модели бухгалтерской записи блокчейна могут повлиять на разработку шардинга транзакций.
В настоящее время в блокчейн-сетях существуют два типа учета: UTXO)Unspent Transaction Outputs, модель неиспользованных транзакционных выходов ( и модель счетов/балансов, типичным представителем первой является BTC, а второй - ETH.
Модель UTXO: В BTC-транзакциях каждая транзакция имеет один или несколько выходов. UTXO обозначает неиспользованные выходы транзакций в блокчейне, которые могут использоваться как входы для новых транзакций, в то время как использованные выходы транзакций не могут быть потрачены повторно, что похоже на процесс платежей и сдачи при использовании банкнот: покупатель передает одну или несколько банкнот продавцу, а продавец возвращает одну или несколько банкнот покупателю. В модели UTXO для разделения транзакций требуется межразделительная связь. Одна транзакция может включать несколько входов и несколько выходов, концепция аккаунтов отсутствует, и не ведется запись балансов. Один из возможных способов: поместить его в хэш-функцию на основе значения одного из его входов, чтобы получить дискретное хэш-значение, определяющее, в какой раздел должны направляться данные.
Чтобы гарантировать, что записи размещаются в правильных Шардинг'ах последовательным образом, значения, входящие в хеш-функцию, должны быть из одного и того же столбца. Этот столбец называется ключом шарда (Shard Key). Затем транзакции, приводящие к значению 1, будут отнесены к Шардинг 1, а транзакции, приводящие к значению 2, будут отнесены к Шардинг 2. Однако недостатком этого подхода является необходимость связи между Шардинг'ами для предотвращения атак двойных расходов. Ограничение кросс-Шардинг транзакций ограничит доступность платформы, в то время как разрешение кросс-Шардинг транзакций потребует взвешивания затрат на межшардинговую связь и выгоды от повышения производительности.
Модель счетов/баланса: Система регистрирует баланс каждого счета, и при проведении транзакции система проверяет, достаточно ли средств на счете для оплаты, аналогично тому, как банк записывает баланс каждого счета при банковском переводе, и только если баланс счета превышает необходимую сумму перевода, транзакция может быть проведена. В модели счетов/баланса, поскольку у транзакции только один вход, достаточно разбить транзакции по адресу отправителя, чтобы гарантировать, что несколько транзакций одного и того же счета обрабатываются в одном шарде, что эффективно предотвращает двойные траты. Таким образом, большинство блокчейнов, использующих технологию шардинга, представляют собой систему бухгалтерских книг, подобную Ethereum.
! [Шардеум: еще одна возможность шардинга])https://img-cdn.gateio.im/webp-social/moments-4227a2e49f76cd01b23d7b5398e51a3c.webp(
) 03 состояние Шардинг ###State Sharding (
Состояние шардинга относится к тому, как данные блокчейна распределяются и хранятся в разных шардов.
По-прежнему используя наш пример с очередями в супермаркете, у каждого окна есть своя бухгалтерия, как они ведут свои записи? Если: клиент приходит в какую очередь, тот и записывается, например, клиент A пошел к окну A, тогда на следующий день этот клиент пошел к другому окну для расчета, например, к окну B, а у окна B нет информации о предыдущих счетах этого клиента ), например, если это связано с предоплаченными картами и другими способами расчета (, что делать? Вызвать информацию о счете этого клиента из окна A?
Состояние шардинга является самой большой проблемой шардинга, более сложной, чем упомянутые выше сетевой шардинг и транзакционный шардинг. Потому что в механизме шардинга транзакции обрабатываются в разных шардов в зависимости от адреса, то есть состояние будет храниться только в шарде, соответствующем его адресу, в то время как возникает проблема, что транзакции не будут проходить только в одном шарде, и зачастую будут касаться межшардовых )Cross-Sharding(.
Рассмотрим ситуацию с переводом: аккаунт A переводит 10U на аккаунт B, при этом адрес A распределен по Шардинг 1, запись транзакции также будет храниться в Шардинг 1. Адрес B распределен по Шардинг 2, запись транзакции будет храниться в Шардинг 2.
Когда A хочет перевести средства B, произойдет кросс-Шардинг транзакция, Шардинг 2 будет запрашивать прошлые записи транзакций у Шардинг 1 для подтверждения действительности транзакции. Если A часто переводит средства B, Шардинг 2 будет вынужден постоянно взаимодействовать с Шардинг 1, что снизит эффективность обработки транзакций. Однако, если не загружать и не проверять
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
17 Лайков
Награда
17
7
Поделиться
комментарий
0/400
Web3ProductManager
· 30м назад
смотря на эти когортные метрики... шардирование - это не просто еще одно модное слово, это наша звезда на севере для истинного соответствия продукта и рынка сейчас
Посмотреть ОригиналОтветить0
ChartIgniter
· 10ч назад
ЛФГ
Посмотреть ОригиналОтветить0
JustAnotherWallet
· 14ч назад
Смотрим на шум, Шардинг так Шардинг.
Посмотреть ОригиналОтветить0
PoolJumper
· 14ч назад
Ха-ха, действительно забавно. Ждал целый день, а поменял только корпус.
Shardeum исследует динамические состояния Шардинга для решения проблемы масштабирования Блокчейн.
Shardeum и динамическое состояние Шардинг: другая возможность для Шардинга
15 сентября 2022 года Ethereum завершил долгожданное слияние (Merge). Это исторический момент, к которому Ethereum готовился 5 лет, откладывая 6 раз. Из-за постоянной отладки и долгой разработки многие ошибочно полагали, что слияние автоматически приведет к более высокой масштабируемости, безопасности и устойчивости, но это не так. Переход от PoW к PoS - это лишь замена рельсов и колес, он не приведет напрямую к более высокой скорости, большей емкости или меньшим затратам. Реализовать это могут лишь целый ряд решений: основная сеть с возможностью шардинга в сочетании с решениями Layer2, повышающими масштабируемость.
Как указал основатель Ethereum Виталик Бутерин, Шардинг является решением для масштабируемости в условиях тройной дилеммы, разделяя узлы сети на более мелкие группы для обработки различных наборов транзакций и достижения параллельной обработки. Распределяя нагрузку по обработке огромного объема данных, необходимого для сводки по всей сети, это похоже на то, как мы покупаем в супермаркете: открывая несколько касс для расчета, мы можем наглядно сократить время ожидания в очереди и повысить эффективность расчетов.
Это логика Шардинга, она прямая и простая, однако дьявол кроется в деталях. Принцип и направление верные, но на практике всегда возникают множество проблем. В этой статье я хочу прояснить направление и трудности на пути к "Шардингу", создав карту исследователя Шардинга, который смотрит на звезды и стоит на земле. Также, сравнив существующие решения по Шардингу, мы найдем некоторые общие проблемы и предложим жизнеспособное направление исследований: Shardeum и динамический Шардинг.
! Шардеум: еще одна возможность шардинга
Один. О "Шардинг"
Проще говоря, учитывая ограничения невозможного треугольника, начиная с Ethereum в качестве исходной точки координат (0,0), мы разделим текущие методы масштабирования блокчейна на две большие категории: по "вертикальному" и "горизонтальному" подходам.
Вертикальное масштабирование(Vertical Scaling): достигается за счет повышения производительности существующего аппаратного обеспечения системы. Создание децентрализованной сети, в которой каждый узел обладает суперкомпьютерной мощностью, то есть каждому узлу требуется "лучшее" оборудование. Этот метод прост и эффективен, может привести к первоначальному улучшению пропускной способности, особенно подходит для высокочастотной торговли, игр и других приложений, чувствительных к задержкам. Однако такой способ масштабирования ограничивает уровень децентрализации сети, поскольку затраты на эксплуатацию узлов-валидаторов или полных узлов возрастают. Поддержание уровня децентрализации ограничено приблизительной скоростью роста производительности вычислительного оборудования( это так называемая "Закон Мура": количество транзисторов на чипе удваивается каждые два года, а стоимость вычислений уменьшается вдвое).
Горизонтальное масштабирование(Horizontal Scaling): Горизонтальное масштабирование обычно имеет несколько подходов. Один из них в контексте блокчейна заключается в распределении объема вычислений транзакций в определенной экосистеме по нескольким независимым блокчейнам, каждый из которых имеет своих производителей блоков и исполнительные способности. Этот способ позволяет полностью настраивать уровень исполнения каждого блокчейна, например, требования к аппаратному обеспечению узлов, функции конфиденциальности, gas-расходы, виртуальные машины и настройки разрешений и т.д. Другим подходом к горизонтальному масштабированию является модульный блокчейн, который разделяет базовую инфраструктуру блокчейна на уровень исполнения, уровень доступности данных(DA) и уровень консенсуса. Наиболее распространенный модульный механизм блокчейна - это rollup. Еще один способ заключается в том, чтобы разделить один блокчейн на множество шардов и выполнять их параллельно. Каждый шард можно рассматривать как отдельный блокчейн, что означает, что многие блокчейны могут выполняться параллельно. Кроме того, обычно существует одна основная цепочка, единственной задачей которой является поддержание синхронности всех шардов.
Следует отметить, что вышеупомянутые подходы к масштабированию не существуют изолированно, каждое решение находит компромисс в рамках невозможного треугольника, сочетая его с дизайном механизма стимулов, созданного экономическими силами в системе, для достижения эффективного баланса на макро- и микроуровнях.
Чтобы обсудить "Шардинг", нам нужно начать с основ.
Предположим такую ситуацию: оплата покупок в супермаркете. Чтобы повысить эффективность расчетов и сократить время ожидания клиентов, мы расширяем одну кассу до 10 кассовых окон. Чтобы избежать ошибок в расчетах, в это время нам необходимо установить единые правила:
Во-первых, если у нас есть 10 кассиров, как распределить их по окнам?
Во-вторых, если у нас есть 1000 клиентов, ожидающих в очереди, как мы можем решить, к какому окну должен подойти каждый клиент для расчетов?
Третье, как провести сводку по 10 отдельным книгам учета, соответствующим этим 10 окнам?
Четвертое, как предотвратить ошибки кассиров, чтобы избежать несоответствия в учетах?
Эти вопросы на самом деле соответствуют нескольким ключевым вопросам в Шардинге, а именно:
Как определить, к какому Шардингу принадлежат узлы/валидаторы всей сети? То есть: как осуществляется (Network Sharding);
Как определить, какой шардинг назначается каждой транзакции? То есть: как провести шардирование транзакции (Transaction Sharding);
Как хранить данные блокчейна в разных Шардинг? То есть: как осуществлять состояние шarding (State Sharding);
Сложность означает риск, на основе всего вышесказанного, как избежать разделения безопасности всей системы?
! Шардем: еще одна возможность шардинга
01 Сеть Шардинг (
Если мы просто понимаем блокчейн как децентрализованный реестр, то как механизм консенсуса PoS, так и PoW предназначены для того, чтобы различные узлы по определенным заранее установленным правилам боролись за право ведения учета, при этом гарантируя правильность реестра. Шардинг сети означает, что требуется другой установленный набор правил для разделения блокчейн-сети на фрагменты, при этом минимизируя взаимные коммуникации, и каждый фрагмент обрабатывает транзакции в цепочке, борясь за право ведения учета - то есть, правила группировки узлов.
Однако в этом процессе возникла проблема: по мере того как узлы внутри блокчейна разделяются на разные Шардинги, сложность и стоимость атакующего будут стремительно снижаться. Мы можем предположить, что если правила и результаты этого процесса группировки фиксированы и предсказуемы, то атакующему для контроля над всей сетью блокчейна достаточно целенаправленно контролировать один из Шардингов, подкупив часть узлов внутри него.
Основатель одной из публичных блокчейнов описал эту проблему следующим образом: если одна цепь с X валидаторами решает провести хард-форк в шардированную цепь и разделяет X валидаторов на 10 шардов, то в каждом шарде теперь будет только X/10 валидаторов, и для разрушения одного шарда потребуется уничтожить всего 5.1%)51% / 10( общего числа валидаторов. Это подводит нас ко второму пункту: кто выбирает валидаторов для каждого шарда? Только если все 5.1% валидаторов находятся в одном шардe, контроль над 5.1% валидаторов будет вреден. Если валидаторы не могут выбрать, в каком шарде они будут проводить валидацию, то маловероятно, что участники, контролирующие 5.1% валидаторов, смогут разместить всех валидаторов в одном шарде, что значительно снизит их способность разрушить систему.
Шардинг-системы должны разработать механизм, чтобы доверять сети, что она не будет отменять эти транзакции из внешних шардингов. До сих пор, возможно, лучшим ответом является обеспечение того, чтобы количество валидаторов внутри шардинга было выше некоторого минимального порога, чтобы вероятность того, что нечестные валидаторы преобладают в одном шардинге, была очень низкой. Наиболее распространенный способ - создать некоторую степень беспристрастной случайности, полагаясь на математические методы, чтобы минимизировать вероятность успеха атакующих. Например, в Ethereum решение заключается в случайном выборе валидаторов для конкретного шардинга из всех валидаторов, и каждые 6.4 минуты ) длина эпохи ( валидаторы меняются.
Говоря проще, это значит случайным образом разбивать узлы на группы, а затем распределять работу для независимой проверки узлов в каждой группе.
Однако следует отметить, что случайность в блокчейне является очень сложной темой. Логически, процесс генерации этого случайного числа не должен зависеть от вычислений в каком-либо конкретном Шардинге. Для этого вычисления многие существующие концепции разработаны для создания отдельного блокчейна, который поддерживает всю сеть. Такие цепочки в Ethereum и Near называются Beacon цепочками, в PolkaDot — Relay цепочками, а в Cosmos — Cosmos Hub.
! [10 000 слов подробное объяснение новой публичной сети Shardeum: еще одна возможность шардинга])https://img-cdn.gateio.im/webp-social/moments-6e8d3331d7d68cb512eb2eb47bd9064d.webp(
) 02 транзакции шардинг ###Transaction Sharding(
Шардинг транзакций относится к правилам о том, "какие транзакции должны быть распределены по каким шардам", что позволяет достичь цели параллельной обработки и избежать проблемы двойной траты. Различия в модели бухгалтерской записи блокчейна могут повлиять на разработку шардинга транзакций.
В настоящее время в блокчейн-сетях существуют два типа учета: UTXO)Unspent Transaction Outputs, модель неиспользованных транзакционных выходов ( и модель счетов/балансов, типичным представителем первой является BTC, а второй - ETH.
Модель UTXO: В BTC-транзакциях каждая транзакция имеет один или несколько выходов. UTXO обозначает неиспользованные выходы транзакций в блокчейне, которые могут использоваться как входы для новых транзакций, в то время как использованные выходы транзакций не могут быть потрачены повторно, что похоже на процесс платежей и сдачи при использовании банкнот: покупатель передает одну или несколько банкнот продавцу, а продавец возвращает одну или несколько банкнот покупателю. В модели UTXO для разделения транзакций требуется межразделительная связь. Одна транзакция может включать несколько входов и несколько выходов, концепция аккаунтов отсутствует, и не ведется запись балансов. Один из возможных способов: поместить его в хэш-функцию на основе значения одного из его входов, чтобы получить дискретное хэш-значение, определяющее, в какой раздел должны направляться данные.
Чтобы гарантировать, что записи размещаются в правильных Шардинг'ах последовательным образом, значения, входящие в хеш-функцию, должны быть из одного и того же столбца. Этот столбец называется ключом шарда (Shard Key). Затем транзакции, приводящие к значению 1, будут отнесены к Шардинг 1, а транзакции, приводящие к значению 2, будут отнесены к Шардинг 2. Однако недостатком этого подхода является необходимость связи между Шардинг'ами для предотвращения атак двойных расходов. Ограничение кросс-Шардинг транзакций ограничит доступность платформы, в то время как разрешение кросс-Шардинг транзакций потребует взвешивания затрат на межшардинговую связь и выгоды от повышения производительности.
Модель счетов/баланса: Система регистрирует баланс каждого счета, и при проведении транзакции система проверяет, достаточно ли средств на счете для оплаты, аналогично тому, как банк записывает баланс каждого счета при банковском переводе, и только если баланс счета превышает необходимую сумму перевода, транзакция может быть проведена. В модели счетов/баланса, поскольку у транзакции только один вход, достаточно разбить транзакции по адресу отправителя, чтобы гарантировать, что несколько транзакций одного и того же счета обрабатываются в одном шарде, что эффективно предотвращает двойные траты. Таким образом, большинство блокчейнов, использующих технологию шардинга, представляют собой систему бухгалтерских книг, подобную Ethereum.
! [Шардеум: еще одна возможность шардинга])https://img-cdn.gateio.im/webp-social/moments-4227a2e49f76cd01b23d7b5398e51a3c.webp(
) 03 состояние Шардинг ###State Sharding (
Состояние шардинга относится к тому, как данные блокчейна распределяются и хранятся в разных шардов.
По-прежнему используя наш пример с очередями в супермаркете, у каждого окна есть своя бухгалтерия, как они ведут свои записи? Если: клиент приходит в какую очередь, тот и записывается, например, клиент A пошел к окну A, тогда на следующий день этот клиент пошел к другому окну для расчета, например, к окну B, а у окна B нет информации о предыдущих счетах этого клиента ), например, если это связано с предоплаченными картами и другими способами расчета (, что делать? Вызвать информацию о счете этого клиента из окна A?
Состояние шардинга является самой большой проблемой шардинга, более сложной, чем упомянутые выше сетевой шардинг и транзакционный шардинг. Потому что в механизме шардинга транзакции обрабатываются в разных шардов в зависимости от адреса, то есть состояние будет храниться только в шарде, соответствующем его адресу, в то время как возникает проблема, что транзакции не будут проходить только в одном шарде, и зачастую будут касаться межшардовых )Cross-Sharding(.
Рассмотрим ситуацию с переводом: аккаунт A переводит 10U на аккаунт B, при этом адрес A распределен по Шардинг 1, запись транзакции также будет храниться в Шардинг 1. Адрес B распределен по Шардинг 2, запись транзакции будет храниться в Шардинг 2.
Когда A хочет перевести средства B, произойдет кросс-Шардинг транзакция, Шардинг 2 будет запрашивать прошлые записи транзакций у Шардинг 1 для подтверждения действительности транзакции. Если A часто переводит средства B, Шардинг 2 будет вынужден постоянно взаимодействовать с Шардинг 1, что снизит эффективность обработки транзакций. Однако, если не загружать и не проверять