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?
The above is missing the Consensus algorithms from Hyperledger Sawtooth, so here they are:
Here are some other consensus algorithms:
In Corda, consensus is provided by notaries. It is up to the notary operator which consensus algorithm they use. BFT is one option. You can see a Corda BFT notary sample here: https://github.com/corda/corda/tree/master/samples/notary-demo.
To answer your questions:
(1). Who validates the transaction?
The transaction is validated by a cluster of one or more notaries. Notaries are nodes with the sole purpose of deconflicting double-spend attempts.
(2). How the consensus is achieved on the transaction?
Using a standard BFT algorithm. Each node in the notary cluster votes on whether they consider the transaction to be a double-spend attempt. The final decision is based on a majority rule, and can tolerate up to 1/3rd of the nodes in the cluster being malicious.
(3). How the transaction is committed to the blockchain?
In Corda, there is no central store of information that the transaction is committed to. The notary cluster simply adds the spent state reference to an internal database table. It will check future attempts to spend states against this table, and reject the spending attempt if the state reference is already stored there.
"Hyperledger" is a blockchain consortium under The Linux Foundation. Currently there are at least 4 different implementations of blockchain frameworks under Hyperledger:
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:
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:
In Corda:
PBFT is not used. This implementation uses another architecture approach.