Midnight подробно описывает исправления безопасности в Ledger 9.1.0.1

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

By SongMarketCap

Updated:

Midnight News - Midnight подробно описывает исправления безопасности в Ledger 9.1.0.1

Midnight опубликовала исходный код и примечания к выпуску для Ledger 9.1.0.1, версии, активированной в основной сети во время обновления сети 6 ноября. В релизе перечислены 13 исправлений, включая изменения в расчете комиссий за транзакции, лимитах блоков и способе отображения монет в кошельках.

Согласно примечаниям к выпуску операторы узлов получили программное обеспечение 3 ноября. Исходный код и описания исправлений были опубликованы 7 ноября. Обновление также отклоняет некоторые транзакции, которые более ранние сборки Ledger 9 принимали.

Изменения в комиссиях за транзакции и лимитах блоков

Ledger это часть программного обеспечения Midnight, которая определяет, действительны ли транзакции и сколько они стоят. Midnight перешла на Ledger 9 без обычного опережающего периода в тестовой сети Preprod. Проект объяснил, что использует более контролируемый процесс релизов, когда этого требуют исправления безопасности.

Одна проблема затрагивала то, как узлы обрабатывали повторяющиеся записи в общих структурах данных. Согласно примечаниям к выпуску маленькая транзакция могла заставить узел выполнить экспоненциально возрастающий объем работы до проверки своей комиссии. Обновленный ledger отклоняет повторяющиеся записи до расчета комиссии и обрабатывает данные за время, пропорциональное их размеру.

Два других исправления касаются лимитов блоков. Ранее транзакция могла заявлять удаления, которых она фактически не выполняла, что уменьшало комиссии за другие части транзакции и позволяло обойти лимит на чистое количество записанных байтов. Отдельная проблема расчета позволяла учитывать заявленное время вычислений не менее 2⁶³ пикосекунд как нулевое. Оба типа транзакций теперь отклоняются как недействительные.

DUST, кошельки и мост Cardano

Комиссии за транзакции Midnight оплачиваются с помощью DUST, ресурса, генерируемого из владений NIGHT. В примечаниях к выпуску описана проблема, при которой смарт контракт мог захватывать избыточный ресурс комиссии, начисленный во время регистрации, при этом регистрант все равно получал полную сумму. Вызовы контрактов, передающие ресурс комиссии как публичный вход или выход, теперь отклоняются.

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

Обновление также более тщательно очищает из памяти конфиденциальные данные, производные от сидов кошельков. Некоторые из перечисленных исправлений ссылаются на результаты аудита, а примечания указывают на девять рекомендаций по безопасности GitHub, страницы которых не были общедоступны утром 8 ноября.

Отдельное исправление касается протокольного моста, предназначенного для перевода токенов из Cardano в Midnight. Ранее требования с нулевой стоимостью могли проходить проверку без уплаты комиссии. Теперь требования должны соответствовать необходимому минимуму или покрывать весь оставшийся баланс. Мост присутствует в коде Ledger 9, но остается отключенным в основной сети до тех пор, пока отдельное управленческое решение не активирует его.

[NEWSBREAK]

Пакеты для разработчиков и остающиеся проблемы

В релиз входят @midnight-ntwrk/ledger-v9 1.0.1, onchain-runtime-v4 4.0.1 и Proof Server 9.0.1. Proof Server генерирует доказательства с нулевым разглашением, используемые в транзакциях. В документации по обновлению основной сети Midnight отдельно указан Proof Server 9.0.0 среди совместимых компонентов.

Ledger 9.1.0.1 отклоняет транзакции с дублирующимися подписями комитета или дублирующимися регистрациями комиссии. Контракт может содержать не более 256 операций, за каждое развертывание взимается плата за его полное состояние, а заявленный газ должен оставаться в пределах лимита блока.

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

Две известные проблемы из версии 9.1.0.0 остаются открытыми. Одна из них может привести к отклонению вызова контракта, если его комиссия оплачена ровно одной тратой DUST. В документации Midnight в качестве обходного пути указано использование двух или более трат DUST, пока исправление планируется для одного из следующих выпусков.