Hyperledger was initiated by Linux Foundation as a base project to create blockchain based technologies. The objective of Hyperledger project is to collaboratively develop blockchain technologies through open source and community-based development. Fabric is one of the blockchain project or framework as part of Hyperledger initiative. The most distinguishing aspect of Hyperledger Fabric is that it is a permissioned-based enterprise grade blockchain platform and unlike Bitcoin or Ethereum, it does not deal with any kind of crypto-currency or mining based concept.
Hyperledger Fabric is built on four core features:
Shared Ledger – One ledger that contains transactional data and is distributed and shared across business network
Confidentiality – Controlled visibility and access to transactions through the concept of channels
Smart Contract – Business logic rules shared across the business network
Trust – All the entities in the business network own the copy of ledger and are able to verify it thereby enforcing trust
Core Component Model
In this section, we will talk about components or the building blocks of the Hyperledger Fabric framework that makes it a more complete permissioned enterprise blockchain solution.
Peer (Node)
Peer is a node in the Fabric network that performs the validation and updates to the blockchain data. A typical Fabric network will have more than one peer node in the network. It is the peer where the ledger is stored. Every peer maintains its own copy of shared ledger. A peer may also have multiple ledgers by subscribing to multiple channels (see Channel section). When transactions are delivered to the channel, it is then synced across all the peers that are part of that channel thereby keeping them in a consistent and trusted state. In a Fabric model, a peer can also perform a role of endorser where it has the ability to simulate and verify the transaction initiated by the client application. The validating peers will simply verify the transactions that were invoked making sure the data is in a consistent state before committing a block to the ledger. Fabric deployment also allows for horizontal scaling where peers can be added to the blockchain network as and when needed.
Ordering Service
Ordering service or orderer is another important component of the Fabric model. It is used to create and order blocks of transactions before it is sent to the peers for commit. All the peers receive the same block of transactions atomically and in the same order. The atomicity guarantees the network to be in the state of consensus. Once the transactions are received from the channel, the ordering service orders them according to its occurrence. It creates a chain of hashed transaction ids with each transaction pointing to the previous hashed transaction id thereby maintaining the order for that block. After the transactions are ordered, they are grouped and assigned as part of block for that channel. (See the below section for more on Channel). Client applications and peers subscribe to these channels to send or receive transactions respectively. Orderers provide two primary functionalities viz. broadcast and deliver. Broadcast is used by client applications to broadcast transactions and deliver is used by orderer to create block of these transactions and send them to peers.
Channel
Channel is a place for private communication where parties to the business network can execute transactions in a confidential way. Channels can be thought of as a partitioned topic in a messaging system where each partition acts as a separate channel, and the transactions in that partition are only visible to its subscribers. Every channel is independent of another and has its own set of security policies and chaincode (See the below section for more on Chaincode). Peers in the Fabric model must be part of a particular channel. A peer can also be part of multiple channels. Channel participants (peers) must be in the know of each other; it means that only authorized peers can be part of the channel. This is achieved using something known as genesis or the first block that contains the configuration details of the channel that states which peers can be part of this channel. One can create as many channels as needed and peers can be made part of one or more channels. Every channel will manage its own distinct ledger (transactions).
Note- The channel maps to the Ledger Conduits of our reference architecture.
Chaincode
Smart contract in Fabric model is known as chaincode. It is an application code that represents business logic to invoke transactions. Using chaincode one can read and update the ledger data. Chaincodes are executed on peers. Hyperledger Fabric provides support for Go and Java programming language for developing chaincode. When you write a chaincode, you are actually writing business logic to manipulate or query the ledger data. Chaincode must be part of the channel and can manipulate only the ledger of that channel. Peers of that channel can use one or set of multiple chaincodes to execute a complex business process workflow. Chaincode must be installed and eventually instantiated. Chaincodes are installed on every peer that forms a part of the channel. Each peer owns a copy of ledger, and therefore, chaincode must be installed on each peer for a given channel. After installation, each chaincode needs to be instantiated. Chaincode instantiation requires an endorsement policy, which suggests which peer can endorse the chaincode transaction. Every chaincode can have its own distinct policy. Policies can be customized to make it more stringent or lenient based on the business requirement.
MSP
Membership Service Provider (MSP) is one of the core components of the Fabric model that provides an abstraction over creating the identities for the network components like peers, orderers, users, etc. It provides cryptographic credentials in the form of keys and certificates that helps in authenticating and verifying network entities as they communicate with each other. It in a way provides root of trust to the blockchain network. An MSP may define its own protocol stack and rules to generate crypto credentials, which are then used for signing and verification. You could think of a business entity or an organization as one MSP. One or more MSP can be set up as part of a consortium, and the structural metadata can be provided in the configuration file. Based on the configuration, crypto materials can be generated. MSP is identified by its id and is associated with its peers and orderers in the network. Different network design topology can be thought of or devised with respect to MSP, but the usual best practice is to have one MSP per organization. One can use the cryptogen tool provided by the Fabric runtime, or you can use Fabric CA server to generate crypto artifacts like certificates and keys.
Note – The MSP maps to the abstraction level that we had talked about in Security layer of our reference architecture.
Fabric CA
Hyperledger Fabric provides a Certificate Authority (CA) component called Fabric CA, which can be used for managing the network identities of all member organizations, their nodes and users. Fabric CA drives security using cryptographically signed certificates. Every transaction whether read or update must be signed using the certificate. Fabric CA server can be used to issue certificates and associate it with different entities of the network like peer nodes or orderer nodes. It can also be used to create or register a user. If you already have users created in LDAP or Active Directory (AD), you can still use Fabric CA to integrate with your existing LDAP or AD infrastructure.
Hyperledger Fabric provides a modular architecture, so you can plug-in any CA implementation of your choice. Alternatively, you can also create your own certificates and use it as part of the blockchain network. For instance, while building the demo application later, we would use the tool called cryptogen for generating the certificates for each entity in our blockchain network.
As identity management and provenance has become a key principal of the blockchain network, Hyperledger Fabric provides an abstraction called Membership Service Provider (MSP), which provides a pluggable interface to support various identity and credential management implementations. We discussed MSP in detail in earlier section. The default implementation of MSP leverages Fabric CA component as one of the providers for identity management.
Note – The Fabric CA maps to the Certificate Authority (CA) provider that we had talked about in the security section of our reference architecture.
In the next article, we we build a trade finance application on Hyperledger Fabric