392 lines
13 KiB
Markdown
392 lines
13 KiB
Markdown
|
|
# Финальная Архитектура Montana
|
|||
|
|
|
|||
|
|
## Двухуровневая Система Адресов
|
|||
|
|
|
|||
|
|
Montana использует **два типа кошельков** с разными архитектурами:
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Пользовательские Кошельки
|
|||
|
|
|
|||
|
|
### Архитектура
|
|||
|
|
- **Адрес:** Telegram ID
|
|||
|
|
- **Ключ:** Telegram Session
|
|||
|
|
- **Хранение:** Привязано к Telegram аккаунту
|
|||
|
|
|
|||
|
|
### Философия
|
|||
|
|
Максимальная простота для пользователей. Никаких seed phrases, приватных ключей, или метамасок.
|
|||
|
|
|
|||
|
|
**Ты уже в Montana, если у тебя есть Telegram.**
|
|||
|
|
|
|||
|
|
### Примеры
|
|||
|
|
```bash
|
|||
|
|
Адрес: 123456789
|
|||
|
|
Ключ: Telegram Session (автоматически)
|
|||
|
|
Баланс: 1500 секунд
|
|||
|
|
|
|||
|
|
# Перевод другому пользователю
|
|||
|
|
/transfer 987654321 100
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Команды
|
|||
|
|
- `/start` — показывает твой Telegram ID как адрес кошелька
|
|||
|
|
- `/balance` — баланс в секундах
|
|||
|
|
- `/transfer <tg_id> <amount>` — перевод пользователю
|
|||
|
|
- `/tx` — история транзакций
|
|||
|
|
|
|||
|
|
### Безопасность
|
|||
|
|
- ✅ Доступ через Telegram 2FA
|
|||
|
|
- ✅ Никаких seed phrases (не можешь потерять)
|
|||
|
|
- ⚠️ При смене Telegram аккаунта нужно переносить монеты
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Узлы Montana
|
|||
|
|
|
|||
|
|
### Архитектура
|
|||
|
|
- **Адрес:** Криптографический пост-квантовый (mt + SHA256(public_key)[:20])
|
|||
|
|
- **Ключ:** Private key ML-DSA-65 (4032 байта)
|
|||
|
|
- **Владелец:** Telegram ID оператора узла
|
|||
|
|
- **IP:** Только для networking, НЕ для идентификации
|
|||
|
|
- **Alias:** Для удобства (например, `amsterdam.efir.org`)
|
|||
|
|
|
|||
|
|
### Философия
|
|||
|
|
Максимальная безопасность. Защита от IP hijacking, DNS spoofing, квантовых компьютеров.
|
|||
|
|
|
|||
|
|
**Криптография от genesis, не retrofit.**
|
|||
|
|
|
|||
|
|
### Примеры
|
|||
|
|
```bash
|
|||
|
|
Адрес: mta46b633d258059b90db46adffc6c5ca08f0e8d6c
|
|||
|
|
Ключ: Private Key ML-DSA-65 (4032 байта)
|
|||
|
|
Владелец: ADMIN_ID (keyring) (Telegram ID)
|
|||
|
|
IP: 72.56.102.240 (только networking)
|
|||
|
|
Alias: amsterdam.efir.org
|
|||
|
|
Баланс: 5000 секунд
|
|||
|
|
|
|||
|
|
# Перевод узлу (по адресу)
|
|||
|
|
/transfer mta46b633d258059b90db46adffc6c5ca08f0e8d6c 100
|
|||
|
|
|
|||
|
|
# Перевод узлу (по alias, удобнее)
|
|||
|
|
/transfer amsterdam.efir.org 100
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Команды
|
|||
|
|
- `/node` — список всех узлов сети
|
|||
|
|
- `/node <address|alias>` — детали узла
|
|||
|
|
- `/register_node` — регистрация нового узла (admin only)
|
|||
|
|
- `/transfer <address|alias> <amount>` — перевод узлу
|
|||
|
|
|
|||
|
|
### Генерация Адреса
|
|||
|
|
```python
|
|||
|
|
# 1. Генерация ключей ML-DSA-65 (FIPS 204)
|
|||
|
|
from dilithium_py.ml_dsa import ML_DSA_65
|
|||
|
|
public_key, private_key = ML_DSA_65.keygen()
|
|||
|
|
|
|||
|
|
# 2. Вычисление адреса
|
|||
|
|
address = "mt" + SHA256(public_key)[:20].hex()
|
|||
|
|
|
|||
|
|
# 3. Alias
|
|||
|
|
alias = f"{node_name}.efir.org"
|
|||
|
|
|
|||
|
|
# Пример:
|
|||
|
|
# address: mta46b633d258059b90db46adffc6c5ca08f0e8d6c
|
|||
|
|
# alias: amsterdam.efir.org
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Безопасность
|
|||
|
|
- ✅ Защита от IP hijacking (адрес не зависит от IP)
|
|||
|
|
- ✅ Защита от DNS spoofing (alias только для UX)
|
|||
|
|
- ✅ Защита от MITM (все операции подписаны ML-DSA-65)
|
|||
|
|
- ✅ Post-quantum защита активна с GENESIS
|
|||
|
|
- ⚠️ Private key = полный контроль (4032 байта, хранить безопасно)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Официальные Узлы Montana
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
🇳🇱 Amsterdam
|
|||
|
|
Адрес: mta46b633d258059b90db46adffc6c5ca08f0e8d6c
|
|||
|
|
Alias: amsterdam.efir.org
|
|||
|
|
Владелец: ADMIN_ID (keyring)
|
|||
|
|
IP: 72.56.102.240 (networking only)
|
|||
|
|
Тип: FULL NODE
|
|||
|
|
Приоритет: #1
|
|||
|
|
|
|||
|
|
🇷🇺 Moscow
|
|||
|
|
Адрес: mta8ae14f74c38294b24c2f1c20c6406e6be929c93
|
|||
|
|
Alias: moscow.efir.org
|
|||
|
|
Владелец: ADMIN_ID (keyring)
|
|||
|
|
IP: 176.124.208.93 (networking only)
|
|||
|
|
Тип: FULL NODE
|
|||
|
|
Приоритет: #2
|
|||
|
|
|
|||
|
|
🇰🇿 Almaty
|
|||
|
|
Адрес: mtd07b0d9bdab2cb592f509bc1304c368ac703c45e
|
|||
|
|
Alias: almaty.efir.org
|
|||
|
|
Владелец: ADMIN_ID (keyring)
|
|||
|
|
IP: 91.200.148.93 (networking only)
|
|||
|
|
Тип: FULL NODE
|
|||
|
|
Приоритет: #3
|
|||
|
|
|
|||
|
|
🇷🇺 St.Petersburg
|
|||
|
|
Адрес: mtb397e136de69d92e5782f3fe14533a4a37b4ddec
|
|||
|
|
Alias: spb.efir.org
|
|||
|
|
Владелец: ADMIN_ID (keyring)
|
|||
|
|
IP: 188.225.58.98 (networking only)
|
|||
|
|
Тип: FULL NODE
|
|||
|
|
Приоритет: #4
|
|||
|
|
|
|||
|
|
🇷🇺 Novosibirsk
|
|||
|
|
Адрес: mtf3f0254b405382de38494e753924b4b92692bd2c
|
|||
|
|
Alias: novosibirsk.efir.org
|
|||
|
|
Владелец: ADMIN_ID (keyring)
|
|||
|
|
IP: 147.45.147.247 (networking only)
|
|||
|
|
Тип: FULL NODE
|
|||
|
|
Приоритет: #5
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Переводы
|
|||
|
|
|
|||
|
|
Montana поддерживает **универсальные переводы** между любыми адресами:
|
|||
|
|
|
|||
|
|
### Типы Переводов
|
|||
|
|
|
|||
|
|
#### Пользователь → Пользователь
|
|||
|
|
```bash
|
|||
|
|
/transfer 987654321 100
|
|||
|
|
```
|
|||
|
|
- От: Telegram ID
|
|||
|
|
- Кому: Telegram ID
|
|||
|
|
- Proof: криптографический хеш
|
|||
|
|
- Анонимность: адреса хэшированы в публичной ленте
|
|||
|
|
|
|||
|
|
#### Пользователь → Узел
|
|||
|
|
```bash
|
|||
|
|
# По адресу
|
|||
|
|
/transfer mta46b633d258059b90db46adffc6c5ca08f0e8d6c 50
|
|||
|
|
|
|||
|
|
# По alias (удобнее)
|
|||
|
|
/transfer amsterdam.efir.org 50
|
|||
|
|
```
|
|||
|
|
- От: Telegram ID
|
|||
|
|
- Кому: Криптографический адрес (mt...)
|
|||
|
|
- Resolve: alias → cryptographic address автоматически
|
|||
|
|
|
|||
|
|
#### Узел → Пользователь
|
|||
|
|
```bash
|
|||
|
|
# Награда за майнинг (выполняется автоматически)
|
|||
|
|
Node mta46b633d... → User 123456789: 200 seconds
|
|||
|
|
```
|
|||
|
|
- От: Криптографический адрес
|
|||
|
|
- Кому: Telegram ID
|
|||
|
|
- Требуется: подпись private key узла
|
|||
|
|
|
|||
|
|
#### Узел → Узел
|
|||
|
|
```bash
|
|||
|
|
# Перевод между узлами (через админа)
|
|||
|
|
/transfer moscow.efir.org 1000
|
|||
|
|
```
|
|||
|
|
- От: Криптографический адрес
|
|||
|
|
- Кому: Криптографический адрес
|
|||
|
|
- Требуется: подпись private key узла отправителя
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. Криптография
|
|||
|
|
|
|||
|
|
### MAINNET: ML-DSA-65 (FIPS 204)
|
|||
|
|
|
|||
|
|
**Алгоритм:** ML-DSA-65 (Post-Quantum)
|
|||
|
|
```python
|
|||
|
|
from dilithium_py.ml_dsa import ML_DSA_65
|
|||
|
|
|
|||
|
|
# Генерация ключей
|
|||
|
|
public_key, private_key = ML_DSA_65.keygen()
|
|||
|
|
|
|||
|
|
# Адрес
|
|||
|
|
address = "mt" + hashlib.sha256(public_key).digest()[:20].hex()
|
|||
|
|
|
|||
|
|
# Подпись
|
|||
|
|
signature = ML_DSA_65.sign(private_key, message)
|
|||
|
|
|
|||
|
|
# Верификация
|
|||
|
|
ML_DSA_65.verify(public_key, message, signature)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Почему ML-DSA-65 с GENESIS:**
|
|||
|
|
- ✅ Post-quantum защита (lattice-based)
|
|||
|
|
- ✅ NIST Level 3 security (128-bit post-quantum)
|
|||
|
|
- ✅ Защита от Shor's algorithm
|
|||
|
|
- ✅ FIPS 204 стандарт
|
|||
|
|
- ✅ НЕ НУЖНА миграция — защита с первого дня
|
|||
|
|
|
|||
|
|
**Размеры ключей:**
|
|||
|
|
| Параметр | Размер |
|
|||
|
|
|----------|--------|
|
|||
|
|
| Private key | 4032 байта |
|
|||
|
|
| Public key | 1952 байта |
|
|||
|
|
| Signature | 3309 байт |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. Статус: MAINNET PRODUCTION
|
|||
|
|
|
|||
|
|
### Январь 2026: ML-DSA-65 АКТИВЕН
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
CRYPTO_MODE = "ML-DSA-65" # MAINNET с genesis
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Достигнуто:**
|
|||
|
|
- ✅ Все узлы на ML-DSA-65
|
|||
|
|
- ✅ Montana защищена от квантовых компьютеров с первого дня
|
|||
|
|
- ✅ Нет legacy Ed25519 — чистый post-quantum
|
|||
|
|
- ✅ FIPS 204 compliant
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. Безопасность
|
|||
|
|
|
|||
|
|
### Защита от Атак
|
|||
|
|
|
|||
|
|
| Атака | Пользователи | Узлы |
|
|||
|
|
|-------|--------------|------|
|
|||
|
|
| **IP Hijacking** | N/A (no IP) | ✅ Адрес не зависит от IP |
|
|||
|
|
| **DNS Spoofing** | N/A | ✅ Alias только для UX |
|
|||
|
|
| **MITM** | ✅ Telegram encryption | ✅ Подписи ML-DSA-65 |
|
|||
|
|
| **Sybil** | ✅ 1 человек = 1 Telegram | ✅ Biometrics (FIDO2) |
|
|||
|
|
| **Quantum** | ⚠️ Telegram зависит | ✅ ML-DSA-65 (post-quantum) |
|
|||
|
|
| **Key Theft** | ⚠️ Telegram 2FA | ⚠️ Secure storage needed |
|
|||
|
|
|
|||
|
|
### Рекомендации
|
|||
|
|
|
|||
|
|
**Для пользователей:**
|
|||
|
|
- Включи Telegram 2FA
|
|||
|
|
- Не используй публичные Wi-Fi для переводов
|
|||
|
|
- Переноси монеты перед сменой Telegram
|
|||
|
|
|
|||
|
|
**Для операторов узлов:**
|
|||
|
|
- Храни private key в HSM (Hardware Security Module)
|
|||
|
|
- Используй отдельный Telegram для управления узлами
|
|||
|
|
- Регулярно обновляй IP whitelist для доступа к узлу
|
|||
|
|
- Мониторь подозрительные транзакции
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. Сравнение с Другими Блокчейнами
|
|||
|
|
|
|||
|
|
### Bitcoin
|
|||
|
|
|
|||
|
|
| Параметр | Bitcoin | Montana |
|
|||
|
|
|----------|---------|---------|
|
|||
|
|
| **Адрес** | SHA256(RIPEMD160(pubkey)) | mt + SHA256(pubkey)[:20] |
|
|||
|
|
| **Алгоритм** | ECDSA (secp256k1) | ML-DSA-65 (FIPS 204) |
|
|||
|
|
| **Quantum** | ❌ Vulnerable | ✅ Protected from genesis |
|
|||
|
|
| **UX** | Seed phrase (12-24 words) | Telegram ID (простота) |
|
|||
|
|
| **Migration** | Hard fork needed | Not needed — PQ from day 1 |
|
|||
|
|
|
|||
|
|
### Ethereum
|
|||
|
|
|
|||
|
|
| Параметр | Ethereum | Montana |
|
|||
|
|
|----------|----------|---------|
|
|||
|
|
| **Адрес** | Keccak256(pubkey)[-20:] | mt + SHA256(pubkey)[:20] |
|
|||
|
|
| **Алгоритм** | ECDSA (secp256k1) | ML-DSA-65 (FIPS 204) |
|
|||
|
|
| **Quantum** | ❌ Vulnerable | ✅ Protected from genesis |
|
|||
|
|
| **UX** | MetaMask + seed phrase | Telegram ID (простота) |
|
|||
|
|
| **Gas fees** | Variable, high | None (time-based) |
|
|||
|
|
|
|||
|
|
### Solana
|
|||
|
|
|
|||
|
|
| Параметр | Solana | Montana |
|
|||
|
|
|----------|--------|---------|
|
|||
|
|
| **Адрес** | Ed25519 pubkey (base58) | mt + SHA256(pubkey)[:20] |
|
|||
|
|
| **Алгоритм** | Ed25519 | ML-DSA-65 (FIPS 204) |
|
|||
|
|
| **Quantum** | ❌ Vulnerable | ✅ Protected from genesis |
|
|||
|
|
| **UX** | Phantom wallet | Telegram ID (простота) |
|
|||
|
|
| **Speed** | ~400ms block time | ~10min T2 slice |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. Файловая Структура
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Montana/
|
|||
|
|
├── Протокол (Rust, production)
|
|||
|
|
│ ├── crypto.rs # ML-DSA-65, ML-KEM-768
|
|||
|
|
│ ├── consensus.rs # ACP consensus
|
|||
|
|
│ └── noise.rs # Hybrid encryption
|
|||
|
|
│
|
|||
|
|
├── Telegram Бот (Python, MAINNET)
|
|||
|
|
│ ├── node_crypto.py # ML-DSA-65 (FIPS 204)
|
|||
|
|
│ ├── time_bank.py # Банк времени
|
|||
|
|
│ ├── montana_db.py # SQLite база
|
|||
|
|
│ └── junomontanaagibot.py # Telegram интеграция
|
|||
|
|
│
|
|||
|
|
└── Документация
|
|||
|
|
├── English/protocol/
|
|||
|
|
│ ├── 001_ACP.md
|
|||
|
|
│ ├── 007_POST_QUANTUM.md
|
|||
|
|
│ └── CRYPTOGRAPHY_SPECIFICATION.md
|
|||
|
|
│
|
|||
|
|
└── Русский/бот/
|
|||
|
|
├── NODE_CRYPTO_SYSTEM.md
|
|||
|
|
├── QUANTUM_TRANSFERS.md
|
|||
|
|
└── ARCHITECTURE_FINAL.md (этот файл)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 10. Выводы
|
|||
|
|
|
|||
|
|
### Ключевые Особенности Montana
|
|||
|
|
|
|||
|
|
1. **Двухуровневая архитектура**
|
|||
|
|
- Пользователи: простота (Telegram ID)
|
|||
|
|
- Узлы: безопасность (криптография)
|
|||
|
|
|
|||
|
|
2. **Post-quantum from genesis**
|
|||
|
|
- Не retrofit, а оригинальный дизайн
|
|||
|
|
- Защита от квантовых компьютеров с первого дня
|
|||
|
|
|
|||
|
|
3. **Универсальные переводы**
|
|||
|
|
- Любой адрес → Любой адрес
|
|||
|
|
- Telegram ID, криптографический адрес, alias
|
|||
|
|
|
|||
|
|
4. **IP independence**
|
|||
|
|
- Адрес не зависит от IP
|
|||
|
|
- Защита от IP hijacking
|
|||
|
|
|
|||
|
|
5. **Квантовая анонимность**
|
|||
|
|
- Публично виден только proof
|
|||
|
|
- Адреса хэшированы
|
|||
|
|
- Суммы скрыты
|
|||
|
|
|
|||
|
|
### Философия
|
|||
|
|
|
|||
|
|
**Для пользователей:**
|
|||
|
|
```
|
|||
|
|
Ты уже в Montana, если у тебя есть Telegram.
|
|||
|
|
Никаких seed phrases, метамасок, или сложностей.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Для узлов:**
|
|||
|
|
```
|
|||
|
|
Максимальная безопасность.
|
|||
|
|
ML-DSA-65 от genesis.
|
|||
|
|
Post-quantum ACTIVE.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Ɉ Montana — Протокол идеальных денег**
|
|||
|
|
|
|||
|
|
*Время — единственная реальная валюта*
|
|||
|
|
|
|||
|
|
*ML-DSA-65 MAINNET — Post-quantum с первого дня*
|
|||
|
|
|
|||
|
|
*FIPS 204 compliant*
|