Ниже приведено подробное объяснение Polkadot1, Polkadot2 и того, как они превратились в JAM. (Дополнительные сведения см. на странице:https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearly. Эта статья предназначена для технических читателей, особенно для тех, кто может быть не очень хорошо знаком с Polkadot, но имеет некоторое представление о блокчейн-системах и, вероятно, знаком с технологиями из других экосистем.
Я считаю, что этот статья служит хорошим предтечей к прочтению JAM Gray Paper. (Для более подробной информации см.https://graypaper.com/)
Эта статья предполагает, что читатель знаком с следующими концепциями:
Давайте сначала вспомним самые инновационные особенности Polkadot1.
В настоящее время мы обсуждаем сеть уровня 1, которая размещает другие сети "блокчейн" уровня 2, аналогично Polkadot и Ethereum. Следовательно, термины Уровень 2 и Парачейн могут использоваться взаимозаменяемо.
Основная проблема масштабируемости блокчейна может быть сформулирована так: есть набор валидаторов, которые, используя крипто-экономику доказательства доли, обеспечивают доверие к выполнению определенного кода. По умолчанию эти валидаторы должны повторно выполнять весь работу друг друга. Пока мы настаиваем на том, что все валидаторы всегда повторно выполняют все, весь система остается не масштабируемой.
Обратите внимание, что, пока принцип абсолютной повторной выполнения остается неизменным, увеличение количества валидаторов в этой модели фактически не улучшает пропускную способность системы.
Это демонстрирует монолитный блокчейн (в отличие от черепаховидного). Все сетевые валидаторы обрабатывают входы (т. е. блоки) один за другим. В такой системе, если уровень 1 хочет разместить больше уровней 2, то все валидаторы должны повторно выполнить все задания уровней 2. Очевидно, что такой метод не масштабируется.
Оптимистические роллапы решают эту проблему, перезапуская (доказательства мошенничества) только при утверждении о мошенничестве. Роллапы на основе SNARK решают эту проблему, используя тот факт, что стоимость проверки доказательств SNARK значительно ниже стоимости их генерации, что позволяет всем валидаторам эффективно проверять доказательства SNARK. Для получения более подробной информации обратитесь к разделу «Приложение: Диаграмма масштабируемости».
Простым решением для шардирования является разделение набора валидаторов на более мелкие подмножества и повторное выполнение блоков уровня 2 этими более маленькими подмножествами. В чем проблема этого подхода? По сути, мы шардируем как выполнение, так и экономическую безопасность сети. Такое решение уровня 2 имеет более низкий уровень безопасности по сравнению с уровнем 1, и его безопасность дополнительно снижается по мере того, как мы делим набор валидаторов на большее количество шардов.
В отличие от оптимистичных роллапов, где издержки повторного выполнения не всегда можно избежать, Polkadot был разработан с учетом разделенного выполнения. Это позволяет части валидаторов повторно выполнять блоки уровня 2, предоставляя достаточно крипто-экономических доказательств всей сети, чтобы доказать, что блок уровня 2 так же безопасен, как если бы его выполнил полный набор валидаторов. Это достигается благодаря новаторскому (и недавно формализованному) механизму, известному как ELVES. (Для получения более подробной информации см.:https://eprint.iacr.org/2024/961)
Коротко говоря, ELVES можно рассматривать как механизм «подозрительных роллапов». Через несколько раундов валидаторы активно опрашивают других валидаторов о том, действителен ли данный блок уровня 2, мы можем с высокой вероятностью подтвердить его действительность. В случае спора полный набор валидаторов быстро вовлекается. Основатель Polkadot Роб Хабермейер подробно объяснил это в статье. (Для получения более подробной информации см.: https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES позволяют Polkadot обладать как осколочным выполнением, так и общей безопасностью, двумя свойствами, которые ранее считались взаимоисключающими. Это основное техническое достижение Polkadot1 в масштабируемости.
Теперь давайте продвинемся вперед с аналогией "Ядра". Разделенная выполнение блокчейна очень похожа на ЦП: так же как ЦП может иметь несколько ядер, выполняющих инструкции параллельно, Polkadot может обрабатывать блоки уровня 2 параллельно. Поэтому блок уровня 2 в Polkadot называется парачейн, а среда, где более мелкие подмножества валидаторов повторно выполняют один блок уровня 2, называется "ядром". Каждое ядро может быть абстрагировано как "группа сотрудничающих валидаторов".
Вы можете представить монолитный блокчейн в том, что он обрабатывает один блок за раз, в то время как Polkadot обрабатывает как блок ретрансляторной цепи, так и блок парачейна для каждого ядра в один и тот же период времени.
До сих пор мы обсуждали только масштабируемость и фрагментированное выполнение, предлагаемые Polkadot. Важно отметить, что каждый из фрагментов Polkadot, фактически, является совершенно отдельным приложением. Это достигается благодаря метапротоколу, сохраненному в виде байткода: протоколу, который хранит определение самого блокчейна в виде байткода в его состоянии. В Polkadot 1.0 в качестве предпочтительного байткода используется WASM, в то время как в JAM принят PVM/RISC-V.
Вот почему Полкадот называют гетерогенным черепичным блокчейном. (Для получения более подробной информации см.:https://x.com/kianenigma/status/1790763921600606259) Каждый уровень 2 - это совершенно другое приложение.
Один важный аспект Polkadot2 заключается в том, что использование ядер становится более гибким. В исходной модели Polkadot сроки аренды ядер варьировались от 6 месяцев до 2 лет, что подходило для предприятий с изобилием ресурсов, но было менее реальным для меньших команд. Функция, позволяющая более гибко использовать ядра Polkadot, называется "Agile Coretime". (Дополнительные сведения см. в: https://polkadot.com/agile-coretime) В этом режиме срок аренды ядра может быть как один блок, так и до месяца, с предельной ценой для тех, кто хочет арендовать на более длительный период.
Другие особенности Polkadot 2 постепенно раскрываются по мере развития нашего обсуждения, поэтому здесь нет необходимости подробно на них останавливаться.
Для понимания JAM важно сначала понять, что происходит, когда блок уровня 2 входит в ядро Polkadot. Ниже приведено упрощенное объяснение.
Помните, что ядро в основном состоит из набора валидаторов. Так что когда мы говорим "данные отправляются в ядро", это означает, что данные передаются этому набору валидаторов.
Блок уровня 2 вместе с частью состояния этого уровня 2 отправляется в ядро. Эти данные содержат всю необходимую информацию для выполнения блока уровня 2.
Часть основных валидаторов повторно выполнит блок уровня 2 и продолжит выполнение задач, связанных с консенсусом.
Эти основные валидаторы предоставляют повторно выполненные данные другим валидаторам за пределами ядра. Согласно правилам ELVES, эти валидаторы могут решить, повторно выполнить ли блок уровня 2, для этого им нужны эти данные.
Важно отметить, что до сих пор все эти операции происходят вне основного блока Polkadot и функции перехода состояния. Все происходит в ядре и слое доступности данных.
Из этого мы можем изучить несколько ключевых операций, которые выполняет Polkadot:
Понимание этого является основой для понимания JAM. Вот краткое изложение:
Понимая это, мы можем сейчас представить JAM.
JAM - новый протокол, вдохновлённый дизайном Polkadot и полностью совместимый с ним, нацеленный на замену ретрансляционной цепи Polkadot и полную децентрализацию и неограниченное использование основной функциональности.
Построенный на Polkadot 2, JAM стремится сделать развертывание Layer 2s на ядре более доступным, предлагая даже большую гибкость, чем модель agile-coretime.
Это достигается в основном путем предоставления разработчикам трех основных концепций, обсуждаемых ранее: выполнение on-chain, выполнение in-core и уровень DA.
Другими словами, в JAM разработчики могут:
Это образует основной обзор целей JAM. Само собой разумеется, многие из них были упрощены, и протокол, скорее всего, будет развиваться дальше.
С этим базовым пониманием мы теперь можем углубиться в некоторые из особенностей JAM в следующих главах.
В JAM то, что ранее называли Layer 2s или парачейнами, теперь называетсяУслуги, а то, что ранее называлось блоками или транзакциями, теперь называетсяРабочие элементыилиРабочие пакеты. Конкретно, элемент работы принадлежит к сервису, а рабочий пакет - это коллекция элементов работы. Эти термины намеренно широкие, чтобы охватывать случаи использования за пределами блокчейна/Layer 2.
Сервис описывается тремя точками входа, две из которых являются fn refine() и fn accumulate(). Первая описывает, что делает сервис во время выполнения в памяти, а вторая описывает, что делает во время выполнения на цепи.
Наконец, названия этих точек входа являются причиной, по которой протокол называется JAM (Join Accumulate Machine).Присоединитьсяотносится кfn refine()
, что является фазой, когда все ядра Polkadot обрабатывают большой объем работы параллельно по различным сервисам. После обработки данных они переходят к следующему этапу. Накопитьотносится к процессу накопления всех этих результатов в основное состояние JAM, который происходит во время фазы выполнения on-chain.
Рабочие элементы могут точно указать код, который они выполняют в ядре и на цепи, а также то, как, если и откуда они читают или записывают содержимое в Распределенном озере данных.
При рассмотрении существующей документации по XCM (выбранный язык Полкадота для коммуникации парачейна), вся коммуникация является асинхронной (дополнительные сведения см. вздесьЭто означает, что после отправки сообщения вы не можете ждать его ответа. Асинхронное общение является симптомом несогласованности в системе и одним из основных недостатков постоянно шардированных систем, таких как Polkadot 1, Polkadot 2 и существующие экосистемы Layer 2 Ethereum.
Однако, как описано в разделе 2.4Graypaper, полностью согласованная система, которая остаётся синхронной для всех своих арендаторов, может масштабироваться только до определенной степени, не жертвуя универсальностью, доступностью или устойчивостью.
Здесь JAM выделяется: введя несколько функций, JAM достигает нового промежуточного состояния, известного как полуконсистентная система. В этой системе подсистемы, которые часто общаются, могут создать согласованную среду друг с другом, не заставляя весь систему оставаться согласованной. Это было наилучшим образом описано доктором Гэвином Вудом, автором Серого бумаги, в интервью: https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
Другой способ понять это - рассматривать Polkadot/JAM как разделенную систему, где границы между этими осколками являются гибкими и динамически определяемыми.
Polkadot всегда был разделенным и полностью гетерогенным.
Теперь это не только расщеплено и гетерогенно, но эти границы осколков могут быть гибко определены - то, что Гэвин Вуд называет "полусогласованной" системой в своих твитах и Graypaper. (см.https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
Несколько функций делают этот полусогласованный статус возможным:
Важно отметить, что хотя эти возможности возможны в JAM, они не являются обязательными на уровне протокола. Следовательно, некоторые интерфейсы теоретически асинхронны, но могут функционировать синхронно на практике из-за сложных абстракций и стимулов. CorePlay, о котором будет рассказано в следующем разделе, является примером этого явления.
Этот раздел знакомит с CorePlay, экспериментальным концептом в среде JAM, который можно описать как новую модель программирования смарт-контрактов. На момент написания CorePlay еще не был полностью определен и остается спекулятивной идеей.
Для понимания CorePlay нам сначала нужно познакомиться с виртуальной машиной (VM), выбранной JAM: PVM.
PVM - ключевая деталь как в JAM, так и в CorePlay. Нижестоящие детали PVM выходят за рамки этого документа и лучше всего объясняются предметными экспертами в Graypaper. Однако для данного объяснения мы выделим несколько ключевых атрибутов PVM:
Последнее особенно важно для CorePlay.
CorePlay - это пример того, как гибкие примитивы JAM могут быть использованы для создания синхронной и масштабируемой среды смарт-контрактов с высоко гибким программным интерфейсом. CorePlay предлагает, чтобы смарт-контракты на основе акторов развертывались непосредственно на ядрах JAM, позволяя им воспользоваться синхронными программными интерфейсами. Разработчики могут писать смарт-контракты, как если бы они были простыми функциями fn main(), используя выражения, например let результат = other_coreplay_actor(data).await?общаться. Еслидругой актер CorePlayнаходится на той же ядро JAM в том же блоке, этот вызов синхронен. Если это на другом ядре, актер будет приостановлен и возобновлен в последующем блоке JAM. Это становится возможным благодаря службам JAM, их гибкому планированию и возможностям PVM.
Наконец, давайте подытожим основную причину того, что JAM полностью совместим с Polkadot. Флагманским продуктом Polkadot являются его гибкие ядерные парачейны, которые продолжают работу в JAM. Самые ранние развернутые сервисы в JAM, скорее всего, будут называться CoreChains или Parachains, позволяя существующим парачейнам в стиле Polkadot-2 работать на JAM.
Дополнительные сервисы могут быть развернуты на JAM, и существующий сервис CoreChains может взаимодействовать с ними. Однако текущие продукты Polkadot останутся надежными, просто открывая новые возможности для существующих команд парачейн.
Большая часть этого документа обсуждает масштабируемость с точки зрения разделения выполнения. Однако мы также можем рассмотреть эту проблему с точки зрения разделения данных. Интересно, что мы обнаруживаем, что это похоже на упомянутую ранее полуконсистентную модель. В принципе, полностью согласованная система превосходна, но не масштабируется, в то время как полностью несогласованная система хорошо масштабируется, но неоптимальна. JAM с его полуконсистентной моделью представляет новую возможность.
JAM предлагает что-то более чем эти два варианта: это позволяет разработчикам публиковать произвольные данные в слой JAM DA, который служит своеобразным золотым стандартом между on-chain и off-chain данными. Новые приложения могут быть построены с использованием слоя DA для большей части своих данных, в то время как только абсолютно критические данные сохраняются в состоянии JAM.
Этот раздел пересматривает нашу перспективу масштабируемости блокчейна, которая также обсуждается в Graypaper, хотя здесь представлена более кратко.
Масштабируемость блокчейна в значительной степени следует традиционным методам распределенных систем: вертикальное масштабирование и горизонтальное масштабирование.
Вертикальное масштабирование - это то, на что сосредотачиваются платформы, такие как Solana, максимизируя пропускную способность путем оптимизации как кода, так и аппаратного обеспечения до предела.
Горизонтальное масштабирование - это стратегия, принятая Ethereum и Polkadot: снижение нагрузки, которую каждому участнику нужно обрабатывать. В традиционных распределенных системах это достигается путем добавления большего количества реплицирующих машин. В блокчейне "компьютером" является весь сеть валидаторов. Распределяя задачи между ними (как это делает ELVES) или оптимистически снижая их ответственность (как в оптимистических Rollups), мы уменьшаем нагрузку на весь набор валидаторов, тем самым достигая горизонтального масштабирования.
В блокчейне горизонтальное масштабирование можно сравнить с "уменьшением количества машин, которые должны выполнять все операции".
В заключение:
Этот раздел основан на аналогии Роба Хабермейера с Sub0 2023: Polkadot: Ядро/Пользовательское пространство | Sub0 2023 - YouTube (see: https://www.youtube.com/watch?v=15aXYvVMxlw) представляя JAM как обновление для Polkadot: обновление ядра на том же оборудовании.
В типичном компьютере мы можем разделить весь стек на три части:
В Polkadot аппаратное обеспечение — основная инфраструктура, обеспечивающая вычисления и доступность данных — всегда было ядрами, как уже упоминалось.
В Polkadot ядро до сих пор состоит из двух основных частей:
Оба из них существуют в цепи ретрансляции Polkadot.
Приложения пользовательского пространства, с другой стороны, представляют собой сами парачейны, их собственные токены и все, что построено на их основе.
Мы можем визуализировать этот процесс следующим образом:
Polkadot давно предполагал перенос большего количества основных функций к его основным пользователям - парачейнам. Именно этой цели и служит концепция Минимального реле RFC. (Подробнее см.:Минимальный протокол ретрансляции RFC)
Это означает, что Цепь Реле Polkadot будет заниматься только предоставлением протокола парачейна, тем самым уменьшая пространство ядра в некоторой степени.
Как только эта архитектура будет реализована, будет легче представить, как будет выглядеть миграция JAM. JAM значительно уменьшит ядро Polkadot, сделав его более универсальным. Кроме того, протокол Parachains перейдет в пользовательское пространство, поскольку это один из немногих способов построения приложений на одном и том же ядре (аппаратном) и ядре (JAM).
Это также подтверждает, почему JAM заменяет цепочку ретрансляции Polkadot, а не парачейны.
Другими словами, мы можем рассматривать миграцию JAM как обновление ядра. Основное аппаратное обеспечение остаётся неизменным, и большая часть содержимого старого ядра перемещается в пользовательское пространство для упрощения системы.
Ниже приведено подробное объяснение Polkadot1, Polkadot2 и того, как они превратились в JAM. (Дополнительные сведения см. на странице:https://www.navalmanack.com/almanack-of-naval-ravikant/how-to-think-clearly. Эта статья предназначена для технических читателей, особенно для тех, кто может быть не очень хорошо знаком с Polkadot, но имеет некоторое представление о блокчейн-системах и, вероятно, знаком с технологиями из других экосистем.
Я считаю, что этот статья служит хорошим предтечей к прочтению JAM Gray Paper. (Для более подробной информации см.https://graypaper.com/)
Эта статья предполагает, что читатель знаком с следующими концепциями:
Давайте сначала вспомним самые инновационные особенности Polkadot1.
В настоящее время мы обсуждаем сеть уровня 1, которая размещает другие сети "блокчейн" уровня 2, аналогично Polkadot и Ethereum. Следовательно, термины Уровень 2 и Парачейн могут использоваться взаимозаменяемо.
Основная проблема масштабируемости блокчейна может быть сформулирована так: есть набор валидаторов, которые, используя крипто-экономику доказательства доли, обеспечивают доверие к выполнению определенного кода. По умолчанию эти валидаторы должны повторно выполнять весь работу друг друга. Пока мы настаиваем на том, что все валидаторы всегда повторно выполняют все, весь система остается не масштабируемой.
Обратите внимание, что, пока принцип абсолютной повторной выполнения остается неизменным, увеличение количества валидаторов в этой модели фактически не улучшает пропускную способность системы.
Это демонстрирует монолитный блокчейн (в отличие от черепаховидного). Все сетевые валидаторы обрабатывают входы (т. е. блоки) один за другим. В такой системе, если уровень 1 хочет разместить больше уровней 2, то все валидаторы должны повторно выполнить все задания уровней 2. Очевидно, что такой метод не масштабируется.
Оптимистические роллапы решают эту проблему, перезапуская (доказательства мошенничества) только при утверждении о мошенничестве. Роллапы на основе SNARK решают эту проблему, используя тот факт, что стоимость проверки доказательств SNARK значительно ниже стоимости их генерации, что позволяет всем валидаторам эффективно проверять доказательства SNARK. Для получения более подробной информации обратитесь к разделу «Приложение: Диаграмма масштабируемости».
Простым решением для шардирования является разделение набора валидаторов на более мелкие подмножества и повторное выполнение блоков уровня 2 этими более маленькими подмножествами. В чем проблема этого подхода? По сути, мы шардируем как выполнение, так и экономическую безопасность сети. Такое решение уровня 2 имеет более низкий уровень безопасности по сравнению с уровнем 1, и его безопасность дополнительно снижается по мере того, как мы делим набор валидаторов на большее количество шардов.
В отличие от оптимистичных роллапов, где издержки повторного выполнения не всегда можно избежать, Polkadot был разработан с учетом разделенного выполнения. Это позволяет части валидаторов повторно выполнять блоки уровня 2, предоставляя достаточно крипто-экономических доказательств всей сети, чтобы доказать, что блок уровня 2 так же безопасен, как если бы его выполнил полный набор валидаторов. Это достигается благодаря новаторскому (и недавно формализованному) механизму, известному как ELVES. (Для получения более подробной информации см.:https://eprint.iacr.org/2024/961)
Коротко говоря, ELVES можно рассматривать как механизм «подозрительных роллапов». Через несколько раундов валидаторы активно опрашивают других валидаторов о том, действителен ли данный блок уровня 2, мы можем с высокой вероятностью подтвердить его действительность. В случае спора полный набор валидаторов быстро вовлекается. Основатель Polkadot Роб Хабермейер подробно объяснил это в статье. (Для получения более подробной информации см.: https://polkadot.com/blog/polkadot-v1-0-sharding-and-economic-security#approval-checking-and-finality)
ELVES позволяют Polkadot обладать как осколочным выполнением, так и общей безопасностью, двумя свойствами, которые ранее считались взаимоисключающими. Это основное техническое достижение Polkadot1 в масштабируемости.
Теперь давайте продвинемся вперед с аналогией "Ядра". Разделенная выполнение блокчейна очень похожа на ЦП: так же как ЦП может иметь несколько ядер, выполняющих инструкции параллельно, Polkadot может обрабатывать блоки уровня 2 параллельно. Поэтому блок уровня 2 в Polkadot называется парачейн, а среда, где более мелкие подмножества валидаторов повторно выполняют один блок уровня 2, называется "ядром". Каждое ядро может быть абстрагировано как "группа сотрудничающих валидаторов".
Вы можете представить монолитный блокчейн в том, что он обрабатывает один блок за раз, в то время как Polkadot обрабатывает как блок ретрансляторной цепи, так и блок парачейна для каждого ядра в один и тот же период времени.
До сих пор мы обсуждали только масштабируемость и фрагментированное выполнение, предлагаемые Polkadot. Важно отметить, что каждый из фрагментов Polkadot, фактически, является совершенно отдельным приложением. Это достигается благодаря метапротоколу, сохраненному в виде байткода: протоколу, который хранит определение самого блокчейна в виде байткода в его состоянии. В Polkadot 1.0 в качестве предпочтительного байткода используется WASM, в то время как в JAM принят PVM/RISC-V.
Вот почему Полкадот называют гетерогенным черепичным блокчейном. (Для получения более подробной информации см.:https://x.com/kianenigma/status/1790763921600606259) Каждый уровень 2 - это совершенно другое приложение.
Один важный аспект Polkadot2 заключается в том, что использование ядер становится более гибким. В исходной модели Polkadot сроки аренды ядер варьировались от 6 месяцев до 2 лет, что подходило для предприятий с изобилием ресурсов, но было менее реальным для меньших команд. Функция, позволяющая более гибко использовать ядра Polkadot, называется "Agile Coretime". (Дополнительные сведения см. в: https://polkadot.com/agile-coretime) В этом режиме срок аренды ядра может быть как один блок, так и до месяца, с предельной ценой для тех, кто хочет арендовать на более длительный период.
Другие особенности Polkadot 2 постепенно раскрываются по мере развития нашего обсуждения, поэтому здесь нет необходимости подробно на них останавливаться.
Для понимания JAM важно сначала понять, что происходит, когда блок уровня 2 входит в ядро Polkadot. Ниже приведено упрощенное объяснение.
Помните, что ядро в основном состоит из набора валидаторов. Так что когда мы говорим "данные отправляются в ядро", это означает, что данные передаются этому набору валидаторов.
Блок уровня 2 вместе с частью состояния этого уровня 2 отправляется в ядро. Эти данные содержат всю необходимую информацию для выполнения блока уровня 2.
Часть основных валидаторов повторно выполнит блок уровня 2 и продолжит выполнение задач, связанных с консенсусом.
Эти основные валидаторы предоставляют повторно выполненные данные другим валидаторам за пределами ядра. Согласно правилам ELVES, эти валидаторы могут решить, повторно выполнить ли блок уровня 2, для этого им нужны эти данные.
Важно отметить, что до сих пор все эти операции происходят вне основного блока Polkadot и функции перехода состояния. Все происходит в ядре и слое доступности данных.
Из этого мы можем изучить несколько ключевых операций, которые выполняет Polkadot:
Понимание этого является основой для понимания JAM. Вот краткое изложение:
Понимая это, мы можем сейчас представить JAM.
JAM - новый протокол, вдохновлённый дизайном Polkadot и полностью совместимый с ним, нацеленный на замену ретрансляционной цепи Polkadot и полную децентрализацию и неограниченное использование основной функциональности.
Построенный на Polkadot 2, JAM стремится сделать развертывание Layer 2s на ядре более доступным, предлагая даже большую гибкость, чем модель agile-coretime.
Это достигается в основном путем предоставления разработчикам трех основных концепций, обсуждаемых ранее: выполнение on-chain, выполнение in-core и уровень DA.
Другими словами, в JAM разработчики могут:
Это образует основной обзор целей JAM. Само собой разумеется, многие из них были упрощены, и протокол, скорее всего, будет развиваться дальше.
С этим базовым пониманием мы теперь можем углубиться в некоторые из особенностей JAM в следующих главах.
В JAM то, что ранее называли Layer 2s или парачейнами, теперь называетсяУслуги, а то, что ранее называлось блоками или транзакциями, теперь называетсяРабочие элементыилиРабочие пакеты. Конкретно, элемент работы принадлежит к сервису, а рабочий пакет - это коллекция элементов работы. Эти термины намеренно широкие, чтобы охватывать случаи использования за пределами блокчейна/Layer 2.
Сервис описывается тремя точками входа, две из которых являются fn refine() и fn accumulate(). Первая описывает, что делает сервис во время выполнения в памяти, а вторая описывает, что делает во время выполнения на цепи.
Наконец, названия этих точек входа являются причиной, по которой протокол называется JAM (Join Accumulate Machine).Присоединитьсяотносится кfn refine()
, что является фазой, когда все ядра Polkadot обрабатывают большой объем работы параллельно по различным сервисам. После обработки данных они переходят к следующему этапу. Накопитьотносится к процессу накопления всех этих результатов в основное состояние JAM, который происходит во время фазы выполнения on-chain.
Рабочие элементы могут точно указать код, который они выполняют в ядре и на цепи, а также то, как, если и откуда они читают или записывают содержимое в Распределенном озере данных.
При рассмотрении существующей документации по XCM (выбранный язык Полкадота для коммуникации парачейна), вся коммуникация является асинхронной (дополнительные сведения см. вздесьЭто означает, что после отправки сообщения вы не можете ждать его ответа. Асинхронное общение является симптомом несогласованности в системе и одним из основных недостатков постоянно шардированных систем, таких как Polkadot 1, Polkadot 2 и существующие экосистемы Layer 2 Ethereum.
Однако, как описано в разделе 2.4Graypaper, полностью согласованная система, которая остаётся синхронной для всех своих арендаторов, может масштабироваться только до определенной степени, не жертвуя универсальностью, доступностью или устойчивостью.
Здесь JAM выделяется: введя несколько функций, JAM достигает нового промежуточного состояния, известного как полуконсистентная система. В этой системе подсистемы, которые часто общаются, могут создать согласованную среду друг с другом, не заставляя весь систему оставаться согласованной. Это было наилучшим образом описано доктором Гэвином Вудом, автором Серого бумаги, в интервью: https://www.youtube.com/watch?t=1378&v=O3kRAVBTkfs&embeds_referring_euri=https%3A%2F%2Fblog.kianenigma.nl%2F&source_ve_path=OTY3MTQ
Другой способ понять это - рассматривать Polkadot/JAM как разделенную систему, где границы между этими осколками являются гибкими и динамически определяемыми.
Polkadot всегда был разделенным и полностью гетерогенным.
Теперь это не только расщеплено и гетерогенно, но эти границы осколков могут быть гибко определены - то, что Гэвин Вуд называет "полусогласованной" системой в своих твитах и Graypaper. (см.https://x.com/gavofyork?ref_src=twsrc%5Etfw、https://graypaper.com/)
Несколько функций делают этот полусогласованный статус возможным:
Важно отметить, что хотя эти возможности возможны в JAM, они не являются обязательными на уровне протокола. Следовательно, некоторые интерфейсы теоретически асинхронны, но могут функционировать синхронно на практике из-за сложных абстракций и стимулов. CorePlay, о котором будет рассказано в следующем разделе, является примером этого явления.
Этот раздел знакомит с CorePlay, экспериментальным концептом в среде JAM, который можно описать как новую модель программирования смарт-контрактов. На момент написания CorePlay еще не был полностью определен и остается спекулятивной идеей.
Для понимания CorePlay нам сначала нужно познакомиться с виртуальной машиной (VM), выбранной JAM: PVM.
PVM - ключевая деталь как в JAM, так и в CorePlay. Нижестоящие детали PVM выходят за рамки этого документа и лучше всего объясняются предметными экспертами в Graypaper. Однако для данного объяснения мы выделим несколько ключевых атрибутов PVM:
Последнее особенно важно для CorePlay.
CorePlay - это пример того, как гибкие примитивы JAM могут быть использованы для создания синхронной и масштабируемой среды смарт-контрактов с высоко гибким программным интерфейсом. CorePlay предлагает, чтобы смарт-контракты на основе акторов развертывались непосредственно на ядрах JAM, позволяя им воспользоваться синхронными программными интерфейсами. Разработчики могут писать смарт-контракты, как если бы они были простыми функциями fn main(), используя выражения, например let результат = other_coreplay_actor(data).await?общаться. Еслидругой актер CorePlayнаходится на той же ядро JAM в том же блоке, этот вызов синхронен. Если это на другом ядре, актер будет приостановлен и возобновлен в последующем блоке JAM. Это становится возможным благодаря службам JAM, их гибкому планированию и возможностям PVM.
Наконец, давайте подытожим основную причину того, что JAM полностью совместим с Polkadot. Флагманским продуктом Polkadot являются его гибкие ядерные парачейны, которые продолжают работу в JAM. Самые ранние развернутые сервисы в JAM, скорее всего, будут называться CoreChains или Parachains, позволяя существующим парачейнам в стиле Polkadot-2 работать на JAM.
Дополнительные сервисы могут быть развернуты на JAM, и существующий сервис CoreChains может взаимодействовать с ними. Однако текущие продукты Polkadot останутся надежными, просто открывая новые возможности для существующих команд парачейн.
Большая часть этого документа обсуждает масштабируемость с точки зрения разделения выполнения. Однако мы также можем рассмотреть эту проблему с точки зрения разделения данных. Интересно, что мы обнаруживаем, что это похоже на упомянутую ранее полуконсистентную модель. В принципе, полностью согласованная система превосходна, но не масштабируется, в то время как полностью несогласованная система хорошо масштабируется, но неоптимальна. JAM с его полуконсистентной моделью представляет новую возможность.
JAM предлагает что-то более чем эти два варианта: это позволяет разработчикам публиковать произвольные данные в слой JAM DA, который служит своеобразным золотым стандартом между on-chain и off-chain данными. Новые приложения могут быть построены с использованием слоя DA для большей части своих данных, в то время как только абсолютно критические данные сохраняются в состоянии JAM.
Этот раздел пересматривает нашу перспективу масштабируемости блокчейна, которая также обсуждается в Graypaper, хотя здесь представлена более кратко.
Масштабируемость блокчейна в значительной степени следует традиционным методам распределенных систем: вертикальное масштабирование и горизонтальное масштабирование.
Вертикальное масштабирование - это то, на что сосредотачиваются платформы, такие как Solana, максимизируя пропускную способность путем оптимизации как кода, так и аппаратного обеспечения до предела.
Горизонтальное масштабирование - это стратегия, принятая Ethereum и Polkadot: снижение нагрузки, которую каждому участнику нужно обрабатывать. В традиционных распределенных системах это достигается путем добавления большего количества реплицирующих машин. В блокчейне "компьютером" является весь сеть валидаторов. Распределяя задачи между ними (как это делает ELVES) или оптимистически снижая их ответственность (как в оптимистических Rollups), мы уменьшаем нагрузку на весь набор валидаторов, тем самым достигая горизонтального масштабирования.
В блокчейне горизонтальное масштабирование можно сравнить с "уменьшением количества машин, которые должны выполнять все операции".
В заключение:
Этот раздел основан на аналогии Роба Хабермейера с Sub0 2023: Polkadot: Ядро/Пользовательское пространство | Sub0 2023 - YouTube (see: https://www.youtube.com/watch?v=15aXYvVMxlw) представляя JAM как обновление для Polkadot: обновление ядра на том же оборудовании.
В типичном компьютере мы можем разделить весь стек на три части:
В Polkadot аппаратное обеспечение — основная инфраструктура, обеспечивающая вычисления и доступность данных — всегда было ядрами, как уже упоминалось.
В Polkadot ядро до сих пор состоит из двух основных частей:
Оба из них существуют в цепи ретрансляции Polkadot.
Приложения пользовательского пространства, с другой стороны, представляют собой сами парачейны, их собственные токены и все, что построено на их основе.
Мы можем визуализировать этот процесс следующим образом:
Polkadot давно предполагал перенос большего количества основных функций к его основным пользователям - парачейнам. Именно этой цели и служит концепция Минимального реле RFC. (Подробнее см.:Минимальный протокол ретрансляции RFC)
Это означает, что Цепь Реле Polkadot будет заниматься только предоставлением протокола парачейна, тем самым уменьшая пространство ядра в некоторой степени.
Как только эта архитектура будет реализована, будет легче представить, как будет выглядеть миграция JAM. JAM значительно уменьшит ядро Polkadot, сделав его более универсальным. Кроме того, протокол Parachains перейдет в пользовательское пространство, поскольку это один из немногих способов построения приложений на одном и том же ядре (аппаратном) и ядре (JAM).
Это также подтверждает, почему JAM заменяет цепочку ретрансляции Polkadot, а не парачейны.
Другими словами, мы можем рассматривать миграцию JAM как обновление ядра. Основное аппаратное обеспечение остаётся неизменным, и большая часть содержимого старого ядра перемещается в пользовательское пространство для упрощения системы.