Skip to main content

Governance & Policies

How to manage channel governance, organization policies, and consortium rules in Fabric networks.

Channel Policies

Every Fabric channel has policies that control who can read, write, and administer the channel. ChainLaunch lets you view and modify these policies.

Default Policies

When you create a channel, these default policies are applied:

PolicyDefault RuleControls
ReadersANY member of any orgWho can query the ledger
WritersANY member of any orgWho can submit transactions
AdminsMAJORITY of org adminsWho can modify channel config
LifecycleEndorsementMAJORITY of orgsWho must approve chaincode
EndorsementMAJORITY of orgsWho must endorse transactions

View Current Policies

curl http://localhost:8100/api/v1/networks/{networkId}/channels/{channelName}/config \
| jq '.channel_group.policies'

Modify Policies

See Update Channel for step-by-step policy modification.

Organization Governance

Adding an Organization

Adding a new org to a consortium requires approval from existing members:

  1. The new org creates their ChainLaunch instance and creates their organization
  2. An existing admin updates the channel to add the new org
  3. A majority of existing org admins must sign the config update
  4. Once approved, the new org's peers can join the channel

Removing an Organization

Removing an org follows the same approval process:

  1. An admin proposes removing the org from the channel config
  2. Majority of remaining org admins must approve
  3. The org's peers are disconnected from the channel
  4. The org's data on the ledger remains (immutable)
warning

Removing an org does not delete their historical data from the ledger. All past transactions remain visible to remaining channel members.

Chaincode Lifecycle Governance

Fabric's chaincode lifecycle ensures all organizations agree on which smart contracts run on the channel.

Approval Flow

Define chaincode → Install on peers → Approve per org → Commit to channel
  1. Define: Package the chaincode with a label and version
  2. Install: Each org installs the package on their peers
  3. Approve: Each org's admin approves the chaincode definition
  4. Commit: Once majority approve, any org can commit to the channel

The LifecycleEndorsement policy controls how many orgs must approve (default: MAJORITY).

Upgrade Chaincode

To upgrade chaincode, increment the sequence number:

# Approve new version (each org)
chainlaunch chaincode approve --name mycc --version 2.0 --sequence 2 \
--channel mychannel --org Org1MSP

# Commit after majority approve
chainlaunch chaincode commit --name mycc --version 2.0 --sequence 2 \
--channel mychannel

Orderer Governance

Orderer Policies

The ordering service has its own policies:

PolicyDefaultControls
ReadersANY memberWho can fetch blocks
WritersANY memberWho can broadcast transactions
AdminsMAJORITY of orderer org adminsWho can modify orderer config
BlockValidationANY orderer org memberWho can validate blocks

Adding/Removing Orderer Nodes

To add a new orderer (consenter) to a Raft cluster:

  1. Create the orderer node in ChainLaunch
  2. Update the channel config to add the new consenter
  3. The new orderer syncs the ledger and joins consensus
tip

Add orderers one at a time and verify they've caught up before adding the next. Adding multiple orderers simultaneously can destabilize Raft consensus.

Consortium Management Best Practices

  1. Document governance rules — agree on policies before creating the network
  2. Use MAJORITY policies — prevents any single org from making unilateral changes
  3. Separate orderer org — consider a neutral orderer organization for the ordering service
  4. Regular policy reviews — audit channel policies quarterly
  5. Test policy changes in dev — always test config updates on a dev network first

Next Steps