montana/Русский/Бот/СИСТЕМА_КОШЕЛЬКА_УЗЛА.md

322 lines
11 KiB
Markdown
Raw Permalink Normal View History

# Система Кошельков Узлов Montana
## Концепция
В Montana существует две параллельные системы кошельков:
### 1. **Пользовательские Кошельки**
- **Адрес:** Telegram ID пользователя
- **Ключ:** Telegram ID (одновременно адрес и ключ)
- **Хранение:** Привязано к Telegram аккаунту
- **Команда:** `/start` — показывает TG ID как адрес кошелька
### 2. **Кошельки Узлов**
- **Адрес:** Криптографический хеш (mt + SHA256(public_key)[:20])
- **Ключ:** Private key ML-DSA-65/ML-DSA-65
- **Alias:** Удобное имя (например, `amsterdam.efir.org`)
- **IP:** Только для networking, НЕ для идентификации
- **Владелец:** Telegram ID оператора узла
## Официальные Узлы Montana
```
⭐️ 🇳🇱 Amsterdam — mta46b633d258059b90db46adffc6c5ca08f0e8d6c — FULL NODE — Priority #1
Alias: amsterdam.efir.org
IP: 72.56.102.240 (networking only)
⭐️ 🇷🇺 Moscow — mta8ae14f74c38294b24c2f1c20c6406e6be929c93 — FULL NODE — Priority #2
Alias: moscow.efir.org
IP: 176.124.208.93 (networking only)
⭐️ 🇰🇿 Almaty — mtd07b0d9bdab2cb592f509bc1304c368ac703c45e — FULL NODE — Priority #3
Alias: almaty.efir.org
IP: 91.200.148.93 (networking only)
⭐️ 🇷🇺 St.Petersburg — mtb397e136de69d92e5782f3fe14533a4a37b4ddec — FULL NODE — Priority #4
Alias: spb.efir.org
IP: 188.225.58.98 (networking only)
⭐️ 🇷🇺 Novosibirsk — mtf3f0254b405382de38494e753924b4b92692bd2c — FULL NODE — Priority #5
Alias: novosibirsk.efir.org
IP: 147.45.147.247 (networking only)
```
## Защита от Атак
### ✅ IP Hijacking — ЗАБЛОКИРОВАНО
- Адрес кошелька НЕ привязан к IP
- IP используется только для networking
- Атакующий с тем же IP не получит доступ к кошельку
### ✅ DNS Spoofing — ЗАБЛОКИРОВАНО
- Alias только для удобства
- Реальный адрес криптографический (mt...)
- Подмена DNS не влияет на кошелек
### ✅ Man-in-the-Middle — ЗАБЛОКИРОВАНО
- Все операции подписаны ML-DSA-65/ML-DSA-65
- Модифицированное сообщение = невалидная подпись
### ✅ Подделка Транзакций — ЗАБЛОКИРОВАНО
- Требуется private key для подписи
- Без ключа транзакция отклонена
## Команды Бота
### `/node`
Показывает сводку по всем узлам сети:
```
Ɉ
**MONTANA NETWORK**
🌐 **Всего узлов:** 5
⭐️ **Официальных:** 5
🔷 **Full nodes:** 5
💰 **Общий баланс сети:** XXX.XX секунд
```
### `/node <адрес>`
Показывает детали конкретного узла:
```
Ɉ
**Узел Montana:** 🇳🇱 Amsterdam
**Адрес кошелька:** `mta46b633d258059b90db46adffc6c5ca08f0e8d6c`
**Alias:** `amsterdam.efir.org`
_(криптографический адрес — защита от IP hijacking)_
**IP:** 72.56.102.240 _(только для networking)_
**Тип:** FULL NODE
**Владелец:** Montana Foundation (см. keyring: ADMIN_TELEGRAM_ID)
**Приоритет:** #1
💰 **Баланс:** XXX.XX секунд
📊 **Последние транзакции:**
• +100.50s — Награда за валидацию блоков
⚠️ Переводы только по криптографическому адресу или alias.
```
### `/node <alias>`
Показывает узел по alias:
```bash
/node amsterdam.efir.org
# → Показывает Amsterdam узел
```
### `/network`
Альтернатива `/node` — показывает ту же сводку по сети.
### `/register_node` (admin only)
**Только для администратора.**
Регистрирует новый узел в сети Montana с генерацией криптографических ключей.
Пример:
```bash
/register_node tokyo "🇯🇵 Tokyo" 1.2.3.4 123456789 light
```
Параметры:
- `node_name` — Короткое имя узла (станет частью alias)
- `location` — Локация с флагом (например "🇯🇵 Tokyo")
- `ip_address` — IP адрес узла (только для networking!)
- `owner_telegram_id` — Telegram ID владельца узла
- `node_type` — Тип узла: `full`, `light`, `client` (по умолчанию `light`)
**Результат:**
```
Ɉ
**Узел зарегистрирован**
**Адрес:** `mtb9498a702435b2443bd8461574b80d8ed435159b`
**Alias:** `tokyo.efir.org`
**Public Key:** `a3f8b2c1d4e5f6789...`
⚠️ **КРИТИЧЕСКИ ВАЖНО:**
**Private Key:** `f9d8c7b6a5e4d3c2b1...`
🔐 СОХРАНИ PRIVATE KEY В БЕЗОПАСНОМ МЕСТЕ!
Без него доступ к кошельку узла невозможен.
```
## Типы Узлов
### **Full Node**
- Полная валидация всех транзакций
- Хранит весь таймчейн Montana
- Участвует в консенсусе
- Может майнить блоки
### **Light Node**
- Валидация только заголовков блоков
- Хранит заголовки + чекпоинты
- Не требует полного хранилища
- Быстрая синхронизация
### **Light Client**
- Только отправка подписей присутствия
- Хранит только свои данные
- Минимальные требования
- Для мобильных устройств
## Транзакции Узлов
Узлы получают награды за:
- 🏆 **Валидацию блоков** — подтверждение транзакций
- 📦 **Хранение данных** — репликация таймчейна
- 🌐 **Релей трафика** — пересылка сообщений сети
- ⏱️ **Аптайм** — стабильная работа 24/7
Узлы платят за:
- 💸 **Bandwidth** — исходящий трафик
- 🔧 **Операционные расходы** — сервер, электричество
- 🔄 **Синхронизацию** — обмен данными с другими узлами
## API (программный доступ)
### Python
```python
from node_crypto import get_node_crypto_system
# Инициализация
ncs = get_node_crypto_system()
# Получить все узлы
nodes = ncs.get_all_nodes()
# Получить узел по адресу
node = ncs.get_node_by_address("mta46b633d258059b90db46adffc6c5ca08f0e8d6c")
print(f"Узел: {node['node_name']}")
print(f"Баланс: {node['balance']} секунд")
# Получить узел по alias
node = ncs.get_node_by_alias("amsterdam.efir.org")
# Зарегистрировать новый узел
result = ncs.register_node(
owner_telegram_id=123456789,
node_name="tokyo",
location="🇯🇵 Tokyo",
ip_address="1.2.3.4",
node_type="light"
)
# ⚠️ СОХРАНИ PRIVATE KEY!
print(f"Address: {result['address']}")
print(f"Private Key: {result['private_key']}") # КРИТИЧЕСКИ ВАЖНО
print(f"Public Key: {result['public_key']}")
print(f"Alias: {result['alias']}")
# Проверить владение узлом (подпись)
message = "Transfer 500 seconds to mt9876543210"
signature = sign_message(private_key, message)
is_valid = ncs.verify_node_ownership(
address="mta46b633d258059b90db46adffc6c5ca08f0e8d6c",
message=message,
signature_hex=signature
)
```
## Файлы Данных
Система хранит данные в:
```
data/
└── nodes/
├── registered_nodes.json # Зарегистрированные узлы
├── node_keys.json # Криптографические ключи
└── node_wallets.json # Кошельки узлов (deprecated)
```
### registered_nodes.json
```json
{
"mta46b633d258059b90db46adffc6c5ca08f0e8d6c": {
"address": "mta46b633d258059b90db46adffc6c5ca08f0e8d6c",
"public_key": "a3f8b2c1d4e5f6789...",
"owner": "ADMIN_TELEGRAM_ID",
"node_name": "amsterdam",
"alias": "amsterdam.efir.org",
"location": "🇳🇱 Amsterdam",
"ip": "72.56.102.240",
"type": "full",
"created_at": "2026-01-19T...",
"official": true,
"priority": 1
}
}
```
### node_keys.json
```json
{
"mta46b633d258059b90db46adffc6c5ca08f0e8d6c": {
"private_key": "f9d8c7b6a5e4d3c2b1...",
"public_key": "a3f8b2c1d4e5f6789...",
"algorithm": "ML-DSA-65 (FIPS 204)"
}
}
```
⚠️ **КРИТИЧЕСКИ ВАЖНО:** `node_keys.json` содержит private keys. НИКОГДА не коммить в git!
## Безопасность
### 🔒 Криптографическая Защита (MAINNET)
- Private keys никогда не покидают сервер (4032 байта)
- Подпись ML-DSA-65 (FIPS 204) для всех операций
- SHA256 хеширование для адресов
- Post-quantum защита АКТИВНА с genesis
### ⚠️ Важно
- Криптографический адрес = идентификатор кошелька
- IP адрес только для networking
- Alias только для удобства
- Private key = полный контроль над узлом
- При утере private key доступ к кошельку невозможен
## Интеграция с Telegram
Система полностью интегрирована в [@junomontanaagibot](https://t.me/junomontanaagibot):
1. Пользователи видят свой TG ID как адрес кошелька
2. Узлы имеют криптографические адреса (mt...)
3. Единая философия: **криптографический идентификатор = адрес**
4. Операторы узлов идентифицируются по Telegram ID
5. Переводы поддерживают как полные адреса, так и alias
## Статус: MAINNET PRODUCTION
**Январь 2026:** ML-DSA-65 АКТИВЕН
-Все узлы на ML-DSA-65 (FIPS 204)
- ✅ Montana защищена от квантовых компьютеров с первого дня
- ✅ Нет legacy — чистый post-quantum
См. [NODE_CRYPTO_SYSTEM.md](NODE_CRYPTO_SYSTEM.md) для деталей.
## Roadmap
- [ ] Автоматические награды за аптайм
- [ ] Интеграция с Montana timechain
- [ ] Web dashboard для мониторинга узлов
- [ ] Stake механизм для узлов
- [ ] Governance через узлы
- [ ] Multi-sig кошельки для узлов
- [ ] Hardware Security Module (HSM) для ключей
---
**Ɉ Montana — Протокол идеальных денег**
*Криптографическая защита — безопасность от genesis*
*Post-quantum ready — защита от квантовых компьютеров*