web-dev-qa-db-fra.com

Algorithme PBFT en hyperledger

Quelqu'un peut-il expliquer Algorithme PBFT en détail sans donner de lien pour le même. Et comment cela fonctionne dans hyperledger . Ainsi, une fois la transaction envoyée au blockchain:

(1). Qui valide la transaction?

(2). Comment le consensus est-il atteint sur la transaction?

(3). Comment la transaction est-elle engagée dans la blockchain?

27
Saurabh

"Hyperledger" est un consortium de blockchain sous The Linux Foundation. Actuellement, il existe au moins 4 implémentations différentes de frameworks blockchain sous Hyperledger:

  • Tissu (IBM)
  • Corda (R3)
  • Iroha
  • Lac Sawtooth (Intel)

Dans Fabric v0.6 :

Tous les pairs de validation gardent une connexion ouverte les uns avec les autres. Vous pouvez soumettre votre transaction à n'importe lequel d'entre eux, et cette transaction sera diffusée à d'autres pairs du réseau. L'un des pairs est élu "chef". Au moment où un nouveau bloc va être généré:

  1. Le leader ordonne les transactions candidates qui doivent être incluses dans un bloc et diffuse cette liste de transactions ordonnées à tous les autres homologues de validation du réseau.
  2. Lorsque chacun des homologues de validation reçoit la liste ordonnée des transactions, chaque homologue de validation effectue les opérations suivantes:
    1. Il commence à exécuter les transactions ordonnées une par une.
    2. Dès que toutes les transactions sont exécutées, il calcule le code de hachage pour le bloc nouvellement créé (le code de hachage inclut les hachages pour les transactions exécutées et l'état final du monde).
    3. Ensuite, il diffuse sa réponse (le code de hachage résultant) à d'autres homologues du réseau et commence à compter les réponses de leur part.
    4. S'il constate que 2/3 de tous les homologues de validation ont le même code de hachage, il valide le nouveau bloc dans sa copie locale du registre.

Dans Fabric v1.0 :

Cette version est encore en développement. Dans la v1, il n'y a pas de "leader", un service séparé " Orderer " est responsable de l'ordre des transactions dans un bloc. Ce service est enfichable et a annoncé qu'il y aura 3 options différentes:

  1. Solo - un seul processus est responsable de la commande
  2. Ordre Kafka - exploite le système de pubsub Kafka pour effectuer la commande
  3. PBFT - n'est pas encore implémenté.

À Corda :

PBFT n'est pas utilisé. Cette implémentation utilise une autre approche d'architecture.

21
Sergey Balashevich

A Corda, le consensus est assuré par les notaires. Il appartient à l'opérateur notarial quel algorithme de consensus ils utilisent. BFT est une option. Vous pouvez voir un exemple de notaire Corda BFT ici: https://github.com/corda/corda/tree/master/samples/notary-demo .

Pour répondre à vos questions:

(1). Qui valide la transaction?

La transaction est validée par un cluster d'un ou plusieurs notaires. Les notaires sont des nœuds dont le seul but est de déconflire les tentatives de double dépense.

(2). Comment le consensus est-il atteint sur la transaction?

Utilisation d'un algorithme BFT standard. Chaque nœud du cluster notaire décide s'il considère la transaction comme une tentative de double dépense. La décision finale est basée sur une règle de majorité et peut tolérer jusqu'à 1/3 des nœuds du cluster malveillants.

(3). Comment la transaction est engagée dans la blockchain?

À Corda, il n'y a pas de magasin central d'informations sur lequel la transaction est engagée. Le cluster de notaires ajoute simplement la référence de l'état épuisé à une table de base de données interne. Il vérifiera les futures tentatives de dépenser les états par rapport à ce tableau et rejettera la tentative de dépenses si la référence d'état y est déjà stockée.

2
Joel

Il manque les algorithmes Consensus d'Hyperledger Sawtooth, donc les voici:

  • PoET Preuve du temps écoulé (algorithme de consensus de style Nakamoto facultatif utilisé pour Sawtooth). PoET avec SGX a BFT. PoET Simulator a CFT. Pas gourmand en CPU comme avec les algorithmes de type PoW, bien qu'il puisse toujours bifurquer et avoir des blocs périmés. Voir la spécification PoET sur https://sawtooth.hyperledger.org/docs/core/release s/latest/architecture/poet.html
  • [~ # ~] radeau [~ # ~] Algorithme de consensus qui élit un leader pour un terme de temps arbitraire. Le leader est remplacé s'il expire. Raft est plus rapide que PoET, mais n'est pas BFT (Raft est CFT). Raft ne bifurque pas non plus. Hyperledger Sawtooth a l'avantage d'avoir un consensus débrochable. Un algorithme peut être modifié sans réinitialiser la blockchain ni même redémarrer le logiciel.

Voici quelques autres algorithmes de consensus:

  • PoW Preuve de travail. Achèvement du travail (algorithme de consensus de style Nakamoto gourmand en CPU). Généralement utilisé dans les blockchains sans permission
  • PoS Preuve de participation. Algorithme de consensus de style Nakamoto basé sur le plus de richesse ou d'âge (enjeu)
  • [~ # ~] pbft [~ # ~] Tolérance de panne byzantine pratique. Un algorithme de consensus "classique" qui utilise une machine à états. Utilise le leader et les élections en bloc. PBFT est un algorithme triphasé intensif en réseau (n ^ 2 messages), il n'est donc pas évolutif pour les grands réseaux
0
Dan Anderson