Апдейт разработки DCG #1
Апдейт на основе стрима DCG, который был проведен 10 Января 2024
Держи руку на пульсе Dash ➯ Подпишись | Читать прошлый апдейт
Команда Platform разработки (таймкод)
Тестирование платформы (таймкод)
Месяц назад мы обнаружили расхождение в балансах, вызванное некоректным переводом кредитов платформы. Несмотря на то что вначале DCG рассматривали сложные сценарии, Иван Шумков выявил удивительно простое решение.
Проблема была связана с переводом от личности A к личности A. В поисках замысловатых объяснений, была упущена из вида самая простая проблема. Платформа в отличии от core чейна Dash не использует модель UTXO, и в ней недопустим перевод самому себе.
Кроме того, в процессе тестирования мы выявили и устранили потенциальную атаку на воспроизведение транзакций перевода кредитов. Эта уязвимость могла привести к бесконечному (пока балланс > 0) повторению переводов кредитов от одной личности к другой.
Обе проблемы были успешно решены.
TUI (таймкод)
Стратегии для TUI
Platform Explorer, текстовый пользовательский интерфейс для взаимодействия с платформой через терминал, теперь включает в себя надежную функцию тестирования стратегий.
Изначально представленная два месяца назад, команда провела рефакторинг, чтобы сделать Explorer многопоточным, позволяющим выполнять несколько задач одновременно. Была добавлена функция запуска стратегий в тестовой сети, что позволяет пользователям эффективно проводить стресс-тестирование платформы.
Среди последних разработок - возможность регистрации и обновления документов и контрактов во время выполнения стратегии. Стратегия может итерироваться по блокам, представляя переходы состояний за определенное количество блоков. Текущая работа включает в себя доработку и исправление ошибок, связанных с регистрацией личности и выполнением различных операций, таких как пополнение счета, добавление ключей, снятие средств и переводы.
Несмотря на наличие некоторых ошибок в текущем функционале, команда активно занимается их устранением. Ожидается, что тестирование стратегий будет завершено примерно через неделю.
Бенчмарки (таймкод)
Как было объявлено в прошлом апдейте, DCG приступила к проведению комплексных стресс-тестов платформы. Иван Шумков возглавил эту работу, контролируя многочисленные итерации и улучшения для обеспечения надежности сетевой инфраструктурыо.
Команда внедрила простой, но мощный инструмент для проведения нагрузочных тестов, подвергая сеть бомбардировке случайными документами. Инструмент предоставляет ценные показатели процесса, включая количество отправленных, успешных и неудачных документов. Мы точно настроили сетевую инфраструктуру и параметры платформы, чтобы предотвратить чрезмерную нагрузку на сеть и устранить предыдущие проблемы.
Помимо проведения тестов в тестовой сети, мы автоматизировали развертывание эталонной инфраструктуры. Благодаря этому инструменту развертывания любой желающий может запустить devnet с узлами нагрузочного тестирования и собрать метрики платформы с помощью Prometheus и Grafana.
Столкнувшись с трудностями, такими как проблемы с обработкой клиентами полного Mempool и проблемы в Tender Dash, включая панику в структуре ordered map (key)
, команда оперативно решила эти проблемы.
Были скоректированы настройки и исправлена логика консенсуса, обеспечивая более плавную работу. Продолжая настройку различных параметров для обеспечения стабильности и слаженности всех элементов, мы намерены представить точные фактичесткие результаты и характеристики. Стоит отметить, что этот процесс отнимает много времени: развертывание сети, настройка, тестирование и постоянная доработка.
Другие задачи (таймкод)
Вывод с платформы (таймкод)
Постепенно ведется работа над реализацией функционала вывода средств с платформы Dash. Это довольно сложная, комплексная задача требующая координации трех компонентов: TenderDash, Drive и Core.
При пополнении баланса на Dash Platform происходит процесс, называемый "asset lock". Вот как это обычно происходит:
Отправка Dash: Вы отправляете определенное количество Dash с вашего кошелька на платформу Dash. Эти Dash временно замораживаются в core чейне Dash.
Эмиссия внутренних кредитов: В обмен на заблокированные Dash платформа выдает вам соответствующее количество внутренних кредитов. Эти кредиты могут быть использованы внутри платформы для различных операций, например, для совершения транзакций, создание личностей и работы с дата-контрактами и другими сервисами.
При выводе средств с платформы, происходит обратный процесс, называемый "asset unlock"
Asset Locking: Dash, который вы отправили, остается заблокированным, пока вы не запросите процедуру "вывода". Это обеспечивает безопасность и предотвращает двойные траты, пока ваши средства используются внутри платформы.
Вывод кредитов: Когда вы решаете вывести кредиты обратно в Dash, вы запрашиваете процедуру "вывода". В ответ на это ваши кредиты сжигаются, а заблокированные Dash возвращаются на ваш баланс в блокчейне Dash.
Таким образом, этот механизм обеспечивает связь между внутренними кредитами на платформе и реальными Dash в блокчейне Dash, предоставляя пользователям гибкость и возможность управлять своими активами в различных экосистемах, но при этом создавая жескую привязку кредитов платформы к основному блокчейну Dash, а также не увеличивая и ни как не влияя на итоговую эмиссию Dash.
Решение проблем, связанных с блокировкой активов, требовало наличия кворума подписей и выявило несоответствия между тремя системами. Подписание транзакций по выводу средств, включающее подробный процесс с идентификаторами запросов, хэшами кворумов и сообщений, требовало тщательного тестирования для обеспечения согласованности интеграции.
Вклад Константина сыграл решающую роль в выявлении и устранении несоответствия типа Core кворума. Однако при адаптации исправления к последней версии Core возникли проблемы, над которыми уже активно работают.
После трансляции пришлось разработать новую конечную точку RPC, решить проблемы с идентификаторами транзакций и подписями кворума. Было реализовано альтернативное решение, представляющее конечную точку RPC, которая возвращает статусы блокировки активов по их индексу, доступному в базе данных.
Drive-ABCI
✅ Улучшение Check-Tx (таймкод)
Это важный шаг вперед в оптимизации работы платформы. На практике были выявлены проблемы, связанные с эффективностью процесса Check-TX.
Check Tx - эта проверка, выполняемая при поступлении транзакции на определенную ноду, которая проверяет различные параметры, включая баланс личности, сериализуемость транзакции и правильность структуры.
Осознав, что предыдущая реализация была слишком ресурсоемкая, DCG взялись за доработку и усовершенствование процесса Check-TX. Переработанный Check-TX теперь обеспечивает значительные улучшения в скорости и эффективности. Он больше не проверяет наличие конфликтов с состоянием - ресурсоемкая операция, которая влияет на производительность.
Улучшения распространяются и на процесс перепроверки, выполняемый каждый блок для обеспечения согласованности мемпула. Благодаря улучшенному Check-TX перепроверка теперь выполняется заметно быстрее, даже при значительных объемах транзакций.
Успешная интеграция этих улучшений Check-TX не только повышает общую скорость и эффективность нашей платформы, но и устраняет потенциальные слабые в производительности места.
Улучшение синхронизации ChainLocks и Core (таймкод)
Ранее была постоянная проблема с синхронизацией ChainLocks и Core, особенно в теории заметная в основной среде из-за потенциальных условий гонки между платформой и Core.
Например, в такой ситуации где chainlock уже был известен в platform чейне, но неизвестен в core чейне.
Команда решила эту проблему, которая обсуждалась четыре недели назад. Несмотря на то, что за последние четыре недели не было проделано большой работы, был достигнут значительный прогресс.
Новый основной RPC, называемый Submit chain lock
, был реализован для решения проблемы гонки. Это состояние гонки приводило к тому, что ChainLock передавался через платформу быстрее, чем его успевал обработать Core. Внедрение этого RPC позволило эффективно устранить состояние гонки, предотвратив сценарии, в которых ноды платформы могут выйти из строя.
Команда Core разработки (таймкод)
✅ Релиз v20.0.3
В нем была решена проблема с черезмерным RAM на мастернодах и оптимизации кошелька
✅ Релиз v20.0.4 - подробнее
Разработка Dash Core v20.1.x
Продолжается разработка запланированного минорного релиза v20.1.x
В нем не планируется никаких глобальных изменений, только улучшения и бэкпорты, для повышения эффективности и функциональности.
Descriptor кошельки
HD кошельки по умолчанию
Фиксы для RPC запросов
Разделение на уровне модулей между кошельком и серверной частью кода
Разработка Dash Core v21
В перспективе разработки 21-й версии команда активно занимается бэкпортом BIP 324 для P2P-шифрования. Alessandro Rezzi из коммьюнити Dash, реализует DIP 26, прокладывая путь к возможности разделять выплату награды мастерноды, что является хорошим промежуточным шагом для общих мастернод.
Интегрированные пулреквесты
Команда Mobile разработки (таймкод)
Android кошелёк
Команда разработчиков кошелька Dash для Android в последнее время добивается стабильного прогресса. Несмотря на несколько ошибок, команда придерживается итеративного процесса разработки. Они успешно решили проблемы, связанные с обновленным расчетом APY для CrowdNode связанные с эвонодами, обеспечив точность расчетов. Текущие усилия включают в себя продолжение работы над CoinJoin и обширное тестирование бэкенда для повышения надежности.
Кроме того, команда адаптировала изменения в API Uphold и включила обновления из кошелька Dash в Dash Pay.
По итогу, было выпущено три релиза на Android: v10.0.0, v10.0.1, v10.0.2
iOS кошелёк
Команда Dash iOS Wallet активно работала над интеграцией библиотек Rust, сосредоточившись на реструктуризации своего подхода для повышения эффективности на уровне функций.
Завершение последнего этапа работы над реализацией функционала голосования за имя пользователя стало значительным событием, позволившим команде переключить внимание на реализацию функции CoinJoin.
Разработчик, работающий над этой функцией, провел тщательное исследование системы синхронизации Dash, используя опыт работы на Android. Первые шаги, включая реализацию системы обмена сообщениями, были успешно завершены и находятся в процессе рассмотрения.
Кроме того, команда внедрилаизменения в CrowdNode APY и успешно выпустила основную версию, совместимую с v20, после получения одобрения от Apple App Store.
Держи руку на пульсе Dash ➯ Подпишись | Читать прошлый апдейт
источник - DCG Devs update
Last updated