ОБНОВЛЕНИЕ 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». «Элемент» - это топологический порядок транзакции внутри блока.
Таким образом, мы можем интерпретировать этот график как:
- У корневого узла ОДИН ребенок
- который представлен адресом «16b5cNetCj…»
- и у этого потомка есть две версии, представленные txids «fd9b…» и «1462…».
- И мы можем сказать из заказа, что узел с txid 1462… является самой последней версией.
То же самое и с двумя пурпурными листовыми узлами. Оба они обозначены адресом «159irUqbXV…», поэтому существуют в одном пространстве, но в разное время. Самый левый пурпурный узел - самый последний, так как он был создан совсем недавно.
Снимок
Значение этой особенности очень велико. Это означает, что вы можете создать снимок любого «пространства» в любой момент «времени».
Например, мы могли бы запросить моментальный снимок Metanet на высоте блока 588603 с общим предком 04e1a7e0d325a6e986ce43d3534f34aed52d0979be12522ad28d1cc49f0199b8.
{ "v": 3, "q": { "find": { "$and": [{ "ancestor.tx": "04e1a7e0d325a6e986ce43d3534f34aed52d0979be12522ad28d1cc49f0199b8" }, { "blk.i": { "$lt": 588604 } }] } } }
Это выглядело бы так:
Обратите внимание, как исчез новый фиолетовый узел, потому что его еще нет.
ГОЛОВА
Часто вы можете захотеть увидеть только «Настоящее». Это означает только последний снимок дерева.
Этого было нелегко достичь с помощью старой версии языка запросов Metanaria Metanet Query Language, потому что не было возможности отслеживать самую последнюю версию.
В этом обновлении Metanaria добавила дополнительный атрибут "head"
, который отмечает самую последнюю версию каждого узла.
Например, между двумя коричневыми узлами только самый последний узел будет иметь атрибут "head"
, равный true
.
Это означает, что мы можем создать снимок «самой последней версии метасети» с помощью такого запроса:
{ "v": 3, "q": { "find": { "ancestor.tx": "04e1a7e0d325a6e986ce43d3534f34aed52d0979be12522ad28d1cc49f0199b8", "head": true } } }
Обратите внимание, что больше нет повторяющихся цветов.
Поскольку он фильтрует только те узлы, для которых атрибут "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