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

11 KiB
Raw Permalink Blame 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:

/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:

  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 для деталей.

Roadmap

  • Автоматические награды за аптайм
  • Интеграция с Montana timechain
  • Web dashboard для мониторинга узлов
  • Stake механизм для узлов
  • Governance через узлы
  • Multi-sig кошельки для узлов
  • Hardware Security Module (HSM) для ключей

Ɉ Montana — Протокол идеальных денег

Криптографическая защита — безопасность от genesis

Post-quantum ready — защита от квантовых компьютеров