Тест на децентрализацию Cardano выходит за рамки простого подсчета нод

Ведущий Cheeky Crypto Ник Реган объясняет, почему несколько независимых клиентов Cardano усиливают децентрализацию только тогда, когда они последовательно интерпретируют протокол. CPS-0034 предлагает расширить тестирование Plutus Core на текущие и исторические версии протокола.

By SongMarketCap

Cardano News - Тест на децентрализацию Cardano выходит за рамки простого подсчета нод

Nick Regan, сооснователь и ведущий Cheeky Crypto, опубликовал разбор длительностью 24 минуты о менее заметном риске внутри децентрализации Cardano: независимо разрабатываемом программном обеспечении, которое может не соглашаться в правилах сети. Cheeky Crypto это платформа анализа и обучения в сфере крипто, основанная в 2020 году Ником и Крисом Regan.

Regan связал свой анализ с CPS-0034, открытым Cardano Problem Statement, предлагающим расширенное тестирование на соответствие для эвалюаторов Plutus Core, используемых альтернативными реализациями узла Cardano. Обсуждение выходит за рамки распределения стейк пулов, участия в управлении и числа машин, подключенных к сети.

Несколько клиентов не повышают безопасность автоматически

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

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

Еще один риск возникает, когда эти реализации по разному интерпретируют протокол.

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

UPLC, или Untyped Plutus Core, это язык выполнения, в который компилируются смарт контракты Plutus. Альтернативному эвалюатору не нужно воспроизводить структуру устоявшейся реализации Cardano на Haskell, но он обязан воспроизвести поведение, важное для консенсуса, ожидаемое протоколом.

Regan описывает это требование как необходимость независимого согласования.

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

Regan использует заголовок “ADA Has a Decentralisation Problem”, чтобы отделить этот риск на уровне программного обеспечения от дискуссий о децентрализации, с которыми чаще сталкиваются держатели. Его анализ сосредоточен на профилактической работе с инфраструктурой, а не на разборе уже произошедшего инцидента в мейннете.

CPS-0034 расширяет тестирование соответствия Plutus Core

Команда Plutus Core открыла предложение для публичного рассмотрения 12 августа. Редакторы CIP впоследствии присвоили ему номер CPS-0034 после первоначального рассмотрения, при этом техническое предложение остается открытым для обратной связи.

Согласно предложению CPS-0034, Cardano в настоящее время предоставляет внешним разработчикам около 1 000 заранее определенных тестов с эталонными файлами. Они позволяют независимому эвалюатору выполнить предоставленный скрипт и сравнить его вывод с ожидаемым результатом.

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

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

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

CPS-0034 предлагает распространять сгенерированные тест кейсы в переносимом формате, который внешние реализации смогут потреблять с минимальными усилиями по интеграции. Каждый тест может содержать программу, ее входные данные, ожидаемый результат и, где применимо, ожидаемый бюджет выполнения.

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

Предложение специально сфокусировано на соответствии эвалюаторов Plutus Core. Оно не определяет полноценную систему тестирования для всех сетевых, реестровых и консенсусных компонентов внутри узла Cardano. Его значимость для безопасности узлов объясняется тем, что разные результаты оценки скриптов могут изменить статус валидности транзакции или блока.

Независимый код должен доказать согласованное поведение

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

К публичному обсуждению уже присоединились разработчики, связанные с Amaru. Amaru это клиент узла Cardano с открытым исходным кодом, написанный на Rust, предоставляющий операторам реализацию, разработанную отдельно от устоявшегося Haskell cardano-node.

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

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

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

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

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