Апдейт разработки DCG | 25 Июля 2023

Апдейт разработки DCG | 25 Июля 2023


ᴠᴏɴᴄᴀɴ

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

Подпишись на Dash on Pulse | Читать прошлый апдейт от 11 Июля 2023

  • Versioning: Работа, выполненная Sam, Ivan, Dima
  • State Sync: Dima (Tenderdash/Платформа) и Wisdom (GroveDB)
  • Rust SDK: Lucas, Djavid, Evgeny
  • Работа Anton над глобальными исправлениями и вопросами голосования мастерно
  • Dashmate: Ivan

За последние две недели DCG добилась значительного прогресса в работе над версионированием. Начав с 50 тыс. строк кода, они приблизились к 100 тыс. строк, и работа над версионированием практически завершена. Команда очень близка к завершению работы, но еще необходимо решить несколько оставшихся задач.


Dash Platform

Работа над версионированием велась в основном двумя членами команды при некоторой помощи со стороны других. Ivan и Dima присоединились к работе в последние несколько дней, чтобы помочь с исправлением ошибок, так как общая структура уже была создана.

Кроме того, Dima и Wisdom работали над State Sync, добившись значительного прогресса и рассчитывают завершить работу в ближайшее время. Также ведется работа над Rust SDK, чтобы упростить процесс импорта функций платформы для мобильных команд и сократить лишнюю работу.

Anton сосредоточился на массовом голосовании на нодах, а Ivan тем временем работает над улучшением стабильности Dashmate.

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


В настоящее время Lukasz Klimek работает над Rust SDK, уделяя основное внимание созданию базовых компонентов для crates на языке Rust. Цель состоит в том, чтобы сделать эти компоненты удобными в использовании и ориентированными на разработчиков Android и iOS, которые работают над своими приложениями. SDK использует привязку к языку C для предоставления своих функциональных возможностей разработчикам, при этом разрабатываются два основных компонента:

  • DAPI Client: Этот компонент предназначен для поддержки взаимодействия с децентрализованым API.
  • RS Drive Proof Verifier: Этот верификатор будет проверять доказательства, генерируемые как GroveDB, так и механизмом консенсуса, чтобы гарантировать, что информация, получаемая пользователем SDK, является верной.

Сейчас решается несколько задач, в том числе проверка доказательств легкого клиента и создание привязок на языке C в сотрудничестве с командой разработчиков мобильных устройств. Команда также разрабатывает тематический клиент, который поддерживает транспортный уровень. Кроме того, они тестируют и добавляют недостающие конечные точки gRPC, чтобы повысить ценность SDK.

Lukasz отметил, что для завершения потребуется не один спринт, что свидетельствует о постоянных усилиях по доработке и завершению разработки Rust SDK.


Ivan Shumkov работает над Dashmate - инструментом, поставляемым вместе с 19-й версией Dash Core. Dashmate предназначен для создания различных типов нод, включая мастерноды и полные ноды, в различных сетях, таких как testnet и mainnet. В ходе разработки, основное внимание уделялось повышению стабильности работы Dashmate и улучшению сквозных тестов, чтобы охватить популярные сценарии использования.

Для повышения стабильности Ivan и команда устранили некоторые ошибки и проблемы в сквозных тестах. Были проведены рефакторинги и повышена настраиваемость Dashmate. В частности, была реализована возможность автоматической сборки Docker-образов для Dash dashboard Helper и других сервисов на основе исходного кода, причем эта возможность может быть настроена самостоятельно.

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

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


Anton Suprunchuk работает над голосованием мастернод - концепцией, согласно которой контракты с данными могут быть настроены таким образом, чтобы мастерноды могли голосовать за создание тех или иных документов в рамках контракта. Эта функциональность необходима для работы с именами пользователей Dash Platform Name Service (DPNS), особенно для высокозначимых имен на начальном этапе запуска платформы.

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

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

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


Была создана новая версия TenderDash с номером v0.13 для учета изменений в протоколе взаимодействия между ABCI и Tenderdash. Основные задачи, решенные в этом спринте, были следующими:

  • Поддержка изменений: Команда работала над обновлением платформы для поддержки изменений в протокольном взаимодействии между ABCI и Tenderdash. Это обеспечило бесперебойную работу платформы с последней версией Tenderdash.
  • Основная функция Wait for Dash: Введена функция "wait for", позволяющая Tenderdash ждать, пока ядро Dash Core будет готово к обработке запросов. Это позволило избежать ненужных сбоев, которые могли возникнуть, когда Dash Core все еще синхронизировалось в процессе запуска.
  • Исправление проблемы с проверкой контрактов на данные: Команда решила проблему, связанную с результатом проверки контрактов на данные. Ранее в случае, если контракты не были найдены в доказательстве, выдавалась ошибка, но это поведение было исправлено.

Кроме того, Dmitrii рассказал о концепции синхронизации состояний в Tenderdash. Они поддерживают два способа репликации данных в сети: поблочную и синхронизацию состояний. Для улучшения и ускорения процесса синхронизации рекомендуется использовать синхронизацию по состояниям. Однако для этого потребовалось реализовать некоторые ABC-методы и обновить файлы для совместимости с GroveDB, используемой в Tenderdash.

Основными задачами, связанными с синхронизацией состояний, были:

  • Поддержка совместимости с GroveDB: Tenderdash должен был уметь работать с данными, предоставляемыми новой версией протокола State Synchronization, которая покрывалась GroveDB.
  • Реализация API сообщений протокола State Sync: Это потребовало обновления версии протокола и обработки новых сообщений для эффективной синхронизации состояния.
  • Добавление метода Snapshot: Для эффективной работы с протоколом синхронизации состояний в приложении ABC был реализован новый метод "snapshot".

Решив эти задачи, команда повысила стабильность и производительность платформы Dash, сделав ее более эффективной при репликации и синхронизации данных в сети.


Wisdom Ogwu сосредоточился на стороне GroveDB, в частности, на синхронизации состояний и снимках предложений. Ниже приведены основные моменты их работы:

  • Реализация метода Wipe в GroveDB: Для синхронизации снимков предложения с состоянием в GroveDB был необходим метод wipe. Этот метод позволяет нодам, реплицирующимся с определенного снапшота, очистить базу данных и начать репликацию заново с нового снапшота. Из-за ограничений, связанных с невозможностью использования GroveDB и наличием только неизменяемой ссылки, команде пришлось придумать обходной путь для удаления данных из GroveDB с помощью итератора. Это решение позволило разблокировать процесс, но в будущем оно может быть подвержено дальнейшим изменениям.
  • Прогресс в работе над синхронизацией состояния для Gravity: Команда работала над синхронизацией состояния для Gravity и достигла прогресса в генерации случайных чанков из Mercury и их применении для выполнения полной репликации. Команда также работает над применением чанков и дальнейшими улучшениями всего потока синхронизации состояния. Основное внимание уделяется отслеживанию всех Mercuries, которые должны быть реплицированы, генерации необходимых инструкций и обеспечению эффективности использования времени и памяти, чтобы не перегружать системные ресурсы.

В будущем Wisdom и команда планируют продолжать совершенствовать процесс синхронизации состояний и повышать общую эффективность и функциональность GroveDB и Gravity для синхронизации состояний.


Samuel Westrich представил обновленную информацию о ходе версионирования. Хорошей новостью является то, что работа над версией Drive завершена на 100%: пройдены все тесты и закончены работы по интеграции компонентов Drive, DPP и Drive ABCI.

Что касается версий ABCI, то здесь достигнут значительный прогресс: завершено около 75% интеграционных работ, включая триггеры данных. Над триггерами данных работал Ivan, и теперь они готовы. Основной упор в работе был сделан на компоненты Drive и DPP.

Что касается конкретных компонентов, то Самуэль сообщил о следующем прогрессе:

Балансы: Завершено.

Версионирование контрактов с данными: Завершена.

Версионирование документов: Завершено.

Переход состояний: Завершена.

Валидация: Почти завершена, некоторые аспекты еще требуют проверки и исправления.

Сериализация и десериализация: Проделана большая работа, которая близка к завершению. Этот процесс был сложным из-за различий между сериализованной и хранимой структурами объектов.

Sam оптимистично оценивает достигнутый прогресс и ожидает, что работа над версией будет завершена в ближайшее время. В настоящее время запрос на версионирование включает около 90 000 строк кода, что значительно больше, чем первоначальные 50-60 000 строк. Команда активно исправляет более 2 000 ошибок компиляции, которые в основном связаны с небольшими корректировками в результате рефакторинга.

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


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

  • Версионирование: Процесс версионирования идет полным ходом, прогресс отслеживается в процентах. В настоящее время в процесс версионирования переносятся границы контракта с данными, что, как ожидается, займет один-два дня.
  • Завершение процесса вывода средств: Пока вывод средств работает, необходимо внедрить и протестировать процесс финализации, что, по оценкам, займет около недели.
  • Голосование мастернод: команда дорабатывает последние детали для завершения этой задачи.
  • Уточнение стоимости тарифов: На этапе тестирования команда проверит все цифры, связанные с комиссиями, чтобы убедиться, что они имеют смысл и подходят для платформы.
  • Синхронизация штатов: Работа над функционалом State Sync завершена примерно на 60%, и команда активно работает над ним, чтобы убедиться в его готовности.

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

Dash Core

Odysseas Gabrielides представил краткую информацию о текущем состоянии Core команды и ходе разработки V20. Основные моменты включают:

  • Релиз V19.3: Команда готовится к выпуску минорного релиза V19.3, который, как ожидается, будет выпущен на следующей неделе. Несмотря на то, что это минорный релиз, он содержит важные исправления.
  • Децентрализованная случайность: Реализация децентрализованной случайности в V20 завершена.
  • Журналы активов: Команда рада сообщить, что пулреквест был принят, что стало важной вехой в развитии V20.

В настоящее время на рассмотрении находятся следующие функции для V20:

  • Изменение распределения вознаграждения, на основе этого треда (важно: DCG лишь проводят собственный ресерч на основе этого предложения, речи о изменение нынешнего вознаграждения не идет.)
  • Изменение выплаты для EvoNodes с четырех блоков в ряд до одного блока

Команда активно работает над следующими изменениями для V20:

  • Усовершенствованный хард форк
  • Интеграция Sentinel в Core (планируется полностью отказаться от Sentinel и интегрировать его функциональность в Core)


Pasta рад тому что работа над интеграцией Credit Asset Locks, которые разрабатывалось уже довольно долго, завершена.

Credit Asset Locks - механизма плавного обмена Dash на кредиты платформы и обратно

Теперь, когда эта функция интегрирована, команда готова приступить к тестированию в сети devnet. Они ожидают, когда будет готова система версий, и как только она будет готова, они выпустят v25 платформы и v20 ядра для совместного тестирования.

Релиз 19.3 включает в себя, в первую очередь, исправление мелких ошибок, в частности, таких, как зацикливание нод в цикле загрузки из-за пустого файла settings.json.

Принятые пулреквесты: 5484, 5482, 5483, 5495, 5494, 5360, 5496, 5498, 5026, 5473, 5491, 5477, 5504



Специально для @Dash_on_pulse by @V_O_NCAN

источник - DCG Devs update

Report Page