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

322 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Система Кошельков Узлов 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 — защита от квантовых компьютеров*