21 сентября 2020

Релиз Dash Platform v0.15 на Evonet

Ключевые моменты релиза

Как обычно, из-за критических изменений, введённых в этом релизе, все данные в Evonet были стёрты. В соответствии с этим разработчикам стоит внести изменения в свои локальные настройки. Ниже приведён список самых важных обновлений. Все изменения подробно описаны в примечаниях к релизу каждого компонента платформы, ссылки на них находятся в последнем абзаце этой статьи. 

  • Бинарные свойства документа: Есть множество случаев, когда разработчикам необходимо хранить в своих приложениях бинарные данные. Ранее им приходилось кодировать их и хранить в виде строк, что занимало дополнительное место на платформе и повышало комиссию за переходы состояний. Теперь у разработчиков есть возможность отмечать эти бинарные поля в контракте данных с помощью ключевого слова `contentEncoding`. Таким образом разработчики могут использовать для хранения данных изначальные двоичные типы (например, Buffer, ByteArray).

  • Нумерация версий протокола: Возможно, что по мере развития Dash Platform на уровне протокола будут внесены кардинальные изменения (например, хард форк). Это приведёт к различным проблемам с совместимостью между ранее созданными данными и новыми версиями программ, а также к различным версиям клиентов и нод, работающих в одной сети. Ранее разработчики DCG решали эту ситуацию, стирая данные из Evonet и заставляя разработчиков обновлять платформу с каждым новым релизом. Этот подход работал на раннем этапе тестирования, но он не годится для тестовой и основной сетей. Чтобы организовать совместную работу различных версий данных, нод и клиентов, разработчики DCG вводят нумерацию версий, что позволит вносить кардинальные изменения, не влияя при этом на пользовательский опыт.

  • Улучшения DPNS: В связи с предстоящим выпуском DIP для Сервиса Имён Dash Platform (DPNS), в контракт данных DPNS были внесены некоторые улучшения, в том числе добавлена функция “имя по умолчанию” для Блокчейн ID. C новым типом записи `dashUniqueIdentityId` пользователь может быть уверен, что для его Блокчейн ID будет доступен только один идентификатор, и в UI будет использоваться главное или основное имя пользователя, например, из кошелька DashPay. Если пользователю понадобится псевдоним, он также сможет зарегистрировать один или несколько идентификаторов с помощью типа записи `dashAliasIdentityId`.

  • Рефакторинг библиотеки кошелька на JS: Ранее библиотека кошелька на JavaScript опиралась на методы, оставшиеся со времён раннего прототипа Evolution, например, на метод getUTXO. Он был полезен для загрузки Dash Platform, но работал довольно медленно и открывал возможности для DDoS атаки на сеть. Кроме того, у него отсутствовали некоторые приватные функции, например, вероятностные фильтры. Недавно мы признали этот метод устаревшим, и полностью отказались от него в этом релизе. Теперь библиотека кошелька использует поток Transactions с фильтром Блума, как у текущего кошелька Dash на p2p, но вместо прямого перехода от ноды к ноде использует HTTP в качестве протокола передачи. Соответственно, логика обработки транзакций в библиотеке кошелька значительно упростилась. Это важный шаг на пути к полному внедрению протокола DAPI SPV.

  • Улучшение установочного пакета: Мы внесли многочисленные улучшения в установочный пакет, чтобы упростить загрузку мастерноды. Помимо прочего, теперь у него есть три следующие функции: во-первых, обычно присущая настройке среды сложность была значительно снижена с помощью команды `config` и удаления `.env` файлов. Теперь настраивать среду стало проще, например, получать и устанавливать значения, а также переключаться между средами. Во-вторых, благодаря внедрению настраиваемого майнера блоков упростились тестирование и разработка на одной отдельно стоящей ноде. С этим майнером блоков разработчикам больше не нужно майнить блоки вручную. В-третьих, первоначальная установка стала намного проще благодаря перемещению всех данных из директории установки в docker named volumes.

  • Изменения в конечных точках DAPI: чтобы установить общепринятый нейминг для API методов платформы, мы ввели в DAPI серию критических изменений. Методы `sendTransaction` и `applyStateTransition` теперь называются `broadcastTransaction` и `broadcastStateTransition` соответственно. Мы убрали сервис Transaction Filter Stream gRPC, чтобы использовать для конечных точек, имеющих отношение к ядру, только Core сервис. Также мы удалили небезопасные методы `getUTXO` и `getAddressSummary` и снизили тем самым вероятность хакерской атаки на платформу.

Заключение

В заключение хочется поблагодарить сообщество Dash за усилия, направленные на улучшение Dash Platform в свете её будущего запуска в тестовой и основной сетях. Проходящие в соцсетях обсуждения помогают командам DCG лучше подготовить их творение для использования в реальном мире, и очень вдохновляет нововведение с примерами использования, появившееся в сообществе разработчиков. Работающая над платформой команда провела много времени над этим релизом, потому что мы придерживаемся задачи обеспечить последовательный и надёжный прогресс всем, кто вложился в успех и развитие Dash. В дополнение к этому релизу, в течение следующих нескольких недель DCG также выпустят DIP-ы, имеющие отношение к Dash Platform Name Service (DPNS) и Блокчейн ID. Эти DIP-ы заменят собой DIP 5 (Блокчейн-пользователи) и раскроют больше технических подробностей касательно изменений, произошедших в изначально задуманной версии имени пользователя.

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

Примечания к релизу

Оригинал: https://blog.dash.org/release-announcement-dash-platform-v0-15-on-evonet-88131f9c477b

Обсудить в Discord!