Жевательная резинка Orbit White Нежная мята (14 г)
Не является публичной офертой
Производитель: | Ригли ООО |
Бренд: | Orbit |
Страна: | РОССИЯ |
Цвет флакона / упаковки | |
Вес брутто: | 15 г. |
Объём: | 24 см3. |
Штрихкод: | 42113164 |
Куплено штук: | 263 |
Описание
Жевательная резинка Orbit «Нежная мята» без сахара способствует поддержанию здоровья зубов, нейтрализации кислотности зубного налета, препятствует деминерализации эмали.
Состав
подсластитель Е420, резинова основа, подсластитель Е967, загуститель Е414,ароматизаторы, регуляторы кислотности Е341, Е524, Е500ii, эмульгатор соевый лецитин, красители Е170, Е171, Е133, подсластители Е421, Е951, Е 950, Е955, антислеживающий агент Е533, глазирователь Е903, антиокислители Е320, Е321. Содержит подсластители. Содержит источник фенилаланина.
Способ применения
Условия хранения: при относительной влажности не более 65% при температуре от 0 до 25 °С.
Товара нет в наличии ☹
Поделиться:
Что такое Tendermint | Tendermint Core
Tendermint — это программное обеспечение для надежной и последовательной репликации
применение на многих машинах. Под надежной подразумеваем, что Tendermint работает
даже если до 1/3 машин выйдет из строя произвольным образом. Последовательно,
мы имеем в виду, что каждая исправная машина видит один и тот же журнал транзакций и
вычисляет одно и то же состояние. Безопасная и непротиворечивая репликация
фундаментальная проблема в распределенных системах; она играет решающую роль в
отказоустойчивость широкого спектра приложений, от валют,
к выборам, к организации инфраструктуры и не только.
Способность выдерживать произвольные отказы машин, в том числе
становится вредоносным, известен как византийская отказоустойчивость (BFT).
теории BFT уже несколько десятков лет, но программные реализации имеют только
стал популярным в последнее время, во многом благодаря успеху «блокчейн
технология», такая как Биткойн и Эфириум. Технология Блокчейн — это всего лишь
реформирование BFT в более современной обстановке с упором на
одноранговые сети и криптографическая аутентификация. Имя
происходит от того, как транзакции группируются в блоки, где каждый
блок содержит криптографический хеш предыдущего, образуя
цепь. На практике структура данных блокчейна фактически оптимизирует BFT.
дизайн.
Tendermint состоит из двух основных технических компонентов: блокчейна
Механизм консенсуса и общий интерфейс приложения. Консенсус
движок, называемый Tendermint Core, гарантирует, что одни и те же транзакции
записываются на каждую машину в одном и том же порядке. Интерфейс приложения,
называемый интерфейсом Application BlockChain (ABCI), позволяет
транзакции для обработки на любом языке программирования. в отличие от других
блокчейн и консенсусные решения, которые поставляются предварительно упакованными со встроенными
в конечных автоматах (например, причудливое хранилище ключей или причудливые сценарии
язык), разработчики могут использовать Tendermint для конечного автомата BFT.
репликация приложений, написанных на любом языке программирования и
им подходит среда разработки.
Tendermint разработан таким образом, чтобы быть простым в использовании, понятным и чрезвычайно
производительный и полезный для широкого спектра распределенных приложений.
Tendermint и X
Tendermint в целом похож на два класса программного обеспечения. Первое
класс состоит из распределенных хранилищ ключей и значений, таких как Zookeeper и т. д.,
и консул, которые используют консенсус, отличный от BFT. Второй класс известен как
«технология блокчейна» и состоит из обеих криптовалют, таких как
Биткойн и Эфириум, а также альтернативные конструкции распределенных реестров, такие как
Нора Гиперледжера.
Zookeeper, etcd, consul
Zookeeper, etcd и consul — все реализации хранилища ключ-значение
поверх классического алгоритма консенсуса, отличного от BFT. Zookeeper использует версию
Паксос называется Zookeeper Atomic Broadcast, а etcd и consul используют
алгоритм консенсуса Raft, который намного моложе и проще. А
типичный кластер содержит 3-5 машин и может выдерживать сбои
до 1/2 машин, но даже единичная византийская неисправность может
разрушить систему.
Каждое предложение обеспечивает немного отличающуюся реализацию
функциональное хранилище ключей-значений, но все они, как правило, сосредоточены вокруг
предоставление основных услуг распределенным системам, таких как динамическое
конфигурация, обнаружение сервисов, блокировка, выбор лидера и так далее.
Tendermint по сути аналогичное программное обеспечение, но с двумя ключевыми отличиями:
- 1/3 сбоев, но эти сбои могут включать произвольное поведение —
включая взлом и вредоносные атаки. — не указывает
конкретное приложение, например причудливое хранилище ключей-значений. Вместо этого это
фокусируется на репликации произвольного конечного автомата, поэтому разработчики могут создавать
подходящую для них логику приложения, от хранилища ключ-значение до
криптовалюта на платформу электронного голосования и не только.
Биткойн, Эфириум и т. д.
Tendermint появился в традициях криптовалют, таких как биткойн,
Ethereum и т. д. с целью обеспечения более эффективного и безопасного
алгоритм консенсуса, чем Proof of Work Биткойн. В первые дни,
В Tendermint была встроена простая валюта, и для участия в
консенсуса, пользователи должны были «привязать» единицы валюты к ценным бумагам.
депозит, который можно было бы отозвать, если бы они плохо себя вели, — это то, что сделало
Tendermint алгоритм Proof-of-Stake.
С тех пор Tendermint превратился в блокчейн общего назначения.
Механизм консенсуса, который может размещать произвольные состояния приложения. Это означает
его можно использовать в качестве замены plug-and-play для механизмов консенсуса.
другого программного обеспечения блокчейна. Так что можно взять текущий код Ethereum
базу, будь то в Rust, или Go, или Haskell, и запустить его как ABCI
приложение с использованием консенсуса Tendermint. Действительно, мы сделали это с
Эфириум (открывается в новом окне). И мы планируем сделать
то же самое для биткойнов, ZCash и различных других детерминированных
приложения тоже.
Другой пример криптовалютного приложения, построенного на Tendermint:
сеть Космос (открывается в новом окне).
Другие проекты блокчейна
Fabric (открывается в новом окне) использует аналогичный подход
на Tendermint, но более скептически относится к тому, как управляется государство,
и требует, чтобы все поведение приложения выполнялось в потенциально многих
контейнеры докеров, модули, которые он называет «чейнкод». Он использует
реализация PBFT (открывается в новом окне).
от команды IBM, которая расширена для обработки потенциально
недетерминированный
чейнкод (открывается в новом окне)
можно реализовать это поведение на основе докера как приложение ABCI в
Tendermint, хотя и расширяет Tendermint для обработки недетерминизма.
остается для будущей работы.
Burrow (открывается в новом окне) — это реализация
виртуальная машина Ethereum и механика транзакций Ethereum, с
дополнительные функции для реестра имен, разрешений и собственного
контракты и альтернативный API блокчейна. Он использует Tendermint в качестве
Механизм консенсуса и обеспечивает определенное состояние приложения.
Обзор ABCI
Интерфейс приложения BlockChain
(ABCI) (открывается в новом окне)
позволяет выполнять византийскую отказоустойчивую репликацию приложений
написаны на любом языке программирования.
Мотивация
До сих пор все блокчейны «стекались» (например,
Биткойн (открывается в новом окне)) был монолитным
дизайн. То есть каждый стек блокчейна представляет собой единую программу, которая обрабатывает
все заботы децентрализованной бухгалтерской книги; это включает P2P
связность, трансляция транзакций в «мемпуле», консенсус по
последний блок, остатки на счетах, Тьюринг-полные контракты,
разрешения на уровне пользователя и т. д.
Использование монолитной архитектуры обычно является плохой практикой при работе с компьютером.
наука. Это затрудняет повторное использование компонентов кода и
попытки сделать это приводят к сложным процедурам обслуживания вилок
кодовая база. Это особенно верно, когда кодовая база не является модульной.
в дизайне и страдает от «спагетти-кода».
Другая проблема с монолитным дизайном заключается в том, что он ограничивает вас
язык стека блокчейна (или наоборот). В случае
Ethereum, который поддерживает виртуальную машину с полным байт-кодом по Тьюрингу, это
ограничивает вас языками, которые компилируются в этот байт-код; сегодня те
являются Змей и Солидность.
Наш подход, напротив, состоит в том, чтобы отделить механизм консенсуса от P2P.
слои из деталей состояния приложения конкретного
приложение блокчейн. Мы делаем это, абстрагируясь от деталей
приложение к интерфейсу, которое реализовано как сокет
протокол.
Таким образом, у нас есть интерфейс Application BlockChain Interface (ABCI),
и его основная реализация, протокол сокетов Tendermint (TSP, или
Чайная ложка).
Знакомство с ABCI
Tendermint Core (открывается в новом окне) (название
«механизм консенсуса») взаимодействует с приложением через сокет
протокол, который удовлетворяет ABCI.
Для аналогии поговорим об известной криптовалюте,
Биткойн. Биткойн — это блокчейн криптовалюты, в котором каждый узел
поддерживает полностью проверенную базу данных неизрасходованных транзакций (UTXO). Если
один хотел создать биткойн-подобную систему поверх ABCI, Tendermint
Core будет отвечать за
- Совместное использование блоков и транзакций между узлами
- Установление канонического/неизменного порядка транзакций
(блокчейн)
Приложение будет отвечать за
- Поддержание базы данных UTXO
- Проверка криптографических подписей транзакций
- Предотвращение траты транзакций на несуществующие транзакции
- Разрешение клиентам запрашивать базу данных UTXO.
Tendermint может разложить структуру блокчейна, предлагая очень
простой API (т. е. ABCI) между процессом подачи заявки и консенсусом
процесс.
ABCI состоит из 3 основных типов сообщений, которые доставляются из
ядро к приложению. Приложение отвечает соответствующим
ответные сообщения.
Сообщения указаны в ABCI
спецификация (открывается в новом окне).
Сообщение DeliverTx — это рабочая лошадка приложения. Каждый
транзакция в блокчейне доставляется с этим сообщением.
приложение должно проверять каждую транзакцию, полученную с помощью
Сообщение DeliverTx о текущем состоянии, протоколе приложения,
и криптографические учетные данные транзакции. проверенный
транзакция затем должна обновить состояние приложения — путем привязки
значение в хранилище ключевых значений или путем обновления базы данных UTXO для
пример.
Сообщение CheckTx аналогично DeliverTx , но только для
валидация транзакций. Мемпул Tendermint Core сначала проверяет
действительность транзакции с CheckTx , и действительны только реле
транзакций со своими коллегами. Например, приложение может проверить
увеличивает порядковый номер в транзакции и возвращает ошибку при
CheckTx , если порядковый номер устарел. В качестве альтернативы они могут использовать
система, основанная на возможностях, которая требует обновления возможностей
с каждой транзакцией.
Сообщение Commit используется для вычисления криптографического подтверждения
текущее состояние приложения, которое будет помещено в заголовок следующего блока.
У этого есть несколько полезных свойств. Несоответствия в обновлении этого состояния
теперь будут появляться в виде форков блокчейна, которые захватывают целый класс
ошибки программирования. Это также упрощает разработку безопасных
легковесные клиенты, так как доказательства Merkle-hash можно проверить, проверив
против хэша блока, и что хэш блока подписан кворумом.
К приложению может быть подключено несколько сокетов ABCI.
Tendermint Core создает три соединения ABCI с приложением; один
для проверки транзакций при трансляции в мемпул один
для механизма консенсуса для запуска блочных предложений, и еще один для
запрос состояния приложения.
Наверное, очевидно, что разработчики приложений должны очень тщательно
разработать свои обработчики сообщений для создания блокчейна, который делает что угодно
полезно, но эта архитектура обеспечивает место для начала. Диаграмма
ниже показан поток сообщений через ABCI.
Примечание по детерминизму
Логика обработки транзакций блокчейна должна быть детерминированной.
Если бы логика приложения не была детерминированной, консенсуса не было бы.
достигнуто среди узлов реплики Tendermint Core.
Solidity на Ethereum — отличный выбор для блокчейна
приложений, потому что, среди прочего, это полностью
детерминированный язык программирования. Однако также можно
создавать детерминированные приложения, используя существующие популярные языки, такие как
Java, C++, Python или Go. Программисты игр и разработчики блокчейнов
уже знакомы с созданием детерминированных программ, избегая
источники недетерминизма, такие как:
- генераторы случайных чисел (без детерминированного заполнения)
- условия гонки в потоках (или полный отказ от потоков)
- системные часы
или C++) - с плавающей запятой
арифметика (открывается в новом окне) - языковые функции, которые являются случайными (например, итерация карты в Go)
Хотя программисты могут избежать недетерминизма, проявляя осторожность, он также
возможность создания специального линтера или статического анализатора для каждого языка
проверить детерминированность. В будущем мы можем работать с партнерами, чтобы
создавать такие инструменты.
Обзор консенсуса
Tendermint — это простой для понимания, в основном асинхронный консенсус BFT.
протокол. Протокол следует простой машине состояний, которая выглядит как
это:
Участники протокола называются валидаторами ; они по очереди
предложение блоков сделок и голосование по ним. Блоки
совершается в цепочку, по одному блоку на каждой высоте . Блок может
не могут быть зафиксированы, и в этом случае протокол переходит к следующему
вокруг , и новый валидатор может предложить блок для этой высоты.
Для успешной фиксации блока требуется два этапа голосования; мы
назовите их до голосования и до фиксации . Блок фиксируется, когда
более 2/3 валидаторов предварительно фиксируют один и тот же блок в одном и том же
круглый.
Есть фотография пары, исполняющей польку, потому что валидаторы
делать что-то вроде танца полька. Когда более двух третей
валидаторы предварительно голосуют за один и тот же блок, мы называем это полька . Каждый
предварительная фиксация должна быть подтверждена полькой в том же раунде.
Валидаторы могут не зафиксировать блок по ряду причин; в
текущий предлагающий может быть в автономном режиме, или сеть может быть медленной. Нежная мята
позволяет им установить, что валидатор следует пропустить. Валидаторы
подождите некоторое время, чтобы получить полный блок предложений от
предлагающий перед голосованием перейти к следующему туру. Эта зависимость от
timeout — это то, что делает Tendermint слабосинхронным протоколом, а не
чем асинхронный. Однако остальная часть протокола
асинхронны, и валидаторы добиваются прогресса только после того, как услышат больше
чем две трети набора валидатора. Упрощающий элемент
Tendermint заключается в том, что он использует тот же механизм для фиксации блока, что и
делает, чтобы перейти к следующему раунду.
Предполагая, что менее одной трети валидаторов являются византийцами, Tendermint
гарантирует, что безопасность никогда не будет нарушена — то есть валидаторы будут
никогда не фиксируйте конфликтующие блоки на одной высоте. Для этого это
вводит несколько правил блокировки , которые модулируют, какие пути могут быть
следует по блок-схеме. Как только валидатор предварительно фиксирует блок, он
заблокирован на этом блоке. Затем
- он должен проголосовать за блок, на котором он заблокирован
- , он может только разблокировать и предварительно зафиксировать новый блок, если есть
полька для этого блока в более позднем раунде
Ставка
Во многих системах не все валидаторы будут иметь одинаковый «вес» в
Протокол консенсуса. Таким образом, нас не столько интересует одна треть или
две трети валидаторов, но в таких пропорциях от общего числа
право голоса, которое может быть неравномерно распределено между отдельными
валидаторы.
Поскольку Tendermint может копировать произвольные приложения, можно
определить валюту и указать право голоса в этой валюте.
Когда право голоса выражено в национальной валюте, система
часто называют Proof-of-Stake. Валидаторы могут быть принудительно, по логике
в приложении, чтобы «связать» свои валютные активы в ценной бумаге
депозит, который может быть уничтожен, если будет обнаружено, что они плохо себя ведут в
Протокол консенсуса. Это добавляет экономический элемент к безопасности
протокол, позволяющий количественно оценить стоимость нарушения предположения
что менее одной трети голосов приходится на Византию.
Сеть Космос (открывается в новом окне) предназначена для использования этого
Реализован механизм Proof-of-Stake для множества криптовалют.
как приложения ABCI.
Следующая диаграмма представляет собой Tendermint в двух словах (технические).
Объяснение Tendermint — внедрение PoS на основе BFT в общедоступный домен блокчейна | by Chjango Unchained ⛓️
Starters
- Определения читайте в учебнике Chjango Unchained.
- Самая последняя полная спецификация алгоритма консенсуса Tendermint, подготовленная Итаном Бухманом, Джэ Квоном и Зарко Милсошевичем.
- Обзор стека программного обеспечения Cosmos/Tendermint см. в статье «Предложение ценности Cosmos» Готье МАРИНА.
- Посмотрите топологический обзор сети Cosmos, автор Санни Аггарвал.
Для новичков может показаться перегрузкой информации пройти ускоренный курс о Tendermint, Cosmos Network и их пересечении. Мы писали о стеке Cosmos/Tendermint на высоком уровне, но в этом посте мы немного углубимся в консенсус и сетевые уровни Tendermint Core. Конструкция указанного программного стека состоит из прикладного уровня (Cosmos-SDK), уровня консенсуса и сетевого уровня (Tendermint Core). Tendermint сочетает консенсус с протоколом сплетен p2p совершенно новым способом. Использование монолитной архитектуры обычно является плохой практикой в информатике, поскольку это затрудняет повторное использование компонентов кода, а попытки сделать это приводят к сложным процедурам обслуживания разветвлений кодовой базы.
Сверху вниз: прикладной уровень (Cosmos-SDK), интерфейс прикладного блокчейна (ABCI), стек ядра Tendermint (алгоритм консенсуса + сетевой протокол p2p).
Перво-наперво: семантика. Программное обеспечение Tendermint Core используется как синоним Tendermint, организации, внедряющей Tendermint Core и программный стек Cosmos Network. Технически Tendermint Core — это низкоуровневый протокол, который фактически состоит из двух протоколов в одном: алгоритма консенсуса и протокола одноранговой сети. Джэ Квон и Итан Бухман, вдохновленные целью разработки Raft и PBFT, определили Tendermint как простой для понимания и удобный для разработчиков алгоритм при выполнении алгоритмически сложной системной инженерии.
Новое поколение алгоритмов консенсуса BFT Proof-of-Stake (PoS) использует элементы адаптации Tendermint BFT для публичного домена блокчейна. Эту адаптацию мы называем Tendermint BFT, и в более общем смысле ее классифицируют как Proof-of-Stake на основе BFT (в отличие от Proof-of-Stake на основе цепочки). Ускоренный курс PoS на основе цепочки и на основе BFT см.: Casper vs. Tendermint.
Теперь, когда это не так, давайте перейдем к сути введения: Что такое Tendermint и как он работает на высоком уровне?
Биткойн — интеллектуальный предок всех криптографических систем на основе блокчейна, которые мы знаем и любим сегодня. Протокол Tendermint имеет общие черты с биткойнами, поскольку оба протокола записывают все в цепочку блоков, но каждый из них предоставляет свои уникальные решения проблемы византийского генерала, также называемой проблемой консенсуса или «соглашения». Происхождение Tendermint тесно связано с миром распределенных вычислений и научной литературой по византийской отказоустойчивости (BFT) (например, см. диссертацию Итана Бухмана). Принимая во внимание историю происхождения Биткойна, после многих неудачных попыток предыдущих электронных денежных систем — за исключением PayPal — Биткойн возродился из пепла как устойчивая к цензуре децентрализованная валютная система.
Биткойн-протокол оптимизируется для защиты от цензуры, что критически важно из-за его основной функции в качестве платежной системы. Tendermint, с другой стороны, оптимизируется для общих византийских отказоустойчивых распределенных приложений и обработки данных в глобальной сети (WAN), например. сотни узлов (большое количество узлов). Это различие имеет нюансы и заслуживает более глубокого изучения.
Для контекста: в академических кругах было проведено очень мало исследований систем BFT для WAN и только для небольшого числа узлов — максимум от 4 до 7 — и всегда для одного административного домена. Что касается систем BFT для WAN с большим количеством узлов и несколькими административными доменами, на практике не было широко распространено никаких значительных разработок.
До 2009 года, когда Биткойн представил миру технологию, меняющую парадигму — концепцию блокчейна, — проблема консенсуса в настройках глобальной сети для большого количества узлов оставалась в значительной степени без ответа. Однако, несмотря на решение проблемы двух генералов, Биткойн на самом деле не был алгоритмом для достижения консенсуса в чисто теоретическом смысле в области исследований распределенных систем. Дальнейшая работа в области BFT была далека от завершения.
В 2014 году Джэ Квон, имеющий опыт работы в области компьютерных наук и системной инженерии, представил себе протокол, основанный исключительно на BFT, который будет масштабироваться до сотен узлов в условиях без разрешения с Proof-of-Stake (PoS) в качестве протокола. базовый механизм безопасности. Так был создан Tendermint. Следовательно, эта системная модель, разработанная с использованием PoS в качестве основного механизма безопасности для большого количества проверяющих узлов в глобальной сети, оказалась довольно сложной инженерной задачей, реализация которой в общедоступной цепочке блоков заняла почти 4 года. Этот сеттинг — «Космос», запуск которого запланирован на лето 2018 года.0003
Tendermint моделируется как детерминированный протокол, работающий в режиме частичной синхронизации, который обеспечивает пропускную способность в пределах задержки сети и самих отдельных процессов. Видите, где фиолетовый обведен в треугольнике Влада Замфира? Tendermint падает где-то в нижнем левом углу.
Треугольник компромисса Влада Замфира для отказоустойчивых протоколов консенсуса
Невозможность FLP
Теорема: «… мы показываем удивительный результат, что ни один полностью асинхронный протокол консенсуса не может допустить даже одиночной необъявленной смерти процесса. ” Например, консенсус не может быть решен в чисто асинхронных сетях с детерминированным протоколом, если хотя бы один процесс может дать сбой.
Определено Дворком, Линчем и Стокмейером в их статье Консенсус при наличии частичной синхронии : « Частичная синхрония находится между случаями синхронной системы и асинхронной системы. В синхронной системе существует известная фиксированная верхняя граница… времени, необходимого для отправки сообщения от одного процессора к другому, и известная фиксированная верхняя граница… относительных скоростей различных процессоров. В асинхронной системе нет фиксированных верхних границ… не существует…. Проблема заключается в разработке протоколов, которые правильно работают в частично синхронной системе независимо от фактических значений границ 902:20 …». Именно в попытке решить эту проблему родился Tendermint. Таким образом, Tendermint представляет собой модифицированную версию вышеупомянутого протокола DLS.
Частично синхронная, синхронная и асинхронная связь
Давайте рассмотрим синхронный случай, используя для справки хорошо известный протокол: протокол Биткойн. В Биткойне существует «известная фиксированная верхняя граница». Это относится к 10-минутному блоку времени. Чтобы сеть Биткойн продвигалась вперед с созданием блоков, протокол искусственно навязывает предположение о времени, давая всей сети узлов целых 10 минут на прослушивание, сбор, проверку и сплетни о транзакциях, распространяющихся по ее одноранговой сети.
Ethereum — еще один пример протокола, который делает предположение о синхронности со средним временем блока 15 секунд. Хотя 15 секунд намного быстрее, чем 10 минут, что дает сети Ethereum преимущество более высокой пропускной способности, это происходит за счет ее майнеров, поскольку это приводит к большему количеству потерянных блоков; меньше времени для распространения транзакций по сети.
Tendermint принадлежит к классу протоколов, которые обеспечивают достижение консенсуса при частично синхронной связи, при этом частично синхронная модель системы чередуется между периодами синхронности и асинхронности; мы иногда называем эту модель «слабо синхронной». Это означает, что Tendermint действительно полагается на предположения о времени, чтобы добиться прогресса. Однако, в отличие от синхронных систем, скорость продвижения не зависит от параметров системы, а зависит от реальной скорости сети.
Жизнеспособность и завершение
Определено: « Свойство завершения заключается в том, что каждый правильный процессор должен в конечном итоге принять решение. ”
Алгоритмы консенсуса Накамото, Peercoin, NXT, Snow White, Ouroboros и т. д. в модели синхронной системы полагаются на предположения о синхронности не только для завершения процесса, но и для безопасности. Алгоритмы, разработанные для синхронных систем, всегда имеют фиксированные границы, которые известны и всегда выполняются. А в случае, если границы синхронности не соблюдаются, консенсус нарушается, и цепочка разветвляется. Таким образом, 10-минутное время блока Биткойн, например, достаточно консервативно, чтобы сохранить безопасность.
В отличие от этого, Tendermint никогда не разветвляется при наличии асинхронности, если менее 1/3 процессов ошибочны. Именно это свойство делает Tendermint PoS-протоколом на основе BFT, в котором он строго предпочитает безопасность, а не живучесть (см. Теорему CAP). В результате блокчейн Tendermint на мгновение остановится до тех пор, пока подавляющее большинство, то есть более 2/3 набора валидаторов, не придет к консенсусу.
Итак, существует протоколов консенсуса, которые работают в чисто асинхронных сетях, но, придерживаясь теоремы о невозможности FLP, они не могут одновременно быть детерминированными.
Детерминистические и недетерминированные протоколы
Недетерминированные протоколы, которые обеспечивают достижение консенсуса в чисто асинхронном случае, потенциально полагаются на случайные оракулы и, как правило, влекут за собой высокую сложность сообщений, поскольку они зависят от надежной широковещательной передачи для всех коммуникаций. В асинхронной среде накладные расходы на одну надежную широковещательную рассылку примерно эквивалентны одному раунду
Tendermint. Такие протоколы, как HoneyBadger BFT, относятся к этому классу недетерминированных протоколов в условиях асинхронности. Обычно им требуется три экземпляра надежной широковещательной передачи для одного раунда связи.
Вместо этого Tendermint является полностью детерминированным протоколом; в протоколе нет никакой случайности. Лидеры избираются детерминистически, посредством определенной математической функции в реализации. Таким образом, мы можем математически доказать, что система работает и что протокол гарантированно принимает решения.
Выборы чередующихся лидеров
Tendermint меняет набор валидаторов, т. е. предлагающих блоки, взвешенным круговым методом. Чем большую долю, то есть право голоса, делегировал им валидатор, тем больший вес они имеют и тем пропорционально больше раз они будут избраны лидерами. Для иллюстрации, если один валидатор имеет такое же количество голосов, что и другой валидатор, они оба будут избраны протоколом одинаковое количество раз.
Упрощенное объяснение того, как работает алгоритм, выглядит следующим образом:
- Вес валидатора установлен
- Валидатор выбран, его очередь предлагать блок По мере прохождения каждого раунда вес увеличивается постепенно пропорционально количеству голосов
- Валидатор выбирается снова
- А вот фактический фрагмент кода на: (GitHub)
Поскольку протокол детерминистически выбирает предлагающих блоки, при условии, что вы знаете набор валидаторов и право голоса каждого валидатора, вы можете точно вычислить, кто будет следующим предлагающим блоки в раундах x
, x + 1
,… , х + п
. Из-за этого критики утверждают, что Tendermint недостаточно децентрализован. Когда вы можете предсказуемо знать, кто будет лидерами, злоумышленник может нацелиться на этих лидеров и запустить против них DDoS-атаку и, возможно, остановить развитие цепочки. Мы смягчаем этот вектор атаки, внедряя в Tendermint то, что называется архитектурой Sentry.
Архитектура Sentry Node
Правильно настроенный валидатор никогда не раскрывает IP-адрес своего узла валидатора и не принимает входящие соединения с ним. Правильно настроенный, хорошо защищенный валидатор будет активно порождать сторожевые узлы, которые действуют как полные прокси-узлы в сети, чтобы скрыть реальное местоположение своего узла валидатора. IP-адреса на уровне p2p никогда не раскрываются.
Тем не менее, использование архитектуры Sentry Node Architecture является добровольным; ответственность за поддержание отказоустойчивого полного узла лежит на валидаторе. Именно здесь мы делаем внепротокольные предположения, основанные на криптоэкономических стимулах. Предполагается, что валидатор захочет принять все меры предосторожности, чтобы поддерживать отказоустойчивость, оставаться доступным и, в конечном итоге, играть свою роль в поддержании работоспособности сети. Потому что, если они этого не сделают, их выкинут из набора валидаторов за то, что они не в сети в течение определенного периода времени.
Peer Exchange (PEX) Reactor
Tendermint заимствует протокол обнаружения одноранговых узлов Биткойн. В частности, Tendermint использует адресную книгу p2p от btcd, альтернативной реализации биткойнов в Go. PEX по умолчанию включает динамическое обнаружение одноранговых узлов.
После всего сказанного и сделанного, помимо причудливого алгоритмического дизайна и академического жаргона, для чего на самом деле полезен Tendermint?
Плохая новость: обычные люди не найдут Tendermint полезным. Хорошая новость заключается в том, что разработчики приложений могут преодолеть разрыв между протоколом и конечным пользователем. Tendermint спроектирован так, чтобы его можно было настраивать и он был достаточно гибким, чтобы соответствовать любым настройкам, будь то общедоступные или корпоративные, где желателен согласованный протокол.
Tendermint идеально подходит для разработчика, который хочет реализовать приложение поверх собственного блокчейна. Он поставляется предварительно собранным, поэтому, если разработчик решит использовать механизм консенсуса Proof-of-Stake, основанный на BFT, для поддержки своей dAppzone, он может легко это сделать.
Самое интересное начинается, когда пользователи могут реализовать свою высокоуровневую бизнес-логику с помощью Cosmos-SDK. Для взаимодействия с согласованными/сетевыми уровнями Tendermint затем используется протокол сокетов Tendermint, который мы называем интерфейсом блокчейна приложений или ABCI.
- Прикладной уровень: Cosmos-SDK (Blockchain Application Framework)
- Cosmos-SDK Alpha Release
- Tendermint ABCI
Текущие исследования B, которые потенциально могут привести к изучению подписи
90 уменьшение размера заголовков блоков Tendermint с 3,2 КБ (при ~100 валидаторах) до 64 байт.
У нас также есть разработка для рандомизации функции выбора предлагающего циклического перебора безопасным способом, чтобы сделать DDoS-атаку следующего предлагающего еще сложнее, но начальным шагом является архитектура Sentry Node.
Если у вас есть общие вопросы, задайте им:
- Telegram : T.