Инженерные обновления Oasis за 3 квартал 2022

Roman
Oasis Foundation Russian
7 min readNov 8, 2022

Третий квартал выдался достаточно продуктивным для команды Oasis Engineering, и сегодня мы хотели бы поделиться с вами рядом новостей и обновлений.

Эта публикация является переводом, сделанным одним из послов Oasis. Мы проводим строгие проверки для точности переводов, но в них всё же могут попадаться ошибки или несоответствия. Oasis не несет ответственности за точность или надежность перевода. Оригинальную статью вы можете прочитать по ссылке.

Мы добились значительных успехов в переносе Sapphire на уровень ParaTime, запустив его в тестовой сети в конце июля. Теперь можно создавать и развертывать EVM-совместимые конфиденциальные смарт-контракты на Sapphire ParaTime в Testnet. Детальнее об этом мы поговорим позже!

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

Веб-версия Oasis Wallet, которую мы планируем использовать в качестве общей базы кода для всех кошельков Oasis в будущем, также претерпела значительные обновления в плане поддержки локального хранилища браузера и транзакций ParaTime. Эти обновления приближают нас к выпуску Oasis Wallet — Browser Extension 2.0, которое мы выпустим уже на основе общей кодовой базы.

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

Мы с нетерпением ждем четвертого квартала, на который запланирован выход ряда других, ещё более масштабных обновлений. В частности, в следующем квартале мы уже планируем запуск Sapphire в Mainnet.

Ниже вы сможете найти полную информацию об инженерных обновлениях за третий квартал года.

Обновления кошелька

В третьем квартале для Oasis Wallet — Web произошло сразу несколько обновлений в сторону развития поддержки локального хранилища браузера, а также транзакций ParaTime. Мы планируем выпустить поддержку ParaTime-ов позже в этом году, после чего запланирован и релиз следующего поколения Oasis Wallet — Browser Extension на основе этой общей базы кода. За квартал мы сделали 112 pull requests. А вот и некоторые из наиболее заметных дополнений и исправлений (включая работу над веткой ParaTime-ов):

  • Отображение списка транзакций ParaTime (#849)
  • Исправления расширения браузера (#904)
  • Добавлены правила lint, чтобы обеспечить type-safe замены. (#911, #914)
  • По умолчанию null баланс вместо 0 (отображает ‘-’ когда баланс неизвестен) (#916)
  • Отображение только AddEscrowForm на ваших аккаунтах (#918)
  • Неудачные транзакции отмечаются специальным образом (#925)
  • Прекратили использовать вводящие в заблуждение поля баланса из RPC (#927)
  • Добавлена кнопка “Reclaim All” (#931, #932)
  • UI изменён в сторону большей схожести с интерфейсом Oasis Wallet — Browser extension (#933, #935, #936, #937)
  • Улучшена числовую точность с помощью BigNumber.js (#952)
  • ParaTime депозиты и снятие средств (#962, #969)
  • Отображение предполагаемого времени разъединения в списке разъединения (#963)
  • Ускорение загрузки конфигурации сети на 40% (#976)
  • Исправлен импорт нескольких учетных записей из Ledger (#980)
  • Добавлена поддержка получения нескольких учетных записей из мнемоники. (#983)
  • Использование правильного тикера в сводке аккаунта (#1026)
  • Уменьшен размер пакета(7.2MB -> 5.4MB) с постоянным импортом люверсов (#1038)
  • Небольшие исправления пользовательского интерфейса (#868, #879, #903, #919, #921, #922, #928, #946, #947, #949, #953, #958, #999, #979, #1019, #1049)

В преддверии того как кодовая база Oasis Wallet — Web станет базой для обоих кошельков, мы продолжаем улучшать Oasis Wallet — Browser Extension. В третьем квартале мы совершили 9 pull requests и выпустили версию 1.8.0. А вот и список значимых изменений:

  • Добавление Sapphire в Testnet (#279)
  • Улучшение числовой точности при возврате условного депонирования (#281)
  • Опрос статуса транзакции Sapphire (сейчас транзакции уже индексируются) (#285)
  • Исправлен бег “invalid nonce” (#282)
  • Небольшие исправления пользовательского интерфейса (#280, #282, #286)

Oasis CLI, унифицированный CLI для управления вашей учетной записью, также получил ряд улучшений:

  • Добавлена поддержка дампа развернутых контрактов WASM (#1007)
  • Добавлена поддержка дампа состояния контрактов (#1034)
  • Поиск адреса по имени учетной записи, добавление поддержки тестовых учетных записей (#1038)
  • Поддержка изменения политики обновления контракта (#1052)
  • Добавлена поддержка адресной книги (#1087)

Для подписания ParaTime транзакций с использованием аппаратных кошельков, таких как Ledger, была предложена новая спецификация ADR 14. Реализация начнется в четвертом квартале.

Обновления PARATIME

  • Emerald и Cipher ParaTimes стабильно работали в Mainnet без простоев или других инцидентов на протяжении всего третьего квартала.
  • Влияние медвежьего рынка на использование DeFi можно увидеть по объемам транзакций на Emerald. Дневной пик в третьем квартале пришелся на начало июля с примерно 60 тысячами транзакций в день, затем он неуклонно снижался и завершил квартал с 16–18 тысячами транзакций в день.
  • По состоянию на 30 сентября 52 ноды используют Emerald ParaTime в Mainnet.
  • По состоянию на 30 сентября 29 нод используют Cipher ParaTime в Mainnet.

Разработка PARATIME

В третьем квартале состоялся ряд важных изменений для ParaTime-ов Oasis.

В конце июля мы успешно развернули в Testnet новый конфиденциальный EVM-совместимый Sapphire ParaTime, код которого доступен на sapphire-paratime и oasis-sdk GitHub репозиториях.

Для удобства мы добавили поддержку дампа развернутого кода смарт-контракта на Cipher ParaTime и дампа (опционально зашифрованного) состояния смарт-контракта. Это прокладывает путь для проверки контрактов в чейне и должно улучшить процесс отладки.

Сводка изменений Runtime SDK:

  • Добавлена транспортная библиотека шифрования в web-ts; derive_symmetric_key tests for go, rust and typescript (#962)
  • ORC tool: Добавлена поддержка подписи двоичных файлов SGXS. (#1056)
  • EVM: Не требуется шифрование пустой строки (#1064)
  • Исправление расчета газа: исправлена отправка подвызова (#1066)
  • EVM: Предоставление открытых данных в подписанных запросах (#1069)
  • EVM: Добавлена прекомпиляции шифрования (#1102)
  • EVM: Не кодировать контракт, создать вывод (#1138)
  • Улучшенные тесты и документация (#991, #1041, #1046, #1047, #1081, #1101)

Обновления платформы разработчиков

Теперь есть возможность создавать и развертывать EVM-совместимые конфиденциальные смарт-контракты в Sapphire ParaTime в Testnet. Ознакомьтесь с обучающими материалами. Будем благодарны за обратную связь.

Emerald Web3 Gateway теперь поддерживает как Emerald, так и Sapphire ParaTime. Остальные исправления в основном включают в себя проблемы с версиями зависимостей. В третьем квартале мы сделали 9 pull requests. Также состоялся релиз новой версии v3.0.0 с исправлениями функций оценки газа, а в выпуск v3.1.0-rc1 добавил поддержку Sapphire.

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

  • Пользователи Oasis Network (общая информация о сети Oasis, фонде, руководства по кошелькам)
  • Информация, связанная с сообществом
  • Операторы узла (параметры сети Mainnet и Testnet, настройка различных видов узлов и сервисов)
  • Разработчики dApp (написание приложений для Emerald, Sapphire, и Cipher)
  • Разработчики ParaTime
  • Основные участники

Улучшения серверной части:

  • Поддержка редактирования любого Markdown файла независимо от исходного местоположения репозитория.
  • Бесшовное связывание файлов .md и карточек документов из других репозиториев
  • Поддержка импорта фрагментов кода из файлов
  • Для обратной совместимости настроены редиректы для всех предыдущих документов

Документация была перенесена с домена docs.oasis.dev на новый домен docs.oasis.io. Надеемся, что вам понравятся новые изменения. Вы можете смело вносить собственніе обучающие материалы, руководства и исправления по адресу https://github.com/oasisprotocol/docs просто отправив pull request!

ADR 17 вводит стандартный формат для стандартов совместимости приложений ParaTime. Это соответствует нашему первому запросу RFP, в котором запрашивается конфиденциальный стандарт взаимозаменяемых токенов для Sapphire ParaTime.

Обновления CORE PLATFORM

В третьем квартале мы выкатили три отладочных релиза Oasis Core 22.1.x (v22.1.9, v22.1.10, v22.1.11). Параллельно мы начали разработку Oasis Core 22.2.x с такими ключевыми функциями, как Intel SGX2, аттестация на основе DCAP, улучшения управления в цепочке и безопасность среды выполнения на основе TEE. Стабильная версия запланирована на начало четвертого квартала. По итогу в третьем квартале мы сделали 64 pull request-а. А вот и некоторые из наиболее значимых новых функций и критические изменения (большинство из них запланировано на Oasis Core 22.2.x, а некоторые были перенесены на 22.1.x):

  • go/staking/grpc: Переименован ошибочно названный метод GovernanceDeposits (#4652)
  • go/runtime: Предоставление мандата на использование управления расписанием выполнения (#4665)
  • Добавлена поддержка PCS аттестации (#4806, #4789, #4720, #4752)
  • go/governance: Добавлено предложение по изменению параметров (#4938)
  • Добавлена поддержка режима архива (#4539)
  • go/control: Показываются статусы параметров отладки в управляющем выводе (#4634)
  • runtime: Постоянное состояние проверки транзакций сделано настраиваемым (#4640)
  • go/runtime/txpool: Ограничение на количество незавершенных транзакций на отправителя (#4665)
  • go/control/status: Добавлены поля для быстрого обзора состояния узла (#4669)
  • go/worker/storage: Выбор одноранговых узлов синхронизации контрольной точки стал более умным (#4671)
  • runtime: проверка эпохи в диспетчере, используя верификатор консенсуса (#4677)
  • go/worker/compute: Убедитесь, что trust root проверен перед регистрацией (#4678)
  • go/worker/compute: Раннее начало пакетного разрешения для резервного рабочего (#4679)
  • go/runtime/txpool: Добавить данные входящих сообщений roothash в качестве транзакций (#4681)
  • go/worker/registration: добавлены метрики состояния ноды (#4686)
  • runtime: Включить диспетчер для проверки целостности состояния для запросов (#4694, #4830, #4904)
  • go/worker/common/p2p: Добавить поддержку постоянных и заблокированных пиров (#4713)
  • go/worker/common: Правильно обрабатывать конфигурации диспетчера динамических ключей (#4715)
  • go/runtime/txpool: Добавить метрику txpool для отклоненных транзакций во время выполнения (#4724)
  • runtime: Проверять, находится ли RAK в состоянии консенсуса при обслуживании запросов (#4741)
  • runtime: Добавлена поддержка создания отчетов об отзывах одноранговых узлов EnclaveRPC. (#4757)
  • archive-mode: отключить P2P во время выполнения, если используется режим архива (#4775)
  • go/consensus/tendermint: Добавлено consensus.tendermint.halt_height (#4793)
  • net-runner: Добавлен флаг fixture.default.runtime.version (#4813)
  • go/oasis-node: разрешить km иметь частные пиры (#4821)
  • go/runtime/registry: разрешить клиентским узлам запускать среды выполнения sgx (#4832)
  • go/worker/keymanager: Добавлены основные рабочие показатели менеджера (#4877)
  • go/control/status: Добавлен статус рабочего менеджера ключей в статус узла (#4883)
  • keymanager: Добавлена поддержка эфемерных ключей (#4888)
  • oasis-net-runner: Установлен max_allowances по умолчанию, увеличьте баланс тестового аккаунта (#4902)
  • runtime/consensus/verifier: Поддержка обновлений доверительного корневого уровня консенсуса (#4903)
  • runtime: Поддержка согласованных запросов событий (#4904)
  • keymanager: Проверять последнюю высоту trust root в запросах диспетчера ключей (#4910)
  • registry: Добавить транзакцию консенсусного уровня ProveFreshness (#4916)
  • runtime: Добавить проверку свежести клиентского узла TEE (#4922)
  • keymanager: Убедитесь, что политика была опубликована на уровне консенсуса. (#4925)
  • Привяжите аттестации TEE к узлам и обеспечивайте актуальность (#4926)
  • go/genesis: Кэшировать вычисленный хэш исходного документа (#4919)
  • go/oasis-node/cmd: unsafe-reset сохранить локальное хранилище по умолчанию (#4700)
  • go/oasis-node/cmd: unsafe-reset проверить валидность datadir (#4702)
  • runtime: Выдавать логи выполнения как логи oasis-node (#4709, #4924)

Новый Oasis Indexer имеет открытый исходный код и поддерживает индексирование как транзакций уровня консенсуса, так и транзакций уровня ParaTime. В третьем квартале основное внимание уделялось созданию базовых функций, добавлению кэширования, исправлению ошибок и совершенствованию инструментов развертывания. Были объединены 25 PR. Также в будущем мы планируем внедрить Oasis Indexer в кошельки Oasis.

ADR 15 имеет целью устранить недостатки в процессе выбора поставщиков блоков ParaTime. В настоящее выбор предлагающего блок выбирается с помощью алгоритма циклического перебора, что упрощает его заблаговременное определение для данного блока. ADR 15 предлагает механизм рандомизации порядка предложения блоков в Paratime.

ADR 16 предлагает более эффективный процесс обновления параметров консенсуса в сети Oasis. В настоящее время для изменения параметров консенсуса необходимо обновить двоичные файлы oasis-nod-ы, перезапустить их и выполнить повторную синхронизацию с новой версией сети консенсуса. ADR 16 добавляет новое предложение по управлению ChangeParametersProposal, которое может предотвратить простои и повысить отказоустойчивость сети.

--

--