Skip to content

Releases: hyperledger/fabric

v3.1.5

Choose a tag to compare

@pfi79 pfi79 released this 18 Jun 08:15
86c1172

v3.1.5 Release Notes - June 18, 2026

Improvements and Fixes

  1. Fixed gossip: return after sending NACK on private data store failure by @veyron-kairo in 5422.
  2. Fixed pvtdatastorage: close collItr before releasing purgerLock in processCollElgEvents by @veyron-kairo in 5424.
  3. Optimize peer startup by skipping full chaincode package reads by @C0rWin in 5418.
  4. Fixed pvtdatastorage: release iterators in deleteDataMarkedForPurge by @veyron-kairo in 5430.
  5. Fixed ledger: close snapshot file readers in import functions by @veyron-kairo in 5431.
  6. Fixed orderer: cancel all streams in RemoteContext.Abort() by @veyron-kairo in 5432.
  7. Fixed an error in building the plan for the endorsement by @pfi79 in 5456.
  8. Recover from panic in HandleTransaction to prevent peer crash by @Jaskirat-s7 in #5472.
  9. Fixed data race in bft deliverer by @pfi79 in 5464.
  10. Fixed smartbft: implement Errored() on BFTChain by @FirePheonix in 5451.
  11. Fixed gossip: implement result reporting for payloads buffer push by @FirePheonix in 5443.
  12. Making the go chaincode build independent of the go fabric version by @pfi79 in 5488.
  13. Restore configurable chaincode base image pull behavior by @drupadh-dinesh in 5497.

Dependencies

Fabric v3.1.5 has been tested with the following dependencies:

  • Go 1.26.4
  • CouchDB v3.4.2

Fabric docker images on docker.io and ghcr.io utilize Ubuntu 24.04.

Changes and Removals

See the v3.0.0 release notes for changes and removals between Fabric v2.x and Fabric v3.x.

Deprecated features

Block dissemination via gossip is deprecated and may be removed

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

v2.5.16

Choose a tag to compare

@pfi79 pfi79 released this 17 Jun 22:29
f871cf9

v2.5.16 Release Notes - June 18, 2026

v2.5.16 updates code dependencies.

Fixes

Fixed recover from panic in HandleTransaction

When a transaction times out during a range query, the timeout path in Execute() closes LevelDB iterators via CloseQueryIterators() while the handler goroutine (spawned by handleMessageReadyState) is still actively calling iter.Next().
This causes a nil pointer dereference in the LevelDB iterator that crashes the peer process.

Added a deferred recover() in HandleTransaction (core/chaincode/handler.go) to catch panics from concurrent iterator access and return an error response instead of crashing the peer
5473

Fixed base image pull behavior

Restore configurable chaincode base image pull behavior.
5498

Fixed the dependency of go versions in chaincode

Making the go chaincode build independent of the go fabric version.
5492

Dependencies

Fabric v2.5.16 has been tested with the following dependencies:

  • Go 1.26.4
  • CouchDB v3.4.2

Go dependencies have also been updated.

Fabric docker images on Docker Hub and GitHub Container Registry utilize Ubuntu 22.04.

Deprecations (existing)

Ordering service system channel is deprecated

v2.3 introduced the ability to manage an ordering service without a system channel.
Managing an ordering service without a system channel has privacy, scalability,
and operational benefits. The use of a system channel is deprecated and may be removed in a future release.
For information about removal of the system channel, see the Create a channel without system channel documentation.

FAB-15754: The 'Solo' consensus type is deprecated.

The 'Solo' consensus type has always been marked non-production and should be in
use only in test environments; however, for compatibility it is still available,
but may be removed entirely in a future release.

FAB-16408: The 'Kafka' consensus type is deprecated.

The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred
production consensus type. There is a documented and tested migration path from
Kafka to Raft, and existing users should migrate to the newer Raft consensus type.
For compatibility with existing deployments, Kafka is still supported,
but may be removed entirely in a future release.
Additionally, the fabric-kafka and fabric-zookeeper docker images are no longer updated, maintained, or published.

Fabric CouchDB image is deprecated

v2.2.0 added support for CouchDB 3.1.0 as the recommended and tested version of CouchDB.
If prior versions are utilized, a Warning will appear in the peer log.
Note that CouchDB 3.1.0 requires that an admin username and password be set,
while this was optional in CouchDB v2.x. See the
Fabric CouchDB documentation
for configuration details.
Also note that CouchDB 3.1.0 default max_document_size is reduced to 8MB. Set a higher value if needed in your environment.
Finally, the fabric-couchdb docker image will not be updated to v3.1.0 and will no longer be updated, maintained, or published.
Users can utilize the official CouchDB docker image maintained by the Apache CouchDB project instead.

FAB-7559: Support for specifying orderer endpoints at the global level in channel configuration is deprecated.

Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead.
Configuring orderer endpoints at the organization level accommodates
scenarios where orderers are run by different organizations. Using
this configuration ensures that only the TLS CA certificates of that organization
are used for orderer communications; in contrast to the global channel level endpoints which
would cause an aggregation of all orderer TLS CA certificates across
all orderer organizations to be used for orderer communications.

FAB-17428: Support for configtxgen flag --outputAnchorPeersUpdate is deprecated.

The --outputAnchorPeersUpdate mechanism for updating anchor peers has always had
limitations (for instance, it only works the first time anchor peers are updated).
Instead, anchor peer updates should be performed through channel configuration updates.

FAB-15406: The fabric-tools docker image is deprecated

The fabric-tools docker image will not be published in future Fabric releases.
Instead of using the fabric-tools docker image, users should utilize the
published Fabric binaries. The Fabric binaries can be used to make client calls
to Fabric runtime components, regardless of where the Fabric components are running.

FAB-15317: Block dissemination via gossip is deprecated

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

FAB-15061: Legacy chaincode lifecycle is deprecated

The legacy chaincode lifecycle from v1.x is deprecated and will be removed
in a future release. To prepare for the eventual removal, utilize the v2.x
chaincode lifecycle instead, by enabling V2_0 application capability on all
channels, and redeploying all chaincodes using the v2.x lifecycle. The new
chaincode lifecycle provides a more flexible and robust governance model
for chaincodes. For more details see the
documentation for enabling the new lifecycle.

v3.1.4

Choose a tag to compare

@pfi79 pfi79 released this 23 Feb 07:56
57f91e9

v3.1.4 Release Notes - February 23, 2026

Improvements and Fixes

  1. Fixed working with Docker Engine v29+. Replacement github.com/fsouza/go-dockerclient to native github.com/moby/moby/client by @pfi79 in 5353.
  2. Fixed gossip: stop membership tracker ticker on channel shutdown by @remo-lab in 5364.
  3. Fixed gossip: shutdown hang caused by blocking stop signal by @remo-lab in 5373.
  4. Fixed gossip: prevent panic on state provider shutdown by @Ady0333 in 5378.
  5. Fixed parsing CORE_PEER_DELIVERYCLIENT_ADDRESSOVERRIDES by @pfi79 in 5399.

Dependencies

Fabric v3.1.4 has been tested with the following dependencies:

  • Go 1.26.0
  • CouchDB v3.4.2

Fabric docker images on docker.io and ghcr.io utilize Ubuntu 24.04.

Changes and Removals

See the v3.0.0 release notes for changes and removals between Fabric v2.x and Fabric v3.x.

Deprecated features

Block dissemination via gossip is deprecated and may be removed

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

v2.5.15

Choose a tag to compare

@pfi79 pfi79 released this 23 Feb 07:45
83c7930

v2.5.15 Release Notes - February 23, 2026

v2.5.15 updates code dependencies.

Fixes

Fixed working with Docker Engine v29+

Replacement github.com/fsouza/go-dockerclient to native github.com/moby/moby/client.
5355

Fixed parsing CORE_PEER_DELIVERYCLIENT_ADDRESSOVERRIDES

Fix error parsing addressoverrides.
5400

Dependencies

Fabric v2.5.15 has been tested with the following dependencies:

  • Go 1.26.0
  • CouchDB v3.4.2

Go dependencies have also been updated.

Fabric docker images on Docker Hub and GitHub Container Registry utilize Ubuntu 22.04.

Deprecations (existing)

Ordering service system channel is deprecated

v2.3 introduced the ability to manage an ordering service without a system channel.
Managing an ordering service without a system channel has privacy, scalability,
and operational benefits. The use of a system channel is deprecated and may be removed in a future release.
For information about removal of the system channel, see the Create a channel without system channel documentation.

FAB-15754: The 'Solo' consensus type is deprecated.

The 'Solo' consensus type has always been marked non-production and should be in
use only in test environments; however, for compatibility it is still available,
but may be removed entirely in a future release.

FAB-16408: The 'Kafka' consensus type is deprecated.

The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred
production consensus type. There is a documented and tested migration path from
Kafka to Raft, and existing users should migrate to the newer Raft consensus type.
For compatibility with existing deployments, Kafka is still supported,
but may be removed entirely in a future release.
Additionally, the fabric-kafka and fabric-zookeeper docker images are no longer updated, maintained, or published.

Fabric CouchDB image is deprecated

v2.2.0 added support for CouchDB 3.1.0 as the recommended and tested version of CouchDB.
If prior versions are utilized, a Warning will appear in the peer log.
Note that CouchDB 3.1.0 requires that an admin username and password be set,
while this was optional in CouchDB v2.x. See the
Fabric CouchDB documentation
for configuration details.
Also note that CouchDB 3.1.0 default max_document_size is reduced to 8MB. Set a higher value if needed in your environment.
Finally, the fabric-couchdb docker image will not be updated to v3.1.0 and will no longer be updated, maintained, or published.
Users can utilize the official CouchDB docker image maintained by the Apache CouchDB project instead.

FAB-7559: Support for specifying orderer endpoints at the global level in channel configuration is deprecated.

Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead.
Configuring orderer endpoints at the organization level accommodates
scenarios where orderers are run by different organizations. Using
this configuration ensures that only the TLS CA certificates of that organization
are used for orderer communications; in contrast to the global channel level endpoints which
would cause an aggregation of all orderer TLS CA certificates across
all orderer organizations to be used for orderer communications.

FAB-17428: Support for configtxgen flag --outputAnchorPeersUpdate is deprecated.

The --outputAnchorPeersUpdate mechanism for updating anchor peers has always had
limitations (for instance, it only works the first time anchor peers are updated).
Instead, anchor peer updates should be performed through channel configuration updates.

FAB-15406: The fabric-tools docker image is deprecated

The fabric-tools docker image will not be published in future Fabric releases.
Instead of using the fabric-tools docker image, users should utilize the
published Fabric binaries. The Fabric binaries can be used to make client calls
to Fabric runtime components, regardless of where the Fabric components are running.

FAB-15317: Block dissemination via gossip is deprecated

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

FAB-15061: Legacy chaincode lifecycle is deprecated

The legacy chaincode lifecycle from v1.x is deprecated and will be removed
in a future release. To prepare for the eventual removal, utilize the v2.x
chaincode lifecycle instead, by enabling V2_0 application capability on all
channels, and redeploying all chaincodes using the v2.x lifecycle. The new
chaincode lifecycle provides a more flexible and robust governance model
for chaincodes. For more details see the
documentation for enabling the new lifecycle.

v3.1.3

Choose a tag to compare

@yacovm yacovm released this 18 Oct 15:10
f5b1a88

v3.1.3 Release Notes - October 18, 2025

Improvements and Fixes

The commit 77db242 removed sampleconfig/msp from the orderer docker image,
and as a result orderers deployed with docker built from the image failed to run due to a mounting error.
Fixed by explicitly adding the config files in commit bbd9ca7.

Dependencies

Fabric v3.1.3 has been tested with the following dependencies:

  • Go 1.25.2
  • CouchDB v3.4.2

Fabric docker images on docker.io and ghcr.io utilize Ubuntu 24.04.

Changes and Removals

See the v3.0.0 release notes for changes and removals between Fabric v2.x and Fabric v3.x.

Deprecated features

Block dissemination via gossip is deprecated and may be removed

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

v3.1.2

Choose a tag to compare

@yacovm yacovm released this 13 Oct 09:32
60d501d

v3.1.2 Release Notes - October 13, 2025

Improvements and Fixes

  1. Config update can now be submitted through the channel participation API via a PUT that sends the config update as a multipart/form-data to /participation/v1/channels. The osnadmin tool has been updated accordingly, both contributions from @pfi79.
  2. The channel participation API can now be used to fetch blocks, courtesy of @pfi79.
  3. BFT orderers can now have their enrollment certificates rotated without requiring a config update as long as the public keys remain the same. Feature contributed by @dviejokfs.
  4. TLS Timeshift has been added to the channel participation API, implemented by @pfi79.

Dependencies

Fabric v3.1.2 has been tested with the following dependencies:

  • Go 1.25.2
  • CouchDB v3.4.2

Fabric docker images on docker.io and ghcr.io utilize Ubuntu 24.04.

Changes and Removals

See the v3.0.0 release notes for changes and removals between Fabric v2.x and Fabric v3.x.

Deprecated features

Block dissemination via gossip is deprecated and may be removed

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

v2.5.14

Choose a tag to compare

@yacovm yacovm released this 13 Oct 09:36
24767ba

v2.5.14 Release Notes - October 13, 2025

v2.5.14 updates code dependencies.

Dependencies

Fabric v2.5.14 has been tested with the following dependencies:

  • Go 1.25.2
  • CouchDB v3.4.2

Go dependencies have also been updated.

Fabric docker images on Docker Hub and GitHub Container Registry utilize Ubuntu 22.04.

Deprecations (existing)

Ordering service system channel is deprecated

v2.3 introduced the ability to manage an ordering service without a system channel.
Managing an ordering service without a system channel has privacy, scalability,
and operational benefits. The use of a system channel is deprecated and may be removed in a future release.
For information about removal of the system channel, see the Create a channel without system channel documentation.

FAB-15754: The 'Solo' consensus type is deprecated.

The 'Solo' consensus type has always been marked non-production and should be in
use only in test environments; however, for compatibility it is still available,
but may be removed entirely in a future release.

FAB-16408: The 'Kafka' consensus type is deprecated.

The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred
production consensus type. There is a documented and tested migration path from
Kafka to Raft, and existing users should migrate to the newer Raft consensus type.
For compatibility with existing deployments, Kafka is still supported,
but may be removed entirely in a future release.
Additionally, the fabric-kafka and fabric-zookeeper docker images are no longer updated, maintained, or published.

Fabric CouchDB image is deprecated

v2.2.0 added support for CouchDB 3.1.0 as the recommended and tested version of CouchDB.
If prior versions are utilized, a Warning will appear in the peer log.
Note that CouchDB 3.1.0 requires that an admin username and password be set,
while this was optional in CouchDB v2.x. See the
Fabric CouchDB documentation
for configuration details.
Also note that CouchDB 3.1.0 default max_document_size is reduced to 8MB. Set a higher value if needed in your environment.
Finally, the fabric-couchdb docker image will not be updated to v3.1.0 and will no longer be updated, maintained, or published.
Users can utilize the official CouchDB docker image maintained by the Apache CouchDB project instead.

FAB-7559: Support for specifying orderer endpoints at the global level in channel configuration is deprecated.

Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead.
Configuring orderer endpoints at the organization level accommodates
scenarios where orderers are run by different organizations. Using
this configuration ensures that only the TLS CA certificates of that organization
are used for orderer communications; in contrast to the global channel level endpoints which
would cause an aggregation of all orderer TLS CA certificates across
all orderer organizations to be used for orderer communications.

FAB-17428: Support for configtxgen flag --outputAnchorPeersUpdate is deprecated.

The --outputAnchorPeersUpdate mechanism for updating anchor peers has always had
limitations (for instance, it only works the first time anchor peers are updated).
Instead, anchor peer updates should be performed through channel configuration updates.

FAB-15406: The fabric-tools docker image is deprecated

The fabric-tools docker image will not be published in future Fabric releases.
Instead of using the fabric-tools docker image, users should utilize the
published Fabric binaries. The Fabric binaries can be used to make client calls
to Fabric runtime components, regardless of where the Fabric components are running.

FAB-15317: Block dissemination via gossip is deprecated

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

FAB-15061: Legacy chaincode lifecycle is deprecated

The legacy chaincode lifecycle from v1.x is deprecated and will be removed
in a future release. To prepare for the eventual removal, utilize the v2.x
chaincode lifecycle instead, by enabling V2_0 application capability on all
channels, and redeploying all chaincodes using the v2.x lifecycle. The new
chaincode lifecycle provides a more flexible and robust governance model
for chaincodes. For more details see the
documentation for enabling the new lifecycle.

v3.1.1

Choose a tag to compare

@yacovm yacovm released this 10 May 20:05
435a7f1

v3.1.1 Release Notes - May 10, 2025

Operators that deploy BFT Fabric nodes are encouraged to upgrade to v3.1.1.

Improvements and Fixes

  1. A goroutine leak in the BFT replication client has been sealed by @pfi79.
  2. A deadlock in SmartBFT caused by a view change concurrent to a block commit is now fixed, thanks to @pfi79.

Dependencies

Fabric v3.1.1 has been tested with the following dependencies:

  • Go 1.24.2
  • CouchDB v3.4.2

Fabric docker images on docker.io and ghcr.io utilize Ubuntu 24.04.

Changes and Removals

See the v3.0.0 release notes for changes and removals between Fabric v2.x and Fabric v3.x.

Deprecated features

Block dissemination via gossip is deprecated and may be removed

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

v2.5.13

Choose a tag to compare

@denyeart denyeart released this 29 Apr 11:51

v2.5.13 Release Notes - April 29, 2025

v2.5.13 updates code dependencies.

Dependencies

Fabric v2.5.13 has been tested with the following dependencies:

  • Go 1.24.2
  • CouchDB v3.4.2

Go dependencies have also been updated.

Fabric docker images on Docker Hub and GitHub Container Registry utilize Ubuntu 22.04.

Deprecations (existing)

Ordering service system channel is deprecated

v2.3 introduced the ability to manage an ordering service without a system channel.
Managing an ordering service without a system channel has privacy, scalability,
and operational benefits. The use of a system channel is deprecated and may be removed in a future release.
For information about removal of the system channel, see the Create a channel without system channel documentation.

FAB-15754: The 'Solo' consensus type is deprecated.

The 'Solo' consensus type has always been marked non-production and should be in
use only in test environments; however, for compatibility it is still available,
but may be removed entirely in a future release.

FAB-16408: The 'Kafka' consensus type is deprecated.

The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred
production consensus type. There is a documented and tested migration path from
Kafka to Raft, and existing users should migrate to the newer Raft consensus type.
For compatibility with existing deployments, Kafka is still supported,
but may be removed entirely in a future release.
Additionally, the fabric-kafka and fabric-zookeeper docker images are no longer updated, maintained, or published.

Fabric CouchDB image is deprecated

v2.2.0 added support for CouchDB 3.1.0 as the recommended and tested version of CouchDB.
If prior versions are utilized, a Warning will appear in the peer log.
Note that CouchDB 3.1.0 requires that an admin username and password be set,
while this was optional in CouchDB v2.x. See the
Fabric CouchDB documentation
for configuration details.
Also note that CouchDB 3.1.0 default max_document_size is reduced to 8MB. Set a higher value if needed in your environment.
Finally, the fabric-couchdb docker image will not be updated to v3.1.0 and will no longer be updated, maintained, or published.
Users can utilize the official CouchDB docker image maintained by the Apache CouchDB project instead.

FAB-7559: Support for specifying orderer endpoints at the global level in channel configuration is deprecated.

Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead.
Configuring orderer endpoints at the organization level accommodates
scenarios where orderers are run by different organizations. Using
this configuration ensures that only the TLS CA certificates of that organization
are used for orderer communications; in contrast to the global channel level endpoints which
would cause an aggregation of all orderer TLS CA certificates across
all orderer organizations to be used for orderer communications.

FAB-17428: Support for configtxgen flag --outputAnchorPeersUpdate is deprecated.

The --outputAnchorPeersUpdate mechanism for updating anchor peers has always had
limitations (for instance, it only works the first time anchor peers are updated).
Instead, anchor peer updates should be performed through channel configuration updates.

FAB-15406: The fabric-tools docker image is deprecated

The fabric-tools docker image will not be published in future Fabric releases.
Instead of using the fabric-tools docker image, users should utilize the
published Fabric binaries. The Fabric binaries can be used to make client calls
to Fabric runtime components, regardless of where the Fabric components are running.

FAB-15317: Block dissemination via gossip is deprecated

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false

FAB-15061: Legacy chaincode lifecycle is deprecated

The legacy chaincode lifecycle from v1.x is deprecated and will be removed
in a future release. To prepare for the eventual removal, utilize the v2.x
chaincode lifecycle instead, by enabling V2_0 application capability on all
channels, and redeploying all chaincodes using the v2.x lifecycle. The new
chaincode lifecycle provides a more flexible and robust governance model
for chaincodes. For more details see the
documentation for enabling the new lifecycle.

v3.1.0

Choose a tag to compare

@denyeart denyeart released this 18 Mar 17:45
8f08391

v3.1.0 Release Notes - March 18, 2025

New features

Performance optimization - Batching of chaincode writes

Chaincodes that write large numbers of keys were inefficient since each key write required communication between the chaincode and the peer.
The new feature enables a chaincode developer to batch multiple writes into a single communication between the chaincode and the peer.
A batch can be started by calling StartWriteBatch(). The chaincode can then perform key writes as usual.
Then when FinishWriteBatch() is called or the transaction execution ends the writes will be sent to the peer.
Batches over a configured size will be split into multiple batch segments.
The batching approach significantly improves performance for chaincodes that write to many keys.
Note that the batching only impacts the endorsement phase. The transaction itself, as well as the validation and commit phases, remains the same as previous versions.

The batch writes are configured with the following peer core.yaml chaincode properties:

  • chaincode.runtimeParams.useWriteBatch - boolean that indicates whether write batching is enabled on peer
  • chaincode.runtimeParams.maxSizeWriteBatch - integer that indicates the maximum number of keys written per batch segment.

The new feature requires chaincode to utilize fabric-chaincode-go v2.1.0 or higher.

Performance optimization - Batching of chaincode reads

Chaincodes that read large numbers of keys were inefficient since each key read required communication between the chaincode and the peer.
The new feature enables a chaincode developer to batch multiple reads into a single communication between the chaincode and the peer.
Utilize the new GetMultipleStates() and GetMultiplePrivateData() chaincode functions to perform the batch reads.
Batches over a configured size will be split into multiple batch segments.

The batch reads are configured with the following peer core.yaml chaincode properties:

  • chaincode.runtimeParams.useGetMultipleKeys - boolean that indicates whether read batching is enabled on peer
  • chaincode.runtimeParams.maxSizeGetMultipleKeys - integer that indicates the maximum number of keys read per batch segment

The new feature requires chaincode to utilize fabric-chaincode-go v2.2.0 or higher.

Query all composite keys in a chaincode

A new chaincode function GetAllStatesCompositeKeyWithPagination() is available so that all composite keys within a chaincode can be retrieved.
This function is useful when performing bulk operations on all composite keys in a chaincode.

The new feature requires chaincode to utilize fabric-chaincode-go v2.3.0 or higher.

Improvements and Fixes

All improvements and fixes as of v2.5.12 have also been included in v3.1.0.

Dependencies

Fabric v3.1.0 has been tested with the following dependencies:

  • Go 1.24.0
  • CouchDB v3.4.2

Fabric docker images on docker.io and ghcr.io utilize Ubuntu 22.04.

Changes and Removals

See the v3.0.0 release notes for changes and removals between Fabric v2.x and Fabric v3.x.

Deprecated features

Block dissemination via gossip is deprecated and may be removed

Block dissemination via gossip is deprecated and may be removed in a future release.
Fabric peers can be configured to receive blocks directly from an ordering service
node, and not gossip blocks, by using the following configuration:

peer.gossip.orgLeader: true
peer.gossip.useLeaderElection: false
peer.gossip.state.enabled: false
peer.deliveryclient.blockGossipEnabled: false