Kapil Sachdeva

Introduction to Hyperledger Fabric


This is the first part of the series on Hyperledger Fabric project. I am assuming here that you are familiar with the BlockChain technology in general and understand the problems that it solves.

While the primary focus of existing BlockChain technologies has been crypto-currencies there are multiple use cases that are not necessarily limited to the finance related applications. Hyperledger is a collection of various BlockChain projects with the primary goal of addressing the cross-industry needs and requirements. At present, they have decided to not try to define a standard for BlockChain but rather act as an umbrella for various open source implementation of BlockChain technologies. Hyperledger Fabric is one such project under this umbrella that has been contributed by IBM.

Here are some very high level goals of Hyperledger Fabric project:

  • Private and Permissioned. This is interesting for networks that would like to have finer control over who can participate in the network and also enables the possibility of using consensus algorithms that may not be as compute intensive as the one ( i.e. ‘Proof of Work’) used by Bitcoin.

  • Extensible & Pluggable architecture. The Hyperledger Fabric based BlockChain network consists of various components. It is one of the objective that the underlying algorithms and technologies used by these components should be easily replaceable based on the use cases.

  • Smart Contracts. Define a framework for writing the Smart Contracts. It is essentially the software that has read/write permissions to the distributed ledger. In Fabric a Smart Contract is called chaincode.

  • Privacy of participants in the network. There are scenarios where few participants in the network will want to transact privately such that other participants will not have details about the transaction.

  • Decentralized Ledgers. Well what a BlockChain network is without decentralized ledgers !. The important thing to note here is that in Fabric a ledger consists of two components -
    • World State. This is the state of the ledger at a given point in time.
    • Transaction Log. As the name implies it stores the log/record of all the transactions that have resulted in the current value of the world state.
  • Consensus. Typically in a BlockChain network consensus refers to the agreement reached by participants on the order of the transactions. In the context of Fabric it is bit more than that on account of it also includes endorsement and validation of transactions in addition to ordering.

Hyperledger Fabric Model provides more detailed information about these goals.

With key goals defined let’s talk about the actors in a typical Hyperledger Fabric network.

  • Orderer Nodes. As the name implies these nodes are responsible for providing the ordering of transactions. As per Fabric architecture the ordering algorithms can be easily replaced. At present the default implementation is based on Apache Kafka.

  • Peer Nodes. These nodes are responsible for executing and validating the transactions. This is where the business logic is executed using chaincode. These nodes also maintain the ledger (World State & Transaction Log).

  • Client Node. This is essentially a client application that connects to the peers and orderer nodes. The communication protocol is defined using gRPC which enables you to write the client applications in the language of your choice however for ease of development the project is providing SDKs written using various languages (NodeJS, Java, GoLang, Python etc)

Hyperledger Fabric wiki has an excellent documentation that goes in detail of concepts, goals and architecture. In the next few blog posts I would write about bootstrapping a Fabric network from the group up.


Similar Posts

Comments