Архітектура

Цей документ описує технічну архітектуру блокчейну 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 або зверніться до спільноти за допомогою.