Tendermint bft что это

Коротко о Tendermint и Cosmos Network

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Данный материал подготовлен Антоном Каляевым, одним из разработчиков Tendermint. Оригинальная статья.

Ниже приведен текст заметки, которая была написана при подготовке к участию в подкасте “Базовый Блок”. Это не в коем случае не исчерпывающий источник, а лишь короткий обзор включающий плюсы и минусы Tendermint, Cosmos. Также упоминается проект Polkadot.

Выпуск со мной можно послушать здесь.

Tendermint

Tendermint это алгоритм консенсуса устойчивый к византийским падениям. Византийские падения для тех кто не знает, это какие-то злоумышленные действия. Алгоритм был придуман в 2014 году Джае Квоном, который был озабочен проблемой высокого энергопотребления сети Bitcoin’а. В отличие от Nakamoto консенсуса, где выбирается цепочка с самым большым количеством работы, в Tendermint выбирается цепочка где за блок проголосовало 2⁄3 участников сети. Это упрощенная версия. Здесь я использую слово блок для понимания, на самом деле это может быть чем угодно (any value).

В чем принципиальные отличия:

Tendermint относится к семейству BFT алгоритмов. Другие реализации — это HoneyBadgerBFT, Hyperledger (PBFT).

Раз это подкаст без буллшита 🙂 расскажу про отрицательные стороны.

В чем минусы алгоритма:

Когда люди говорят о Tendermint, чаще всего речь идет о утилитеhttps://github.com/tendermint/tendermint/ включающей вышеупомянутый алгоритм. Помимо нее, она также включает p2p сеть, хранилище незакоммиченных транзакций (mempool), RPC и интерфейс ABCI. ABCI — интерфейс (схема в protobuf по сути), который позволяет разделить консенсус и логику приложения. То есть ты как разработчик пишешь приложение на любом языке, Tendermint заботиться обо всем остальном. Это очень крутая концепция.

В чем инновация Tendermint:

В будущем планируется предоставить приложению возможность менять алгоритм выбора ноды создателя блока, совмещенные подписи (BLS) и многое другое.

Cosmos Network

Космос призван решить проблему отсутствия коммуникации между независимыми блокчейнами. Делает он это посредством нового протокола (IBC). Вроде TCP/IP, только для блокчейнов. Кто (блокчейн А) отправляет кому (блокчейн B) что (100 попугаев) + заголовок блока + доказательство merkle перехода в новый стейт.

IBC данный момент находится в разработке — https://github.com/cosmos/ics

Чтобы следить за состоянием балансов блокчейнов и уменьшить количество связей между ними, были придуманы хабы (аналог свича в Интернете). Собственно недавно был запущен первый хаб (Cosmos Hub). Чтобы вы понимали, “аналогичные” вещи есть и в Polkadot (там это называется Relay), Ethereum 2.0 (beacon chain), Near protocol (beacon chain).

Cosmos также предоставляет SDK, написанный как и Tendermint на языке Go, для разработки приложений. В него включены модуль переводов, модуль управления (governance), IBC модуль чтобы взаимодействовать с другими блокчейнами. Позже будут добавлены другие модули (например NFT).

Аналогично с Tendermint, приведу основные минусы:

В чем инновация Cosmos:

Источник

Разбор алгоритма консенсуса в Tendermint

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

В этой статье описан алгоритм консенсуса BCA (Byzantine Consensus Algorithm), используемый в Tendermint. Разработанный на основе протокола DLS, он не требует никакого «активного» майнинга, как в Proof-of-Work, и может обеспечить безопасную работу сети при наличии как минимум 2/3+ (строго больше чем две трети) «честных» участников сети. Ниже рассказно о том, как этот алгоритм реализован в Tendermint, приведена статистика его работы и смоделировано поведение алгоритма на небольшой сети из пяти участников.

Table of contents

Introduction

С момента появление Bitcoin с его Proof-of-Work была проделана колоссальная работа по поиску новых алгоритмов консенсуса. Пересмотру подверглось все:

На данный момент, как нам кажется, существует не так много проектов с потенциально интересными решениями для этих проблем. В первую очередь это конечно семейство Delegated-Proof-of-Stake (BitShares, EOS, Lisk). Помимо этого есть NEM с Proof-of-Importance и заявленными 4000 TPS (о том, как такое вообще возможно мы обязательно расскажем в одной из следующих статей). Определенного внимания заслуживает tangle, создаваемый в IOTA. Но в этой статье мы хотели бы остановиться на алгоритме BCA и его реализации в проекте Tendermint.

Validators

В первую очередь нужно рассказать о тех, кто поддерживает сеть в рабочем состоянии (то есть участвует в построении консенсуса). В отличие от тех же Proof-of-Work или Proof-of-Stake, где майнером может стать любой желающий в любой момент, в BCA только так называемые валидаторы могут принимать участие в формировании блокчейна.

Каким образом обычный участник сети становится валидатором — зависит от конкретной реализации. В простейшем случае валидаторы объявляются в genesis блоке и в дальнейшем их список не меняется (главное, чтобы в начальном списке визайнтийских валидаторов было строго меньше 1/3!). В том же Tendermint можно легко реализовать ротацию валидаторов. Для этого достаточно обозначить в протоколе специальную транзакцию, которая будет отправляться участником, если он хочет «баллотироваться». Дополнительно можно, как внутри того же Lisk, ввести голосование за кандидатов или же выбирать их в соответствии с какими-то уже имеющимися параметрами.

В реализации Tendermint, для любого блока всегда можно получить точный список валидаторов*. Идентифицируются они своими публичными ключами, и в процессе голосования подписывают соответствующими приватными ключами сообщения, отправляемые другим валидоторам и обычным участникам сети. Таким образом можно всегда определить автора того или иного голоса и быть уверенным, что никто «со стороны» не сможет принять участие в построении консенсуса.

* Начальный список задан в genesis файле; транзакции, изменяющие список валидаторов — это такие же транзакции как и любые другие, а значит они также сохраняются в блокчейне и доступны всем участникам сети для получения текущего списка валидаторов.

Simple scheme

Начнем с абстрактного описания того, что происходит в алгоритме, в момент поиска блока N.

Propose — какой-то proposer* предлагает свою версию блока на высоту N.

В этом случае в процесс построения консенсуса вносится два изменения:

Ниже приведена иллюстрация всего процесса из официальной документации Tendermint:

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

* Важно отметить, что proposer-ы выбираются round-robin алгоритмом из списка валидаторов в пропорции с их весом**. Это дает два интересных свойства: в первую очередь необходимую нам детерменированность (каждый участник сети должен иметь возможность однозначно знать, кто из валидаторов станет proposer-ом в данном раунде). Но в то же время мы имеем псевдослучайный выбор, который позволит свести на нет атаки, связанные с заранее известной последовательностью proposer-ов в процессе выбора.

** Что такое вес — решать разработчику протокола. В простейшем случае можно присвоить всем валидаторам одинаковый вес, то есть выбор proposer-а будет равномерным.

Algorithm steps

В этой секции я проиллюстрировал работу алгоритма «на пальцах» в двух случаях — когда с предложенным блоком что-то не так и когда с ним все в порядке. Само собой, различных ветвлений и кейсов можно придумать намного больше, но эти два — основные и, поняв их, можно самостоятельно смоделировать поведение алгоритма в оставшихся случаях.

Malicious proposer

Для полного понимания алгоритма предлагаю разобрать его работу на «реальной» сети. Для начала, зададим саму сеть:

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Поясню, что у E плохой интернет и другие участники вообще не успевают получить от него сообщения.

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Очевидно, что нет валидаторов, которые собрали бы 2/3+ Precommit сообщений, а значит, по схеме выше, этот раунд будет завершен без создания нового блока высоты #X. Важное замечание — в каждом блоке должны находиться эти самые Precommit сообщения и, очевидно, их должно быть как минимум 2/3+. Поэтому даже если A захочет раскидать по сети «ложный» блок, то у него не будет нужного числа подписанных Precommit сообщений, а значит любой участник мгновенно заметит подвох.

Optimal scenario

Как вы уже поняли, в раунде, описанном выше, создать новый блок не получилось. А значит, что перед началом следующего раунда proposer-ом будет выбран другой валидатор (пускай это будет B) и длительность шагов немного увеличена, чтобы нивелировать влияние медленного соединения. Так что в этом раунде валидатор E больше не будет стоять в стороне из-за плохого интернета, а примет полноценное участие.

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Видно, что у всех валидаторов достаточно Prevote сообщений, чтобы отправлять Precommit сообщения. Опять же ради интереса, предположим, что A отправит Precommit nil сообщение, хотя это формально неправильно с его стороны.

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

В любом случае видим, что это не создало проблем другим участникам и у них есть 2/3+ Precommit сообщений для того, чтобы создать новый блок.

Conclusion

Надеюсь, что статья оказалась вам полезна, раз уж вы дочитали ее до этого места 🙂 Еще пару слов по поводу Tendermint — в ближайшее время мы опубликуем как минимум три статьи про эту замечательную технологию. Первая будет представлять из себя некоторый overview всего проекта и его возможностей. А во второй будет максимально подробно продемонстрирован процесс создания своего блокчейна (никакого ICO, обещаем!) на связке Tendermint + Python 3.

Источник

Home on Rails

Success is not final, failure is not fatal: it is the courage to continue that counts. Winston Churchill

© 2021. All rights reserved.

Коротко о Tendermint и Cosmos Network

Ниже приведен текст заметки, которая была написана при подготовке к участию в подкасте “Базовый Блок”. Это не в коем случае не исчерпывающий источник, а лишь короткий обзор включающий плюсы и минусы Tendermint, Cosmos. Также упоминается проект Polkadot.

Выпуск со мной можно послушать здесь.

Tendermint

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

В чем принципиальные отличия:

Раз это подкаст без буллшита 🙂 расскажу про отрицательные стороны.

В чем минусы алгоритма:

В чем инновация Tendermint:

В будущем планируется предоставить приложению возможность менять алгоритм выбора ноды создателя блока, совмещенные подписи (BLS) и многое другое.

Cosmos Network

Космос призван решить проблему отсутствия коммуникации между независимыми блокчейнами. Делает он это посредством нового протокола (IBC). Вроде TCP/IP, только для блокчейнов. Кто (блокчейн А) отправляет кому (блокчейн B) что (100 попугаев) + заголовок блока + доказательство merkle перехода в новый стейт.

Чтобы следить за состоянием балансов блокчейнов и уменьшить количество связей между ними, были придуманы хабы (аналог свича в Интернете). Собственно недавно был запущен первый хаб (Cosmos Hub). Чтобы вы понимали, “аналогичные” вещи есть и в Polkadot (там это называется Relay), Ethereum 2.0 (beacon chain), Near protocol (beacon chain).

Cosmos также предоставляет SDK, написанный как и Tendermint на языке Go, для разработки приложений. В него включены модуль переводов, модуль управления (governance), IBC модуль чтобы взаимодействовать с другими блокчейнами. Позже будут добавлены другие модули (например NFT).

Аналогично с Tendermint, приведу основные минусы:

В чем инновация Cosmos:

Источник

Алгоритм консенсуса Tendermint

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Содержание статьи

Tendermint – движок для блокчейнов. Для валидации блоков использует алгоритм консенсуса BFT PoS (Byzantine Fault Tolerant Proof-of-Stake). Языковой агностик – протокол ABCI позволяет работать с механизмом на программных языках: Java, C++, Python, Go, JavaScript, Rust….

Главное отличие Tendermint – скорость финализации. Транзакция включается в блок за секунды и не требует ждать подтверждения.

История создания

В 2014 году Джэ Квон в поисках решения оптимизации работы узлов в глобальных сетях (Wide Area Networks, WAN) разработал новый протокол, основанный на BFT (первые алгоритмы создавались в MIT в 1988). Tendermint – проект с открытым исходным кодом. Концептуально демонстрировал достижение секьюрности в сети с большим количеством нод.

Спустя 4 года, в 2018 году проект Cosmos (ATOM) начал использовать движок Tendermint.

Что такое задача византийских генералов?

Основная идея, как достичь консенсус быстро – требовать правды хотя-бы от ⅔ (66%) узлов.

Byzantine Consensus Algorithm (или BFT, Byzantine Fault Tolerance) использует решение этой задачи. Пусть есть 4 генерала и им требуется согласовать действия. Они могут обмениваться письмами. Каждый генерал в письме сообщает о численности войск. Образуются векторы. Их сравнивают, и ложная информация, и её источник, обнажаются на фоне всех данных.

Ноды в блокчейне действуют по тому же принципу. Если кто-то транслирует неверное состояние сети (балансы, транзакции), алгоритм Tendermint будет исключать их из процесса валидации. Часто – штрафовать. BFT использует и популярная сеть Ethereum.

Особенности протокола Tendermint

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Tendermint Inc. – организация. Она открыто предоставляет доступ к движку Tendermint Core и API – Application Blockchain Interface (ABCI).

Tendermint Core

Протокол, промежуточное программное обеспечение. Получает код на любом программном языке и безопасно реплицирует его на множество машин.

Отвечает за распространение данных о блоках и транзакциях по узлам, фиксирует их порядок.

Протокол Bitcoin обслуживает базу неизрасходованных выходов (UTXO), подпись и валидацию транзакций, предотвращение попытки двойных трат. Что делает его монолитным. На Tendermint эти обязанности возлагаются отдельно на ABCI.

Application Blockchain Interface (ABCI)

Простое API для приложений.

Передаёт данные в Tendermint Core через 3 отдельных соединения:

ABCI как отдельный слой может работать на любых языках программирования.

Детерминизм

Консенсус в Tendermint был бы невозможен без предсказуемости. Язык Solidity (Ethereum) тоже детерминирован.

Для этого свободные языки (Java, C++, Python, Go…) частично ограничивают от источников псевдослучайности: генераторы случайных чисел, соревновательные состояние потоков, системные часы, неинициализированная память, арифметика с плавающей запятой.

Статический анализатор проверяет код на детерминизм (эту задачу разработчики могут выполнять и вручную), и так Tendermint достигает консенсус в условиях мультиязычности.

Достижение консенсуса

Валидаторы поочередно предлагают блоки и голосуют за их фиксацию в рамках одного механизма. Раунды разработчики именуют полькой (в честь танца). ⅔ участников должны сойтись в мнении касательно предложения, чтобы оно было одобрено и сеть пошла дальше.

Если предлагающий узел долго не отвечает или находится не в сети – остальные ждут некоторое время, и затем пропускают его. Зависимость от тайм-аута делает Tendermint слабо синхронным протоколом, но в остальном он асинхронен.

Стейкинг

Чтобы валидатор получил право голосовать, он должен заморозить свои монеты на время работы. В Tendermint это называется «бондинг». Криптовалюта замораживается на несколько месяцев, во избежание атак. Это отличает Тендерминт от многих PoS систем.

Силу голоса определяет количество монет в стейкинге. Простые пользователи могут доверить свой стейк валидаторам и получать долевую доходность.

Преимущества и недостатки Tendermint

Примеры использования

Fabric – использует реализацию PBFT (1999) для изучения возможности исполнения недетерминированного цепного кода. По итогам работы можно выпустить Fabric как приложение ABCI для Tendermint.

Ethermint – экспериментальная версия сети Ethereum на Tendermint.

Burrow – копия виртуальной машины Ethereum и механики транзакций, но с дополнительными функциями: реестр имён, права, нативные контракты, альтернативный блокчейн API.

Источник

Алгоритм консенсуса Tendermint BFT

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

Tendermint BFT — это консенсус-движок византийской терпимости к ошибкам, который отвечает за эффективную работу в асинхронной сет экосистемы Cosmos. Алгоритм создали Чже Квон и Этан Бухман в 2014 году. Целью разработчиков стало создание механизма, который позволяет узлам оптимально согласовывать текущее состояние системы. Основой для алгоритма стал уже существующий механизм BFT, который позволяет достичь консенсуса, даже если некоторые узлы в сети не отвечают или дают неверную информацию. Но этот алгоритм обрабатывает только сетевое взаимодействие и согласование для цепочки блоков, а согласованием набора транзакций для добавления в цепочку блоков занимаются валидаторы.

ТипРазработчикДатаСайт
Fault ToleranceTendermint, Inc.Март 2019Cosmos.network

Tendermint bft что это. Смотреть фото Tendermint bft что это. Смотреть картинку Tendermint bft что это. Картинка про Tendermint bft что это. Фото Tendermint bft что это

История:

Алгоритм Tendermint BFT и проект Cosmos зарегистрированы на коммерческую корпорацию Tendermint, Inc. Компанию основал в 2014 году Чже Квон, для изучения вопроса о коммерциализации алгоритма консенсуса Tendermint. В 2017 году, руководство компании Tendermint заключили контракт с компанией Interchain Foundation, на предоставление Cosmos. Соответственно, с сетью Cosmos прилагался алгоритм Tendermint. После этого, Чже Квон с руководством проекта направили все ресурсы на разработку сети платформы, а соответственно и алгоритма. В марте 2019 года запускается сеть экосистемы Cosmos, на которой успешно реализован этот алгоритм. Что касается руководства, то Господин Квон занял пост генерального директора компании, а его помощником и соучредителем стал Этан Бухман. Пост технического директора компании занял Заки Маниан, а должность ведущего разработчика занял Пэн Чжун. Официальный запуск алгоритма состоялся в марте 2019 года.

Особенности:

Алгоритм Tendermint BFT является универсальным решением согласования в блокчейн сети Cosmos. Изначально, для создания блокчейна требовалось создавать отдельно сеть, консенсус и приложения с нуля. Потому, Bitcoin, Ethereum остаётся монолитным технологическим стеком, который сложно настраивать. Это и послужило для создания механизма Tendermint BFT, который стал основой в экосистеме, которая решит проблемы монолитности блокчейнов. Механизм позиционируется как консенсус-движок, которое объединяет сетевые и согласованные уровни блокчейна. Иными словами, этот алгоритм является высокопроизводительным механизмом согласования блокчейнов, который позволяет запускать отказоустойчивые приложения. Такие приложения могут быть написанные на любом языке программирования, или на разных виртуальных машинах. Это позволяет использовать любой язык программирования и даже интегрироваться с существующими базами кода, такими как Bitcoin, Ethereum или другими способами.

Помимо гибкости для разработчиков приложений, Tendermint стал лучшим вариантом среди PoW, PoS или PBFT. Этот алгоритм обрабатывает 10000 транзакций в секунду, что превосходит существующие показатели. Алгоритм Tendermint BFT является отказоустойчивым и оптимально безопасным с подотчётностью хард-форков. Также, особенностью алгоритма стало свойство мгновенной окончательности. Это означает, что вилки в блокчейне не произойдёт, если более трети валидаторов честны. Мгновенная окончательность транзакций отвечает за их завершение, как только создаётся блок, что не относится к блокчейнам PoW. Алгоритм масштабируется до сотен или тысяч валидаторов по желанию, а так же со временем только будет увеличивать пропускную способность. Также стоит понимать, что Tendermint обрабатывает только сетевое взаимодействие и согласование для цепочки блоков. Это означает, что механизм алгоритма помогает узлам распространять транзакции, а согласованием набора транзакций занимаются валидаторы.

Заключение:

Механизм Tendermint BFT отвечает за безопасность сети Cosmos от нерационального поведения узлов и требует минимальные вычислительные ресурсы. Механизм алгоритма способствует уменьшению накладных расходов и решает проблемы хард-форков и нечестных узлов. Этот алгоритм относится к семейству быстрых и масштабируемых BFT подобных механизмов. Таким образом, механизм входит в число инструментом нового поколения, которое значительно опережает предшественников. Кроме того, этот механизм является консенсус-движком, с помощью которого работает экосистема Cosmos, которая выполняет роль моста между блокчейнами. Потому, Tendermint BFT стал одним из лучших консенсусных решений на криптовалютном рынке.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *