Сегодня я потерял чертовски много времени на отладку Python-скрипта, который отказывался запускаться. Я все время думал, что где-то случилось что-то сложное, а в итоге оказалось, что я просто напутал с отступами в одном блоке. Один единственный неверный отступ. Вот и всё.
Это вообще не было связано с криптой — просто маленький торговый дашборд, который я для себя собираю, — но после того как я часами пялился в Python, у меня не проходило ощущение, что языки программирования обладают удивительным талантом превращать простые идеи в ненужную сложность.
Такое мышление сохранилось и тогда, когда я снова прошёл по документации Newton Protocol.
Одна деталь, на которую я раньше почти не обращал внимания, вдруг стала бросаться в глаза. Политики, которые приводят в действие Newton, не написаны на каком-то новом крипто-языке. Они написаны на Rego — языке политик за Open Policy Agent (OPA), той же технологии, которая годами обеспечивает правила безопасности и управления в кластерах Kubernetes, на облачных платформах, в API-шлюзах и в корпоративной инфраструктуре.
Это решение кажется более значимым, чем поначалу может показаться.
Многие крипто-проекты придумывают предметно-ориентированные языки, которые существуют только внутри их собственной экосистемы. Ньютон этого не сделал. Вместо этого он выбрал язык, который уже был испытан в средах, где ошибки могут иметь серьёзные операционные последствия. OPA потратила годы, доказывая свою состоятельность в продакшене — задолго до того, как вообще прикоснулась к блокчейну.
В этом подходе есть что-то успокаивающее. Вместо того чтобы просить разработчиков доверять ещё одному экспериментальному крипто-примитиву, Ньютон опирается на инструменты, которые уже заслужили доверие в других областях.
Но чем глубже я вникал в сам Rego, тем больше я замечал другой повторяющийся шаблон.
Среди инженеров, работающих с облаком, ходит шутка, которая снова и снова всплывает: всем нравится идея политики как кода, но очень немногие на самом деле получают удовольствие от написания Rego.
Причина понятна. Rego — не императивный язык, как Python или JavaScript, где вы описываете последовательность шагов. Он декларативный. Вы задаёте условия, которые должны быть истинными, а движок сам выполняет вычисления. Для тех, кто раньше не работал с языками на базе логики, это совершенно другой способ мышления.
Из-за этого мне становится интересно, не является ли техническая задача здесь вообще не самой большой.
Если опытные инженеры инфраструктуры регулярно описывают Rego как язык с крутой кривой обучения, то что произойдёт, когда разработчики в крипто-сфере — многие из которых проводят большую часть времени в Solidity или JavaScript — внезапно будут вынуждены выражать в нём логику комплаенса?
Внутри Newton эти политики не решают, должна ли проверка безопасности пройти деплой Kubernetes. Они решают, удовлетворяют ли транзакции правилам, заданным издателями и кураторами. Незаметная логическая ошибка — это не просто неудобство; она может одобрить активность, которую следовало отклонить, или отклонить активность, которая должна была быть разрешена.
Это совсем другой уровень ответственности.
Вот почему я считаю, что более интересный вопрос не в том, способен ли Rego технически. Судя по всему, способен. Он уже доказал себя в корпоративной инфраструктуре.
Вопрос в том, достаточно ли она доступна для тех людей, которым Ньютон ожидает поручить написание этих политик.
Более широкое видение Ньютона зависит от того, чтобы создание политики стало тем, что организации могут спокойно вести самостоятельно, а не полагаться на жёстко заданные правила. Если для написания таких политик нужна глубокая осведомлённость в языке, который многим инженерам уже кажется неинтуитивным, то ограничением может стать не безопасность, а удобство использования.
Выбор Rego вместо изобретения собственной кастомной лязыковой модели кажется мне более разумным решением для долгосрочной архитектуры. Это позволяет избежать переизобретения целой экосистемы политик и воспользоваться годами существующих инструментов и операционного опыта.
Но архитектура — это только половина истории.
Бета Mainnet всё ещё в самом начале, и за пределами традиционных кругов облачной безопасности опытные разработчики Rego пока остаются относительно небольшой группой. Я ещё не видел серьёзных обсуждений того, как Ньютон планирует сделать авторинг политик проще для крипто-ориентированных разработчиков, которые раньше никогда не работали с OPA.
У этой технологии уже сложилась сильная репутация.
Теперь самое интересное — увидеть, сможет ли в итоге человеческий опыт догнать эту технологию.
