Ordering Service
What is an Ordering Service?
Hyperledger Fabric features an ordering node (orderer) that performs transaction ordering, along with other orderer nodes forming an ordering service. Because Hyperledger Fabric's design relies on deterministic consensus algorithms, any block validated by the peer is guaranteed to be final and correct — ledgers cannot fork the way they do in other distributed blockchain networks. See the Hyperledger Fabric documentation for more.
System Channel
Every network begins with an ordering system channel. The policies in the ordering system channel configuration govern the consensus used by the ordering service and define how new blocks are created. It also contains information about orderer organizations and those allowed to create new channels (consortium organizations).
Starting from Hyperledger Fabric v2.3, orderer channel management without a system channel is available. However, this is not supported by the current version of Catalyst Blockchain Manager.
Raft
Starting from version 2.0, Hyperledger Fabric only supports Raft consensus. Raft is a crash fault-tolerant consensus protocol that allows multiple non-trusting organizations to reach mutual agreement through a leader-follower concept.
To keep an ordering service functional, you need to achieve a quorum — the minimum number of working orderers (consenters) required to ensure effective consensus. For every consenter set, this is a majority of nodes (e.g., 3 out of 5, 2 out of 2).
Add and remove consenters carefully. If a quorum is not available, the ordering service will not work and no new transactions will appear on the channel.
Ordering Set
An ordering set is a template introduced by Catalyst Blockchain Manager for ordering nodes. Configurations specified when creating an ordering set apply to all orderers within it.
How to Create an Ordering Set?
Go to the Orderers page and click Create ordering set.

Provide:
Ordering set name
Image — Docker image for creating ordering nodes
Using a predefined image is recommended for compatibility. For private repositories, specify an imagePullSecret. You can create one in your Kubernetes cluster with the label "app.kubernetes.io/name": "image-pull-secret".
Resources: Requested CPU, CPU limit, Requested memory (MB), Memory limit (MB), Storage size
Environment variables
Do not customize the following environment variables to ensure your Hyperledger Fabric Blockchain runs seamlessly: ORDERER_GENERAL_LISTENADDRESS, ORDERER_GENERAL_LISTENPORT, ORDERER_GENERAL_GENESISPROFILE, ORDERER_GENERAL_TLS_ENABLED, ORDERER_FILELEDGER_LOCATION, ORDERER_CONSENSUS_WALDIR, ORDERER_CONSENSUS_SNAPDIR
You can create as many ordering sets as needed.
How to Create an Orderer?
Click Add new node in the ordering set page.

Provide:
Orderer name — Cannot be the same as any other orderer in the organization
Select MSP — Provides identity to the orderer on the network
Add a signing identity — Select an existing identity or create a new one with a password
Add a TLS identity — Similar to step 3, but for enrolling a TLS certificate
After creation, the new orderer appears under the Orderers tab with a "No genesis block" button. You need to add the genesis block for the ordering node to function.
Orderer node states
Pending
Starting or awaiting Kubernetes cluster expansion
Running
Successfully created and ready to use
Terminating
User has initiated deletion
Failed
Unable to start (e.g., exhausted resources)
Unknown
Node status could not be obtained
If deleting an ordering node, remove it manually from application channels and then from the Raft page. Otherwise, it will still exist in channels and affect the quorum count.
How to Create an External Orderer?
If your organization does not host any ordering nodes, you can add an external orderer that connects to an orderer deployed by another organization.
Go to the Orderers tab and click Create external orderer. Provide the name, choose the MSP of the organization hosting the orderer, and provide the link to the orderer.

Both organizations must add each other to their partners list before adding an external orderer.
How to Add a Genesis Block?
To make an orderer functional, you must add a genesis block containing the system channel configuration.
You need to bootstrap a system channel to create a new network. See How to Create a System Channel.
Click the No Genesis Block button at the ordering node, or click Add genesis block from the node's detail page.
Two options:
Fetch a genesis block — Provide a link to any active orderer from a system channel. Your ordering node will fetch the last block automatically.
Upload a genesis block — Ask any orderer organization to download the last system channel's block and send it to you. Upload it to your ordering node.

If you're already a network member and want to add another orderer to the system channel:
Create the orderer.
Add the new orderer to the consenter set on the system channel at the Raft page.
Add a genesis block (fetch or upload).
Add your new consenter to the consenter set before fetching the genesis block. If you don't, the orderer won't function properly even if it fetches the genesis block.

How to Create a System Channel?
Create a system channel only if you are bootstrapping the network. To join an existing one, see Join a Network.
Catalyst Blockchain Manager supports only one system channel. Your organization cannot be part of multiple system channels.
Go to the Orderers page, click System channel, then Create system channel.

Add Orderer Organizations
Orderer organizations contribute ordering nodes to the ordering service.
Your organization: Select its MSP and orderers (create these before creating the system channel)
Other organizations: Select their MSP and upload their orderer's JSON profile (only one orderer per organization at this step)
If adding other organizations during this step, your organization must have more orderers than the number of organizations you're adding. Otherwise, a quorum will not be achieved.

Configure the System Channel
Configure batch timeout, batch size, and Raft options (tick interval, max inflight blocks, etc.). All fields are pre-populated with recommended settings. See Raft configuration docs for details.

These values will be inherited by each application channel you create. They can be edited later on system and application channels.
How to Add an Organization as an Orderer Organization?
Option 1 — During system channel creation: Select the organization from the dropdown and provide its orderer JSON profile.
Option 2 — On the Raft page of the system channel details: Click Add organization.

The organization must be in your partners' MSP list. See Add Organization as a Partner.
How to Add an Organization to the Consortium?
Option 1 — During system channel creation: Select the organization from the dropdown.
Option 2 — On the Consortium page of the system channel details: Click Add an Organization and select from the dropdown.
The organization must be in the orderer organization list first.
Only consortium members can add other organizations to the consortium.

Last updated
Was this helpful?
