Архітэктура

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