138 lines
11 KiB
Markdown
138 lines
11 KiB
Markdown
# Montana за 10 минут — введение для ИИ-агента
|
||
|
||
**Версия:** v1.0.0
|
||
**Аудитория:** ИИ-агент (Claude, GPT, Gemini, локальная модель), впервые встречающий проект Montana.
|
||
|
||
Прочитай этот файл целиком перед загрузкой любой другой роли.
|
||
|
||
---
|
||
|
||
## 1. Что такое Montana
|
||
|
||
**Montana** — постквантовый блокчейн-протокол. Цель — масштабирование на ≥1 миллиард активных пользователей с криптографической стойкостью к квантовым атакам.
|
||
|
||
Три компонента:
|
||
1. **Протокол** (спецификация) — `Montana v35.23.0.md` в корне репозитория. ~7600 строк, постоянно обновляется (текущая v35.23.0).
|
||
2. **Реализация** (Rust) — `Код/` — 16 крейтов (Cargo workspace).
|
||
3. **Приложение** (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)
|
||
|
||
1. **TimeChain** — последовательная цепочка VDF-хешей, доказательство «прошло время T». ≠ blockchain, ≠ DAG. Это просто длинная цепочка SHA-256(SHA-256(...(seed))) с явной длиной D.
|
||
|
||
2. **VDF (Verifiable Delay Function)** — функция f(x), которую нельзя вычислить быстрее чем за T sequential steps, но проверить можно мгновенно. В Montana — итеративный SHA-256.
|
||
|
||
3. **NodeChain** — цепочка `NodeRecord`s (метаданных нод), параллельная TimeChain. Каждый узел публикует NodeRecord при включении в сеть.
|
||
|
||
4. **Lottery / Selection** — выбор лидера для следующего blockround по детерминированной формуле от VDF-вывода + state. Не PoS (нет staking), не PoW.
|
||
|
||
5. **Anchor** — финализация состояния через мульти-подписной BFT-комитет. Один из ключевых мест где квант-резистентность критична.
|
||
|
||
6. **Genesis Decree** — начальное состояние сети: `protocol_params` (D₀, размеры подписей, таймауты, max_*_bytes лимиты), bootstrap nodes, initial state.
|
||
|
||
7. **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. Что НЕЛЬЗЯ делать (общие правила всех ролей)
|
||
|
||
1. **Не редактируй спеку или код без явного подтверждения автора** — за исключением явно делегированных задач.
|
||
2. **Не используй deferred решения** — Pre-mainnet, любая правильная архитектура применяется сейчас.
|
||
3. **Не дублируй информацию** — SSOT (Single Source of Truth) — каждая константа/формула живёт в одном месте.
|
||
4. **Не нарушай гендерную нейтральность** — обращения к читателю строго нейтральны (нет «ты успел/был/мечтал»).
|
||
5. **Не выдумывай факты, цитаты, ощущения** — закон согласия: только то что явно сказано.
|
||
6. **Не используй dev/test/temp markers в production-коде** — имена остаются неизменными от M5 до mainnet.
|
||
7. **Не задавай тупых вопросов вида «продолжаем?»** — если задача ясна, делай.
|
||
|
||
## 9. Что ОБЯЗАТЕЛЬНО делать
|
||
|
||
1. **Читай ВСЕ строки промпта роли** — не сканируй, не пропускай.
|
||
2. **Сначала верифицируй премиссы** — числа/формулы из критики проверь по спеке перед действием.
|
||
3. **Объясняй термины при первом упоминании** — даже если они в коде, в общении с автором/другими агентами разъяснение обязательно.
|
||
4. **Коммить русскоязычные сообщения** — git commit messages на русском, формат `Протокол: spec bump v35.X.0 → v35.Y.0 — описание изменения`.
|
||
5. **Указывай Co-Authored-By footer** — `Co-Authored-By: <твоё имя модели> <noreply@anthropic.com>`.
|
||
6. **Пиши на чистом русском** — английские слова только для имён кода, аббревиатур (VDF, BFT, SHA-256), внешних стандартов (FIPS, RFC).
|
||
|
||
## 10. Что делать дальше
|
||
|
||
После прочтения этого файла:
|
||
1. Прочитай `ГЛОССАРИЙ.md` (5 минут)
|
||
2. Прочитай `КАРТА-РОЛЕЙ.md` (2 минуты)
|
||
3. Выбери роль из `01-..` — `06-..` и загрузи как системный промпт
|
||
4. Начинай работу
|
||
|
||
Если что-то непонятно — задай вопрос автору (Alejandro Montana, `efir369999@gmail.com`) или координатору (см. `КООРДИНАТОР.md`).
|
||
|
||
---
|
||
|
||
**Время чтения:** ~10 минут.
|
||
**Следующий шаг:** `ГЛОССАРИЙ.md`.
|