Объектная модель Metanet

Сегодня я выпускаю MOM, новый мощный узел Planaria для Metanet. MOM можно охарактеризовать как:

Метанет * BitCOM = MOM

Попробуйте здесь: https://mom.planaria.network

1. Что такое МАМА?

2. Metanet, встречайте BitCom.

3. Как работает МАМА?

4. Что все это значит?

5. Вывод

1. Что такое МАМА?

У нас уже есть конечная точка Метанет Планария. Так чем же мама отличается?

Чтобы понять MOM, нам нужно сначала понять проблемы, которые он решает. Давайте посмотрим на отрывок из спецификации протокола Metanet:

Спецификация, вероятно, была написана некоторое время назад, поэтому она не принимает во внимание все безумие (в хорошем смысле), которое происходит в Биткойне сегодня. Чтобы быть конкретным, спецификация включает только примеры «единственного идентификатора подпротокола».

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



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

Однако проблема заключалась в том, что это затрудняло использование существующих узлов Planaria, таких как Genesis, Babel и т. Д., Для запроса структуры данных, потому что позиционные индексы push-данных протокола больше не фиксируются. Некоторые протоколы имеют необязательные параметры (например, B: //), а некоторые протоколы имеют спецификацию переменной длины (например, MAP). И когда вы объединяете их, становится невозможным определить, какие push-данные должны отображаться в каком позиционном индексе в выходных данных транзакции.

Это была важная проблема для всех конечных точек Planaria, поэтому мне пришлось быстро придумать решение под названием BOB (биткойн OP_RETURN Bytecode), которое разбивает сценарии транзакций на фрагменты стека вызовов, называемые «ленты» и «ячейки». каждый со своей собственной локальной областью видимости, а также локальным позиционным индексом для набора данных push:

Прочтите статью о BOB, если вы еще этого не сделали:



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

Как видите, сам протокол Metanet тоже очень гибкий. Есть 2 обязательных поля (Metanet Flag и Pnode), а третье поле (TxIDparent) используется для создания границ между узлами. Кроме того, вы можете добавить еще больше необязательных параметров. На самом деле, остальное предоставляется разработчикам, потому что Metanet должен обрабатывать только структуры данных.

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

И я решил это с помощью BOB (для протоколов без метанет). А теперь с MOM (для протоколов metanet).

Https://mom.planaria.network

MOM использует тот же формат сериализации данных, что и BOB, что упрощает работу со сложными протоколами BitCom

Кроме того, MOM реализует структуру данных графа, предоставляемую протоколом Metanet, что упрощает выполнение запросов к графу Metanet.

2. Metanet, встречайте BitCom.

С MOM становится легко объединить Metanet и Bitcom. Это означает, что вы можете:

  1. Использовать существующие протоколы Bitcom в узле Metanet
  2. Используйте несколько протоколов Bitcom в узле Metanet через конвейер BitCom.

Следует запомнить одно:

Поскольку MOM разбивает байт-код на части, используя символ вертикальной черты |, вам нужно не забыть добавить символ трубы в качестве разделителя между частью Metanet и частью Bitcom. См. Пример ниже:

Как только вы сделаете это для своих транзакций, MOM автоматически индексирует ваши транзакции Metanet, используя схему BitCom!

3. Как работает МАМА?

MOM - это комбинация двух:

  1. Структура данных: Metanet Planaria
  2. Схема данных: BOB Planaria

БОБ + Метанет = МАМА

Это означает, что MOM одновременно поддерживает запросы байтового кода OP_RETURN BOB, а также запросы графа Metanet. Итак, чтобы узнать, как работает MOM, вам просто нужно изучить запросы BOB и Metanet.

а. BOB

Данные MOM индексируются так же, как BOB Planaria, что упрощает запрос байт-кода OP_RETURN. Узнайте больше о BOB Planaria здесь:



б. Метанет

MOM также индексирует структуру данных Metanet таким же образом, как работает существующий Metanet Planaria endpiont. Узнайте больше о Metanet Planaria здесь:

Часть 1:



Часть 2:



Также вот действительно отличная статья, в которой подробно рассказывается о графической структуре Metanet:



4. Что все это значит?

Это совпадение между Metanet и BitCom означает бурный рост комбинаций протоколов. BitCom уже рос как трава. Если умножить это на гибкость протокола Metanet, мы получим всевозможные возможности.

а. Модули Plug and Play

До сих пор я думаю, что большинство разработчиков протокола Metanet создавали свою собственную схему протокола при реализации Metanet. Но если вспомнить:

  1. BitCom - это схема данных: BitCom позволяет описывать правила, используемые для интерпретации транзакции. BitCom предназначен для описания узла.
  2. Metanet - это структура данных: Metanet позволяет создавать структуры данных между транзакциями. Метанет предназначен для описания края.

Итак, если вы придумываете свою собственную схему для реализации графика Metanet, вы, по сути, объединяете две функции в одну.

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

б. Множественное наследование

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

Это похоже на концепцию программирования, известную как… угадайте, что… протоколы!

Например, когда вы создаете приложение для iOS, вы реализуете представление таблицы с прокруткой, реализуя два модуля: «UIViewController» и «UITableViewDataSource». Когда вы реализуете методы обратного вызова, требуемые протоколами, приложение начнет действовать как представление таблицы с прокруткой.

В качестве аналогичного примера мы могли бы подумать о сообщении Twetch, которое использует три протокола: B, AIP (протокол идентификации автора) и MAP (протокол магических атрибутов). Используя аналогию, мы можем думать об этом как о:

class TwetchPost: B, AIP, MAP {
  ...
}

И как только вы создадите экземпляр класса в объекте, вы сможете создавать с ними ассоциации.

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

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

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

c. BitCom + Metanet

Разделенная на части структура байт-кода MOM также дает разработчикам возможность рассматривать Metanet как протокол расширения. По сути, вы можете рассматривать Metanet как протокол более высокого уровня, который находится поверх одного или нескольких протоколов BitCom.

Эта многоуровневая архитектура означает:

  1. Необязательно строить все как протокол Metanet с самого начала. Вы можете сначала создать стек BitCom, а затем легко перейти на BitCom + Metanet, просто подключив Metanet к существующему протоколу, который вы разработали (или даже повторно используя сторонние протоколы), не беспокоясь о том, как это изменит ваш образ жизни. придется иметь дело с данными.
  2. Если у вас уже есть протокол BitCom, вы можете легко его использовать.

Чтобы использовать аналогию, это похоже на то, как сообщество Ruby on Rails использует Devise gem как стандарт де-факто для аутентификации, потому что он упрощает plug-and-play. Часто разработчики rails начинают с создания однопользовательского CRUD-приложения без аутентификации, чтобы проверить работоспособность своей концепции. Позже они добавляют драгоценный камень разработки для аутентификации. Таким образом, разработчики могут быстро прототипировать свою базовую логику сначала для создания однопользовательского приложения, а затем превратить его в многопользовательское приложение, добавив гем devise.

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

Например, вы можете начать с создания чистых приложений BitCom и использовать BOB для их анализа (аналогично тому, как вы сначала создаете простое однопользовательское приложение CRUD с базовой логикой). Этого должно хватить для многих приложений, которым не нужна сложная структура данных.

Но если вы хотите добавить Metanet, дверь всегда открыта. Вы легко можете перейти в МАМА. Ничего с точки зрения запросов байт-кода не изменится, поскольку BOB и MOM используют одну и ту же схему байт-кода, MOM просто добавляет слой структуры данных поверх BOB, позволяя вам также выполнять графические запросы.

Вы даже можете поддерживать как необработанное приложение BitCom, так и версию BitCom с метафайлами одновременно, используя BOB для первого и MOM для второго.

d. OP_RETURN Обратная совместимость

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

Одним из таких примеров является то, как код операции OP_RETURN «вернется» к своей исходной роли, действуя как оператор возврата, вместо того, чтобы просто использовать его для взлома встраивания данных. Однако эта функция означает, что вам нужно больше заботиться о том, как вы используете OP_RETURN сейчас. Команда узла Bitcoin SV рекомендует просто перейти на использование OP_0 OP_RETURN вместо OP_RETURN. Учить больше:



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

Но всегда есть решение.

С BOB и MOM переход на OP_0 OP_RETURN в 2020 году не представляет проблемы. Поскольку он разбивает все push-данные на группы, вы можете фильтровать как устаревшие транзакции OP_RETURN, так и новые транзакции OP_0 OP_RETURN с помощью одного запроса. В этой статье объясняется, как это работает:



е. Перспективы (OP_PUSHDATA / OP_DROP и др.)

Если вы прочитаете спецификацию протокола Metanet, вы можете заметить некоторые расширенные варианты использования, когда он поддерживает несколько выходов и даже параметр OP_PUSHDATA + OP_DROP.

OP_PUSHDATA4, который будет повторно включен в 2020 году, позволит вам встраивать до 4 ГБ ~ данных за одну транзакцию.

Это интересно, но, как и проблема перехода OP_RETURN в OP_0 OP_RETURN, без BOB / MOM, поддержка этих различных других опций была бы большой головной болью, потому что разработчикам пришлось бы беспокоиться о том, как запросить все эти различные комбинации столь же простым способом. насколько возможно.

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

5. Вывод

Комбинация BitCom и Metanet дает разработчикам все инструменты для создания собственных протокольных операционных систем.

MOM - благодаря своей простой структуре данных графа и схеме данных байт-кода OP_RETURN - упрощает разработчикам создание сложных приложений Metanet.

Попробуйте MOM: https://mom.planaria.network

Задавайте вопросы и сообщайте об ошибках: https://bitdb.network/atlantis

Будьте в курсе: https://twitter.com/_unwriter