ОБНОВЛЕНИЕ 7 декабря 2019 г .: конечные точки Metagraph и Metanaria, упомянутые в этой статье, устарели. Вместо этого используйте одну из следующих последних версий:

1. Конечная точка Metanet: https://metanet.planaria.network

2. МАМА: https://mom.planaria.network

Metanet - это протокол Биткойн, который позволяет вам представлять иерархию объектов, которые развиваются с течением времени. По сути, вы можете кодировать как ВРЕМЯ, так и ПРОСТРАНСТВО, используя Metanet.

Кстати, если вы впервые изучаете Metanet, сначала прочтите мою первую статью:



На прошлой неделе я выпустил API под названием Metanaria, это узел Planaria, который позволяет выполнять гибкие запросы к глобальной структуре данных Metanet, которая живет в Биткойне.

Я также выпустил обозреватель графиков Metanet под названием Metagraph. Этот проводник работает на базе Metanaria API.

Как это работает

Есть много разных способов думать о Metanet, но одна аналогия - файловая система. Вы можете создать иерархическую файловую систему, создав DAG (направленный ациклический граф) транзакций Биткойн. Каждый объект файла или папки уникальным образом представлен как биткойн-адрес. Вот пример:

Вы можете думать об этом как о «пространстве», содержащем объекты.

Однако есть еще одно измерение: время.

Время захвата

Как мы видели выше, мы можем использовать метафору «пространство для хранения файлов», чтобы понять структуру данных. Однако Metanet также позволяет нам представить, как каждый узел развивается с течением времени.

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

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

Чтобы решить эту проблему, в новой версии Metagraph добавлены цветовые коды. Если два узла имеют один и тот же цвет и имеют одного и того же родителя, они представляют один и тот же объект, существующий во времени. Например, давайте посмотрим на график ниже:

Два коричневых узла - это один и тот же объект, но один из «блока 588600, элемент 289», а другой из «блока 588600, элемент 290». «Элемент» - это топологический порядок транзакции внутри блока.

Таким образом, мы можем интерпретировать этот график как:

  1. У корневого узла ОДИН ребенок
  2. который представлен адресом «16b5cNetCj…»
  3. и у этого потомка есть две версии, представленные txids «fd9b…» и «1462…».
  4. И мы можем сказать из заказа, что узел с txid 1462… является самой последней версией.

То же самое и с двумя пурпурными листовыми узлами. Оба они обозначены адресом «159irUqbXV…», поэтому существуют в одном пространстве, но в разное время. Самый левый пурпурный узел - самый последний, так как он был создан совсем недавно.

Снимок

Значение этой особенности очень велико. Это означает, что вы можете создать снимок любого «пространства» в любой момент «времени».

Например, мы могли бы запросить моментальный снимок Metanet на высоте блока 588603 с общим предком 04e1a7e0d325a6e986ce43d3534f34aed52d0979be12522ad28d1cc49f0199b8.

{
  "v": 3,
  "q": {
    "find": {
      "$and": [{
        "ancestor.tx": "04e1a7e0d325a6e986ce43d3534f34aed52d0979be12522ad28d1cc49f0199b8"
      }, {
        "blk.i": {
          "$lt": 588604
        }
      }]
    }
  }
}

Попробуйте: https://metagraph.planaria.network/#ewogICJ2IjogMywKICAicSI6IHsKICAgICJmaW5kIjogewogICAgICAiJGFuZCI6IFt7CiAgICAgICAgImFuY2VzdG9yLnR4IjogIjA0ZTFhN2UwZDMyNWE2ZTk4NmNlNDNkMzUzNGYzNGFlZDUyZDA5NzliZTEyNTIyYWQyOGQxY2M0OWYwMTk5YjgiCiAgICAgIH0sIHsKICAgICAgICAiYmxrLmkiOiB7CiAgICAgICAgICAiJGx0IjogNTg4NjA0CiAgICAgICAgfQogICAgICB9XQogICAgfQogIH0KfQ==

Это выглядело бы так:

Обратите внимание, как исчез новый фиолетовый узел, потому что его еще нет.

ГОЛОВА

Часто вы можете захотеть увидеть только «Настоящее». Это означает только последний снимок дерева.

Этого было нелегко достичь с помощью старой версии языка запросов Metanaria Metanet Query Language, потому что не было возможности отслеживать самую последнюю версию.

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

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

Это означает, что мы можем создать снимок «самой последней версии метасети» с помощью такого запроса:

{
  "v": 3,
  "q": {
    "find": {
      "ancestor.tx": "04e1a7e0d325a6e986ce43d3534f34aed52d0979be12522ad28d1cc49f0199b8",
      "head": true
    }
  }
}

Обратите внимание, что больше нет повторяющихся цветов.

Попробуйте здесь: https://metagraph.planaria.network/#ewogICJ2IjogMywKICAicSI6IHsKICAgICJmaW5kIjogewogICAgICAiYW5jZXN0b3IudHgiOiAiMDRlMWE3ZTBkMzI1YTZlOTg2Y2U0M2QzNTM0ZjM0YWVkNTJkMDk3OWJlMTI1MjJhZDI4ZDFjYzQ5ZjAxOTliOCIsCiAgICAgICJoZWFkIjogdHJ1ZQogICAgfQogIH0KfQ==

Поскольку он фильтрует только те узлы, для которых атрибут "head" установлен в true, он отображает только самый последний снимок дерева: настоящее.

Заключение

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

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

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

Вы можете представить себе, что с помощью этих основных функций вы уже можете создавать системы, эквивалентные Git или Wiki. Но это еще не все.

Любопытный?

Используйте API для создания приложений: https://metanaria.planaria.network

Изучите глобальный метанет: https://metagraph.planaria.network

Присоединяйтесь к сообществу разработчиков биткойнов: https://bitdb.network/atlantis

Следуйте за мной в Twitter: https://twitter.com/_unwriter