montana/Монтана-Протокол/Архив/TimeChain v9.0.0.md

20 KiB
Raw Permalink Blame History

TimeChain — Спецификация протокола Montana

Версия: 9.0.0 (2026-03-30)

Определение

Децентрализованная сеть. Время — единственная реальная валюта. 1 секунда присутствия узла в сети = 1 Ɉ.

Консенсус: Proof of Time (PoT) — последовательное SHA-256 хэширование (VDF) как доказательство прошедшего времени. Один криптографический примитив — SHA-256. Временные окна возникают из вычислений.

Генезис: 09.01.2026 00:00:00 MSK.


Криптография

Единственный примитив — SHA-256. Подписи, адреса, консенсус, Merkle-деревья построены на SHA-256.

Квантовая устойчивость обеспечивается природой хэш-функции: алгоритм Гровера сокращает безопасность с 256 до 128 бит.

Подписи — WOTS+ (Winternitz One-Time Signature)

Хэш-подпись на SHA-256. Каждый ключ используется однократно — одна подпись на один UTXO. Приватный ключ представляет собой начальные значения хэш-цепочек. Подпись содержит промежуточные точки цепочек, позиция которых кодирует подписываемое сообщение. Подпись математически привязана к конкретной транзакции.

Параметр w=256:

Компонент Размер
Приватный ключ (seed) 32B
Публичный ключ (сжатый) 32B
Подпись 1 120B

Деривация ключей: secret_n = SHA-256("montana-tx" || seed || n). Один seed (32B) порождает цепочку одноразовых ключей через инкрементальный counter.

Адреса

Формат: mt + Base58(SHA-256(pubkey) + checksum). Деривация ключей и адресов описана в разделе «Ключи».


Транзакции — UTXO модель

Модель неизрасходованных выходов. Каждая транзакция потребляет существующие UTXO и создаёт новые.

Формат транзакции

Компонент Размер
WOTS+ подпись 1 120B
UTXO reference (tx_hash + index) 36B
Выходы (2 × (address 49B + amount 8B)) 114B
VDF позиция 32B
Итого ~1.3 KB

Вход: WOTS+ подпись (привязана к данным транзакции) + ссылка на UTXO. Выход: адрес получателя + сумма.

Верификация баланса

sum(входы) = sum(выходы) + fee. Каждый узел проверяет баланс арифметическим сложением.

Dust limit: каждый выход ≥ 1 Ɉ (MINIMUM_UTXO).

Комиссия

Комиссия = разница между суммой входов и суммой выходов. Минимум 1 mɈ (миллисекунда). Размер адаптивный — рассчитывается по формуле на основе заполненности окон τ₁. Пользователь знает комиссию до отправки.

Победитель окна τ₂ получает сумму всех комиссий транзакций в окне.

UTXO

Формат: {address, amount, tx_hash, output_index}.

UTXO существует до момента траты. Трата фиксируется использованием WOTS+ подписи. Повторная трата исключена конструкцией данных.

Coinbase

Победитель τ₂ создаёт coinbase-транзакцию. Входов нет. Выходы содержат эмиссию за τ₂ + сумму комиссий всех транзакций окна.

Supply audit при финализации τ₂: суммарная эмиссия coinbase от генезиса сверяется с расчётной по формуле халвинга.


Таймчейн

Один Таймчейн = два ядра с разделёнными функциями:

Ядро 1 — Proof of Time (чистый VDF)

Непрерывное последовательное SHA-256 хэширование (100% загрузка). Чистая цепочка времени:

T₁ = SHA-256(seed)
T₂ = SHA-256(T₁)
T₃ = SHA-256(T₂)
...
T_N = лотерейный билет

Seed = SHA-256(node_id || previous_τ₂_merkle_root). Seed фиксирован на весь τ₂ (10 минут). VDF вычисляется непрерывно ~9.6 млрд хэшей за τ₂. T_final — лотерейный билет. Детерминирован, зависит только от seed. Транзакции цепочку времени не касаются.

Ядро 2 — Proof of History (TX-цепочка)

Приём, верификация транзакций (WOTS+ подписи, баланс) и построение цепочки порядка:

G₁ = SHA-256(T_k || tx_A)    ← tx_A привязана к VDF-позиции T_k
G₂ = SHA-256(G₁ || tx_B)     ← tx_B после tx_A, криптографически
G₃ = SHA-256(G₂ || tx_C)
...

Каждая транзакция привязана к позиции T_k чистого VDF (точная метка времени) и связана с предыдущей в хэш-цепочке (криптографический порядок). Изменить порядок = пересчитать цепочку.

С ростом TPS сети дополнительные ядра подключаются для верификации транзакций (1 ядро ≈ 1 785 верификаций/сек). Минимум: 2 ядра. Структура: 1 Proof of Time + 1..N Proof of History.

Входной барьер

Node_id допускается к лотерее после 28 дней (2 × τ₃) непрерывного VDF. Node_id регистрируется до того как будущий merkle_root станет известен — предвычисление лотерейных билетов исключено.

Потоковая модель транзакций

Транзакции текут непрерывно. Узел получает транзакцию → проверяет подпись и баланс → вплетает в TX-цепочку с привязкой к VDF-позиции → передаёт в P2P gossip. Время подтверждения определяется скоростью интернета отправителя и P2P-распространением (~2-5 секунд).

τ₁ и τ₂ — чекпоинты, транзакции их появления не ожидают.

Временные слои (τ)

τ₁ (≈60с) → τ₂ (10 × τ₁) → τ₃ (2016 × τ₂) → τ₄ (~104 × τ₃)

τ₁ — Чекпоинт синхронизации (промежуточная позиция VDF ≈ каждые 60 секунд)

  • Промежуточное значение VDF (H на позиции k×N) публикуется как чекпоинт
  • Seed VDF при этом не меняется — VDF непрерывный в рамках τ₂
  • Узлы обмениваются чекпоинтами и Merkle root транзакций по P2P
  • Недостающие транзакции запрашиваются у пиров
  • Подтверждение синхронизации, транзакции к этому моменту уже в сети

τ₂ — Финализация и эмиссия (10 × τ₁ ≈ 10 минут)

  • VDF завершён → T_final (лотерейный билет)
  • Победитель τ₂ (min effective_ticket): публикует каноничный набор транзакций и coinbase
  • Coinbase: вся эмиссия + все комиссии → победителю
  • Участие в лотерее: валидный VDF (обработано ≥ 80% транзакций сети) + допуск (28 дней)
  • T_final кристаллизует порядок транзакций: победитель публикует свою TX-цепочку как каноничную
  • Merkle root победителя становится seed-компонентом для следующего τ₂
  • Сеть верифицирует VDF-цепочку победителя (O(1))
  • Supply audit: суммарная эмиссия coinbase от генезиса сверяется с расчётной
  • Разрешение форков: приоритет ветки с наибольшим суммарным VDF-доказательством

τ₃ — Адаптация (2016 × τ₂ ≈ 14 дней)

  • Калибровка N: медиана peer-timestamps сверяется с VDF-тиками, цель ≈ 60 сек UTC
  • UTXO Merkle Root: победитель последнего τ₂ включает UTXO_merkle_root в coinbase, ратифицируется консенсусом
  • Криптографическая амнезия: потраченные транзакции, WOTS+ подписи и TX-цепочки старше 8 × τ₃ удаляются
  • Вызов архивных узлов: SHA-256(τ₃_merkle_root) % total_blocks → случайный исторический блок, архивный узел предоставляет данные + Merkle proof → weight × 2
  • Пересчёт параметров окна τ₁

τ₄ — Халвинг (~104 × τ₃ ≈ 4 года)

  • Коэффициент эмиссии делится на 2

Консенсус — Proof of Time (PoT)

Два механизма на двух ядрах

Proof of Time (ядро 1) — чистый VDF. Доказательство прошедшего времени и лотерейный билет:

seed = SHA-256(node_id || previous_τ₂_merkle_root)
T₁ = SHA-256(seed)
T₂ = SHA-256(T₁)
...
T_N = SHA-256(T_{N-1})

T_N — детерминированный, зависит только от seed. Один CPU ядро, ~16 млн SHA-256/сек, N ≈ 960 млн хэшей ≈ 60 секунд.

Proof of History (ядро 2) — TX-цепочка. Криптографический порядок транзакций с привязкой к VDF-позициям.

Стаж и вес цепочки

Вес цепочки определяется продолжительностью непрерывного присутствия:

weight = min(total_signed_τ₂, MAX_WEIGHT)
MAX_WEIGHT = количество τ₂ в одном τ₄ (~105 000)

Три зоны:

  • 028 дней (< 2 × τ₃): допуск закрыт, вес = 0
  • 28 дней — 4 года: вес растёт линейно с каждым подписанным τ₂
  • 4+ года (≥ τ₄): вес = MAX_WEIGHT, дальнейшее накопление ограничено потолком

Потолок τ₄ предотвращает бесконечный рост преимущества ранних участников. Все цепочки старше 4 лет равны между собой.

Здоровье цепочки в текущем τ₃: медиана длин непрерывных серий подписанных τ₂. Участие в τ₂ = завершение ≥ 80% VDF-циклов (τ₁) внутри τ₂. Пропуск целого τ₃ (< 80% τ₂) = обнуление веса τ₃.

Победитель τ₂

Победитель определяется взвешенной лотереей:

effective_ticket = T_N / weight
winner = min(effective_ticket) среди допущенных цепочек

Длинная цепочка делит T_N на большее число → меньший effective_ticket → выше вероятность победы. Аналог доли хэшрейта:

P(chain) = weight(chain) / Σ weight(all_chains)

Победитель публикует каноничный набор транзакций (из своей TX-цепочки), их порядок и coinbase-транзакцию. Coinbase: вся эмиссия + все комиссии → победителю. Верификация O(1).

T_N детерминирован seed-ом. Манипуляция T_N через подбор транзакций исключена — транзакции в TX-цепочке (ядро 2), T_N в чистом VDF (ядро 1).

Верификация

Победитель публикует: {node_id, seed, T_N, checkpoints[]}. Контрольные точки через каждые ~1 млн хэшей (~960 точек).

Верификация: пересчёт 960 сегментов параллельно. На 8-ядерном CPU: ~7.5 сек. На 64-ядерном: ~1 сек.

Устойчивость

  • Манипуляция T_N исключена: чистый VDF, транзакции в отдельной цепочке
  • Node_id гриндинг исключён: 28-дневный входной барьер, merkle_root неизвестен при регистрации
  • Предвычисление исключено: seed содержит Merkle root предыдущего τ₂
  • Replay исключён: seed уникален для каждого τ₁
  • Аппаратное преимущество ограничено ~1.5-2x для последовательных вычислений
  • Sybil-барьер: 28-дневный входной барьер + физическое CPU ядро + стаж-вес (время ценнее денег)
  • Аристократия ограничена: потолок веса τ₄, после 4 лет все равны

Адреса и переводы

Полный флоу перевода

1. Боб: кошелёк генерирует keypair_7 → address_7
2. Боб → Алисе: "отправь на mt4ZGfe..." (address_7)
3. Алиса формирует транзакцию:
   Вход:  UTXO на 80 Ɉ (address_3)
   Выход: 50 Ɉ → address_7 (Бобу)
   Выход: 30 Ɉ → address_12 (сдача, новый адрес)
4. Алиса подписывает WOTS+ (привязано к выходам)
5. Алиса рассылает транзакцию узлам сети
6. Каждый узел проверяет:
   WOTS+ подпись валидна для pubkey address_3 ✓
   80 = 50 + 30 ✓
   VDF-позиция приёма зафиксирована ✓
7. UTXO address_3 потрачен
8. Созданы UTXO: 50 Ɉ @ address_7, 30 Ɉ @ address_12

Баланс

Кошелёк деривирует все адреса из seed, сканирует UTXO set. Сумма непотраченных UTXO = баланс.

Бэкап = seed (32 байта).


Эмиссия

Единица

1 секунда Montana = 1 $MONT = 1 Ɉ = 1 000 mɈ = 1 000 000 μɈ = 1 000 000 000 nɈ

Точность: 9 знаков после запятой (наносекунда).

lim(t → ∞) 1 Ɉ → 1 секунда. Халвинг делает Ɉ дефицитнее, секунды идут с постоянной скоростью. Чем дальше от генезиса, тем ценнее каждый Ɉ, тем ближе он к реальной секунде.

Параметр Значение
Генезис 09.01.2026 00:00:00 MSK
Эмиссия за τ₂ 50 минут (3 000 Ɉ)
Халвинг ÷2 каждые τ₄
TIME_BANK 21 000 000 минут (~40 лет)
После истощения Oracle Mode (верификация)
Эпоха Годы Эмиссия за τ₂
τ₄ #0 0-4 50 мин (3 000 Ɉ)
τ₄ #1 4-8 25 мин (1 500 Ɉ)
τ₄ #2 8-12 12.5 мин (750 Ɉ)
τ₄ #3 12-16 6.25 мин (375 Ɉ)

Распределение

Победитель τ₂ (min H_N) получает всю эмиссию + все комиссии окна. Один выход в coinbase. Компактно, верификация O(1).

Якорь цены — Bitcoin

1 BTC = block_interval ÷ block_reward
1 BTC = 600 ÷ 3.125 = 192 Ɉ (эпоха 2024-2028)
Эпоха Награда за блок 1 BTC = Ɉ
2024-2028 3.125 BTC 192
2028-2032 1.5625 BTC 384
2032-2036 0.78125 BTC 768

Константа между халвингами. Справочная привязка, протокол функционирует автономно.


Пропускная способность

Размер транзакции: ~1.3 KB.

Канал узла TPS
10 Mbps ~960
100 Mbps ~9 600
1 Gbps ~96 000

Адаптивный размер окна

Пересчёт в τ₃:

  • Заполненность > 80% → увеличение размера окна
  • Заполненность < 20% → уменьшение размера окна
  • Шаг: ±20% за τ₃
  • Диапазон: 1 MB — 100 MB

Хранение

TPS Архивный (20 лет) Полный (112 дней) Pruned SPV
7 ~6 TB ~80 GB ~15 GB ~1 GB
100 ~88 TB ~1.1 TB ~15 GB ~1 GB
960 ~850 TB ~10.5 TB ~15 GB ~1 GB
Тип узла Содержимое Лотерея
Полный Скользящее окно 8 × τ₃ + UTXO set + заголовки weight × 1
Архивный Полная история от генезиса weight × 2
Pruned UTXO set + заголовки + UTXO snapshots τ₃ Наблюдатель
SPV Заголовки + собственные транзакции Наблюдатель

Узел самостоятельно выбирает тип. Участие в лотерее: полный или архивный узел.

Fast Sync (новый узел)

  1. Заголовки τ₂ от генезиса — проверка VDF-цепочки (мегабайты)
  2. UTXO Merkle Root из последнего τ₃
  3. UTXO snapshot — проверка SHA-256(snapshot) == UTXO Merkle Root (гигабайты)
  4. Транзакции с подписями за последние 112 дней (скользящее окно)
  5. Узел синхронизирован и готов к участию

Ключи

seed (32B)
├── Транзакции: SHA-256("montana-tx" || seed || counter)
└── Идентификатор узла: SHA-256("montana-node" || seed)

Все деривации — SHA-256.


Зависимости

Библиотека Назначение
hashlib (stdlib) SHA-256
sqlite3 (stdlib) Хранение
socket (stdlib) P2P сеть

Base58, Merkle-деревья, WOTS+, VDF — собственная реализация. Production: C/Rust.


Архитектура

┌─────────────────────────────────┐
│  Wallet                         │
│  Кошелёк, баланс, переводы     │
└──────────────┬──────────────────┘
               │
┌──────────────┴──────────────────┐
│  TimeChain                      │
│  τ₁/τ₂/τ₃/τ₄, UTXO            │
│  Proof of Time (PoT), VDF         │
│  WOTS+, SHA-256, Base58         │
└─────────────────────────────────┘