Архитектура

В этом документе описана техническая архитектура блокчейна TALER: механизм консенсуса, экономическая модель, сетевой протокол и внутреннее устройство хранения данных. Все сведения получены из исходного кода Taler.

Обзор

TALER — блокчейн на основе Bitcoin Core с гибридным механизмом консенсуса Proof-of-Work / Proof-of-Stake. Блоки обоих типов сосуществуют в одной цепи, каждый со своими независимыми целевыми показателями сложности и интервалами между блоками.

  • Дата запуска: 13 сентября 2017 года
  • Кодовая база: Bitcoin Core (модель UTXO, система скриптов, одноранговый протокол)
  • Типы блоков: PoW- и PoS-блоки чередуются в одной цепи

Механизм консенсуса

Цепь принимает как PoW-блоки (добытые майнингом), так и PoS-блоки (созданные стейкингом). Каждый тип блока имеет собственную шкалу сложности, целевой интервал и график вознаграждений. Блок считается валидным, если он удовлетворяет любому из двух наборов правил — цепь не требует чередования или фиксированного соотношения между типами.

ПараметрPoWPoS
Целевой интервал между блоками60 секунд140 секунд
Корректировка сложностиDark Gravity WaveНезависимая цель PoS
АктивацияГенезис (блок 0)Блок 130 000

Цепь ведёт два счётчика высоты:

  • nHeight — общее количество блоков (PoW + PoS)
  • nPowHeight — только PoW-блоки (используется для халвингов и расчёта сложности PoW)

Proof-of-Work

Алгоритм майнинга

  • Блоки 0–9 999: Scrypt (исходный алгоритм при запуске)
  • Блоки 10 000+: Lyra2Z — алгоритм хэширования с высокими требованиями к памяти, устойчивый к ASIC

Корректировка сложности: Dark Gravity Wave

Сложность PoW корректируется алгоритмом Dark Gravity Wave (DGW), который пересчитывает её на основе скользящего окна из последних PoW-блоков:

ВерсияДиапазон блоковРазмер окна
DGW v110 000–249 99924 PoW-блока
DGW v2250 000+120 PoW-блоков

Ключевые свойства:

  • Корректировка ограничена трёхкратным пределом — сложность не может вырасти более чем втрое или упасть ниже трети за один пересчёт
  • После TLRHeight (блок 130 000) сложность PoW пересчитывается каждые 10 PoW-блоков
  • В расчёте DGW учитываются только PoW-блоки (PoS-блоки исключены)

Proof-of-Stake

PoS был активирован на блоке 130 000 (форк TLRHeight). Стейкинг позволяет держателям монет создавать новые блоки без майнингового оборудования.

Вес стейкинга

Вероятность создания PoS-блока пропорциональна весу стейкинга монеты:

weight = min(возраст_в_днях, 99) × min(сумма_в_TLR, 9999)
  • Минимальный возраст для стейкинга: 2 дня (монеты должны быть нетронуты не менее 2 дней)
  • Максимальный возраст для веса: 90 дней (вклад возраста ограничен 90 днями, жёсткий предел в формуле — 99 дней)
  • Максимальная сумма для расчёта: 9 999 TLR на один UTXO

Модификатор стейкинга

Модификатор стейкинга обеспечивает случайность при выборе PoS-блока, предотвращая предсказуемый стейкинг:

  • Вычисляется на основе псевдослучайной выборки из 64 блоков предыдущих хэшей
  • Пересчитывается каждые 6 часов (интервал модификатора)
  • Смешивает энтропию как PoW-, так и PoS-блоков

Проверка PoS-ядра

PoS-блок считается валидным, если хэш ядра (полученный из модификатора стейкинга, свойств монеты и метки времени) оказывается ниже целевой сложности PoS — по сути аналогично PoW-майнингу, но вместо вычислительной работы используются свойства владения монетами.

Требования к PoS-блоку

Валидный PoS-блок должен содержать:

  1. Транзакцию coinstake на позиции 1 (позиция 0 всегда занята пустой coinbase-транзакцией)
  2. Подпись блока, подтверждающую владение создателя стейкнутыми монетами

Структура блока

Формат заголовка

Каждый блок использует стандартный 84-байтный заголовок:

ПолеРазмерОписание
nVersion4 байтаВерсия блока и флаги функций
hashPrevBlock32 байтаХэш предыдущего блока
hashMerkleRoot32 байтаКорень дерева Меркла всех транзакций
nTime4 байтаВременная метка блока (Unix epoch)
nBits4 байтаКомпактное представление целевой сложности
nNonce4 байтаНонс для майнинга (PoW) или 0 (PoS)

Флаги PoS-блока

PoS-блоки несут дополнительные флаги метаданных:

  • BLOCK_PROOF_OF_STAKE — определяет блок как PoS
  • BLOCK_STAKE_ENTROPY — указывает на вклад энтропии в модификатор стейкинга
  • BLOCK_STAKE_MODIFIER — указывает на генерацию нового модификатора стейкинга

Подпись блока

PoS-блоки содержат криптографическую подпись, добавленную после данных транзакций, доказывающую, что создатель блока владеет закрытым ключом стейкнутых монет. Для сериализации после форка используется флаг нового формата, позволяющий отличить расширенный формат блока.

Экономическая модель

Параметры эмиссии

ПараметрЗначение
Максимальная эмиссия23 333 333 TLR
Минимальная единица1 сатоши = 0,00000001 TLR (10⁻⁸)
Премайн в генезис-блоке2 333 283 TLR
Интервал халвингаКаждые 1 050 000 PoW-блоков (~2,5 года)

Вознаграждение за блок

ПериодPoW-вознаграждениеPoS-вознаграждениеПримечание
До PoS (блоки 0–129 999)10 TLRТолько PoW, исходное вознаграждение
После активации PoS7 TLR3 TLRPoW снижен до 70%, PoS получает 30%
После 1-го халвинга3,5 TLR1,5 TLR
После 2-го халвинга1,75 TLR0,75 TLR
После 3-го халвинга0,875 TLR0,375 TLR
После 4-го халвинга (текущий)0,4375 TLR0,1875 TLRПо состоянию на март 2026
После 5-го халвинга0,21875 TLR0,09375 TLRОжидается в декабре 2027

Вознаграждение PoS всегда рассчитывается по формуле: PoS_reward = PoW_reward × 30 / 70

Текущее состояние (март 2026)

  • Завершённых халвингов: 4
  • Текущее вознаграждение PoW: 0,4375 TLR
  • Текущее вознаграждение PoS: 0,1875 TLR
  • Монет в обращении: ~19 491 107 TLR

Модель транзакций

TALER использует модель UTXO (Unspent Transaction Output), унаследованную от Bitcoin:

  • Поддержка SegWit: активирована на высоте 32 256 (BIP141/143/144)
  • Максимальный вес блока: 4 000 000 единиц веса
  • Созревание coinbase: 20 блоков (новые монеты нельзя потратить в течение 20 блоков)
  • Формат транзакций: стандартная структура Bitcoin с данными свидетеля (witness)

Типы адресов

ТипФорматИдентификатор
P2PKHBase58CheckПрефикс-байт 65 (адреса начинаются с T)
P2SHBase58CheckПрефикс-байт 50
P2WPKH / P2WSHBech32HRP: tlr (например, tlr1q...)
Расширенные публичные ключиBase58 (BIP32)Стандартная HD-деривация ключей

Сетевой протокол

ПараметрЗначение
Версия протокола70020
Порт P2P по умолчанию23153
Стартовые байты сообщения0x64 0xb1 0x73 0xd8
DNS seed-узлы6

Флаги сервисов

Узлы сообщают о своих возможностях через флаги сервисов:

  • NODE_NETWORK — доступна полная история блоков
  • NODE_WITNESS — поддержка SegWit
  • NODE_BLOOM — поддержка bloom-фильтров (BIP37)

Компактная ретрансляция блоков

TALER поддерживает компактную ретрансляцию блоков по BIP152 для эффективной передачи блоков, снижая нагрузку на канал за счёт передачи коротких идентификаторов транзакций вместо полных данных.

История форков

ВысотаФоркИзменение
0ГенезисScrypt PoW, вознаграждение 50 TLR
10 000Форк 1Алгоритм Lyra2Z, Dark Gravity Wave v1 (окно 24 блока)
32 256BIP65, BIP66, CSV, активация SegWit
130 000Форк 2 (TLRHeight)Активация PoS, вознаграждение PoW снижено до 7 TLR, целевой интервал 60 с
250 000Форк 3DGW v2 (окно 120 блоков), независимое отслеживание сложности PoW/PoS

Уровень хранения

TALER использует LevelDB для постоянного хранения данных:

База данныхНазначение
Индекс блоковСоответствие хэшей блоков их расположению на диске
Chainstate (набор UTXO)Текущий набор неизрасходованных выходов транзакций
Индекс адресов (опционально)Соответствие адресов транзакциям (для обозревателя блоков)

Файлы данных блоков

  • blk?????.dat — необработанные данные блоков, до 128 МБ на файл
  • rev?????.dat — данные отмены для отключения блоков при реорганизации

Поддержка BIP

TALER реализует следующие предложения по улучшению Bitcoin:

BIPОписание
BIP34Высота блока в coinbase
BIP65OP_CHECKLOCKTIMEVERIFY
BIP66Строгое DER-кодирование подписей
BIP68Относительная блокировка по времени через sequence-номера
BIP112OP_CHECKSEQUENCEVERIFY
BIP113Медианное прошедшее время для расчёта блокировок
BIP141Segregated Witness (уровень консенсуса)
BIP143Верификация подписей транзакций для SegWit
BIP144Segregated Witness (одноранговые сервисы)
BIP147Устранение податливости фиктивного элемента стека
BIP152Компактная ретрансляция блоков
BIP173Кодирование адресов Bech32

Краткая справка по параметрам монеты

ХарактеристикаЗначение
НазваниеTALER (TLR)
ТипГибридный PoW/PoS
АлгоритмLyra2Z (с высокими требованиями к памяти)
Дата запуска13 сентября 2017
Максимальная эмиссия23 333 333 TLR
Премайн2 333 283 TLR
Текущее вознаграждение PoW0,4375 TLR
Текущее вознаграждение PoS0,1875 TLR
Целевой интервал PoW60 секунд
Целевой интервал PoS140 секунд
Интервал халвинга1 050 000 PoW-блоков
Созревание coinbase20 блоков
Мин. возраст для стейкинга2 дня
Макс. вес блока4 000 000
Порт по умолчанию23153
Префикс адресаT (Base58), tlr (Bech32)
SegWitАктивен (с высоты 32 256)

Нужна дополнительная помощь?

Не можете найти то, что ищете? Проверьте наш раздел FAQ или обратитесь к сообществу за помощью.