Пока я читал про архитектуру протоколов Newton, кое-что привлекло мое внимание. Они решили разделить логику политики, вычисления и выполнение на три уровня.
* Первый уровень называется Policy Layer (Уровень политики). Здесь определяются политики, настраиваются и подключаются к оракулам, которые предоставляют данные. Этот слой определяет, какие правила должны применяться, например лимиты расходов, проверки санкций или требования know-your-customer (знай своего клиента).
Второй уровень — Compute & Consensus (Вычисления и консенсус). После проверки политик в блокчейне Newton отправляет задачи сети операторов через Gateway (шлюз). Эти операторы получают данные, оценивают политику и создают подписи.
* Затем агрегатор объединяет эти подписи в одно доказательство, когда достаточно операторов приходят к согласию.
В этот процесс подключаются уровень верификации и исполнения.
* Здесь PolicyClient проверяет доказательство через AttestationValidator, прежде чем транзакция сможет произойти.
* Смарт-контракт проверяет результат повторного выполнения работы с политикой.
С инженерной точки зрения такое разделение помогает.
* Это сохраняет всё ясным и разделённым.
* Уровень политики только задаёт правила.
* Уровень вычислений и консенсуса только вырабатывает оценку.
* Уровень верификации только проверяет доказательство перед выполнением.
Поэтому при таком разделении правила политики могут меняться, не затрагивая контракты верификации.
* Верификация остаётся отделённой от того, как операторы вычисляют политики.
* Это также задаёт рабочий процесс.
* Разработчики задают политики один раз.
* Операторы вычисляют их вне блокчейна.
* Смарт-контракты только проверяют доказательство перед выполнением транзакций.
Ньютон делает вычисление политики отдельным сервисом, который формирует доказательства для контрактов.
* Мне показалось интересным это разделение в документации.
Создание как on-chain авторизация становится более сложным — помогает ли разделение определения, вычисления и проверки политики лучше, чем размещение логики авторизации в смарт-контрактах @NewtonProtocol #Newt $NEWT

