Рубрики
Без рубрики

Обновление базы знаний – Модель Atom

Введение Tempo (алгоритм консенсуса Radix) обеспечивает одно фундаментальное ограничение: e… С тегами blockchain, java, javascript, kotlin.

​Темп (алгоритм консенсуса Radix) обеспечивает одно фундаментальное ограничение: конечную согласованность состояния. Чтобы осмысленно опираться на это ограничение, нам нужны высокоуровневые, ориентированные на приложения ограничения и структуры. Модель Atom была разработана для расширения возможностей децентрализованных приложений, обеспечивая расширяемые реализации финансовых систем (создание, чеканка, передача и запись токенов), хранение и передачу данных (обмен сообщениями) и многое другое.

В распределенном хранилище данных все участники должны согласовать набор правил, определяющих, как можно изменять состояние. Поскольку не каждый узел может хранить все состояния, состояние должно быть разделено на более мелкие части состояния, которые можно проверить, не требуя всех других состояний. Чтобы это сработало, изменения состояния должны быть явными и должны поддерживать механизм, который принимает или отклоняет пакет изменений состояния как единое целое. В Радиксе эти изменения состояния являются Частицами, и эта атомная партия Частиц является Атомом. Модель Atom описывает его структуру, правила и интерфейс с Tempo.

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

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

Когда нужно отправить сразу много таких изменений состояния, трудно определить, какие из них относятся друг к другу. Это создает проблемы для проверки (т.Е. принятия/отклонения изменений), а также для конечных пользователей (“какие частицы что представляют?”). Чтобы обеспечить четкий механизм взаимосвязи частиц, связанные частицы группируются в группы частиц.

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

Атомы, Группы частиц и Частицы являются основными структурными элементами модели Атома. В следующих разделах они подробно описаны.

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

Экземпляры частиц разных типов частиц могут быть смешаны внутри атома и внутри Группы Частиц, как это разрешено типом частиц. То, что тип частиц может разрешать и запрещать в отношении состояния его экземпляров, далее объясняется в статье Типы частиц .

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

Обновление Частицы изменяет не ее содержимое, а ее состояние. Фактически, содержимое Частицы, являющейся равной, используется для определения того, что более поздняя Частица с равным содержанием предназначена для обновления. ” несуществующий”, “действительный” и “недопустимый” – это три возможных состояния жизненного цикла любого экземпляра частицы, и тип частицы определяет, какие состояния разрешены в каком порядке. То есть конечное число состояний жизненного цикла, которые может принять экземпляр частицы, управляется конечным автоматом жизненного цикла, который описывает тип частицы. Учитывая состояния жизненного цикла частиц, рассмотрим пример того, как частицы могут обновляться с течением времени:

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

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

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

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

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

< < атомный >/группы/< Индекс группы >/частицы/< Индекс частицы >

Обратите внимание, что ‘atomId’ вычисляется с использованием хэша атома. См. Формальное определение для дальнейшего объяснения. Например, идентификатор частицы

123/группы/1/частицы/2

относится к Частице с индексом 2 в Группе частиц с индексом 1, как показано здесь:

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

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

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

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

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

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

Атом принимается только тогда, когда ни одна из его частиц не отвергается, независимо от их положения в атоме.

Формальные структурные определения модели Atom представляют собой обзор высокого уровня. Для целей этого определения [элемент] + должен обозначать, что элемент должен быть включен по крайней мере один раз, [элемент]* должен обозначать, что элемент может быть включен произвольное количество раз, а элемент должен обозначать, что элемент должен быть включен ровно один раз.

Общие метаданные – это произвольные данные об элементе (например, атоме или группе частиц) в хранилище ключей и значений на основе строк. Строки имеют формат UTF-8, их ключи и значения произвольны. Единственным ограничением является размер, который косвенно накладывается общим ограничением размера атома. Общие метаданные определяются как

Ключ = Значение = Метаданные = ]*

Структура частиц определена в документе Particle . Поскольку частицы не имеют какой-либо общей требуемой структуры, общей базовой структуры не существует.

Группа частиц содержит непустой индексированный список Частиц с общими метаданными. Структура группы частиц такова

Формальная Структура Группы Частиц

Группа частиц = Общие метаданные [Частица]+

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

Отметка времени когда Атом был представлен положительное целое число отметка времени
должно быть, после Вселенной был создан

Структура атома определяется как

Атом = Метаданные Атома [Группа Частиц]+

Максимальное количество байтов, которое может иметь компактный сериализованный атом, равно 65536.

Формальная схема – это схема JSON, которой должна следовать сериализованная версия объекта в формате JSON.

Схема частиц определена в документе Particle. Поскольку частицы не имеют какой-либо общей требуемой структуры, общей базовой схемы не существует.

Формальная схема JSON группы частиц доступна здесь.

Формальная схема JSON атома доступна здесь.

Модель Atom в настоящее время реализована на Java в ветке разработки ядра Radix (основная реализация узла Radix) и клиентских библиотек Radix.

Реализация ядра Radix в настоящее время доступна только разработчикам ядра Radix.

Доступный radixdlt-java Ява
Доступный radixdlt-js язык JavaScript
Доступный radixdlt-котлин Котлин
В разработке radixdlt-быстрый Быстрый

Телеграмма для общего чата ​Discord для чата разработчиков Reddit для общего обсуждения Форум для технического обсуждения ​ Твиттер для объявлений Электронная почта рассылка новостей для еженедельных обновлений Отправить по электронной почте hello@radixdlt.com для общих запросов

Оригинал: “https://dev.to/radixdlt/knowledgebase-update-atom-model-263i”