🌚Apollo
Подробный обзор нашего инструмента CLI и пользовательского интерфейса для управления вашей империей KLY🪐
👨🚀 Благодарность
Поскольку KLYNTAR - проект "космических" масштабов, то и инструмент для взаимодействия с ним должен быть соответствующий. Много разных проектов или компаний называют свои продукты / протоколы в честь известных учёных, исторических личностей или событий. Мы в данном аспекте тоже поддержим общественный флэшмоб и поэтому решили назвать инструмент для взаимодействия с KLYNTAR в честь важного события в сфере астронавтики и изучения космоса - всем известной программы Аполлон, той самой, во время которой человечество впервые ступило на внеземное тело, а именно - на Луну.
Символизм здесь в том, что не всё было идеально, происходили аварии, разработки продолжались годами, но всё же благодаря плодотворной работе множества людей разных профессий человек все таки получил шанс стать межпланетным видом и добавить ещё одну галочку в список достижений рода людского. Мы надеемся что наш Apollo ждёт аналогичный успех ведь вложено множество сил и всё для того - чтоб подарить вам шанс выйти за рамки текущих достижений крипто индустрии.
⚡ Введение
Мы рады представить вам Apollo — наш мощный инструмент командной строки и пользовательского интерфейса для управления вашей инфраструктурой KLYNTAR. С помощью Apollo вы можете делать все — использовать его в качестве кошелька, взаимодействовать с децентрализованными сервисами, контролировать свои источники Unobtanium, использовать возможности Cryptoland — нашей удивительной коллекции криптоалгоритмов доступных на KLYNTAR и многое другое!
Здесь вы узнаете как начать работать с Apollo, некоторые основные указания и помощь чтоб быстрее начать работать с KLYNTAR. Мы планируем показать вам как загружать модули, как писать модули(если вы разработчик) для расширения возможностей как CLI так и UI, как контролировать свои кластеры из узлов и так далее.
Поскольку это довольно мощный инструмент(а не просто CLI с предварительным списком hardcoded команд), то мы постараемся дать вам самое важное - базовое понимание принципа работы, как оно всё взаимосвязанно. Стоит сказать что Apollo отличается от других подобных инструментов типа Metamask, Phantom и подобных тем, что здесь в работу будут включены всевозможные разработчики сервисов на KLYNTAR для создания персонализированных интерфейсов непосредственно для каждого сервиса, симбиота или группы сервисов. Это равносильно тому, если бы разработчики смарт-контрактов EVM-совместимых цепей которыми вы пользуетесь в том же Metamask предлагали бы уникальный интерфейс для каждого смарт-контракта.
Так, например, если это DeFi сервис работающий в экосистеме KLY, то перед вами в интерфейсе появятся необходимые данные, поля, последние новости из фида Твиттера этого проекта и так далее, если это основное меню Apollo, то в бегущей строке вы так же встретите объявления по предложениям стейкинга вашего унобтаниума на какие-то новые сервисы где вы сможете решить, что вам более выгодно-поставить свой унобтаниум добытый майнером BTC и получить место валидатора сервиса или же подтвердить объем зарезервированного хранилища в Filecoin и оставить унобтаниум для будущего голосования за самые полезные плагины для KLYNTAR в рамках процедур социального консенсуса, а перейдя на wikipedia.org или читая какую-то статью на Medium вы сможете отблагодарить авторов и получить какой-то эксклюзивный контент от них. И всё это в одном чёрном ящике под названием Apollo. Думаю слюнки уже потекли, так что поехали 🤤
🏗️ Как сбилдить & запустить
Лучше 1 раз показать чем 100 сказать. С таким настроем переходим к запуску. Как вы наверняка уже прочитали ранее, KLYNTAR находится в симбиотических отношениях с другими блокчейнами-как уже существующими типа Bitcoin, Avalanche, XRP, Solana так и теми которые только будут изобретены в будущем.
Запуск вместе с Docker
Запуская различные узлы других проектов, работая с необходимыми им инструментами, самой ужасной и раздражающей проблемой была проблема с начальной настройкой - неправильные конфигурации, старые документы или плохая документация от разработчиков, ошибки версионирования, nightly версии и так далее. Вот почему мы подготовили Docker образы, чтобы вы могли быть уверены, что у вас будет 100% успешная установка. Итак, приступим 🚀
ВНИМАНИЕ
Перед началом установки, убедитесь что у вас установлен Docker. Если нет, то вы можете скачать его на Linux & Windows & Mac здесь
Для того чтоб проверить установлен ли Docker введите
Загрузка образа
Представляем вам наш первый образ klyntar/all_in_one из коллекции Docker образов KLYNTAR. Это универсальный образ с предустановленными Node.js, Go, Python и некоторыми инструментами вроде pnpm, node-gyp, git и так далее которые необходимы для сборки. Мы создали его, чтобы сэкономить ваше время и нервную систему. Это базовый уровень для всех наших Dockerfiles (по крайней мере, для ядра и Apollo). Приблизительный сжатый размер составляет 606 мегабайт, на на его основе работает ядро,Apollo и другие компоненты системы. Кроме того, в нашем репозитории KlyntarBaseImages вы можете найти исходники всех файлов Docker базового уровня, так что вы можете cклонировать и собрать образ самостоятельно или найти скрипт сборки bash и установить требуемые компоненты прямо свою хост машину.
ПРИМЕЧАНИЕ
Если вы всё таки собрались идти по более сложному пути, то пропустите установку с помощью Docker и перейдите сюда для "ручной" установки
Но в любом случае, мы рекомендуем вам использовать контейнеры.
Итак, клонируем образ:
Вы наверняка заметили что как здесь, так и на уровне Dockerfile'ов мы используем привязку к хэшам. Помимо безопасности, это ещё будет необходимо и для того, чтоб вы могли проверять образы, репозитории сервисов, плагины и так далее от разработчиков KlyntarTeam или других программистов с помощью Apollo и возможностей Cryptoland. Так например вы сможете проверить плагин для вашей инфраструктуры с помощью мультиподписей и возможности агрегации, тогда как в команде может работать больше сотни человек. Или например, разработчик сервиса установил правило что за принятие изменений необходимо чтоб проголосовало больше 2/3 пользователей с помощью комбинаций кольцевых подписей. Для удобства + проверок как раз таки и необходимы будут хэши.
Запуск контейнера
Мы рекомендуем вам пробросить порт 9691 который является портом по умолчанию для Apollo(опять таки отсылка:9691-это в обратном порядке 1969 год когда и был запуск Аполлон-11)
Осталось чуть-чуть
Зайдите в контейнер и перейдите в домашнюю директорию
Склонируйте репозиторий Apollo
Ну и в конце-концов запустите 1 команду для билда
Теперь отдохните и посмотрите на процесс сборки. Это может занять несколько минут, но вы освобождены от самостоятельной установки множества библиотек, зависимостей и обхода по древу каталогов.
Промежуточным сигналом про успешность первого этапа сборки будет такое вот в консоли
...а после построения аддонов такое
Теперь попробуйте запустить. В консоли вы должны увидеть такое
Также вы можете запустить Apollo в UI режиме. Так вы получите веб-версию Apollo. Для этого запустите
Теперь перейдите в браузер на localhost:9691. Вы должны будете увидеть такое:
Установка на "голое железо"
В данном случае я использую Debian
Для представленного образа основой является представленный ниже bash скрипт. Тут в целом шаг за шагом расписаны комментарии касательно того что вы устанавливаете. При этом, если у вас на машине уже установлены подобные компоненты, то вы можете пропустить их установку и скачать только то что вам нужно:
Для начала традиционно
Затем установите необходимые пакеты
Тут установка Python v3.10. Python нужен для сборки аддонов на Go для их использования в Node.js
Далее установите Node.js v17.x
Поскольку мы с вами более продвинутые ребята, то установим ещё кое-что, более продвинутую версию npm - pnpm и node-gyp для билда аддонов.
Последним необходимо установить Go
Финальный штрих - установка дополнительных компонентов
Затем просто склонируйте и запустите билд
⚙️ Модульность
Работая с различными «хакерскими» инструментами, я получил опыт так называемых «лучших практик» для создания действительно мощных инструментов. Вот почему Apollo (как и KLYNTAR) будет динамически расширяем и модульным. Вы, мы, а так же миллионы других разработчиков смогут улучшать и дополнять возможности Apollo новыми командами в CLI, новыми разделами в UI, новыми паками для работы с симбиотами и сервисами на KLYNTAR.
Прямо сейчас у вас есть три способа апгрейднуть возможности Apollo, загрузив расширения в такие директории
KLY_Modules
KLY_ServicesAPI
KLY_WorkflowsAPI
И мы конечно же покажем как это сделать!
KLY_Modules
Каталог для ваших внешних модулей. Это могут быть дополнительные полезные команды такие как генерация новых типов пар ключей для нового алгоритма подписи или получения актуальных данных по состоянию ваших узлов. Может быть написано вами или любым другим третьим лицом.
Итак, подключаемый модуль - это репозиторий. Это сделано для удобства так как все умеют работать с Git(мы предполагаем что вы будете использовать именно эту систему контроля версий), да и контролировать изменения таким образом будет легче. Обновлять модули вы можете независимо друг от друга и при надобности-бегать между коммитами или ветками.
Что касается структуры, то типичный модуль должен содержать 2 каталога
cli (содержит новые команды для CLI)
ui (каталог со всем для расширения интерфейса в браузере. Это поддиректории со стилями, маршрутами Fastify, скриптами и html шаблонами)
Как уже упоминалось ранее, скоро у вас появится удивительная возможность криптографически проверять авторов — с помощью подписи кода(так называемый Code Signing). Имея хэш репозитория, вы можете проверить подпись и быть уверенным, что код является оригинальным, используя различные криптографические функции, такие как мультиподпись или постквантовая криптография, социальный консенсус и так далее. Мы описываем это в разделе Базовая безопасность в нашей книге MasteringKlyntar.
Подводя итог, ваше дерево каталогов должно выглядеть так:
CLI part
В CLI дополнительные модули выглядят как обычные команды. Чтобы ваши пользователи могли различать их и не происходило коллизий(например когда в двух модулях будут идентичные команды), дайте им оригинальный префикс или сделайте единую команду с именем репозитория и скройте команды в подкомандах. Мы сейчас покажем как.
UI part
Если у модуля также есть UI часть (что зачастую так и будет), вы сможете посетить:
для того, чтобы обнаружить там точку входа в ваш модуль
KLY_ServicesAPI
ServiceAPI - каталог с репозиториями API для взаимодействия с сервисами, запущенными на Klyntar. Представьте, что все смарт-контракты на Ethereum будут иметь уникальный дизайн в вашем кошельке, отдельную страницу со всеми доступными функциями, характерными для контракта и т.д. Apollo дает возможность разработчикам проявить фантазию для того, чтоб вы получили лучшее!
Иерархия для этой директории аналогична KLY_Modules. Для просмотра доступных модулей перейдите по этому URL
KLY_WorkflowsAPI
WorkflowsAPI - каталог с репозиториями API для взаимодействия с симбиотами на Klyntar. Поскольку они могут использовать разные рабочие процессы(читай workflows) благодаря принципу мутаций, то нам необходимо сделать возможным использование соответствующих алгоритмов, реализовать взаимодействия с хостчейнами, создание правильных событий для отправки симбиотам и использование других специфических функций, таких как трафик через TOR или пороговые подписи. Представьте, что у вас будет возможность контролировать свои активы Bitcoin, Solana, Avalanche, Cosmos (нативные монеты, токены и т. д.), выполнять смарт-контракты, делегировать полномочия, используя только один инструмент. Да, это то, что делает Apollo.
...ну...иии...тут абсолютно аналогичная структура. Только для просмотра доступных симбиотов с которыми вы взаимодействуете перейдите на такой адрес:
🐱💻 Как написать собственный модуль
CLI
Переходим к сладкому
Предлагаю в качестве тестового примера сделать что-то более полезное чем HelloWorld. Например, давайте представим что где-то в интернете есть API сервер который принимает от вас перечень ваших адресов Bitcoin и Polygon и предоставляет информацию относительно того, куда лучше застейкать ваш унобтаниум на основании того, что на предоставленных адресах имеется + учитывая дополнительные параметры (количество добытых блоков BTC, их возраст, сложность, возраст ваших входов и т.д. Для Polygon это может быть набор токенов что имеются на ваших адресах)
Прикинув, мы можем предположить что в CLI это должно выглядеть как-то так:
В ответ пусть приходят данные вида
Переходим к написанию. Создадим репозиторий в котором будут 2 директории. UI часть пока что оставим в покое и займёмся CLI частью
CLI в Apollo работает на основе NPM пакета Commander
Тут вы можете найти документацию для более топовых возможностей. Что касается KLYNTAR, то мы предоставляем глобальный объект PROGRAM прямо как в документации по Commander'у
И так, ваш module.js выглядит так:
Ок, можно сказать что уже готово, осталось только подключить ваш модуль для того чтоб он стал доступен из CLI. Для этого отредактируйте файл configuration.json в корне Apollo. Файл имеет такой вид(в случае простейшей конфигурации)
Добавьте путь к вашему модулю в EXTRA_CLI
Теперь запустив CLI вы должны будете обнаружить команды из данного модуля в списке общедоступных.
UI
Теперь коротко об UI части. Опять таки можем представить что мы работаем с тем же выдуманным модулем который предоставляет нам советы по стейкингу унобтаниума.
Что у такого модуля может быть в UI части? Ну он сможет автоматом для вас подгрузить ссылки на Telegram каналы данных сервисов, загрузить в iframe главную страницу сайтов рекомендуемых сервисов или построить график на котором предположительно вы увидите ваш доход в зависимости от стратегии стейкинга.
Пару слов про веб-часть
Прежде чем начать, познакомим вас с одним проектом на котором и основана UI часть Apollo. Итак, в основе лежит репозиторий Fastify-быстрый и мощный веб сервер который очень популярный у JS разработчиков, имеет более 24 тысяч звёзд на GitHub, обладает мощной экосистемой плагинов и активно поддерживается(часть команды-это разработчики Node.js)
А вот собственно набор плагинов. Они так же могут дополнить возможности вашего Apollo путём включения их как модулей.
Пусть routes.js выглядит как-то так
После этого, перейдите в тот же конфиг и добавьте путь к модулю в раздел EXTRA_UI
После этого, вам станет доступен функционал вашего модуля по адресу
Однако, вы сможете получить доступ даже просто перейдя на главную страницу, а дальше следуя указаниям и привязкам к кнопкам в главном меню.
Мы это упомянули так как по дефолту в UI уже будет автоматически включён модуль init. Он включает в себя логику главной страницы(), стили и так далее, но главное - он обеспечивает доступ ко всем остальным возможностям Apollo-создаст кнопки для перехода к другим модулям, API сервисов и так далее.
🧐 В чём преимущества такого подхода
Подобно тому как мутации происходят в природе, постоянно наделяя организмы новыми способностями, Apollo тоже будет развиваться за счёт роста экосистемы KLY и всей блокчейн индустрии.
На уровне кода можно сказать что удобность в том, что каждый дополняемый элемент может быть как независимым, так и взаимодействовать с другими модулями(так как запросы происходят в одном домене). Разработчики получают полную свободу относительно используемых инструментов-внутри модуля может быть какая-то библиотека на Rust, запущенный отдельным процессом однострочник на Python, билд конфигурация для TypeScript и так далее!
Всё удобно, понятно, документации доступны-так что удачи)
🤓 Совет
Следите за нами, чтобы получать новости и обновления как можно скорее. Обсуждайте, делитесь идеями, советами, помогайте новичкам сделать наше сообщество сильнее. Мы рады привлечь новых участников в сообщество KLY 😊
Last updated