402 lines
20 KiB
Markdown
402 lines
20 KiB
Markdown
|
|
# 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)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Три зоны:
|
|||
|
|
- **0–28 дней (< 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 │
|
|||
|
|
└─────────────────────────────────┘
|
|||
|
|
```
|