TypeScript сьогодні - друга за популярністю мова програмування у світі. Мільйони розробників пишуть на ній щодня: фронтенд, бекенд, мобільні додатки. І всі вони принципово відрізані від ZK-розробки. Бо щоб написати zero-knowledge смарт-контракт, треба розуміти криптографічні схеми, circuits, arithmetization і ще з десяток понять, яких немає в жодному стандартному курсі веб-розробки. Результат: увесь потенціал ZK-технологій реалізується силами вузького кола фахівців, яких на ринку одиниці і які коштують відповідно. Мова програмування Compact - це спроба зламати цю стіну.

Щоб зрозуміти масштаб проблеми - одна цифра. За даними Stack Overflow Developer Survey 2024, TypeScript використовують понад 38% усіх розробників у світі. Solidity - мова Ethereum, де пишуть смарт-контракти - менше 5%. А ZK-специфічні мови і фреймворки навіть не потрапляють у статистику - їх пишуть буквально лічені тисячі людей глобально. Тобто між тими, хто вміє будувати продукти, і тими, хто вміє будувати ZK-продукти - прірва в кілька порядків. @MidnightNetwork побачив у цьому не проблему, а можливість.

Compact - це власна мова програмування Midnight для написання смарт-контрактів. Технічно: statically typed domain-specific language, побудований поверх синтаксису TypeScript. Але головне не синтаксис, а що відбувається при компіляції. Розробник пише логіку контракту - що є публічним, що приватним, за яких умов і кому розкривати дані. Компілятор Compact генерує два результати одночасно: JavaScript-версію для виконання і ZK-circuits для криптографічних доказів. Вся ZK-математика - circuits, proving key, verification logic - автоматично. Розробник її не бачить і не пише вручну.

Ту є архітектурна деталь, яку варто розуміти окремо. Compact відокремлює логіку застосунку від криптографічного шару. Це означає, що команда, яка будує продукт на Midnight, може складатися зі звичайних TypeScript-розробників - без жодного фахівця з ZK-криптографії в штаті. Завдання: описати бізнес-логіку і вказати, що приховувати. Завдання компілятора: перетворити це на коректні докази. Для більшості індустрій, які могли б використовувати приватні смарт-контракти - фінанси, медицина, supply chain - це принципова різниця між "можливо теоретично" і "можна запустити реально".

У жовтні 2025-го відбулося щось важливе для довгострокової довіри до Compact. Мова стала open-source під патронажем Linux Foundation Decentralized Trust. Це не просто репозиторій на GitHub - це передача governance над компілятором незалежній організації, яка керує такими проєктами як Hyperledger, OpenSSL і десятки інших критичних інфраструктурних проєктів. Для Enterprise-клієнтів і розробників, які думають про довгострокове використання, це сигнал: технологія не залежить від виживання однієї компанії і не може бути закрита або змінена без прозорого процесу.

Окремий інструмент, про який варто сказати, - MCP-сервер Midnight, запущений у січні 2026-го. MCP (Model Context Protocol) - це протокол, який дозволяє AI-асистентам отримувати живий контекст із зовнішніх джерел. Midnight MCP-сервер дає AI-інструментам доступ до актуальної документації Compact і дозволяє скомпілювати контракти в реальному часі прямо в середовищі розробки. Практично: розробник пише запит до AI-асистента і отримує не просто теоретичну відповідь, а верифікований через компілятор код. Для мови, яка ще активно розвивається і де документація не завжди встигає за релізами, це суттєво знижує тертя при вивченні.

Конкретно - що розробники будують зараз. Офіційна документація і спільнота вже має приклади: bulletin board (дошка оголошень, де кожен може додати повідомлення, але приватно - хто саме написав, не розкривається), лічильник із приватним станом, механізми голосування де голоси не видно до закриття, базові DeFi-примітиви з прихованими сумами. Це учбові приклади. Але логіка, закладена в них - selective disclosure на рівні мови - відкриває значно ширший клас задач: від медичних карток до корпоративного payroll і KYC без розкриття особистих даних.

Чесна картина про поріг входу, Compact справді легший за альтернативи для TypeScript-розробника. Але "легший" не означає "без кривої навчання". По-перше, є обмеження на обчислення всередині ZK-circuits - не всі конструкції TypeScript доступні, бо деякі просто не можна перетворити на доказ ефективно. По-друге, мова активно розвивається: лише с 2025 року вийшло кілька мажорних версій компілятора і SDK. Документація місцями відстає від коду. Для розробника, який хоче будувати продакшн-рівня застосунки, це реальне тертя - не критично, але і не "за день прототип готовий".

Тепер трохи ширше. Одна з головних причин, чому ZK-технології досі залишаються нішевими попри очевидну цінність - це саме кадровий бар'єр. Якби приватні смарт-контракти могла писати та сама аудиторія, яка зараз пише React і Node.js - кількість продуктів зросла б на порядки. Compact не вирішує цю проблему повністю: ZK-специфіка нікуди не ділась, вона просто захована за абстракцією. Але ефективна абстракція - це і є вся суть хорошого інструменту. MySQL не вимагає знати B-tree індекси щоб робити запити. React не вимагає розуміти reconciliation щоб будувати UI. Compact намагається зробити те саме для ZK.

👉 Для тих, хто хоче самостійно розібратися, - у Midnight є Developer Academy з офіційними матеріалами і туторіалами різного рівня. Плюс активний форум розробників, відокремлений від загального Discord - там складніші технічні дискусії зберігаються і доступні для пошуку. Це важливо: якість спільноти навколо мови часто визначає її виживання більше, ніж технічні переваги самої мови.

Я не розробник і не буду вдавати, що можу оцінити Compact зсередини. Але є кут зору, який не потребує знати мову: коли у великій і зрілій екосистемі розробників з'являється нова мова з низьким порогом входу для важливої задачі - і ця мова стає open-source під серйозним патронажем - це зазвичай сигнал, що інфраструктура дозріла до ширшого прийняття. Compact поки ще молодий. Але питання, яке мені цікаво спостерігати: скільки часу пройде від "учасники хакатонів пишуть на Compact" до "компанії запускають продакшн на Compact". Це і є реальний тест для всієї ідеї Midnight.

@MidnightNetwork $NIGHT #night