Cairo — это язык программирования для написания программ и смарт-контрактов, которые легко преобразуются в STARK-доказательства корректного выполнения. Его разработала компания StarkWare — создатель zk-роллапов на основе STARK и сети StarkNet.
Cairo изначально задумывался как низкоуровневый язык для доказуемых вычислений, но с развитием версии Cairo 1 стал ближе к современным системным языкам (по духу — к Rust), при этом сохранив фокус на формальной проверяемости.
Не путать с библиотекой отрисовки «Cairo graphics» — это совершенно другой проект.
Зачем нужен Cairo в экосистеме zk-роллапов
В классической модели smart-contract платформы (Ethereum, EVM-совместимые сети):
- смарт-контракты выполняются на каждом узле сети;
- корректность обеспечивается повторным исполнением байткода всеми валидаторами.
В мире zk-роллапов и STARK-доказательств часть логики переносится в доказуемые программы:
- контракт/приложение пишется на Cairo;
- выполнение программы порождает трассу (trace), по которой создаётся STARK-доказательство;
- L1 (Ethereum) проверяет только криптографическое доказательство, а не переисполняет всю логику.
Отсюда требования к языку:
- строго детерминированное поведение;
- удобное представление вычислений в виде арифметизированной трассы;
- отсутствие «магии» и трудно формализуемых конструкций.
Cairo решает эту задачу: он спроектирован так, чтобы код хорошо транслировался в полиномиальные проверки, необходимые для STARK.
Cairo 0 и Cairo 1: эволюция языка
Исторически у языка есть два больших поколения:
- Cairo 0.x
Раннее поколение, ближе к ассемблеру/низкоуровневому DSL:
- минимум абстракций;
- ручное управление множеством деталей;
- порог входа для разработчика высок, но язык отлично подходит для экспериментов с доказуемыми вычислениями.
- Cairo 1.x
Новое поколение языка с более привычным синтаксисом:
- типобезопасность и строгая статическая типизация;
- паттерны и синтаксис, напоминающие Rust;
- более удобная работа с модулями, пакетами, тестированием;
- ориентация на написание смарт-контрактов для StarkNet и сложных on-chain-приложений (игры, DeFi, инфраструктура).
Современная разработка в экосистеме StarkNet происходит в первую очередь на Cairo 1: многие старые контракты переписываются, а tooling вокруг Cairo 0 постепенно уходит в «наследие».
Основные особенности языка Cairo
Ключевые особенности Cairo как языка для доказуемых программ:
- Детерминизм и «прозрачные» эффекты.
Всё, что влияет на выполнение программы, должно быть явно отражено в коде и состоянии — это важное требование для доказательств корректности.
- Ограниченный набор примитивов.
Нет произвольной работы с системным временем, случайностью или окружением — такие вещи вводятся через специально спроектированные примитивы, которые тоже попадают в трассу доказательства.
- Фокус на арифметику и структуры данных.
Cairo хорошо подходит для реализации криптографических примитивов, машин состояний, игровых логик и DeFi-протоколов, где много чистых вычислений и работы со структурами.
- Отсутствие плавающей запятой.
Как и в большинстве блокчейн-языков, используются целые числа и фиксированная точность — это упрощает формальное доказательство и исключает неоднозначность.
- Интеграция с доказательными системами STARK.
Cairo-программы компилируются в форму, удобную для генерации и верификации STARK-доказательств — это ключевое отличие от языков общего назначения.
Где используется Cairo: StarkNet, StarkEx и beyond
Основные сценарии использования Cairo:
- Смарт-контракты в StarkNet.
StarkNet — обобщённый zk-роллап над Ethereum, где Cairo является нативным языком смарт-контрактов. Через него реализуются:
- DeFi-протоколы;
- on-chain-игры и приложения;
- инфраструктурные сервисы (DEX, лендинги, NFT-маркетплейсы и т.д.).
- Приложения на базе StarkEx.
Ранние решения StarkWare (StarkEx) также использовали Cairo для описания логики движков (ордербуки, расчёты балансов, перпетуалы).
- Off-chain вычисления с on-chain проверкой.
Cairo подходит и для сценариев, где тяжёлые вычисления делаются за пределами блокчейна, а в сеть отправляется только доказательство правильности.
В перспективе Cairo рассматривается как язык для широкого класса доказуемых вычислений (не только для StarkNet), но сейчас его основная «экосистема» — именно StarkNet и продукты StarkWare.
Инструменты и экосистема вокруг Cairo
Вокруг языка формируется отдельный стек инструментов:
- Компилятор и toolchain.
Компилятор Cairo 1, тестовые фреймворки, средства сборки и пакетов.
- Интеграция с аккаунт-абстракцией.
В StarkNet модель аккаунтов реализуется через контракты, а логика аккаунта и подписи/валидации транзакций описывается на Cairo, что близко к концепции Account Abstraction.
- Инфраструктура и SDK.
Библиотеки и SDK для языков общего назначения (TypeScript, Python и др.), которые позволяют:
- компилировать и деплоить Cairo-контракты;
- вызывать их из dApp;
- управлять аккаунтами и транзакциями.
- Аудиты и best practices.
Появляются гайдлайны по безопасности и шаблоны проектирования — аналог того, что существует для Solidity/EVM, но с поправкой на особенности STARK-модели и L2-архитектуры.
Когда имеет смысл выбирать Cairo
Cairo — специализированный инструмент. Его имеет смысл рассматривать, если:
- вы строите продукт в экосистеме StarkNet / StarkEx;
- важна высокая производительность и масштабируемость за счёт zk-роллапа;
- вы готовы работать с относительно новой экосистемой, где стандарты и tooling всё ещё активно развиваются.
Если продукт рассчитан в первую очередь на классический EVM-стек, выбор будет скорее в пользу Solidity/Vyper или других EVM-языков (см. обзор EVM-совместимых сетей). Cairo — это ставка на линию развития, которая завязана на STARK-доказательства, StarkNet и архитектуру zk-роллапов.
