Jun 7, 2018

4 min read

Getting Started With Hyperledger Composer


Hyperledger composer is a framework for writing a blockchain network’s chaincode and to deploy the business network in Hyperledger Fabric. Composer comes with a lot of features built in that helps you architect you business network in a clean and efficient way.


First you’ll install the Hyperledger Fabric framework. We can make use of the for this series. Make sure you’ve already installed Docker.

Now kill all the Docker images.

Now run these following commands to download and unzip the folder. This is a script that help you to download and install the Hyperledger Fabric.

After downloading and un-ziping the you can download Fabric and setup the server.

Now that your Fabric is running and create a peer admin and add it to the network. This admin is the one who will be able to deploy the business network that you build with composer to the Hyperledger Fabric.

Next is the tool to do various composer task. It’s on npm and you’ll install it with below command.

Also you can install the Yeoman generator for composer with the package and you can install it with. Make sure you’ve installed the npm package in global scope.


Since composer is a framework it comes with various components that are put together to create the business network and deploy it. There are several files that are indented to perform and hold some responsibilities in the architecture. I’ll explain the major and the mandatory ones below.

Model File (.cto)

Model file is the place where you’ll be defining all the entities of the business network. There are three major components in this which are the assets, participants, transactions. Each will be having the set of variables and it’s types. You can also built relationships between each entity.

Script File (.js)

This is the place where you’ll be defining the transaction processor functions. It’s the business logic of the blockchain application where you’ll be defining what kind of operations can be done in the network. It’s written in javascript.

Access Control File (.acl)

When you want to create user roles and define the role based validations you’ll be defining the rules in this file. You’ll be defining the conditions, who can perform what transactions, who can create what asset and more such rules.

Query file (.qry)

In the business network you can aslo perform queries to get the filtered results of assets, participants, and even transactions. It’s more like SQL but like a lite version of it.

Business Network Archive (.bna)

With all the above mentioned files, you’ll be creating an composer archive which will be later deployed as the business network in the hyperledger fabric enviroment.


Since you’ve installed the composer generator you can use that to build the skeleton of the business network and to do this, run the following command.

There will be set of questions that will help you to set up the skeleton. I assume that you’ve given the following as response and will be using them in future reference.

Once you create it, you’ll be getting the above mentioned files and you’re good to deploy the sample network to Hyperledger Fabric.

First create an archive (.bna) with the following command

It’ll will create a file named in the project’s root folder. You’ll be deploying this in your fabric. To do that first install the runtime and then start the network with this file.

If you notice, here we’re using the PeerAdmin card that was created initially to deploy the network and also creating an network admin. there is network admin card created which you’ll be using for creating participants.

Before proceeding, make sure that you import the card, ping the server with that card and then export it again so that you can reuse it multiple times.

Now your network has been deployed and running in the Hyperledger Fabric. In the upcoming articles I’ll explain each of the components with more depth.

You can also use the playground to create a business network mock and export the file at a later time. It’ll be much easier for you that way as you don’t have to redeploy for every change to the network.