Commoninfo:tendermint

来自Decimal Wiki
跳到导航 跳到搜索


Tendermint

Tendermint — это алгоритм консенсуса, устойчивый к «византийским падениям» (каким-либо злоумышленным действиям).

Алгоритм был придуман в 2014 году Дже Квоном, который был озабочен проблемой высокого энергопотребления сети Bitcoin. В отличие от Nakamoto-консенсуса, где выбирается цепочка с самым большим количеством работы, в Tendermint выбирается цепочка, где за блок проголосовало 2/3 участников сети. Это упрощённая версия.


Отличия консенсуса:

  • Если 2/3 голосов не набирается, консенсус становится на паузу и ждёт.

  • Если 2/3 набирается, блок можно считать окончательным. То есть не нужно ждать 10 или 100 блоков (probabilistic finality), чтобы убедиться, что транзакция не будет откачана.

  • Нет гонки за создание блока (энергозатраты минимальны). В данный момент в качестве алгоритма выбора ноды, которая будет создавать блок, используется циклический перебор, взвешенный согласно доле криптовалюты, которой владеет нода. Если у ноды A 100 монет, у ноды B и C по 10 монет, то A будет чаще назначаться создателем блока.

BFT-консенсус гарантирует корректную работу компьютерной сети, пока хотя бы 2/3 узлов блокчейн-сети, участвующих в формировании блоков (валидаторы), работает корректно.


Как устроен Tendermint

Tendermint состоит из двух основных технических компонентов — движка механизма консенсуса и интерфейса приложения . Движок механизма консенсуса, называемый Tendermint Core, обеспечивает запись одних и тех же транзакций на каждой машине в одном и том же порядке. Интерфейс приложения, называемый Application BlockChain Interface (ABCI), позволяет обрабатывать транзакции на любом языке программирования.

Другими словами, Tendermint обеспечивает эффективную ретрансляцию изменений в блокчейне по всей сети, гарантируя, что каждый узел имеет одни и те же журнал транзакций и состояние блокчейна. Механизм консенсуса pBFT (practical Byzantine Fault Tolerance) является ключевым звеном блокчейна Decimal и используется нами без каких-либо изменений.



BFT-консенсус 
[[Category::Commoninfo]]