Onomy Ukrainian Docs
  • ВВЕДЕННЯ
    • Огляд & Основні принципи
  • ЕКОСИСТЕМА
    • Біржа Onomy (ONEX)
      • ONEX EVM & Партнери
    • Доступ до Onomy Wallet
    • Резерв Onomy
    • Onomy Bridge Hub
  • ТОКЕН NOM
    • Що таке NOM?
    • Пропозиція Кривої Зв'язку (BCO)
    • BCO API
  • АРХІТЕКТУРА
    • Спеціальний Блокчейн програми
    • Tendermint BFT
  • ВАЛІДАТОРИ & СТЕЙКІНГ
    • Концепції
    • Стимули & Нагороди за стейкінг
    • Плата за Транзакцію (Газ)
    • Гільдія перевірників Onomy (OVG)
  • ЗАПУСТИТИ ПОВНИЙ ВУЗОЛ
    • Етапи Встановлення
    • Запуск Повного Вузла
  • УПРАВЛІННЯ
    • Огляд
    • Зміст
    • Управління Казначейством
  • Page 1
  • ОСНОВНА ФІЛОСОФІЯ
    • Фінансові Рамки
    • Іноземна валюта (Forex)
      • Hawala
      • Поточний Ринок Форекс
      • Ринок Віртуальних Валют
      • Розрахунок Forex
      • Конвергенція Forex і Crypto
    • Резерв Bagehot
    • Стейблкоїни & Забезпечення
    • Деноми як Оплата
  • УЧАСНИКИ
    • Приєднання до Onomy
    • Партнерські відносини
Powered by GitBook
On this page
  • Машина влади
  • Tendermint
  • ABCI
  1. АРХІТЕКТУРА

Tendermint BFT

PreviousСпеціальний Блокчейн програмиNextКонцепції

Last updated 2 years ago

Машина влади

За своєю суттю блокчейн — .

Кінцевий автомат — це концепція інформатики, згідно з якою машина може мати кілька станів, але лише один у будь-який момент часу. Існує state, який описує поточний стан системи, і transactions, які викликають переходи між станами.

Враховуючи стан S і транзакцію T, кінцевий автомат поверне новий стан S'.

На практиці транзакції об’єднуються в блоки, щоб зробити процес більш ефективним. Маючи стан S і блок транзакцій B, кінцевий автомат поверне новий стан S'.

У контексті блокчейна кінцевий автомат є детермінованим. Це означає, що якщо вузол запускається в заданому стані та повторює ту саму послідовність транзакцій, він завжди матиме той самий кінцевий стан.

Cosmos SDK надає розробникам максимальну гнучкість для визначення стану своєї програми, типів транзакцій і функцій переходу між станами. Процес побудови кінцевих автоматів за допомогою SDK буде описано більш детально в наступних розділах. Але спочатку давайте подивимося, як автомат стану відтворюється за допомогою Tendermint.

Tendermint передає транзакції в програму через інтерфейс під назвою ABCI, який програма повинна реалізувати.

Зауважте, що Tendermint обробляє лише байти транзакцій. Він не знає, що означають ці байти. Все, що робить Tendermint, це детерміновано впорядковує ці байти транзакцій. Tendermint передає байти програмі через ABCI та очікує коду повернення, щоб повідомити, чи успішно оброблено повідомлення, що містяться в транзакціях, чи ні.

Ось найважливіші повідомлення ABCI:

  • BeginBlock/EndBlock: ці повідомлення виконуються на початку та в кінці кожного блоку, незалежно від того, містить блок транзакцію чи ні. Корисно запускати автоматичне виконання логіки. Проте будьте обережні, оскільки дорогі цикли можуть уповільнити ваш блокчейн або навіть заморозити його, якщо цикл нескінченний.

Завдяки Cosmos SDK розробникам залишається лише визначити кінцевий автомат, і оброблятиме реплікацію через мережу за них.

— це механізм, що не залежить від додатків, який відповідає за роботу з мережевим і консенсусним рівнями блокчейну. На практиці це означає, що Tendermint відповідає за розповсюдження та впорядкування байтів транзакцій. Tendermint Core покладається на однойменний алгоритм Byzantine-Fault-Tolerant (BFT) для досягнення консенсусу щодо порядку транзакцій.

Tendermint працює з набором спеціальних вузлів, які називаються валідаторами. Валідатори відповідають за додавання блоків транзакцій до блокчейну. У будь-якому заданому блоці існує набір валідаторів V. Валідатор у V вибирається алгоритмом як пропонент наступного блоку. Цей блок вважається дійсним, якщо більше ніж дві третини V підписали prevote і precommit на ньому, і якщо всі транзакції, які він містить, дійсні. Набір валідатора можна змінити правилами, записаними в автоматі стану.

CheckTx: коли Tendermint Core отримує транзакцію, вона передається додатку, щоб перевірити, чи виконано кілька основних вимог. CheckTx використовується для захисту мемпулу повних вузлів від спаму. Спеціальний обробник, який називається , використовується для виконання ряду кроків перевірки, таких як перевірка достатньої комісії та перевірка підписів. Якщо перевірки дійсні, транзакція додається до і ретранслюється на однорангові вузли. Зауважте, що транзакції не обробляються (тобто не відбувається зміна стану) за допомогою CheckTx, оскільки вони ще не включені до блоку.

DeliverTx: коли Tendermint Core отримує дійсний блок (відкриває нове вікно), кожна транзакція в блоці передається програмі через DeliverTx для обробки. Саме на цьому етапі відбуваються переходи між станами. AnteHandler виконується знову разом із фактичним RPC для кожного повідомлення в транзакції.

Tendermint
Tendermint
Tendermint
Алгоритм консенсусу
ABCI
AnteHandler
mempool
Msg service
це реплікований детермінований кінцевий автомат