MMS

TL;DR

  • Cairo 1.0 — первый крупный релиз после появления Cairo два года назад .
  • Cairo 1.0 предоставит разработчикам более безопасный, простой и удобный язык программирования.
  • В основе Cairo 1.0 будет Sierra , промежуточный уровень представления, который обещает большую долгосрочную стабильность для программ Cairo.
  • Sierra продвигает Cairo для работы в сети без разрешений:
    Защита сети : обеспечивает более надежную защиту от DoS -атак
    Защита пользователя : обеспечивает устойчивость к цензуре уровня Ethereum
  • Cairo 1.0 повлияет на StarkNet во многих отношениях. Это также повлияет на Регенезис . Мы опубликуем дополнительную информацию о Regenesis в ближайшие недели.

Введение

В 2020 году мы выпустили Cairo, полный по Тьюрингу язык программирования, и сделали большой шаг к поддержке проверяемых вычислений с использованием STARK. Сегодня мы анонсируем Cairo 1.0 , самое крупное обновление Cairo на сегодняшний день. Он представит улучшенный язык с функциями, которые повысят удобство использования, безопасность и удобство. Он разработан для поддержки требований StarkNet как сети без разрешений, что позволяет протоколу стать проще и безопаснее.
Разработка уже идет, и мы ожидаем, что первый релиз состоится в ближайшее время.

В этом посте мы опишем путешествие Каира до сих пор и поделимся подробностями о предстоящих функциях.

Cairo путешествие

До 2020 года для создания STARK-доказуемых программ для общих вычислений требовались специальные знания. Это было возможно только для тех, кто понимал сложную математику, стоящую за СТАРКами. В частности, для каждой бизнес-логики, т. е. для каждого вычисления, необходимо было сгенерировать алгебраическое промежуточное представление (AIR) — набор полиномиальных ограничений, который представляет конкретное вычисление.

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

С тех пор сообщество разработчиков с энтузиазмом ухватилось за Cairo. Сегодня все в процветающей экосистеме StarkNet основано на Каире. Между StarkNet и StarkEx приложения на базе Cairo обработали более 220 миллионов транзакций, создали более 65 миллионов NFT и обработали сделки на сумму 700 миллиардов долларов, все расчеты проводились на Ethereum.

Хотя Каир сделал STARK доступным, он изначально был разработан как язык ассемблера и поэтому был написан как язык низкого уровня.

Пример ранних программ, написанных в Каире.

Благодаря отзывам разработчиков и развитию StarkNet мы постепенно сделали Cairo более выразительным и удобным для разработчиков.

Пример из контракта ERC-20 Cairo, демонстрирующий поддержку переменных, операторов if, ошибок и библиотеки UINT256.

Но вскоре мы пришли к выводу, что пора сделать большой шаг вперед и вместо постепенных улучшений Cairo перейти к более смелой трансформации.

Cairo 1.0

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

Представляем Sierra: гарантия того, что каждый запуск Cairo может быть проверен

Основным дополнением в Cairo 1.0 является Sierra ( безопасное промежуточное представление ) Sierra представляет собой новый промежуточный уровень представления между Cairo 1.0 и байт-кодом Cairo. Цель Sierra — гарантировать, что каждый запуск Cairo — т. е. программа Cairo и ее ввод — могут быть проверены (подробнее см. ниже).

Sierra обещает разработчикам Cairo лучший код, ориентированный на будущее. Дальнейшая стабильность обеспечивается тем, что контракты StarkNet не нуждаются в перекомпиляции в случае усовершенствований базовой системы (например, изменения архитектуры ЦП AIR, усовершенствования окончательного перевода байт-кода из Sierra в Cairo).

Доказательство каждого запуска Каира. В старом Cairo запуск Cairo может привести к трем случаям: TRUE, FALSE или сбою. Неудачные запуски не могут быть доказаны. Sierra, гарантирует, что запуск Cairo никогда не завершится ошибкой и может привести только к TRUE или FALSE. Это, в свою очередь, гарантирует, что каждый запуск Cairo может быть доказан.

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

  1. Секвенсоры смогут взимать комиссию за отмененные транзакции, что позволит StarkNet предотвращать DoS-атаки секвенсора общепринятым способом.
  2. Реализация принудительных транзакций L1 станет возможной, что позволит StarkNet унаследовать полную устойчивость к цензуре Ethereum.

Особенности языка

Cairo 1.0 предложит множество улучшений самого языка программирования. Не все перечисленное ниже будет частью первого релиза, но это часть дорожной карты.

Улучшенный синтаксис

  • Больше не надо местный и темпвар . Теперь нам нужно только позволить им управлять всеми переменными.
  • Улучшен синтаксис операторов if .
Старый если условие != 0 { 
  tempvar x = x+1; 
} еще { 
  временная переменная х = х; 
}_________________________________________Новыйесли условие { х = х + 1; }

Гарантии безопасности типа

Компилятор будет использовать строгую типизацию для повышения безопасности кода. Например:

  • Указатели всегда будут указывать на инициализированную память.
  • Словари всегда будут сжаты, вместо того, чтобы оставлять ответственность за вызов squash_dict программисту.

Проще использовать языковые конструкции

Например:

  • Для петель
пусть sum = 0 
для x в iter { 
  sum = sum + x; 
}
  • Логические выражения
  • Целые числа (с обычным целочисленным делением 👯)
  • Защита от переполнения для соответствующих типов
  • Логические условия
Старый
 If cond1: 
  if cond2: 
       # Другой код 
  if cond3: 
       # Тот же код 
_________________________________________Новый
 Если условие1 && (условие2 || условие3) { … }

Полноценная система типов

  • Абстрактные типы данных (например, Rust-подобное перечисление)
enum Option<T> { 
Некоторые: T, 
None, 
}результат совпадения { 
Some(r) => {..}, 
None => {..}, 
}
  • Черты
черта Add<Uint256> { 
    fn add(…) { … } 
}
пусть а: Uint256 = 1; 
пусть б: Uint256 = 4; 
а + б; // Оценивается как 5 типа Uint256.

Более интуитивно понятные библиотеки

(например, словарь, массивы)

  • Dict<Uint256, MyStruct>;
  • Массив<MyOtherStruct>;

Более оптимизированный код

Нет необходимости явно указывать выделение локальных переменных — автоматически определяется и выполняется автоматически.

Улучшенная интеграция с компилятором

Включение лучшей поддержки IDE, управления пакетами и облегчения вклада сообщества.

Вывод

Спустя два года после того, как Cairo был впервые использован в производственной среде, мы разрабатываем Cairo 1.0, который обеспечит улучшенную выразительность, безопасность и синтаксис. Это сделает большой шаг вперед, позволяя разработчикам легче писать свои контракты StarkNet.

В другом посте, который скоро появится, мы поделимся более подробной информацией о том, как Cairo 1.0 повлияет на возрождение StarkNet и как разработчикам следует подготовиться к его выпуску.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *