2017-01-18 3 views
17

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

(1). Кто проверяет транзакцию?

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

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

ответ

16

"Hyperledger" - это спецификация. В настоящее время существует по крайней мере 4 различных реализаций:

  • ткани (IBM)
  • Corda (R3)
  • Iroha
  • Sawtooth Lake (Intel)

В Fabric v0.6:

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

  1. Лидер упорядочивает кандидат сделок, которые должны быть включены в блоке, и широковещательный этот список упорядоченных транзакций для всех других узлов проверки в сети.
  2. Когда каждый из Validation пэров получает упорядоченный список транзакций, каждая проверку сверстники делают следующее:
    1. Он начинает выполнение заказанных Операций со поодиночке.
    2. Как только все транзакции будут выполнены, он рассчитает хэш-код для вновь созданного блока (хэш-код включает хеши для выполненных транзакций и конечного состояния мира).
    3. Затем он передает свой ответ (полученный хэш-код) другим аналогам в сети и начинает подсчитывать ответы от них.
    4. Если он видит, что 2/3 всех сверстников проверки имеют одинаковый хеш-код, он фиксирует новый блок в своей локальной копии книги.

В Fabric v1.0:

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

  1. Solo - один процесс отвечает за заказ
  2. Кафка распоряжение заказчика - использует систему PubSub Кафка для выполнения заказа
  3. PBFT - не реализовано.

В Corda:

PBFT не используется. Эта реализация использует другой подход к архитектуре.

+0

Спасибо за подробный ответ. Не могли бы вы объяснить механизм консенсуса в Эфириуме. – Saurabh

+1

Ethereum использует «доказательство работы» в качестве консенсусного алгоритма. Есть много хороших статей об этой концепции: https://en.bitcoin.it/wiki/Proof_of_work –

+1

@SergeyBalashevich У меня есть сомнения. Все эти одноранговые сети находятся в сети, это означает на разных серверах в разных местах сети. ИЛИ это означает на том же сервере VM? Если все узлы находятся в одной и той же сети, то в чем состоит использование так много узлов.? – Sushil

0

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

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

(1). Кто проверяет транзакцию?

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

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

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

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

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