Язык Cairo: основа смарт-контрактов в StarkNet и STARK-доказуемых программ

Cairo — это язык программирования для написания программ и смарт-контрактов, которые легко преобразуются в STARK-доказательства корректного выполнения. Его разработала компания StarkWare — создатель zk-роллапов на основе STARK и сети StarkNet.

Cairo изначально задумывался как низкоуровневый язык для доказуемых вычислений, но с развитием версии Cairo 1 стал ближе к современным системным языкам (по духу — к Rust), при этом сохранив фокус на формальной проверяемости.

Язык Cairo — основа смарт-контрактов и доказуемых программ в StarkNet

Не путать с библиотекой отрисовки «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-роллапов.

См. также

Task Runner