montana/Русский/Бот/ПРОТОКОЛ_TIME_BANK.md

8.7 KiB
Raw Permalink Blame History

ПРОТОКОЛ TIME_BANK v3.0 — Банк Времени Montana

Версия: 3.0

Дата: 2026-01-20

Автор: Alejandro Montana


1. ГЛАВНЫЙ ПРИНЦИП

ПРИСУТСТВИЕ = ВЗАИМОДЕЙСТВИЕ

Пока ты общаешься с Юноной — ты присутствуешь. Пока узел работает — Атлант присутствует.

1 Ɉ = 1 секунда доказанного присутствия.


2. ДВА ТИПА ПРИСУТСТВИЯ

2.1 Пользователь (Telegram)

Присутствие = Взаимодействие с ботом

Сообщение/Команда/Кнопка → activity(telegram_id) → +1 Ɉ/сек

Активность:

  • Отправил сообщение → присутствует
  • Вызвал команду → присутствует
  • Нажал кнопку → присутствует
  • Молчит > 1 минуты (τ₁) → пауза

Код в боте:

# Каждое взаимодействие = присутствие
time_bank.activity(str(user_id), "telegram")

2.2 Атлант (Сервер/Узел)

Атлант ВСЕГДА присутствует (пока работает)

Старт бота → atlant_presence_loop() → +1 Ɉ/сек (постоянно)

Логика:

  • Атлант = сервер, на котором работает бот
  • Пока бот работает → Атлант присутствует
  • Пинг каждые 60 сек поддерживает активность

Код в боте:

async def atlant_presence_loop():
    atlant_address = f"atlant_{node_name}"
    time_bank.start(atlant_address, "atlant")

    while _is_polling:
        time_bank.activity(atlant_address, "atlant")
        await asyncio.sleep(60)

    time_bank.end(atlant_address)

3. ВРЕМЕННЫЕ КООРДИНАТЫ

Иерархия времени Montana

Уровень Интервал Описание
τ₁ 1 минута Подпись присутствия (ML-DSA-65)
τ₂ (T2) 10 минут Слайс, подтверждение баланса
τ₃ 14 дней Checkpoint
τ₄ 4 года Epoch, Халвинг ÷2

T2 — Основной цикл

[0 сек] ─────────────────────────── [600 сек]
         T2 = 10 минут

Pending секунды ─── ПОДТВЕРЖДЕНИЕ ──→ Баланс
(в кэше)                              (в БД)

Каждые 10 минут:

  1. Все накопленные t2_seconds конвертируются в баланс
  2. Баланс записывается в БД
  3. Счётчик t2_seconds сбрасывается

4. МЕХАНИЗМ НАЧИСЛЕНИЯ

4.1 Поток данных

Пользователь                           Атлант
     │                                    │
     │ сообщение                     работает
     ▼                                    ▼
activity(tg_id)                   activity(atlant_id)
     │                                    │
     └──────────┬──────────────────────┘
                │
                ▼
         ┌─────────────┐
         │ PresenceCache │
         │ entries[addr] │
         │  t2_seconds++ │
         └──────┬──────┘
                │ каждую секунду (_tick)
                │ если активен < 3 мин
                ▼
         ┌─────────────┐
         │  T2 (10 мин) │
         │ _finalize_t2 │
         └──────┬──────┘
                │
                ▼
         ┌─────────────┐
         │    DB       │
         │ balance += N │
         └─────────────┘

4.2 Код начисления (time_bank.py)

def _tick(self):
    """Каждую секунду"""
    for address, entry in self.presence.all().items():
        inactive = now - entry["last_activity"]

        if inactive < INACTIVITY_LIMIT_SEC:  # < 3 мин
            entry["presence_seconds"] += 1
            entry["t2_seconds"] += 1
        else:
            entry["is_active"] = False  # Пауза

def _finalize_t2(self):
    """Каждые 10 минут"""
    for address, entry in self.presence.all().items():
        if entry["t2_seconds"] > 0:
            coins = int(entry["t2_seconds"] * halving_coefficient)
            self.db.credit(address, coins)
            entry["t2_seconds"] = 0

5. КОНСТАНТЫ ПРОТОКОЛА

class Protocol:
    VERSION = "3.0"

    # Время
    INACTIVITY_LIMIT_SEC = 1 * 60       # τ₁ = 1 минута без активности = пауза
    T2_DURATION_SEC = 10 * 60           # 10 минут = слайс
    TAU3_DURATION_SEC = 14 * 24 * 3600  # 14 дней = checkpoint
    TAU4_DURATION_SEC = 4 * 365 * 86400 # 4 года = epoch

    # Начисление
    COINS_PER_SECOND = 1                # 1 секунда = 1 Ɉ

    # Сеть
    NODES_COUNT = 5                     # 5 узлов Montana

6. ХАЛВИНГ

Эмиссия делится на 2 каждые τ₄ (4 года)

Epoch (τ₄) Годы Коэффициент 1 сек =
0 0-4 1.0 1 Ɉ
1 4-8 0.5 0.5 Ɉ
2 8-12 0.25 0.25 Ɉ
3 12-16 0.125 0.125 Ɉ
def halving_coefficient(tau4_count: int) -> float:
    return 1.0 / (2 ** tau4_count)

7. БАЛАНС В БОТЕ

Команда /balance

Ɉ

**Твой кошелек Montana**

**Адрес:** `123456789`
_(твой Telegram ID — адрес кошелька и ключ)_

💰 **Баланс:** 1200 Ɉ
⏳ **Накапливается:** +45 Ɉ
─────────────────────────
💎 **Всего:** 1245 Ɉ

⏱ Следующее подтверждение через 7:32

Два типа баланса:

  • confirmed — подтверждённый (в БД)
  • pending — накапливается в текущем T2 (в кэше)

8. АДРЕСА

Типы адресов

Тип Формат Пример
Пользователь Telegram ID 8552053404
Атлант atlant_{node_name} atlant_amsterdam
Узел mt + SHA256(pubkey)[:40] mt1a2b3c4d...

9. КРИПТОГРАФИЯ

ML-DSA-65 Presence Proof

Каждую τ₁ (1 минуту) узел подписывает доказательство присутствия:

MONTANA_PRESENCE_V1:{timestamp}:{prev_hash}:{pubkey}:{t2_index}

Цепочка proofs:

Proof #1 → hash₁
              ↓
Proof #2 (prev=hash₁) → hash₂
              ↓
Proof #3 (prev=hash₂) → hash₃

10. СТАТИСТИКА /stats

Ɉ

**📊 Montana Protocol — Статистика**

**⏱ Временные Координаты**
├ τ₂ (текущий slice): #1234
├ τ₃ (checkpoints): #5
├ τ₄ (epoch): #0
└ Год Montana: 0

**💰 Эмиссия**
├ Коэффициент халвинга: 1.0×
└ 1 секунда присутствия = 1 Ɉ

**🌐 Сеть**
├ Активное присутствие: 3
└ Всего кошельков: 15

11. ФИЛОСОФИЯ

Время — единственный ресурс, распределённый одинаково между всеми.

24 часа у каждого. Montana оцифровывает это присутствие.

Присутствие = Взаимодействие. Атлант = Сервер, который держит сеть.

1 Ɉ = 1 секунда твоей жизни, доказанной присутствием.


12. СТАТУС РЕАЛИЗАЦИИ

✅ v3.0 — PRODUCTION
   ├ Присутствие пользователей (Telegram)
   ├ Присутствие Атлантов (серверы)
   ├ T2 подтверждение (10 мин)
   ├ Халвинг (4 года)
   ├ ML-DSA-65 Presence Proof
   └ SQLite хранилище

Подпись протокола:

ПРОТОКОЛ: TIME_BANK v3.0
ДАТА: 2026-01-20
АВТОР: Alejandro Montana
СТАТУС: MAINNET PRODUCTION
金元Ɉ