11 KiB
11 KiB
Система Кошельков Узлов 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:
/node amsterdam.efir.org
# → Показывает Amsterdam узел
/network
Альтернатива /node — показывает ту же сводку по сети.
/register_node (admin only)
Только для администратора.
Регистрирует новый узел в сети Montana с генерацией криптографических ключей.
Пример:
/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
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
{
"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
{
"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:
- Пользователи видят свой TG ID как адрес кошелька
- Узлы имеют криптографические адреса (mt...)
- Единая философия: криптографический идентификатор = адрес
- Операторы узлов идентифицируются по Telegram ID
- Переводы поддерживают как полные адреса, так и alias
Статус: MAINNET PRODUCTION
Январь 2026: ML-DSA-65 АКТИВЕН
- ✅ Все узлы на ML-DSA-65 (FIPS 204)
- ✅ Montana защищена от квантовых компьютеров с первого дня
- ✅ Нет legacy — чистый post-quantum
См. NODE_CRYPTO_SYSTEM.md для деталей.
Roadmap
- Автоматические награды за аптайм
- Интеграция с Montana timechain
- Web dashboard для мониторинга узлов
- Stake механизм для узлов
- Governance через узлы
- Multi-sig кошельки для узлов
- Hardware Security Module (HSM) для ключей
Ɉ Montana — Протокол идеальных денег
Криптографическая защита — безопасность от genesis
Post-quantum ready — защита от квантовых компьютеров