Ежемесячный отчет Neo Global - Разработка

Май 2022

Ежемесячный отчет Neo Global - Разработка

Основные моменты

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

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

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

Между тем, Neo SPCC исследовала новые оптимизации NeoFS в виде сервиса дерева объектов, а NGD Enterprise продолжала заниматься разработкой своего нового компилятора для смарт-контрактов TypeScript.

Полный ежемесячный отчет о глобальном развитии Neo за май можно найти ниже.

РАЗРАБОТКА ПРОТОКОЛА

РАЗРАБОТКА ПРОТОКОЛА

Ядро Neo

Реализованы апдейты обработки исключений для межконтрактных вызовов

Добавление изоляции снимков в ядро Neo стало из самых важных майских Neo обновлений. После обновления изменения состояния, вызванные использованием контракта, хранятся отдельно между запусками контракта.

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


Поддержка хардфорков на уровне протокола и корректировки цен системного вызова

Команда разработчиков работала над выпуском Neo v3.3.0 в мае. Данный апдейт станет первым выпуском, включающим поддержку хардфорков на уровне протокола. Это позволяет платформе вносить коррективы в жестко закодированные цены системного вызова, не нарушая транзакции в прошлых блоках. В первом форке сборы за getRandom и createMultisigAccount были скорректированы, чтобы смягчить проблемы с DoS и другие проблемы.


NeoVM дополнен новыми опкодами и глубокими копиями, которые становятся неизменяемыми для StackItems

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


Условная компиляция и новые методы были добавлены в neo-devpack-dotnet

Компилятор контрактов C# был также обновлен в мае. Обновление включает новые математические методы для возврата абсолютных значений, оптимизацию для карт хранения и возможность объединения bytestrings.

Также была реализована поддержка условной компиляции через #if DEBUG, что улучшило рабочий процесс разработки контрактов для разработчиков C#. В частности, его можно использовать для временного отключения атрибута safe в методах, доступных только для чтения, что позволяет использовать Runtime.Log() во время разработки без ущерба для кода.

ИНФРАСТРУКТУРА И РАЗРАБОТКА ИНСТРУМЕНТОВ

ИНФРАСТРУКТУРА И РАЗРАБОТКА ИНСТРУМЕНТОВ

Основные моменты

ИНФРАСТРУКТУРА И РАЗРАБОТКА ИНСТРУМЕНТОВ

Этапы Проекта

НОДЫ

NeoGo от Neo SPCC

Neo SPCC завершил новую порцию обновлений NeoGo в этом месяце. Как и в прошлые месяцы, изменения были разделены между изменениями протокола в эталонной реализации и оптимизацией узлов Go и исправлениями ошибок.

Отслеживая ядро и его недавний выпуск v3.3.0, команда реализовала все настройки, необходимые для поддержания полной совместимости C#. К ним относятся сопоставимые лимиты байтов, неизменяемые элементы стека и новые опкоды в виртуальной машине, а также поддержка хардфорков и различные рефакторинги/смягчения DOS.

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

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

https://github.com/nspcc-dev/neo-go

SDK

neow3j от AxLabs

Axlabs выпустила версию 3.17.1 neow3j в мае и внесла изменения в SDK и devpack. В первом выпуске было внесено изменение, которое позволяет создавать транзакции, которые будут заканчиваться в состоянии FAULT в NeoVM. Первоначально могли передаваться только успешно выполненные транзакции; новая опция позволит осуществлять ошибочные сделки для целей тестирования контрактов.

В пакете разработки были добавлены новые удобные методы, упрощающие извлечение Hash160 и Hash256 из классов Storage и StorageMap без необходимости ручного создания экземпляров.

https://github.com/neow3j/neow3j

СМАРТ-КОНТРАКТЫ И СТРУКТУРА ДЕЦЕНТРАЛИЗОВАННЫХ ПРИЛОЖЕНИЙ

Инструменты Neo Blockchain от NGD Enterprise

Neo Blockchain Toolkit получил ряд изменений после обновлений Ядра Neo v3.3. Пре-релизы были опубликованы и проходят тестирование. Ожидается обновление плагинов, необходимых для последнего запуска. Дизайн схемы хранилища, который был предварительно просмотрен командой в прошлом месяце, также был изменен после отзывов и проверок разработчиков.

Команда также продолжила свои усилия по разработке нового компилятора смарт-контрактов для TypeScript, который в настоящее время находится на ранних стадиях разработки. После завершения работы язык станет пятым поддерживаемым языком смарт-контрактов Neo N3, представляя основную возможность адаптации для традиционных (особенно веб) разработчиков к блокчейну.

https://marketplace.visualstudio.com/items?itemName=ngd-seattle.neo-blockchain-toolkit

КОШЕЛЕК

NeoLine от NEXT

Основные улучшения были завершены для кошелька расширения NeoLine Chrome в мае. Поддержка аппаратных устройств кошелька Ledger, пользовательских сетей и RPC-серверов, а также улучшений UX, таких как поиск кошелька и индикатор активного кошелька. NEXT также переработал пользовательский интерфейс для своей страницы сведений о кошельке, переписав базовую логику для учета новых функций и улучшив дизайн.

https://neoline.io/

NEOFS

NeoFS от Neo SPCC

В течение мая разработчики NeoFS работали над улучшением производительности и ремонтопригодности. Наиболее значительное изменение – это сервис дерева объектов, обрабатывающего управление доступом, репликации и приносящего с собой ряд оптимизаций. Рефакторинг ИНТЕРФЕЙСА командной строки, обновление SDK и улучшения API также были реализованы в ядре NeoFS.

Сервисы NeoFS также были скорректированы для принятия службы дерева, что улучшило производительность в шлюзе S3 при высокой нагрузке. Команда также подготовилась к публичному выпуску сервиса NeoFS CDN и создала универсальный инструмент нагрузочного тестирования для бенчмаркинга S3-совместимых решений.

https://fs.neo.org/

АУДИТ

Аудит Red4Sec

Red4Sec продолжила аудит экосистемных проектов в мае, включая обзор исправлений и окончательную поставку смарт-контрактов GrantShares, обзоры запросов PayProxy и новую проблему, обнаруженную в проекте FlamingoSwapPair. В июне также был запланирован аудит Saffron Finance на июнь, и в основной платформе Neo были обнаружены и сообщены о двух уязвимостях.

https://red4sec.com/en