Консенсус Hyperledger Fabric
Я новичок в Hyperledger Fabric. Я читаю с документом последней версии Fabric, но не совсем согласен с Fabric. Какой консенсус используется в Fabric? И как это работает? Пожалуйста, объясни.
1 ответ
Я предполагаю, что вы знаете основы консенсуса в контексте блокчейна. Консенсус Hyperledger Fabric может рассматриваться как особый случай, может быть и мощным. Он как бы проверяет транзакцию во время нескольких этапов, чтобы гарантировать разрешение, порядок и правильность изменений, которые записываются в книгу.
В Fabric, когда вы выполняете транзакцию, если не по ошибке, вы хотите, чтобы эта транзакция фиксировалась в бухгалтерской книге, то есть записывала транзакцию в блок в бухгалтерской книге в правильном порядке. И затем то же самое должно быть последовательно синхронизировано между всеми участниками в сети, посредством совместного процесса. Так что этот процесс, который обеспечивает правильность порядка и синхронизации данных - называется консенсусом
HLF Стандартное определение
Процесс синхронизации транзакций бухгалтерской книги по сети - чтобы гарантировать, что бухгалтерские книги обновляются только тогда, когда транзакции одобрены соответствующими участниками, и что, когда бухгалтерские книги действительно обновляются, они обновляются с теми же транзакциями в том же порядке - называется консенсусом
Это делается в течение всего цикла транзакций следующими способами
- Когда вы отправляете транзакции, т. Е. Когда вы вызываете функцию в смарт-контракте, используемый вами SDK клиента должен отправить это предложение по транзакции индоссантам (определенным для этого смарт-контракта в определенном канале). принимает криптографические учетные данные пользователя для создания уникальной подписи
- Подтверждающие одноранговые узлы выполняют свою долю проверок, например, предложение является действительным, пользователь, который попытался совершить транзакцию, имеет право на то же в этом канале и т. Д. И тогда они имитируют транзакцию - и создают ответ и набор R/W. Это отправляется как ответ на предложение, которое возвращается в SDK.
- SDK накапливает их и проверяет, а затем отправляет их заказчику. Заказчик упорядочит транзакцию согласно времени, создаст блок и отправит этот блок всем партнерам в соответствующем канале.
- Пиры, которые получают блок, начинают проверять каждую транзакцию в блоке (используя цепной код системы проверки), чтобы убедиться, что для всех из них выполнено одобрение, и правильная установка (проверка MVCC). В зависимости от проверок транзакции могут быть помечены как действительные или недействительные.
Поэтому, когда все проверки в порядке, транзакция помечается как действительная, и текущее состояние обновляется, и, наконец, блоки записываются и события генерируются соответствующим образом. Таким образом, консенсус достигается за несколько этапов в ткани Hyperledger. Я думаю, что вы бы лучше поняли, если бы вы обратились по этой ссылке ниже Hyperledger Fabric Transaction Flow
Консенсус в Hyperledger Fabric подразделяется на 3 фазы: одобрение, упорядочение и проверка.
Одобрение определяется политикой (m из n подписей), при которой участники подтверждают транзакцию (она определяется нами).
Фаза заказа получит одобренную транзакцию и согласится, что транзакция будет передана в бухгалтерскую книгу.(Мы можем использовать любую услугу заказа из соло,Kafka и Raft).
Валидация принимает блок упорядоченных транзакций и проверяет правильность результата. Во время проверки одноранговый узел проверяет, является ли транзакция (в блоках), отправленная заказчиком, действительной или нет.
Согласно Hyperledger fabric v1.4
Одним из наиболее важных отличий платформы является поддержка подключаемых протоколов консенсуса, которые позволяют более эффективно настраивать платформу в соответствии с конкретными вариантами использования и моделями доверия. Например, при развертывании на одном предприятии или под управлением доверенного органа полностью византийский отказоустойчивый консенсус может считаться ненужным и чрезмерным снижением производительности и пропускной способности. В таких ситуациях протокол консенсуса с отказоустойчивостью (CFT) может быть более чем достаточным, тогда как в многостороннем децентрализованном варианте использования может потребоваться более традиционный протокол консенсуса с византийской отказоустойчивостью (BFT).
Упорядочение транзакций делегируется модульному компоненту для достижения консенсуса, который логически отделен от одноранговых узлов, которые выполняют транзакции и поддерживают реестр. В частности, заказ услуг. Поскольку консенсус является модульным, его реализация может быть адаптирована к предположению о доверии конкретного развертывания или решения. Эта модульная архитектура позволяет платформе полагаться на хорошо зарекомендовавшие себя инструменты для упорядочивания CFT (отказоустойчивый при сбоях) или BFT (отказоустойчивый византийский).
В настоящее время Fabric предлагает две реализации службы заказа CFT.
- Первый основан на библиотеке etcd протокола Raft.
- Другой - Kafka (который внутренне использует Zookeeper).