Channels

A channel is a key part of the Fabric blockchain network. It is a primary communications mechanism by which the members of a consortium can communicate with each other. There can be multiple channels in a network, there can be multiple peers joined into a channel and one peer can be joined to multiple channels simultaneously.

KompiTech Blockchain Platform provides an easy to use interface to manage the lifecycle of the Hyperledger Fabric channels.

Note

Before manipulating any Fabric channel make sure you’re logged in, have your organization selected properly and Hyperledger Fabric is selected from the Blockchain menu.

Create Channel

  1. Navigate to Channels option in the side menu.

  2. Click the + Channel button in the upper right corner.

  3. Fill in the form with details and click the Save button.

Fields description

  • Name - channel name that will be used in the KompiTech Blockchain Platform. Channel name in Fabric will be constructed using the name and random string and will be visible in channel detail.

  • Orderer - Orderer node which this channel will be created on.

  • Joined peers - allows you to select peers that will be joined to the channel after it’s creation.

Note

After a channel is created the cmcc chaincode is automatically instantiated for the KompiTech Blockchain Platform to handle channel configuration updates.

Join Peers to Channel

After the channel has been created by an organization its peers can be joined into the channel. The result of joining peers will be that the peers will physically host a copy of this channel’s ledger.

  1. Navigate to Channels option in the side menu.

  2. Open the detail of the channel you want to join peers to.

  3. Click the Join peers + button. A peer selection dialog will show up.

  4. Select peers you want to join and then click Add button.

  5. Modify the options according to your needs and then click Save button.

Options of a peer in a channel

  • Anchor - A peer node on a channel that all other peers can discover and communicate with. It’s written in the channel configuration so when joining an anchor peer channel configuration needs to be updated.

  • Endorsing - Peer is meant to endorse transactions and must have chaincode installed.

  • Ledger query - Peer is able to handle chaincode query requests and must have chaincode installed.

  • Chaincode query - Peer is able to perform a ledger query. This does not require chaincode to be installed.

  • Event source - Peer will generate events.

Note

Except for Anchor, all other options have no effect on how a peer will behave in the context of a joined channel. They’re used just like default values for the connection profile when downloading the Fabric SDK config file.
When joining the peer as anchor keep in mind that if there are more organizations than one in the channel the configuration update is created and depending on your channel policies might have to be signed by a majority of the other organizations in the channel.

Invite Organization to Channel

As an inviting organization

  1. Navigate to Channels option in the side menu.

  2. Open the detail of the channel you want to invite the organization to.

  3. Fill in the e-mail which invite will be sent to.

As an invited organization

  1. Click the Accept button in the invite e-mail you’ve received.

  2. KompiTech Blockchain Platform will open in your browser, if you’re not logged in you need to do so. Then the acceptation dialog will show up.

  3. Click the Accept or Decline button depending on your choice.

Other organizations in a channel

Other organizations participating in the same channel can sign the config update which contains the new organization. As soon as the number of signatures is enough to update the channel the new organization can participate in it as well.

Warning

If you are joining a third or subsequent organization to a channel it is recommended to let other organizations know about such an update as their signature might be necessary (depends on your channel policy).

Channel Config Updates

Channel configuration is stored on the ledger in a block which is known as a configuration (config) block. Because configurations are stored in blocks, updating a config happens through a process called a “configuration transaction”. Updating a config is a process of pulling the config, modifying it and then submitting it for approval.

By default, to approve the configuration change it needs to be signed by a majority of participating organizations in a channel. To distribute this configuration update file KompiTech Blockchain Platform is using the channel itself. There is a chaincode running in each channel created by the platform called CMCC (Channel Management Configuration Chaincode). This chaincode is part of the Hyperledger Fabric Interoperability group. It’s an official way to manage, maintain and distribute channel config updates across any Hyperledger Fabric networks which makes channels on KompiTech Blockchain Platform compatible with any other Fabric implementation.

Once the configuration update file is created it can be put into the channel’s ledger for other organizations to be able to get it and sign it. There is a list of signatures stored with the config update in the ledger. Each organization is able to get the config update file, generate the signature for it and then put this signature to the list. Once there are enough signatures to approve the update, any organization can take the config update and the signature list and create the configuration transaction which will result in updating the channel.

KompiTech Blockchain Platform provides automation for creating, signing and processing the configuration updates easily. Currently, there are two types of updates that KompiTech Blockchain Platform supports.

  • Add a new participating organization to the channel.

  • Update the channel’s list of anchor peers.

Once one of these actions is made KompiTech Blockchain Platform automatically creates the config update file and puts it into the ledger using CMCC. These config updates are shown in a channel detail page. The following actions can be performed with any config update.

  • Diff - Shows the difference between actual channel configuration and the proposed config update.

  • Sign - Creates a signature of the config update and puts it into the list of signatures of the config update in the ledger.

  • Update channel - Takes the config update and the signature list and tries to update the channel configuration.

  • Delete - Removes the config update and the signatures. The config update needs to be deleted after a successful channel update. This action can be done only by the organization who created the config update.

Delete Channel

By the Fabric design channels are not supposed to be deleted. To remove all information about the channel and all of its data it’s necessary to remove all peers of all organizations joined in this channel and all orderers servicing it as well.

To be able to delete the channel in KompiTech Blockchain Platform it’s needed to delete all the peers joined into it and all orderers which are present in the channel’s endpoints.

  1. Navigate to Channels option in the side menu.

  2. Open the detail of the channel you want to delete.

  3. Click the Delete button in the upper right corner.

Warning

In KompiTech Blockchain Platform deleting the channel is done in the context of the organization user is currently logged into. Deleting the channel:

  • Doesn’t remove actual organization from the channel configuration.

  • Doesn’t unjoin peers of other organizations from the channel.

  • Doesn’t remove orderers of other organizations servicing the channel.

It means if other organizations are able to do the ordering of the channel and there are still other peers holding the channel data it will continue to function normally for the other organizations.

Download SDK Channel Config

  1. Navigate to Channels option in the side menu.

  2. Open the detail of the channel you want to download SDK config for.

  3. Click the Download SDK config button in the channel information section.

SDK config is a YAML configuration for SDKs for programming languages such as go, java, nodejs. It’s useful when you’re developing a client application that interacts with a Fabric network created using the KompiTech Blockchain Platform.