11 KiB
Montana за 10 минут — введение для ИИ-агента
Версия: v1.0.0 Аудитория: ИИ-агент (Claude, GPT, Gemini, локальная модель), впервые встречающий проект Montana.
Прочитай этот файл целиком перед загрузкой любой другой роли.
1. Что такое Montana
Montana — постквантовый блокчейн-протокол. Цель — масштабирование на ≥1 миллиард активных пользователей с криптографической стойкостью к квантовым атакам.
Три компонента:
- Протокол (спецификация) —
Montana v35.23.0.mdв корне репозитория. ~7600 строк, постоянно обновляется (текущая v35.23.0). - Реализация (Rust) —
Код/— 16 крейтов (Cargo workspace). - Приложение (iOS/macOS) —
Montana App v3.11.0.mdспецификация (код приложения вне этого репо).
2. Чем Montana отличается от Bitcoin/Ethereum
| Аспект | Bitcoin/ETH | Montana |
|---|---|---|
| Криптография | ECDSA / secp256k1 | Постквантовая — ML-DSA-65 (FIPS 204), ML-KEM-768 (FIPS 203) |
| Консенсус | PoW / PoS | TimeChain — VDF-based (Verifiable Delay Function) |
| Привязка времени | block timestamp | VDF-доказательство времени — последовательное хеширование, нельзя ускорить параллелизмом |
| Приватность | публичные транзакции | Privacy by default — пользователь сам выбирает что раскрыть |
| Масштаб | ~10 TPS / ~30 TPS | Целевая ≥1B пользователей — все архитектурные решения проверяются на этот scale |
3. Ключевые концепты (запомни эти 7)
-
TimeChain — последовательная цепочка VDF-хешей, доказательство «прошло время T». ≠ blockchain, ≠ DAG. Это просто длинная цепочка SHA-256(SHA-256(...(seed))) с явной длиной D.
-
VDF (Verifiable Delay Function) — функция f(x), которую нельзя вычислить быстрее чем за T sequential steps, но проверить можно мгновенно. В Montana — итеративный SHA-256.
-
NodeChain — цепочка
NodeRecords (метаданных нод), параллельная TimeChain. Каждый узел публикует NodeRecord при включении в сеть. -
Lottery / Selection — выбор лидера для следующего blockround по детерминированной формуле от VDF-вывода + state. Не PoS (нет staking), не PoW.
-
Anchor — финализация состояния через мульти-подписной BFT-комитет. Один из ключевых мест где квант-резистентность критична.
-
Genesis Decree — начальное состояние сети:
protocol_params(D₀, размеры подписей, таймауты, max_*_bytes лимиты), bootstrap nodes, initial state. -
Pre-mainnet принцип — Montana ещё не запущена. Любые breaking changes применяются сразу, без backward-compatibility shims. Правильное архитектурное решение всегда побеждает «удобство миграции».
4. Структура спеки
Montana v35.23.0.md имеет следующие разделы:
- Intro / мантра / «Определение» — на чистом русском без технических терминов (для людей)
- Первоэлементы — базовые сущности (узел, длина цепочки, окно)
- Три проблемы доверия — мотивация дизайна
- Криптографические параметры — точные размеры ключей/подписей
- TimeChain layer — VDF, длина цепочки, окна
- NodeChain layer — NodeRecord, селекция узлов
- Consensus layer — BFT, BundledConfirmation, Anchor
- Network layer — wire-формат, IBT, mesh transport
- Genesis Decree — protocol_params, начальное состояние
- Карточки замыкания механизмов — детальные micro-spec для каждого layer
- Threat Model — 7×7 matrix
- KAT (Known Answer Tests) vectors — байт-точные test vectors для cross-implementation verification
Правило чтения: в первых разделах (intro/мантра/Определение) идентификаторы кода не используются — chain_length пишется как «длина цепочки», window_index как «номер окна». В технических разделах — наоборот.
5. Структура кода (Rust workspace)
Код/crates/ — 16 крейтов:
| Крейт | Что |
|---|---|
mt-crypto |
ML-DSA-65, ML-KEM-768, SHA-256, HKDF, PBKDF2 wrappers |
mt-crypto-native |
C bindings (liboqs) для FIPS-certified primitives |
mt-codec |
Wire-формат encoding/decoding, domain separators |
mt-types |
Базовые типы (NodeId, AccountId, Hash, Signature) |
mt-vdf |
VDF (TimeChain primitives) |
mt-consensus |
BFT, BundledConfirmation, Anchor logic |
mt-anchor |
Anchor pipeline |
mt-net |
no_std network protocol (envelope, payloads, IBT) |
mt-net-transport |
libp2p-based transport (heavy deps isolated here) |
mt-conformance |
KAT vectors registry, byte-exact verification |
mt-examples |
Manual Validation Gate scenarios (m1, m2, m3, ...) |
montana-node |
Node binary (M8 — in progress) |
| ... | (см. Код/Cargo.toml для полного списка) |
6. Документация и аудит
| Файл | Что |
|---|---|
Код/ROADMAP.md |
Milestones M1–M9, статус закрытия |
Код/docs/audit-checklist.md |
53/53 internal critic findings закрыто (M6 + M9) |
Код/docs/build-from-source.md |
Воспроизводимая сборка для аудиторов |
Внешний аудит/*.md |
6 отчётов внутреннего критика (Pass 1-17) |
Архив/Montana v*.md |
История версий спеки |
7. Роли в проекте
В Агенты/ (эта папка) лежат 6 формализованных ролей. Каждая — отдельный файл-промпт. Самые важные:
- Архитектор спеки (
01-АРХИТЕКТОР-СПЕКИ.md) — меняетMontana v35.23.0.md, бампает версию - Критик спеки (
02-КРИТИК-СПЕКИ.md) — adversarial review, ищет дыры - Архитектор кода (
03-АРХИТЕКТОР-КОДА.md) — Rust implementation, меняетКод/crates/ - Критик кода (
04-КРИТИК-КОДА.md) — code review, security audit
Цикл работы: архитектор спеки изменяет → критик спеки находит проблемы → архитектор fix → bump версии → архитектор кода реализует → критик кода ревьюит → коммит.
8. Что НЕЛЬЗЯ делать (общие правила всех ролей)
- Не редактируй спеку или код без явного подтверждения автора — за исключением явно делегированных задач.
- Не используй deferred решения — Pre-mainnet, любая правильная архитектура применяется сейчас.
- Не дублируй информацию — SSOT (Single Source of Truth) — каждая константа/формула живёт в одном месте.
- Не нарушай гендерную нейтральность — обращения к читателю строго нейтральны (нет «ты успел/был/мечтал»).
- Не выдумывай факты, цитаты, ощущения — закон согласия: только то что явно сказано.
- Не используй dev/test/temp markers в production-коде — имена остаются неизменными от M5 до mainnet.
- Не задавай тупых вопросов вида «продолжаем?» — если задача ясна, делай.
9. Что ОБЯЗАТЕЛЬНО делать
- Читай ВСЕ строки промпта роли — не сканируй, не пропускай.
- Сначала верифицируй премиссы — числа/формулы из критики проверь по спеке перед действием.
- Объясняй термины при первом упоминании — даже если они в коде, в общении с автором/другими агентами разъяснение обязательно.
- Коммить русскоязычные сообщения — git commit messages на русском, формат
Протокол: spec bump v35.X.0 → v35.Y.0 — описание изменения. - Указывай Co-Authored-By footer —
Co-Authored-By: <твоё имя модели> <noreply@anthropic.com>. - Пиши на чистом русском — английские слова только для имён кода, аббревиатур (VDF, BFT, SHA-256), внешних стандартов (FIPS, RFC).
10. Что делать дальше
После прочтения этого файла:
- Прочитай
ГЛОССАРИЙ.md(5 минут) - Прочитай
КАРТА-РОЛЕЙ.md(2 минуты) - Выбери роль из
01-..—06-..и загрузи как системный промпт - Начинай работу
Если что-то непонятно — задай вопрос автору (Alejandro Montana, efir369999@gmail.com) или координатору (см. КООРДИНАТОР.md).
Время чтения: ~10 минут.
Следующий шаг: ГЛОССАРИЙ.md.