Давайте вместе узнаем о модуле IOTA MAM

Поскольку я следил за IOTA в течение последнего года или около того, я работал над несколькими проектами то тут, то там. В последнее время мне хотелось получить некоторый опыт работы с MAM и Flash-каналами. Поскольку я не мог найти слишком много руководств, я подумал, почему бы не написать одно? Так что это познавательный опыт для нас обоих. Если вы видите недостатки в моем коде или логике и т. Д., Дайте мне знать - я не претендую на звание эксперта, просто еще один парень, пытающийся понять, как создавать вещи с помощью этой новой технологии.

Ok. Преамбула окончена. На код.

В части 1 этого руководства по обмену сообщениями с замаскированной аутентификацией я хотел начать с идеи, о которой я размышлял в течение некоторого времени, но так и не успел создать - простого pub / sub-сервера и клиента для IOTA.

Вот как это работает. Есть издатель, который публикует сообщения в клубке, и подписчик, который слушает эти сообщения и отвечает на них. Кажется, довольно просто, правда? Ну это так.

Настройка вещей

Я начал с пустого репо, но вы можете начать с моего кода здесь. Я также использую mam.client.js библиотеку, написанную другим Льюисом из Австралии в IOTA (ну, на самом деле я не работаю в фонде IOTA, но мне кажется забавным, что их резидента-австралийца также зовут Льюис).

publisher/src/app.ts

Здесь у нас есть простой экспресс-сервер, который прослушивает сообщение. Когда он получает это сообщение, он публикует сообщение в MAM и возвращает корень канала.

Мы можем запустить это, выполнив следующие действия:

$ yarn #install dependencies
$ yarn run watch #run the ts compiler, and actually run the app
Publisher listening on port 3000!

Затем мы можем довольно легко опубликовать сообщение в MAM с помощью следующего:

$ curl "localhost:3000?message=HILEWIS"                                               

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

{"message":"HILEWIS","root":"DAEU9MEXGTVPZFRFUBGPWTDIVJR9FNLSIJZ9IAU9JWNYCQIKYIBJKSVGALPAXINYFJFM9NOQNTYOOTKY9"}

Большой! Итак, мы публикуем сообщения в Tangle with MAM. Все идет нормально. Перейдем к подписчику. Не волнуйтесь, это примерно так же просто.

Вот что у меня есть для моего подписчика:

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

Подписчик ищет сообщение, и когда он находит сообщение, он рекурсивно вызывает Mam.fetch на следующем корне. Поскольку следующий корень не меняется при отсутствии новых сообщений, мы можем просто вызывать его рекурсивно, пока не получим новое сообщение.

И вот как мы его запускаем (не забудьте заменить корень на корень из вашего первого сообщения).

$ export ROOT='DAEU9MEXGTVPZFRFUBGPWTDIVJR9FNLSIJZ9IAU9JWNYCQIKYIBJKSVGALPAXINYFJFM9NOQNTYOOTKY9'
$ yarn run watch

Вот и все. Продолжайте отправлять сообщения с помощью команды curl, и вы увидите, что они появляются в подписчике. Вы также заметите, что корень меняется каждый раз. Это дерево Меркла творит чудеса за кадром.

Это простое и неприятное программирование, но оно демонстрирует простой pub / sub с MAM.

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

Если вам понравилось это руководство, или у вас есть какие-либо предложения или вопросы, дайте мне знать в комментариях. Если вам понравился этот пост, поставьте ему или 👏, или как вы его сейчас называете, сумасшедшие кошки.