⚙️Раннеры
Посмотрим на то, с чего будут начинаться смарт-контракты нового поколения
С чего всё начинается
После того, как вы успели ознакомится с возможностями сервисов, настало время рассказать более детально как они будут выполняться, что и где их будет запускать и как это работает в целом.
На KLYNTAR все сервисы так или иначе будут проходить через раннер и его правила. Раннер - это как промежуточное ПО которое принимает сервис из сети и на основе своих настроек принимает решения вида
Стоит ли запускать сервис
Как и сколько памяти выделять сервису
Ставить ли какие-то ограничения
Какой бюджет безопасности и сколько центров безопасности проверили данный репозиторий
Входит ли адрес в дерево доверия
Сколько потенциально можно получать с этого сервиса
Стоит ли распространять и рекламировать сервис дальше по сети
...и другие решения
Раннер принимает решение запускать ли сервис на этой ноде или отправить на другие, давать ли доступ в сеть для сервиса, запускать ли его в отдельном контейнере или же в каком-то из существующих и так далее.
Вот как можно схематично представить раннер
В двух словах
Ноды прослушивают, распространяют и скачивают репозитории(если дана ссылка) или сжатые архивы(если сервис распространяется напрямую) и следуя правилам и настройкам раннера принимают решения как запускать сервис.
Ввиду независимости раннеров от сети и ее процессов, а также продолжая тему модульности, мы разрешим пользователям использовать для своих инфраструктур кастомные раннеры, а так же предоставим возможность гибкой конфигурации и настройки для максимально эффективной работы.
Хоть функционал раннера вы определяете сами, мы всё таки рекомендуем ориентироваться на официальные решения как на наиболее эффективные.
Раннер на уровне кода
На уровне кода - раннер это отдельный репозиторий который лежит в директории KLY_Runners. Вам уже должен быть знакомый принцип того, как мы храним данные, но мы всё равно для наглядности покажем структуру директорий.
Вот, к примеру как это выглядит на уровне редактора кода
Вы можете обновлять репозитории независимо друг от друга. Демон KLYNTAR при запуске просматривает конфигурационный файл services.json и опцию RUNNER где указан путь к точке входа раннера.
Вот как это выглядит. Файл конфигурации services.json
runner.js представляет собой точку входа раннера который экспортирует функцию без имени которая на вход получает объект стандартной структуры и принимается за его обработку.
Вот как это выглядит
Что касается рабочих процессов, то поскольку они составляют набор обработчиков роутов и сами создают маршруты на сервер, то они должны предоставить обработчик и для раннера, чтоб просто получить данные из сети, передать в функцию и дальше раннер сам сделает свою работу.
К примеру, рабочие процессы dev_controller и dev_bft предоставляют такие обработчики
Как видно, сервер просто принимает некоторый JSON объект сервиса и передает на обработку раннеру, а сам просто отправляет простой HTTP ответ.
Пример конфигурации раннера
Для того, чтоб ещё больше понять принцип работы, можно заглянуть в конфигурации
Тут раннер может определять из каких ресурсов разрешена загрузка файлов, определять контейнеры с которыми он будет работать, устанавливать доверенные центры-это могут быть мультисиг адреса которые к примеру пришлют вам подпись о безопасности сервиса и вы убедитесь что если за безопасность сервиса уже проголосовало определенное количество адресов с общим балансом более нескольких миллионов KLY и прочие опции.
Всё это, ещё раз подчёркивает гибкие возможности KLYNTAR и возможности раннеров.
Дефолтные раннеры
По умолчанию вам будет доступен стандартный раннер от разработчиков KLYNTAR. Мы назвали его в честь нашей галактики-соседки Андромеды. Это символизм так как мы сравниваем обычные смарт-контракты с нашей, относительно хорошо известной галактикой Млечный путь. А вот сервисы в том виде, в котором они будут на KLYNTAR - это нечто новое, какая-то новая галактика - не столь далёкая, но всё же - открывает нам новые возможности
В настоящее время все раннеры находятся в разработке и не будут доступны первое время для использования в сети
Last updated