Що таке Tendermint
Зміст
Вступ
Що потрібно знати про Tendermint
Tendermint Core
Заключні думки
Що таке Tendermint

Що таке Tendermint

Середній рівень
Опубліковано Jan 8, 2021Оновлено Sep 1, 2022
7m

Короткий зміст

Блокчейни, які ви знаєте та любите, мають досить жорстку структуру. Як розробник, ви маєте два варіанти: створювати додатки всередині обмеженого середовища або здійснювати форк коду та створювати свій власний ланцюг. Однак створити свій власний ланцюг не так просто – вам також необхідно запустити мережу і з'ясувати, який механізм консенсусу використовувати.

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


Вступ

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


Що потрібно знати про Tendermint

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


Розуміння архітектури блокчейну

Tendermint – це різновид блокчейн стеку. Знову ж таки, такі речі, як Bitcoin та Ethereum, теж. Пам'ятайте, що йдеться не тільки про саму блокчейн базу даних, але і про peer-to-peer мережу нод, про те, як вони взаємодіють, і про цікаві речі, які ви можете робити із транзакціями і смарт-контракти. Тут ціль полягає в тому, щоб всі погодилися з одним станом (наприклад, знімком бази даних), навіть якщо вони нікому не довіряють.
Здебільшого основні сьогоднішні блокчейни придумали секретний соус, який робить це можливим. Однак вони часто покладаються на монолітну архітектуру: концепцію розробки програмного забезпечення, яка означає, що компоненти взаємопов'язані та взаємозалежні. Не можна просто взяти його шматок і підключити до чогось іншого.
Монолітна архітектура – не найкращий варіант, якщо вам потрібна гнучкість. У моделі протилежного типу (з модульною архітектурою) ви можете налаштовувати окремі компоненти, не переймаючись тим, що щось зламається. З монолітною структурую необхідно переконатися, що кожен компонент залишається сумісним при оновленні окремого з них. 

Тепер, коли ми розуміємо цю відмінність, ми можемо поговорити трохи докладніше про протокол Tendermint.


Задача візантійських генералів (BFT)

Можливо, ви знаєте, що великим нововведенням Bitcoin було те, що він вирішив так звану Проблему візантійських генералів. Ми не будемо вдаватися до подробиць проблеми (ознайомтеся з нашою статтею Задача візантійских генералів, якщо вам цікаво). Все, що вам потрібно знати, це те, що у статті докладно описано сценарій, в якому учасники повинні спілкуватися у розподіленому середовищі. 
Ці учасники не знають, чи брешуть інші учасники, чи змінюються повідомлення, надіслані між ними. Вважається, що система має Візантійську угоду (BFT), якщо учасники можуть дійти згоди по набору фактів, навіть з урахуванням цих проблем.
Очевидно, що у децентралізованому середовищі це має вирішальне значення. Криптовалюти, які не можуть дійти угоди, насправді не працюють – вам знадобиться якась централізована координація сторін, що суперечить головній меті. Як і багато інших цифрових валют, Bitcoin обходить це, використовуючи алгоритм консенсусу Proof of Work (PoW).


Три шари блокчейну

Отже, ми знаємо різницю між монолітною/модульною архітектурою та знаємо, що децентралізовані криптовалютні мережі повинні мати візантійську угоду. Давайте згадаємо рівні, які ми зазвичай бачимо у блокчейні: рівень додатка, рівень консенсусу та мережевий рівень.
На консенсусному та мережевому рівнях у вас є мережеві вузли, які спілкуються один з одним та намагаються узгодити набір фактів. На рівні додатку ви можете зробити щось самостійно – наприклад, децентралізовані додатки та смарт-контракти на Ethereum або кастомні транзакції у Bitcoin.



Tendermint Core

По-перше, невелике пояснення по термінології. Ми будемо використовувати тут терміни "Tendermint" і "Tendermint Core" як синоніми, оскільки ми зосереджені лише на технологіях.

Однак Tendermint – це назва компанії (заснованої розробником, Jae Kwon, який написав оригінальний whitepaper), а Tendermint Core – це фактичне програмне забезпечення, над яким працює компанія. Зокрема, програмне забезпечення складається з двох основних компонентів – ядра консенсусу (Tendermint Core) та інтерфейсу додатку (ABCI).

Tendermint Core – це система, що досягає угоди. По суті, це великий розподілений комп'ютер, який показує всім один і той же стан одночасно. Поки хоча б дві третини учасників чесні, все працює гладко. Але це робить майже кожен блокчейн, вірно? Що робить Tendermint Core таким особливим?

По-перше, механізм консенсусу, який використовується – це Proof of Stake (PoS). Для кожного періоду вибирається випадковий вузол із набору валідаторів. Потім цей вузол повинен запропонувати наступний блок (в так званій циклічній системі). Якщо інші валідатори задоволені цим, то додається новий блок і оновлюється ланцюг. Завершення відбувається миттєво. На відміну від Bitcoin або Ethereum, немає необхідності чекати підтверджень, щоб переконатися, що ваша транзакція дійсна.

Але почекайте, це ще не все! Архітектура Tendermint Core є модульною, при цьому рівень додатку відділений від консенсусного та мережевого. Говорячи простою мовою, це означає, що ви можете підключити свій власний рівень додатку у стек. Не потрібно турбуватися про надокучливі стимули чи алгоритми консенсусу.

Можливо, це не дуже хвилює кінцевого користувача. Але для розробників можливість використовувати існуючу структуру означає, що вони можуть зануритися у створення додатків без початкового завантаження всієї мережі. Дані з блокчейну можуть бути передані на інтегрований рівень, що дозволяє розробникам писати програмне забезпечення будь-якою мовою.

Магія відбувається з чимось, що називається інтерфейсом блокчейн додатку або просто ABCI. Думайте про це як про контакти GPIO, які ви отримуєте на комп'ютері Raspberry Pi. Ви можете підключити до них всі види сторонніх компонентів, від світлодіодів до складних спринклерних систем для ваших рослин. Точно так же ABCI визначає межу між блокчейном і додатками, що працюють на ньому.


Що ж такого чудового у Tendermint Core?

Розподіл інтерфейсу додатку та механізму консенсусу забезпечує більшу гнучкість для ряду децентралізованих додатків для включення будь-яких мов програмування в їх бізнес-логіку.

Щоб отримати наочний приклад того, що можна зробити, вам потрібно лише подивитися на Ethermint: проєкт, який взяв кодову базу Ethereum, видалив механізм Proof of Work та закріпив віртуальну машину Ethereum поверх Tendermint.
Це дозволило зробити декілька цікавих речей. По-перше, розробники Ethereum можуть легко переносити смарт-контракти на новий двигун або писати нові контракти мовою Solidity. Крім забезпечення функціональності Ethereum, Ethermint діє як Proof of Stake Ethereum, даючи нам уявлення про те, як реалізація Casper може виглядати на Ethereum 2.0.


Сумісність блокчейнів

Обіцянка "Інтернету блокчейнів" – ось що приваблює багатьох користувачів у протоколах на основі Tendermint. Сумісність – це довгоочікуване доповнення до простору криптовалют, та означає, що сотні окремих блокчейнів стануть крос-сумісними.
В даний час багато роботи було вкладено у Cosmos SDK, платформу з відкритим вихідним кодом, яка дозволяє будь-кому створювати публічний або приватний блокчейн для конкретного додатку. Потім ці блокчейни можна підключити до ширшої мережі Cosmos через Cosmos Hub, де вони можуть спілкуватися з іншими блокчейнами.
За допомогою Cosmos SDK було створено безліч популярних проєктів, таких як Binance Smart Chain (BSC), KAVA, Band Protocol, Terra та IRISnet.


Заключні думки

Як блокчейн движок, Tendermint привернув увагу численних зацікавлених сторін у сфері криптовалют, від розробників до кінцевих користувачів.

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