Апдейт разработки 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

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