🧑💻Разбор кода
То чего все так ждали от других
Что это?!
Сфера крипто-проектов - это зачастую open source решения. Поскольку предполагается что над ядром и его компонентами, а так же другими проектами экосистемы будет работать большое количество разработчиков то хорошей практикой было бы дать понять из чего состоит ядро, как проиходит запуск демона пошагово, разъяснить структуру директорий.
Ввиду того, что проект большой и сложный это будет крайне полезно как для людей которые просто хотят глубже узнать о проекте, так и для разработчиков.
Поскольку сейчас мы только начинаем, то предоставим лишь что-то типа демоверсии того как это будет выглядеть. Вскоре, мы создадим отдельную книгу(документацию) которая будет посвящена именно этому
Обещанная демо-версия
Ниже будет представлена небольшая "демо-версия" введения в код для того, чтоб вы представляли как мы планируем предоставлять разработчикам информацию. Так же обратите внимание, что последующие разделы (Аддоны, Блоки ...) имеют плашку Coming soon. Мы будем заполнять это по мере роста интереса к проекту
Для разработок и внесения изменений в код мы рекомендуем ещё раз клонировать репозиторий в отдельную директорию вместо изменений в том, который запускает рабочую версию ядра.
Подготовка к разбору
Для дальнейшего чтения и разбора рекомендуем открыть репозиторий ядра KLYNTAR и вместе с этим руководством постепенно разбираться что к чему
Дерево директорий
Прежде чем начинать разбираться с кодом, стоит обратить внимание на структуру директорий ядра. Она имеет следующий вид
Использовано ограничение глубины равное 1
AntiVenom
Дефолтная директория для данных тестнета. Используется если не указана переменная среды SYMBIOTE_DIR и установлен режим тестнета KLY_MODE=test. Имеет следующую структуру
CHAINDATA - хранит данные состояния, блоки и метаданные(ссылки на коммиты в хостчейнах и другие данные)
CONFIGS - директория с настройками для данного симбиота. Мы разделили на несколько файлов ввиду большого размера конфигурации + для лёгкости редактирования
GENESIS - директория с генезис-состоянием для симбиота. Может включать в себя несколько JSON файлов
LOGS - директория с логами событий SNAPSHOTS - содержит поддиректории METADATA и STATE. METADATA хранит указатели на текущий блок снепшота(высоту), его хэш, канарейку и другие данные. STATE представляет собой данные состояния в чистом виде
Вы могли заметить промежуточную директорию FASj1powx5qF1J6MRmx1PB7NQp5mENYEukhyfaWoqzL9 Это адрес который создал данного симбиота и ID симбиота(подобно адресу смарт-контракта в EVM-совместимых цепях). При работе с другими цепочками у вас будут другие адреса. Так же это "ненужная" директория ввиду того, что сначала планировался другой дизайн и размещение директорий. В будущем мы исправим это
KLY_Addons
Директория с разного рода кодом на других языках. Тут лежат исходники на Go, Rust и C++ которые требуют определённых манипуляций таких как компиляция в библиотеку и преобразование в аддоны. Так достаточно будет перейти в 1 директорию и запустить билд. Находится на верхнем уровне ядра так как содержит в основном алгоритмы которые будут общими для разных рабочих процессов.
KLY_Doppelgangers
Предназначена для будущих релизов
KLY_ExternalServices
Директория которая содержит все сторонние сервисы которые загружает ваш раннер. Является что-то типа общим хранилищем со следующей структурой
Каждая директория здесь - это отдельный репозиторий с сервисом который запускается в вашей инфраструктуре.
KLY_Hostchains
Большая и критически важная директория которая имеет такую структуру
KLY_Plugins
Содержит плагины которые загружаются оператором узла отдельно и служат для расширения возможностей ядра, рабочих процессов и так далее. Подробней о плагинах здесь
KLY_Runners
Содержит код раннеров которые прослушивают новые сервисы и запускают дальнейшую логику на основе конфигурации - что запускать, а что нет, в каком контейнере, какой скрипт выполнить и так далее. Там же будет находится дефолтный раннер от разработчиков Andromeda. Вы можете это увидеть взглянув на репозиторий
Не забывайте, что процесс разработки продолжается
KLY_Services
Хранилище ваших сервисов. Структура аналогичная KLY_ExternalServices за тем исключением, что сервисы здесь - разработанные вами
KLY_Tests
Директория с отдельными unit и другими тестами
KLY_Utils
Содержит алгоритмы и структуры данных. Опять таки, находится на верхнем уровне ввиду того, что алгоритмы и полезные функции тут общие для всех симбиотов. Можем даже посмотреть на это наглядно
KLY_KVM
Директория необходимая для работы KLYNTAR VM(KLYNTAR VIRTUAL MACHINE). Так же является хранилищем для .wasm смарт-контрактов
KLY_Workflows
Содержит репозитории с workflow для симбиотов
MAINNET
Абсолютно аналогичная структура как и у ANTIVENOM
Заключение
Это было вводное объяснение ядра. Мы начали со структуры и дальше разбирать будем более детально и наглядно. Мы верим что такое пособие будет полезным и даст глубокое понимание KLYNTAR
Last updated