296 lines
8.5 KiB
Markdown
296 lines
8.5 KiB
Markdown
|
|
# Квантовая Система Переводов Montana
|
|||
|
|
|
|||
|
|
## Концепция
|
|||
|
|
|
|||
|
|
Montana реализует **квантовую архитектуру** переводов времени между кошельками:
|
|||
|
|
|
|||
|
|
### Принципы
|
|||
|
|
|
|||
|
|
1. **Адрес = Ключ**
|
|||
|
|
- **Пользователи:** Telegram ID одновременно является адресом и ключом
|
|||
|
|
- **Узлы:** Криптографический адрес (mt + SHA256(public_key)[:20])
|
|||
|
|
- Никаких seed phrases для пользователей, приватный ключ ML-DSA-65/ML-DSA-65 для узлов
|
|||
|
|
- Простая система — идентификатор = доступ
|
|||
|
|
|
|||
|
|
2. **Полная Анонимность**
|
|||
|
|
- Публично видны только хэши адресов (SHA256)
|
|||
|
|
- Суммы переводов скрыты
|
|||
|
|
- Только proof транзакции публичен
|
|||
|
|
- Узел видит **только свой баланс**
|
|||
|
|
|
|||
|
|
3. **Мгновенные Переводы**
|
|||
|
|
- Переписывание баланса в БД
|
|||
|
|
- Без блокчейн задержек
|
|||
|
|
- Без комиссий
|
|||
|
|
- Квантовая скорость
|
|||
|
|
|
|||
|
|
4. **Универсальность**
|
|||
|
|
- Любой адрес → Любой адрес
|
|||
|
|
- Пользователь → Пользователь
|
|||
|
|
- Пользователь → Узел
|
|||
|
|
- Узел → Узел
|
|||
|
|
|
|||
|
|
## Команды Бота
|
|||
|
|
|
|||
|
|
### `/balance`
|
|||
|
|
Показывает твой баланс и адрес кошелька:
|
|||
|
|
```
|
|||
|
|
Ɉ
|
|||
|
|
|
|||
|
|
**Твой кошелек Montana**
|
|||
|
|
|
|||
|
|
**Адрес:** `123456789`
|
|||
|
|
_(твой Telegram ID — адрес кошелька и ключ)_
|
|||
|
|
|
|||
|
|
💰 **Баланс:** 1500 секунд
|
|||
|
|
|
|||
|
|
🟢 **Присутствие:** активно
|
|||
|
|
⏱️ **Секунд в T2:** 45
|
|||
|
|
|
|||
|
|
📊 **/tx** — история транзакций
|
|||
|
|
💸 **/transfer <адрес> <сумма>** — перевод
|
|||
|
|
|
|||
|
|
⚠️ При смене Telegram аккаунта — переноси монеты заранее.
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### `/transfer <адрес> <сумма>`
|
|||
|
|
Перевод времени на другой адрес:
|
|||
|
|
|
|||
|
|
**Примеры:**
|
|||
|
|
```bash
|
|||
|
|
# Перевод пользователю (Telegram ID)
|
|||
|
|
/transfer 987654321 100
|
|||
|
|
|
|||
|
|
# Перевод узлу Amsterdam (криптографический адрес)
|
|||
|
|
/transfer mta46b633d258059b90db46adffc6c5ca08f0e8d6c 50
|
|||
|
|
|
|||
|
|
# Или по alias (удобнее)
|
|||
|
|
/transfer amsterdam.efir.org 50
|
|||
|
|
|
|||
|
|
# Перевод узлу Moscow
|
|||
|
|
/transfer mta8ae14f74c38294b24c2f1c20c6406e6be929c93 200
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Ответ:**
|
|||
|
|
```
|
|||
|
|
Ɉ
|
|||
|
|
|
|||
|
|
✅ **Перевод выполнен**
|
|||
|
|
|
|||
|
|
💸 Отправлено: 100 секунд
|
|||
|
|
📍 Адресат: `987654321`
|
|||
|
|
🔐 Proof: `a7f8b3c2d1e4f5...`
|
|||
|
|
|
|||
|
|
💰 Новый баланс: 1400 секунд
|
|||
|
|
|
|||
|
|
_Транзакция анонимна. Публично виден только proof._
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### `/tx`
|
|||
|
|
Личная история транзакций:
|
|||
|
|
```
|
|||
|
|
Ɉ
|
|||
|
|
|
|||
|
|
**💳 Твои транзакции**
|
|||
|
|
|
|||
|
|
📤 **Отправлено**
|
|||
|
|
🔐 `a7f8b3c2d1e4f5...`
|
|||
|
|
📅 2026-01-19T12:34:56
|
|||
|
|
|
|||
|
|
📥 **Получено**
|
|||
|
|
🔐 `b8g9c4e2f3h6i7...`
|
|||
|
|
📅 2026-01-19T11:22:33
|
|||
|
|
|
|||
|
|
_Адреса анонимны. Суммы скрыты._
|
|||
|
|
|
|||
|
|
🌐 **/feed** — публичная лента TX
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### `/feed`
|
|||
|
|
Публичная лента всех транзакций Montana:
|
|||
|
|
```
|
|||
|
|
Ɉ
|
|||
|
|
|
|||
|
|
**📡 Публичная лента Montana**
|
|||
|
|
|
|||
|
|
🔐 `a7f8b3c2d1e4f5...`
|
|||
|
|
📅 2026-01-19T12:34:56 • send
|
|||
|
|
|
|||
|
|
🔐 `b8g9c4e2f3h6i7...`
|
|||
|
|
📅 2026-01-19T11:22:33 • send
|
|||
|
|
|
|||
|
|
_Полная анонимность: адреса хэшированы, суммы скрыты._
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Техническая Реализация
|
|||
|
|
|
|||
|
|
### База Данных (montana.db)
|
|||
|
|
|
|||
|
|
#### Таблица `wallets`
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE wallets (
|
|||
|
|
address TEXT PRIMARY KEY, -- telegram_id или mt... (криптографический)
|
|||
|
|
address_type TEXT NOT NULL, -- "user" или "node"
|
|||
|
|
created_at TEXT NOT NULL,
|
|||
|
|
last_seen TEXT NOT NULL,
|
|||
|
|
balance INTEGER DEFAULT 0, -- в секундах
|
|||
|
|
total_presence_seconds INTEGER DEFAULT 0
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Таблица `coin_transfers`
|
|||
|
|
```sql
|
|||
|
|
CREATE TABLE coin_transfers (
|
|||
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|||
|
|
timestamp TEXT NOT NULL,
|
|||
|
|
tx_proof TEXT UNIQUE NOT NULL, -- криптографический proof
|
|||
|
|
from_hash TEXT NOT NULL, -- SHA256(from_address)
|
|||
|
|
to_hash TEXT NOT NULL, -- SHA256(to_address)
|
|||
|
|
amount_hidden INTEGER DEFAULT 1, -- сумма скрыта
|
|||
|
|
tx_type TEXT DEFAULT 'transfer'
|
|||
|
|
);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API Montana DB
|
|||
|
|
|
|||
|
|
#### `send(from_addr, to_addr, amount)`
|
|||
|
|
```python
|
|||
|
|
from montana_db import get_db
|
|||
|
|
|
|||
|
|
db = get_db()
|
|||
|
|
|
|||
|
|
# Перевод 100 секунд (пользователь → узел)
|
|||
|
|
proof = db.send(
|
|||
|
|
from_addr="123456789",
|
|||
|
|
to_addr="mta46b633d258059b90db46adffc6c5ca08f0e8d6c",
|
|||
|
|
amount=100
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
print(f"TX proof: {proof}")
|
|||
|
|
# TX proof: a7f8b3c2d1e4f567890abcdef1234567...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### `balance(address)`
|
|||
|
|
```python
|
|||
|
|
# Баланс по адресу
|
|||
|
|
balance = db.balance("123456789")
|
|||
|
|
print(f"Balance: {balance} секунд")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### `my_txs(address, limit)`
|
|||
|
|
```python
|
|||
|
|
# Личная история
|
|||
|
|
txs = db.my_txs("123456789", limit=10)
|
|||
|
|
|
|||
|
|
for tx in txs:
|
|||
|
|
print(f"{tx['direction']}: {tx['proof'][:16]}...")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### `tx_feed(limit)`
|
|||
|
|
```python
|
|||
|
|
# Публичная лента
|
|||
|
|
feed = db.tx_feed(limit=20)
|
|||
|
|
|
|||
|
|
for tx in feed:
|
|||
|
|
print(f"{tx['timestamp']}: {tx['proof'][:16]}...")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Квантовая Анонимность
|
|||
|
|
|
|||
|
|
### Что Видно Публично
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"timestamp": "2026-01-19T12:34:56Z",
|
|||
|
|
"tx_proof": "a7f8b3c2d1e4f5...",
|
|||
|
|
"tx_type": "send"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Что Скрыто
|
|||
|
|
- ❌ Адрес отправителя (только SHA256 хэш)
|
|||
|
|
- ❌ Адрес получателя (только SHA256 хэш)
|
|||
|
|
- ❌ Сумма перевода (amount_hidden = 1)
|
|||
|
|
|
|||
|
|
### Что Видишь Ты
|
|||
|
|
- ✅ Свой баланс
|
|||
|
|
- ✅ Направление своих TX (in/out)
|
|||
|
|
- ✅ Proof своих транзакций
|
|||
|
|
|
|||
|
|
### Что Видит Узел
|
|||
|
|
- ✅ **Только свой баланс**
|
|||
|
|
- ✅ Направление своих TX (in/out)
|
|||
|
|
- ❌ Чужие балансы
|
|||
|
|
- ❌ Чужие адреса
|
|||
|
|
- ❌ Суммы переводов
|
|||
|
|
|
|||
|
|
## Безопасность
|
|||
|
|
|
|||
|
|
### Криптография
|
|||
|
|
```python
|
|||
|
|
def hash_address(address: str) -> str:
|
|||
|
|
"""SHA256 хэширование адреса"""
|
|||
|
|
return hashlib.sha256(address.encode()).hexdigest()[:16]
|
|||
|
|
|
|||
|
|
def generate_tx_proof() -> str:
|
|||
|
|
"""64-байтный криптографический proof"""
|
|||
|
|
return secrets.token_hex(32)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Защита
|
|||
|
|
- 🔒 Адреса хэшированы SHA256
|
|||
|
|
- 🔒 Proof генерируется `secrets.token_hex(32)`
|
|||
|
|
- 🔒 Суммы не хранятся в публичной таблице
|
|||
|
|
- 🔒 Узлы изолированы (видят только себя)
|
|||
|
|
|
|||
|
|
## Примеры Использования
|
|||
|
|
|
|||
|
|
### Пользователь → Пользователь
|
|||
|
|
```bash
|
|||
|
|
# Alice (123456) отправляет Bob (789012) 100 секунд
|
|||
|
|
/transfer 789012 100
|
|||
|
|
|
|||
|
|
# Alice видит: баланс уменьшен на 100
|
|||
|
|
# Bob видит: баланс увеличен на 100
|
|||
|
|
# Сеть видит: только proof транзакции
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Пользователь → Узел
|
|||
|
|
```bash
|
|||
|
|
# Пользователь отправляет награду узлу Amsterdam
|
|||
|
|
/transfer mta46b633d258059b90db46adffc6c5ca08f0e8d6c 50
|
|||
|
|
|
|||
|
|
# Или по alias (удобнее)
|
|||
|
|
/transfer amsterdam.efir.org 50
|
|||
|
|
|
|||
|
|
# Публично: только proof
|
|||
|
|
# Узел видит: +50 секунд на балансе
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Узел → Узел
|
|||
|
|
```bash
|
|||
|
|
# Amsterdam переводит Moscow (через админа с подписью)
|
|||
|
|
/transfer mta8ae14f74c38294b24c2f1c20c6406e6be929c93 1000
|
|||
|
|
|
|||
|
|
# Требуется подпись private key узла Amsterdam
|
|||
|
|
# Публично: только proof
|
|||
|
|
# Оба узла видят свой баланс
|
|||
|
|
# Никто не видит сумму перевода
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Roadmap
|
|||
|
|
|
|||
|
|
- [ ] Web интерфейс для переводов
|
|||
|
|
- [ ] QR коды для адресов
|
|||
|
|
- [ ] Автоматические recurring платежи
|
|||
|
|
- [ ] Escrow смарт-контракты
|
|||
|
|
- [ ] Multi-sig кошельки для узлов
|
|||
|
|
- [ ] Lightning-style каналы для мгновенных микроплатежей
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Ɉ Montana — Протокол идеальных денег**
|
|||
|
|
|
|||
|
|
*Время — единственная реальная валюта*
|
|||
|
|
|
|||
|
|
*Квантовая анонимность — защита приватности*
|