montana/Montana-Protocol/Agents/ВВЕДЕНИЕ.md

141 lines
11 KiB
Markdown
Raw Normal View History

# Montana за 10 минут — введение для ИИ-агента
**Версия:** v1.0.0
**Аудитория:** ИИ-агент (Claude, GPT, Gemini, локальная модель), впервые встречающий проект Montana.
Прочитай этот файл целиком перед загрузкой любой другой роли.
---
## 1. Что такое Montana
**Montana** — постквантовый блокчейн-протокол. Цель — масштабирование на ≥1 миллиард активных пользователей с криптографической стойкостью к квантовым атакам.
Три компонента:
2026-05-21 03:44:38 +03:00
1. **Protocol** (спецификация) — `Montana Protocol v35.25.1.md` в корне репозитория.
2. **Network** (сетевая спецификация) — `Montana Network v1.1.0.md`.
3. **App** (клиентская спецификация) — `Montana App v3.12.0.md`.
4. **Реализация** (Rust) — `Code/` — 19 крейтов (Cargo workspace).
## 2. Чем Montana отличается от Bitcoin/Ethereum
| Аспект | Bitcoin/ETH | Montana |
|---|---|---|
| Криптография | ECDSA / secp256k1 | **Постквантовая** — ML-DSA-65 (FIPS 204), ML-KEM-768 (FIPS 203) |
2026-05-21 03:44:38 +03:00
| Консенсус | PoW / PoS | **TimeChain** — sequential delay function over SHA-256 |
| Привязка времени | block timestamp | **Sequential-delay proof of elapsed work** — последовательное хеширование, нельзя ускорить параллелизмом |
| Приватность | публичные транзакции | **Privacy by default** — пользователь сам выбирает что раскрыть |
| Масштаб | ~10 TPS / ~30 TPS | **Целевая ≥1B пользователей** — все архитектурные решения проверяются на этот scale |
## 3. Ключевые концепты (запомни эти 7)
2026-05-21 03:44:38 +03:00
1. **TimeChain** — последовательная цепочка SHA-256, доказательство «прошло время T». ≠ blockchain, ≠ DAG. Это длинная цепочка SHA-256(SHA-256(...(seed))) с явной длиной D.
2026-05-21 03:44:38 +03:00
2. **Sequential delay function** — функция f(x), которую нельзя вычислить быстрее чем за T sequential steps. В Montana — итеративный SHA-256; проверка стоит O(D), поэтому это не VDF с быстрой верификацией в смысле Boneh/Pietrzak/Wesolowski.
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. Структура спеки
2026-05-21 03:44:38 +03:00
`Montana Protocol v35.25.1.md` имеет следующие разделы:
- **Intro / мантра / «Определение»** — на чистом русском без технических терминов (для людей)
- **Первоэлементы** — базовые сущности (узел, длина цепочки, окно)
- **Три проблемы доверия** — мотивация дизайна
- **Криптографические параметры** — точные размеры ключей/подписей
2026-05-21 03:44:38 +03:00
- **TimeChain layer** — sequential delay function, длина цепочки, окна
- **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)
2026-05-21 03:44:38 +03:00
`Code/crates/` — 19 крейтов:
| Крейт | Что |
|---|---|
| `mt-crypto` | ML-DSA-65, ML-KEM-768, SHA-256, HKDF, PBKDF2 wrappers |
2026-05-21 03:44:38 +03:00
| `mt-crypto-native` | C bindings for native ML-DSA / ML-KEM implementation |
| `mt-codec` | Wire-формат encoding/decoding, domain separators |
2026-05-21 03:44:38 +03:00
| `mt-timechain` | TimeChain primitives |
| `mt-account` | Account table, operations, apply_proposal |
| `mt-lottery` | VdfReveal / BundledConfirmation / lottery primitives |
| `mt-consensus` | Proposal headers and consensus acceptance logic |
| `mt-entry` | Entry/candidate chain primitives |
| `mt-state`, `mt-store`, `mt-merkle`, `mt-genesis` | State, persistence, Merkle, genesis |
| `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) |
| ... | (см. `Code/Cargo.toml` для полного списка) |
## 6. Документация и аудит
| Файл | Что |
|---|---|
| `Code/ROADMAP.md` | Milestones M1M9, статус закрытия |
| `Code/docs/audit-checklist.md` | 53/53 internal critic findings закрыто (M6 + M9) |
| `Code/docs/build-from-source.md` | Воспроизводимая сборка для аудиторов |
| `External-Audit/*.md` | 6 отчётов внутреннего критика (Pass 1-17) |
| `Archive/Montana v*.md` | История версий спеки |
## 7. Роли в проекте
В `Agents/` (эта папка) лежат 6 формализованных ролей. Каждая — отдельный файл-промпт. Самые важные:
2026-05-21 03:44:38 +03:00
- **Архитектор спеки** (`01-АРХИТЕКТОР-СПЕКИ.md`) — меняет `Montana Protocol v35.25.1.md` / layered specs, бампает версию
- **Критик спеки** (`02-КРИТИК-СПЕКИ.md`) — adversarial review, ищет дыры
- **Архитектор кода** (`03-АРХИТЕКТОР-КОДА.md`) — Rust implementation, меняет `Code/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`.