Создание на блокчейнах всегда было сложным. Вам нужно научиться мыслить с причудами Solidity, справляться с лимитами газа и странными ошибками или тратить много времени на изучение доказательств с нулевым раскрытием. Midnight Network хотела сделать так, чтобы разработчикам было легче создавать продуктивные приложения. Вот почему они создали Compact, язык, который выглядит и ощущается как TypeScript.

Compact — это язык смарт-контрактов для блокчейна Midnight. Его название происходит от значения "компактный" как обязательное соглашение. Смарт-контракт предполагает наличие обязательных правил, которым все могут доверять. Compact встречает вас там, где вы уже находитесь, с синтаксисом, который кажется комфортным, если вы писали на TypeScript или современном JavaScript.
Переменные имеют строгую типизацию
Компилятор ловит ошибки до того, как вы развернете что-либо
Сообщения об ошибках имеют смысл
Вам не нужно быть экспертом в криптографии, чтобы использовать Compact. Язык скрывает большую часть этой сложности, чтобы вы могли сосредоточиться на том, что должно делать приложение.
Компактный контракт состоит из четырех частей:
Декларации типов. Ваши собственные формы данных
Декларации бухгалтерских книг. Состояние, которое может видеть каждый
Декларации свидетелей. Вспомогательные функции
Определения цепей. Реальная логика, которая превращается в доказательства с нулевыми знаниями

Общая часть поддерживает практические типы коллекций, такие как счетчики, множества, карты и списки. Midnight предоставляет вам сокращение для увеличения счетчика, например `counter += 1`.
Цепи — это то, где происходит магия. Когда вы пишете экспортируемую цепь, компилятор Compact превращает её в цепь с нулевыми знаниями. Любой может проверить, что правила были соблюдены, не видя входные данные.
Midnight имеет библиотеку, которая охватывает общие вещи, такие как типы Maybe и Either, адреса пользователей и подписи эллиптической кривой. Когда вы компилируете контракт Compact, вы получаете:
Цепи с нулевыми знаниями для каждой экспортируемой функции
Реализация JavaScript для симуляции и модульных тестов
Файлы деклараций TypeScript (.d.ts) для типизированного кода
Классический пример контракта счетчика — хорошая отправная точка. Вы объявляете счетчик, пишете цепь для его увеличения, компилируете. У вас есть частный способ увеличить число на блокчейне.
Что выделяет Compact, так это то, сколько умственных усилий он добавляет. Вы сосредоточены на бизнес-правилах, пользовательском опыте и логике приложения. Сильная типизация ловит ошибки на ранней стадии. Знакомый синтаксис делает его простым в использовании.

Midnight создала Compact, потому что они верят, что частные смарт-контракты не должны быть сложными. Они должны ощущаться как написание кода. Чисто, безопасно и предсказуемо. При этом открывая мощные функции. Compact — это прямой способ написания кода, который естественно читается, компилируется и позволяет блокчейну обрабатывать доверие и конфиденциальность.