Алгоритм PBFT в гиперледжере

Может ли кто-нибудь подробно объяснить алгоритм PBFT, не давая ссылки на него? И как это работает в hyperledger. Итак, как только транзакция будет отправлена ​​в blockchain:

  1. Кто подтверждает транзакцию?

  2. Как достигается консенсус по сделке?

  3. Как транзакция фиксируется в блокчейне?


person Saurabh    schedule 18.01.2017    source источник


Ответы (4)


«Hyperledger» — это блокчейн-консорциум под управлением The Linux Foundation. В настоящее время в Hyperledger существует как минимум 4 различных реализации фреймворков блокчейна:

  • Ткань (ИБМ)
  • Корда (R3)
  • Ироха
  • Озеро Пилообразное (Intel)

В Fabric v0.6:

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

  1. Лидер упорядочивает транзакции-кандидаты, которые должны быть включены в блок, и рассылает этот список упорядоченных транзакций всем другим одноранговым узлам проверки в сети.
  2. When each of the Validation Peers receives the ordered list of transactions, each validation peer does the following:
    1. It starts executing the ordered transactions one by one.
    2. Как только все транзакции будут выполнены, он рассчитает хеш-код для вновь созданного блока (хеш-код включает в себя хэши для выполненных транзакций и конечное состояние мира).
    3. Затем он транслирует свой ответ (результирующий хэш-код) другим узлам в сети и начинает подсчитывать ответы от них.
    4. Если он увидит, что 2/3 всех одноранговых узлов имеют одинаковый хэш-код, он зафиксирует новый блок в своей локальной копии леджера.

В Fabric v1.0:

Эта версия все еще находится в разработке. В версии 1 нет "лидера", за него отвечает отдельный сервис "Заказчик. для порядка транзакций в блоке. Эта услуга является подключаемой, и было объявлено, что будет 3 разных варианта:

  1. Соло - за заказ отвечает один процесс
  2. Kafka orderer — использует систему Kafka pubsub для выполнения заказов.
  3. PBFT - еще не реализован.

В Корде:

ПБТ не используется. В этой реализации используется другой подход к архитектуре.

person Sergey Balashevich    schedule 18.01.2017
comment
Спасибо за ваш подробный ответ. Не могли бы вы объяснить механизм консенсуса в Ethereum. - person Saurabh; 22.01.2017
comment
Ethereum использует доказательство работы в качестве алгоритма консенсуса. Есть много хороших статей об этой концепции: en.bitcoin.it/wiki/Proof_of_work - person Sergey Balashevich; 30.01.2017
comment
@SergeyBalashevich У меня есть сомнения. Все эти одноранговые узлы находятся в сети, значит ли это, что они находятся на разных серверах в разных местах в сети. ИЛИ это означает, что на том же сервере ВМ? Если все узлы находятся в одной сети, то какой смысл иметь такое количество узлов? - person Sushil; 17.03.2017
comment
Ожидается, что одноранговые узлы будут развернуты на разных серверах. Эти серверы могут находиться в разных местах в сети (большая задержка при передаче данных по сети) или в одной сети (быстрее). - person Sergey Balashevich; 22.03.2017
comment
Объяснение 0.6 (и как работает PBFT) совершенно неверно. Источник: я один из разработчиков пакета PBFT в Fabric. - person Kostas; 22.03.2017
comment
было бы здорово, если бы вы могли помочь с улучшением ответа - person Sergey Balashevich; 22.03.2017
comment
@Костас, просто любопытно, можете ли вы поделиться ссылкой на лучшее описание? Я получил это от Гари Сингха (IBM) на встрече HL в Бостоне в прошлом году. - person Sergey Balashevich; 27.03.2017
comment
Сергей: документ Кастро-Лисков, описывающий алгоритм PBFT, является лучшим справочным материалом. . - person Kostas; 27.03.2017
comment
@kostas Спасибо за ответ. Этот документ является идеальным описанием алгоритма PBFT, но как насчет реализации в Fabric v0.6? Было бы здорово, если бы мы могли проходить пункты выше один за другим. Самый интересный вопрос: есть ли у Fabric v0.6 лидер (один из вице-президентов), который отвечает за упорядочение транзакций до создания нового блока? - person Sergey Balashevich; 27.03.2017
comment
Сергей: Да. Реализация в версии 0.6 точно следует трехэтапному протоколу, описанному в статье. Это не отражено в вашем ответе. - person Kostas; 28.03.2017
comment
@kostas pre-prepare Phase — блок отправляется всем остальным участникам сети (описано в пункте 1). фаза подготовки — одноранговый узел выполняет все транзакции в блоке и отправляет ответ другим одноранговым узлам (см. пункты 2, 3 и 4). Фаза фиксации — если 2/3 узлов дают одинаковый ответ, блок принимается (описано в пункте 5). Какой из этапов/шагов, с вашей точки зрения, неправильный или отсутствует? - person Sergey Balashevich; 29.03.2017
comment
@SergeyBalashevich: На этапе заказа исполнения нет, это вы ошибаетесь. - person Kostas; 30.03.2017
comment
@Kostas Правильно, как описано на первом шаге. Лидер заказывает транзакции в блоке и передает этот список в .... Нет заявления о том, что транзакции выполняются на шаге 1. Выполнение начинается только на шаге 2. Когда узел проверки получает упорядоченный список транзакции он начинает выполнять их одну за другой. Есть ли у вас какие-либо другие комментарии? - person Sergey Balashevich; 31.03.2017
comment
@SergeyBalashevich: Других комментариев у меня нет, потому что именно в этом вы ошибаетесь. Шаги 2-5 неверны. Я отправлю ответ, который описывает, что происходит на выходных. - person Kostas; 01.04.2017
comment
@Костас Все еще любопытно, что именно не так с шагами 2-5, у вас было время подготовить свой ответ? - person Sergey Balashevich; 10.04.2017
comment
Последнее утверждение относительно Corda неверно. Узлы Corda могут использовать консенсус BFT-SMART для нотариусов (хотя в настоящее время это все еще экспериментально). См. здесь: docs.corda.net/running-a-notary.html - person Sigmatics; 16.04.2019

В Corda консенсус обеспечивается нотариусами. Какой алгоритм консенсуса он использует, зависит от нотариуса. BFT - это один из вариантов. Вы можете увидеть нотариальный образец Corda BFT здесь: https://github.com/corda/corda/tree/master/samples/notary-demo.

Чтобы ответить на ваши вопросы:

<сильный>(1). Кто проверяет транзакцию?

Сделка проверяется группой из одного или нескольких нотариусов. Нотариусы — это узлы, единственной целью которых является устранение конфликтов при попытках двойного расходования средств.

(2). Как достигается консенсус по транзакции?

Использование стандартного алгоритма BFT. Каждый узел нотариального кластера голосует за то, считает ли он транзакцию попыткой двойного расходования. Окончательное решение основано на правиле большинства и может допустить, что до 1/3 узлов в кластере являются вредоносными.

(3). Как транзакция фиксируется в блокчейне?

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

person Joel    schedule 02.02.2018

pbft — это алгоритм консенсуса, предложенный Барбарой Лисков и Мигелем Кастро в 1999 году для предотвращения злонамеренных атак, поскольку злонамеренные атаки и программные ошибки могут привести к тому, что неисправные узлы будут демонстрировать византийское (то есть произвольное) поведение. pBFT был разработан для эффективной работы в асинхронных системах по сравнению с предыдущими алгоритмами bft, которые работали только в синхронных системах.

вот исследовательская работа, в которой говорится, что

Практический алгоритм репликации конечного автомата, допускающий византийские ошибки. Алгоритм обеспечивает как живучесть, так и безопасность при условии, что не более ⌊n-1 / 3⌋ из общего количества реплик одновременно неисправны. Это означает, что клиенты в конечном итоге получают ответы на свои запросы, и эти ответы являются правильными в соответствии с линеаризуемостью. Алгоритм работает в асинхронных системах, таких как Интернет, и включает в себя важные оптимизации, которые позволяют ему работать эффективно.

Алгоритм работы примерно такой:

  1. Клиент отправляет запрос на вызов операции службы основному серверу.
  2. Первичный многоадресный запрос к резервным копиям
  3. Реплики выполняют запрос и отправляют ответ клиенту
  4. Клиент ждет 1 ответа от разных реплик с одинаковым результатом; это результат операции.

Как и для всех методов репликации конечного автомата, к репликам предъявляются два требования:

  • Они должны быть детерминированными
  • Они должны начинаться в одном и том же состоянии.

Учитывая эти два требования, алгоритм обеспечивает свойство безопасности, гарантируя, что все исправные реплики согласуются с общим порядком выполнения запросов, несмотря на сбои.

Ограничения пбфт:

Алгоритм консенсуса pbft работает эффективно только тогда, когда количество узлов в распределенной сети меньше.

Ткань гиперледжера:

Согласно Hyperledger Fabric v1.4, используемые в настоящее время механизмы консенсуса включают SOLO, Kafka и Raft.

Гиперледжер Пилообразный:

Согласно Hyperledger Sawtooth, как используется pbft, хорошо объясняется здесь

person asing177    schedule 12.11.2019

В приведенном выше примере отсутствуют алгоритмы консенсуса от Hyperledger Sawtooth, так что вот они:

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

  • PoW Подтверждение работы. Завершение работы (алгоритм консенсуса в стиле Накамото с интенсивным использованием ЦП). Обычно используется в блокчейнах без разрешения
  • PoS Доказательство доли. Алгоритм консенсуса в стиле Накамото, основанный на наибольшем богатстве или возрасте (доле)
  • PBFT Практическая византийская отказоустойчивость. «Классический» алгоритм консенсуса, использующий конечный автомат. Использует лидера и блокирует выборы. PBFT — это трехэтапный алгоритм с интенсивным использованием сети (n^2 сообщений), поэтому он не масштабируется до больших сетей.
person Dan Anderson    schedule 17.08.2018