PBFT algorithm in hyperledger

Saurabh picture Saurabh · Jan 18, 2017 · Viewed 16.6k times · Source

Can anyone explain PBFT Algorithm in detail without giving any link for the same? And how it works in hyperledger. So, once the transaction is sent to the blockchain:

  1. Who validates the transaction?

  2. How the consensus is achieved on the transaction?

  3. How the transaction is committed to the blockchain?

Answer

Sergey Balashevich picture Sergey Balashevich · Jan 18, 2017

"Hyperledger" is a blockchain consortium under The Linux Foundation. Currently there are at least 4 different implementations of blockchain frameworks under Hyperledger:

  • Fabric (IBM)
  • Corda (R3)
  • Iroha
  • Sawtooth Lake (Intel)

In Fabric v0.6:

All validation peers keep open connection to each other. You can submit your transaction to any of them, and this transaction will be broadcasted to other peers in the network. One of peer is elected as "leader". At the moment when a new block is going to be generated:

  1. The leader orders the transactions candidates that should be included in a block, and broadcasts this list of ordered transactions to all other validation peers in the network.
  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. As soon as all the transactions are executed, it will calculate the hash code for the newly created bloc (the hash code includes hashes for executed transactions and final state of the world).
    3. Then it broadcasts its answer (the resulting hash code) to other peers in the network, and starts counting the responses from them.
    4. If it sees that 2/3 of all validation peers have the same hash code, it will commit the new block to its local copy of the ledger.

In Fabric v1.0:

This version is still in development. In v1 the is no "leader", separate service "Orderer" is responsible for transactions order in a block. This service is pluggable and announced that the will be 3 different options:

  1. Solo - single process is responsible for ordering
  2. Kafka orderer - leverages the Kafka pubsub system to perform the ordering
  3. PBFT - is not implemented yet.

In Corda:

PBFT is not used. This implementation uses another architecture approach.