montana/Русский/Экономика/банк_времени/ТЕХНИЧЕСКАЯ_СПЕЦИФИКАЦИЯ.md

769 lines
26 KiB
Markdown
Raw 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.

# TIME_BANK — Банк Времени Montana
**Техническая Спецификация v3.0**
**Дата:** Январь 2026
**Автор:** Alejandro Montana
---
## Abstract
TIME_BANK — протокол эмиссии монет времени (金元Ɉ) на основе доказанного присутствия. Единственная валюта, где эмиссия ограничена **временем как физическим ресурсом**.
**Ключевая формула:**
```
1 секунда присутствия = 1 Ɉ × halving_coefficient
```
**Свойства:**
- Динамическая эмиссия (зависит от участников)
- Халвинг каждые τ₄ (4 года)
- Банк подтверждает время, вычитает свои секунды
---
# ЧАСТЬ I: ЭКОНОМИЧЕСКАЯ МОДЕЛЬ
## 1. Определение 金元Ɉ
**金元** (jīn yuán) — буквально "золотой юань".
**Ɉ** (Unicode U+0248) — Temporal Time Unit.
```
金元Ɉ = Время, доказанное присутствием
```
> *"Время — единственный ресурс, распределённый одинаково между всеми людьми."*
### 1.1 Фундаментальное свойство
```
lim(evidence → ∞) 1 Ɉ → 1 секунда
∀t: Trust(t) < 1
```
**Ɉ не равен секунде.** Ɉ асимптотически приближается к секунде по мере накопления доказательств.
| Доказательства | Точность | Доверие |
|----------------|----------|---------|
| 1 подпись | ±10 минут | ~0.1 |
| 1 τ₂ (10 мин) | ±1 минута | ~0.5 |
| 1 τ₃ (14 дней) | ±1 секунда | ~0.99 |
| 1 τ₄ (4 года) | ±0.1 секунды | ~0.9999 |
---
## 2. Временные координаты
Montana использует иерархию временных единиц:
| Единица | Длительность | Назначение |
|---------|--------------|------------|
| **τ₁** | 1 минута | Подпись присутствия (ML-DSA-65) |
| **τ₂** | 10 минут | Слайс (блок эмиссии) |
| **τ₃** | 14 дней | Чекпоинт (2,016 τ₂) |
| **τ₄** | 4 года | Эпоха (104 τ₃) — **ХАЛВИНГ** |
```
τ₄ содержит 104 × τ₃
τ₃ содержит 2,016 × τ₂
τ₂ содержит 10 × τ₁
```
**Иерархия:**
```
1 τ₄ = 104 τ₃ = 209,664 τ₂ = 2,096,640 τ₁
```
---
## 3. Механизм эмиссии
### 3.1 Принцип работы
**Банк Времени** — не участник, а **валидатор времени**:
```
Банк говорит: "Прошло ровно 10 минут (600 секунд)"
Банк всегда присутствует 600 секунд за τ₂
Банк вычитает свои секунды из эмиссии
```
### 3.2 Формула эмиссии
```python
# 1. Считаем всех участников (включая банк)
total_seconds = sum(user1, user2, ..., user_N) + bank_600_seconds
# 2. Банк вычитает себя
total_seconds -= bank_600_seconds
# 3. Применяем халвинг
emission = total_seconds × halving_coefficient(τ₄_count)
# Упрощённо:
emission = sum(только_пользователи) × halving_coefficient
```
### 3.3 Динамическая эмиссия
Эмиссия **не фиксированная**, а зависит от участников:
| Участники | Секунды за τ₂ | Эмиссия (τ₄=0) | Эмиссия (τ₄=1) |
|-----------|---------------|----------------|----------------|
| 1 | 600 | 600 Ɉ | 300 Ɉ |
| 10 | 6,000 | 6,000 Ɉ | 3,000 Ɉ |
| 100 | 60,000 | 60,000 Ɉ | 30,000 Ɉ |
| 1,000 | 600,000 | 600,000 Ɉ | 300,000 Ɉ |
**Чем больше участников, тем больше эмиссия.**
---
## 4. TIME_BANK Reserve — 21 млн минут
### 4.1 Фундаментальный принцип
**TIME_BANK имеет конечный резерв времени:**
```
BANK_TOTAL_MINUTES = 21,000,000 минут
BANK_TOTAL_SECONDS = 1,260,000,000 секунд
```
> *21 миллион минут — как 21 миллион Bitcoin. Конечный ресурс.*
### 4.2 Расход резерва
Банк **всегда тратит 10 минут за каждый T2**, подтверждая что прошло ровно 10 минут:
```python
# Каждый T2 (10 минут)
bank_seconds_spent += 600 # Банк тратит 10 минут из резерва
# Проверка исчерпания
if bank_seconds_spent >= BANK_TOTAL_SECONDS:
bank_exhausted = True # Oracle Mode
```
### 4.3 График исчерпания
| Параметр | Значение |
|----------|----------|
| Резерв | 21,000,000 минут |
| Расход/T2 | 10 минут |
| Всего T2 | 2,100,000 |
| Срок | **~40 лет** |
```
21,000,000 минут ÷ 525,600 мин/год = 39.95 лет
```
**По годам:**
| Год | Потрачено | Осталось | % резерва |
|-----|-----------|----------|-----------|
| 0 | 0 | 21,000,000 | 100% |
| 4 | 2,102,400 | 18,897,600 | 90% |
| 10 | 5,256,000 | 15,744,000 | 75% |
| 20 | 10,512,000 | 10,488,000 | 50% |
| 30 | 15,768,000 | 5,232,000 | 25% |
| 40 | 21,024,000 | 0 | 0% |
### 4.4 Oracle Mode
Когда резерв исчерпан (~40 лет), TIME_BANK переходит в **Oracle Mode**:
```
╔═══════════════════════════════════════════════════════════╗
║ ⏳ TIME_BANK RESERVE EXHAUSTED — ORACLE MODE ║
╚═══════════════════════════════════════════════════════════╝
Банк потратил все 21 млн минут
Теперь чистый оракул — продолжает верифицировать время
```
**В Oracle Mode банк:**
- ✅ Продолжает верифицировать T2 (подтверждать время)
- ✅ Участники продолжают получать монеты за присутствие
- ❌ Банк больше не "тратит" из резерва
- 📡 Становится чистым временным оракулом
### 4.5 Связь с халвингом
Резерв и халвинг — **независимые механизмы**:
| Механизм | Что ограничивает | Когда срабатывает |
|----------|------------------|-------------------|
| **Резерв 21M** | Время жизни банка как эмитента | ~40 лет |
| **Халвинг** | Эмиссию за секунду | Каждые 4 года (τ₄) |
```
Год 0-4: Резерв 100%, Халвинг 1.0x
Год 4-8: Резерв 90%, Халвинг 0.5x
Год 8-12: Резерв 75%, Халвинг 0.25x
...
Год 36-40: Резерв 10%, Халвинг 0.001x
Год 40+: Резерв 0%, Oracle Mode
```
### 4.6 Почему 21 миллион?
```
Bitcoin: 21,000,000 BTC — ограничено математикой
Montana: 21,000,000 минут — ограничено временем
21M — символ конечности.
Время банка конечно. Время участников — бесконечно.
```
---
## 5. Халвинг (Halving)
### 5.1 Механизм
Каждые **τ₄ (4 года)** эмиссия делится на 2:
```python
halving_coefficient(τ₄_count) = 1.0 / (2 ** τ₄_count)
```
### 5.2 График эмиссии
| Период | τ₄ | Коэффициент | За 1 секунду | Эмиссия за τ₂ (100 участников) |
|--------|-----|-------------|--------------|--------------------------------|
| 0-4 года | 0 | 1.0 | 1.0 Ɉ | 60,000 Ɉ |
| 4-8 лет | 1 | 0.5 | 0.5 Ɉ | 30,000 Ɉ |
| 8-12 лет | 2 | 0.25 | 0.25 Ɉ | 15,000 Ɉ |
| 12-16 лет | 3 | 0.125 | 0.125 Ɉ | 7,500 Ɉ |
| 16-20 лет | 4 | 0.0625 | 0.0625 Ɉ | 3,750 Ɉ |
### 5.3 Сравнение с Bitcoin
| Параметр | Bitcoin | 金元Ɉ |
|----------|---------|-------|
| Интервал халвинга | 210,000 блоков (~4 года) | τ₄ (ровно 4 года) |
| Механизм | Деление награды на 2 | Деление эмиссии на 2 |
| Детерминированность | Количество блоков | Физическое время |
| Ускорение | Можно (больше хешрейта) | **Невозможно** |
**Время нельзя ускорить, купить или подделать.**
---
## 6. Распределение
### 6.1 Параллельная эмиссия
Каждый участник получает монеты **параллельно** за своё присутствие:
```
User A: 450 сек × 1.0 = 450 Ɉ
User B: 600 сек × 1.0 = 600 Ɉ
User C: 150 сек × 1.0 = 150 Ɉ
───────────────────────────────
Эмиссия: 1,200 Ɉ
Распределено: 1,200 Ɉ
Резерв: 0 (нет резерва!)
```
**НЕТ лотереи, НЕТ резерва** — всё распределяется участникам.
### 6.2 Принцип "личного банка времени"
```
┌─────────────────────────────────────────────────────────────┐
│ ПАРАЛЛЕЛЬНАЯ ЭМИССИЯ │
├─────────────────────────────────────────────────────────────┤
│ User A │ Присутствовал 450 сек │ +450 Ɉ │
│ User B │ Присутствовал 600 сек │ +600 Ɉ │
│ User C │ Присутствовал 150 сек │ +150 Ɉ │
│ Банк │ 600 сек (вычитается) │ +0 Ɉ │
└─────────────────────────────────────────────────────────────┘
Каждый получает из своего "личного банка времени"
Сеть распределяет параллельно, не из общего пула
```
---
## 7. Свойства 金元Ɉ
### 7.1 Неподделываемость
```
Подделать Ɉ = Подделать время
Подделать время = Нарушить физику
∴ Ɉ неподделываем
```
### 7.2 Неинфлируемость
```
Эмиссия Ɉ ограничена временем
Все люди имеют одинаковое количество времени
Халвинг делит эмиссию на 2 каждые 4 года
∴ Ɉ распределён справедливо и предсказуемо
```
### 7.3 Верифицируемость
Каждый Ɉ имеет доказательство:
```
├── Подпись присутствия (ML-DSA-65)
├── Включение в presence_root (Merkle)
├── Подтверждение в таймчейне (хеш-цепь)
└── Аттестация сетью (P2P)
```
---
## 8. Формула ценности
```
V(Ɉ) = f(доказательства) × g(время) × h(участники) × k(халвинг)
где:
f(доказательства) → 1 при evidence → ∞
g(время) — монотонно возрастает
h(участники) — сетевой эффект
k(халвинг) — дефляционная компонента
```
**Ценность Ɉ растёт с:**
1. Количеством накопленных доказательств
2. Длительностью существования сети
3. Числом участников сети
4. Каждым халвингом (дефицит)
---
# ЧАСТЬ II: ТЕХНИЧЕСКАЯ РЕАЛИЗАЦИЯ
## 9. Архитектура TIME_BANK
### 9.1 Основные компоненты
```
┌─────────────────────────────────────────────────────────────┐
│ TIME_BANK v3.0 │
├─────────────────────────────────────────────────────────────┤
│ Protocol │ Константы протокола │
│ halving() │ Коэффициент халвинга │
│ TimeBank │ Основной класс эмиссии │
│ PresenceCache │ Кэш присутствия участников │
│ _finalize_t2() │ Завершение слайса, начисление монет │
│ Presence Proof │ ML-DSA-65 подписи присутствия │
└─────────────────────────────────────────────────────────────┘
```
### 9.2 Константы протокола
```python
class Protocol:
VERSION = "3.0"
# Сеть
NODES_COUNT = 5 # 5 узлов Montana
BANK_PRESENCE_PER_T2 = 600 # Банк всегда 600 сек
# TIME_BANK RESERVE — 21 млн минут (~40 лет)
BANK_TOTAL_MINUTES = 21_000_000 # 21 млн минут
BANK_TOTAL_SECONDS = 1_260_000_000 # 21M × 60
# Временные координаты
TAU1_INTERVAL_SEC = 60 # τ₁ = 1 минута
T2_DURATION_SEC = 10 * 60 # τ₂ = 10 минут
TAU3_DURATION_SEC = 14 * 24 * 60 * 60 # τ₃ = 14 дней
TAU4_DURATION_SEC = 4 * 365 * 24 * 60 * 60 # τ₄ = 4 года
# Иерархия
T2_PER_TAU3 = 2016 # τ₂ в τ₃
TAU3_PER_YEAR = 26 # τ₃ в году
TAU3_PER_TAU4 = 104 # τ₃ в τ₄
# Монеты
COINS_PER_SECOND = 1 # 1 секунда = 1 монета
INACTIVITY_LIMIT_SEC = 3 * 60 # 3 минуты без активности
```
---
## 10. Халвинг
### 10.1 Реализация
```python
def halving_coefficient(tau4_count: int) -> float:
"""
Коэффициент халвинга — деление на 2 каждые τ₄
Returns:
1.0 / (2 ** tau4_count)
Примеры:
halving_coefficient(0) → 1.0
halving_coefficient(1) → 0.5
halving_coefficient(2) → 0.25
halving_coefficient(3) → 0.125
"""
return 1.0 / (2 ** tau4_count)
```
### 10.2 Использование
```python
# В момент завершения τ₂
coef = halving_coefficient(self.tau4_count)
# Эмиссия с халвингом
emission = total_users_seconds × coef
# Распределение с халвингом
user_coins = user_seconds × coef
```
---
## 11. Presence Proof — Доказательство присутствия
### 11.1 Криптография ML-DSA-65
| Параметр | Значение |
|----------|----------|
| Алгоритм | ML-DSA-65 (Dilithium) |
| Стандарт | FIPS 204 |
| Уровень | NIST Level 3 (128-bit post-quantum) |
| Private Key | 4032 байт |
| Public Key | 1952 байт |
| Signature | 3309 байт |
### 11.2 Подпись присутствия
Каждую **τ₁ (1 минуту)** узел подписывает:
```python
# Формат сообщения
message = f"MONTANA_PRESENCE_V1:{timestamp}:{prev_hash}:{pubkey}:{t2_index}"
# POST-QUANTUM подпись
signature = ML_DSA_65.sign(private_key, message.encode())
# Hash для цепочки proofs
proof_hash = SHA256(f"{message}:{signature}")
```
### 11.3 Цепочка доказательств
```
┌─────────────────────────────────────────────────────────────┐
│ PRESENCE PROOF CHAIN │
├─────────────────────────────────────────────────────────────┤
│ Genesis │ prev_hash = "0000...0000" │
│ Proof #1 │ prev_hash = Genesis.hash │
│ Proof #2 │ prev_hash = Proof#1.hash │
│ ... │ ... │
└─────────────────────────────────────────────────────────────┘
```
---
## 12. Финализация τ₂
### 12.1 Алгоритм
```python
def _finalize_t2(self):
"""
Завершает T2, начисляет монеты с халвингом
Шаги:
1. Считаем сумму всех секунд присутствия
2. Банк вычитает свои 600 секунд
3. Применяем халвинг
4. Распределяем каждому
"""
# 1. Коэффициент халвинга
coef = halving_coefficient(self.tau4_count)
# 2. Сумма секунд участников
total_users_seconds = sum(user.t2_seconds for user in users)
# 3. Банк подтверждает 600 секунд
bank_seconds = 600
# 4. Эмиссия = сумма × халвинг
emission = total_users_seconds × coef
# 5. Распределяем каждому
for user in users:
coins = user.t2_seconds × coef
user.balance += coins
```
### 12.2 Проверка τ₃ и τ₄
```python
# Каждые 2016 τ₂ = τ₃ checkpoint
if t2_count % 2016 == 0:
tau3_count += 1
log("τ₃ CHECKPOINT")
# Каждые 104 τ₃ = τ₄ epoch — ХАЛВИНГ!
if tau3_count % 104 == 0:
tau4_count += 1
log("🔥 τ₄ HALVING — Эмиссия ÷ 2")
```
---
## 13. Интеграция с Montana
### 13.1 Философия
```
Montana = Организм
├── TIME_BANK = Орган (эмиссия монет времени)
├── ML-DSA-65 = Иммунная система (пост-квантовая защита)
├── 3-Mirror = Нервная система (синхронизация узлов)
├── Юнона (бот) = Лицо (интерфейс с пользователем)
└── Гиппокамп = Память (внешнее хранилище событий)
```
### 13.2 Юнона — Лицо Montana
**Бот отражает всё на "лице":**
```python
# Юнона показывает баланс
@bot.message_handler(commands=['balance'])
async def show_balance(message):
balance = time_bank.balance(user_id)
await bot.reply(f"💰 Баланс: {balance} Ɉ")
# Юнона показывает присутствие
@bot.message_handler(commands=['presence'])
async def show_presence(message):
info = time_bank.get(user_id)
await bot.reply(f"⏱️ Присутствие: {info['seconds']} сек")
# Юнона показывает халвинг
@bot.message_handler(commands=['halving'])
async def show_halving(message):
stats = time_bank.stats()
coef = stats['halving_coefficient']
await bot.reply(f"📊 Халвинг: {coef:.4f}x")
```
---
## 14. Защита от атак
| Атака | Механизм защиты | Статус |
|-------|-----------------|--------|
| Quantum | ML-DSA-65 post-quantum | ✅ |
| IP hijacking | Криптографические адреса | ✅ |
| Harvest now decrypt later | ML-DSA-65 с genesis | ✅ |
| Sybil | FIDO2 биометрия | ⚠️ Mock |
| Bot | Случайные интервалы проверки | ⚠️ Частично |
| Time manipulation | Физические ограничения | ✅ |
---
## 15. Сравнение с другими системами
| Система | Ограничение | Можно ускорить? | Справедливость |
|---------|-------------|-----------------|----------------|
| Bitcoin | Вычисления | ✅ Да (хешрейт) | Неравномерно |
| Ethereum | Stake | ✅ Да (купить) | Плутократия |
| 金元Ɉ | **Время** | ❌ **НЕТ** | **Равномерно** |
```
Золото ограничено в пространстве → добыча
Bitcoin ограничен вычислениями → майнинг
金元Ɉ ограничен временем → присутствие
```
**Время нельзя украсть, подделать или ускорить.**
---
## 16. Примеры использования
### 16.1 Начисление монет
```python
from time_bank import get_time_bank
bank = get_time_bank()
# Начать присутствие
bank.start(user_id="123456789", addr_type="telegram")
# Активность каждые N секунд
bank.activity(user_id="123456789")
# Каждые 600 секунд автоматически начисляются монеты
# (с учётом халвинга)
# Завершить присутствие
bank.end(user_id="123456789")
# Проверить баланс
balance = bank.balance(user_id="123456789")
print(f"Баланс: {balance} Ɉ")
```
### 16.2 Перевод монет
```python
# Перевод от Alice к Bob
result = bank.send(
from_addr="alice_123",
to_addr="bob_456",
amount=100
)
if result['success']:
print(f"TX: {result['proof']}")
```
### 16.3 Статистика
```python
stats = bank.stats()
print(f"Эмиссия/T2: {stats['emission_per_t2']} Ɉ")
print(f"Халвинг: {stats['halving_coefficient']:.4f}x")
print(f"τ₃: {stats['tau3_count']}")
print(f"τ₄: {stats['tau4_count']}")
print(f"Год: {stats['current_year']}")
```
---
## 16A. HTTP API для iOS/Web
### Эндпоинты
**Баланс** — Получить баланс по Telegram ID:
```
GET http://72.56.102.240/api/balance/{tg_id}
Response:
{
"tg_id": "123456789",
"balance": 1500,
"confirmed": 1500,
"pending": 0,
"slices": {
"tau1": 25.0, // 1500 / 60
"tau2": 2.5, // 1500 / 600
"tau3": 0.00124, // 1500 / 1209600
"tau4": 0.0000119 // 1500 / 126230400
},
"network": {
"total_reserve": 21000000,
"total_mined": 5000,
"remaining": 20995000
}
}
```
**Присутствие** — Регистрация секунд присутствия:
```
POST http://72.56.102.240/api/presence
Headers:
Content-Type: application/json
X-Device-ID: {tg_id}
Body:
{
"seconds": 60 // 1-3600
}
Response:
{
"success": true,
"added": 60,
"balance": 1560,
"tg_id": "123456789"
}
```
### Архитектура синхронизации
```
┌─────────────┐ POST /api/presence ┌──────────────────┐
│ iOS App │ ──────────────────────────▶│ Amsterdam Proxy │
│ (Montana) │ │ 72.56.102.240 │
└─────────────┘ └────────┬─────────┘
│ │
│ GET /api/balance/{tg_id} │ proxy
│ ▼
│ ┌──────────────────┐
└───────────────────────────────────▶│ TIME_BANK Server │
│ 176.124.208.93 │
│ :8081 │
└──────────────────┘
```
**Принцип:**
1. Устройство накапливает секунды локально
2. Каждые 30 сек отправляет дельту на сервер
3. Сервер кредитует секунды в TIME_BANK
4. Баланс синхронизируется по `tg_id` между устройствами
**Важно:** Баланс берётся **максимальный** — если на сервере больше, используется серверный; если локально больше, синхронизируется на сервер.
---
## 17. Дорожная карта
### v3.0 (текущая) ✅
- [x] Динамическая эмиссия
- [x] Халвинг через τ₄
- [x] ML-DSA-65 подписи
- [x] τ₃ checkpoints
- [x] Удалена лотерея 70/20/10
- [x] Удалён epoch coefficient
### v4.0 (планируется)
- [ ] FIDO2 биометрия (не Mock)
- [ ] Улучшенная защита от ботов
- [ ] Cross-chain bridges
- [ ] Смарт-контракты на Ɉ
---
## 18. Заключение
金元Ɉ — **первая валюта, основанная на времени как физическом ресурсе**.
**Ключевые преимущества:**
1. **Справедливость**у всех одинаковое количество времени
2. **Неподделываемость** — время нельзя подделать
3. **Предсказуемость** — халвинг каждые 4 года
4. **Пост-квантовая защита** — ML-DSA-65
5. **Децентрализация** — 5 узлов, 3-Mirror failover
**Философия:**
> Время — единственный ресурс, который нельзя украсть, купить или ускорить.
> 金元Ɉ оцифровывает это присутствие и делает его валютой.
---
```
Alejandro Montana
TIME_BANK v3.0
Январь 2026
Ничто_Nothing_无_金元Ɉ
```