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 — Протокол идеальных денег**
|
||
|
||
*Время — единственная реальная валюта*
|
||
|
||
*Квантовая анонимность — защита приватности*
|