Ворклог. Итоги марта

Ворклог. Итоги марта

Category: Development Report

Title image, read title

Всем привет!

Мы подготовили традиционный дайджест новостей Cellframe. Здесь мы рассказываем о прогрессе разработки, развитии экосистемы и маркетинговых активностях. Сегодня рассказываем об итогах марта. Как обычно, собрали для вас все самое интересное — читайте и наслаждайтесь!

Cellframe Wallet

В прошлом выпуске нашего дайджеста мы рассказывали о том, что возобновили активную разработку многофункционального приложения Cellframe Wallet. Фактически это упрощенная версия Cellframe Dashboard, она разрабатывается специально под мобильные платформы, и в ней будет собрано все самое необходимое для пользователей.

В феврале мы адаптировали под Cellframe Wallet все обновления, которые были сделаны в Cellframe Dashboard, и обновили бэкенд, а в марте работали над улучшением UI.

Что было сделано:

  • Добавили функционал виртуальной клавиатуры
  • Реализовали возможность развернуть приложение на весь экран
  • Для кошельков и сертификатов обновили список доступных постквантовых подписей (сейчас это Falcon и CRYSTALS-Dilithium)
  • Исправили несколько багов верстки и функционала для работы с кошельком

Cellframe Dashboard

На проекте Cellframe Dashboard много внимания уделили развитию бэкенда приложения. Как вы знаете, Cellframe Dashboard неразрывно связан с другим нашим приложением — Cellframe Node, и обеспечить их совместимость принципиально важно.

Поскольку в ноде обновили ответы на команды по протоколу JSON-RPC, нам также нужно было адаптировать обработчик этих ответов в дашборде. Таким образом мы исправили проблемы с совместимостью команд для работы с сетями, кошельком, транзакциями и Web3 API.

Еще мы поработали с вкладкой TX Explorer. Здесь обновили комбобокс с выбором сети и реализовали отображение нового типа транзакций — транзакций обмена.

И самое главное, в марте мы подготовили предрелизную сборку Cellframe Dashboard, в которую включили обновленную вкладку DEX. Новый функционал передали на бета-тестирование, и получив обратную связь, внедрили необходимые изменения. В начале апреля долгожданный релиз (версия 2.14 - 12) был выпущен в продакшн. О функционале нового обменника мы рассказывали в отдельном посте.

Cellframe Node

Python-обертки

Как вы знаете, основной элемент Cellframe — это ПО CellframeNode, которое обеспечивает взаимодействие пользователя с сетями нашей экосистемы.

ПО Cellframe Node реализовано с использованием двух SDK — DAP SDK и Cellframe SDK. Они предоставляют API сети и блокчейна соответственно и реализованы на языке С.

С-код обеспечивает нам высокую производительность, что особенно важно для блокчейна с тяжелыми постквантовыми подписями, а еще — максимальную портируемость под разные операционные системы.

Однако, язык С очень специфичен — многие вещи на нем делаются сложнее и дольше, чем на высокоуровневых языках. Поэтому мы не только развиваем нашу ноду и SDK, которые так и пишутся на C, но и создаем вспомогательный Python SDK, который упрощает и ускоряет расширение логики работы базового ПО, используя систему подключаемых модулей (плагинов) на языке Python. Это в том числе понижает «порог входа» в технологию для криптоэнтузиастов и разработчиков приложений.

Каждый раз, когда мы обновляем или расширяем функционал Cellframe Node, мы также отражаем это в PythonSDK, налаживая взаимодействие с новыми API из плагинов.

Для удобства разработки и создания документации мы номинально разделили SDK на три уровня:

Уровень 0 (L0 SDK) — Cellframe SDK. Здесь используется язык С, на нем пишется и тестируется весь основной функционал.

Уровень 1 (L1 SDK) —Python-cellframe, низкоуровневое API. На этом уровне делаются пробросы методов между Cellframe SDK и Python SDK.

Уровень 2 (L2 SDK) — Python helpers, высокоуровневое API. На этом уровне формируется python-way объектный интерфейс, удобный для пользователя.

Наша глобальная цель — реализовать Python-обертки уровней L1 и L2 для всего функционала Cellframe Node. Например, последние крупные обновления функционала ноды (уровень L0, Cellframe SDK) — это DEX и механизмы голосования на платформе Cellframe. Они также реализованы на уровне L1, а в L2 сейчас находится в процессе разработки.

Двусторонний режим моста Cellframe

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

Завершили внедрение IPv6 в Cellframe Node. Почему это важно: IPv6 — это 6-я версия протокола IP, ключевого для сети Интернет, который объединяет сегменты сети воедино и обеспечивает передачу пакетов данных между узлами сети.

Протокол предыдущей версии — IPv4 уже практически исчерпал лимит сетевых адресов. В протоколе IPv6 увеличен объем адресного пространства, а также выше показатели производительности и безопасности, поэтому многие интернет-провайдеры уже полностью перешли на него и отказались от поддержки IPv4.

Реализовали систему распределения нагрузки между нодами сети, которая состоит из двух ключевых компонентов:

Менеджер линков управляет всеми линками (каналами связи) нод в сети, исходя из потребностей каждого из кластеров сети, которые он администрирует. Основные задачи менеджера линков — избегать повторных подключений к нодам сети и регулярно обновлять информацию о составе линков сети и кластеров.

Линки делятся на три типа: статические, динамические и смешанные. Статические или перманентные линки имеют приоритет перед динамическими — они прописываются в настройках заранее либо задаются другими внешними способами. Если статических линков недостаточно для стабильного соединения, то недостающие (динамические) линки запрашиваются у балансировщика сети.

Балансировщик сети используется для равномерного распределения связей между нодами. Для этого у него есть доступ к статистике по адресам, которую обновляют все ноды в сети. Цель балансировщика — создать равномерную «паутину», в которой к каждой ноде подключено примерно одинаковое количество нод.

Также, в рамках работы по улучшению синхронизации сети мы реализовали механизм, который адаптирует скорость передача данных между нодами под возможности принимающей стороны. Теперь трафик отправляется порциями и в зависимости от скорости его обработки принимающей стороной корректируется и скорость отправки следующих порций: от блокировки дальнейшей пересылки до развития максимально-возможной скорости передачи данных между нодами.

Такая схема позволяет ноде-передатчику экономить ресурс и ставить отправку на паузу, в том числе и не отсылать то, что уже не может быть принято, а ноде-приёмнику — разгрузить оперативную память. Как известно, ее объем ограничен, поэтому важно предусмотреть этот момент сейчас, чтобы избежать возможных проблем при росте блокчейн-сети.

И. наконец, в марте мы реализовали еще один режим работы моста Cellframe. Теперь он работает на передачу токенов CELL и KEL напрямую между сетями Ethereum и BSC. Для пользователей это означает, что теперь они могут легко перевести свои средства между этими сетями (подробно мы уже рассказывали об этом в отдельном посте)

Для нас же это очень важный шаг на пути к двустороннему режиму моста. Так мы сможем отладить работу распределенного консенсуса на базе смарт-контрактов, который будет использоваться в том числе и в режиме моста из СF-20.