Skip to content

Releases: hyperledger/fabric

v2.4.4

17 Jun 15:35
1473eca
Compare
Choose a tag to compare

v2.4.4 Release Notes - June 17, 2022

Improvements

peer - Add a "gateway.responsechecker" logger for logging endorsement response differences

To assist with troubleshooting when endorsement responses are different across multiple peers, the new "gateway.responsechecker" logger will log warnings indicating which parts of endorsement responses are different.

peer - Enable gateway service to invoke system chaincodes

The gateway service can now invoke system chaincodes such as QSCC when requested by a client application.

peer - Enable resume of chaincode event listening

Enables the client to (optionally) specify an AfterTransactionId property in addition to a start block number when requesting chaincode events, which causes chaincode events up to that transaction ID (inclusive) to be ignored and not returned to the client.
This supports resume of chaincode event listening on client reconnect without duplicating or missing any events.

Dependencies

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

  • Go 1.18.2
  • CouchDB v3.2.2

Fabric docker images on dockerhub utilize Alpine 3.16.

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 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 the normal config update flow.

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.

Changes:

  • 1473eca Release commit for v2.4.4 (#3487)
  • 6f4282b Fix gossip unit test flake (#3215)
  • a914ec3 Bump Alpine to 3.16 (release-2.4) (#3472)
  • 8ffd334 Locate correct block number for transaction ID in ChaincodeEvents (#3289)
  • f64eea2 Refactor of ChaincodeEvents service implementation to support resume (#3283)
  • 02d63c3 Add -buildvcs=false for building binaries
  • 60638b5 Improved gateway error for transient data failure [ #3328 ]
  • a6947fa Use any peer to evaluate system chaincode transactions (#3447)
  • 135c268 Improve response mismatch logging
  • 29fea4f Log proposal response differences (backport #3420)
See More

This list of changes was auto generated.

v2.2.6

17 Jun 15:54
e7dc57d
Compare
Choose a tag to compare

v2.2.6 Release Notes - June 17, 2022

Fixes

peer and orderer - Handle TLS CA certificate expiry

When any TLS CA certificate configured on a channel expired, peer and orderer nodes fail to start due to MSP initialization error "setting up the MSP manager failed: CA Certificate is not valid: certificate has expired or is not yet valid". MSP initialization now ignores TLS CA certificate expiration so that the peer or orderer can start up and receive channel configuration updates with renewed TLS CA certificates.

Dependencies

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

  • Go 1.18.2
  • CouchDB v3.2.2

Fabric docker images on dockerhub utilize Alpine 3.16.

Deprecations (existing)

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 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 the normal config update flow.

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 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.

Changes:

See More
  • df783d6 Remove duplicated line
  • eabe68b Fix some errors in the tutorial
  • 4f61890 Bump CouchDB to 3.2.2 (release-2.2)
  • 8be2067 Fix mistake change 'curl' to 'git'
  • 2deacba Fix doc to handle $PWD containing whitepaces
  • 6a1071e Update README build badge link
  • fa43e61 Update links for Jira to GitHub issue transition in README
  • 4b1bfbf Update boostrap.sh for test network
  • e728001 Update documentation to include Go SDK
  • 449ef0a Fix link to security bug reporting process (#2160)
  • 2f4eb7f Update "master" branch references to "main".
  • 09393f6 Update chaincode language parameter name
  • ed67dbe Fix hyperlink
  • 61d5840 Fix warning log printing
  • 578a648 Properly handle concurrent building of chaincode packages
  • cfbb980 Documentation: Update network (Key Concepts) page
  • 0d79dd2 certs mgmt guide (#3307)
  • 0132f2a Additional TLS troubleshooting information (#3346)
  • 4ab9059 Ignore channel double creation during replication. [ #2931 ]
  • e2f05e6 Ignore expired CA/TLS CA certs on msp init (#3238) (#3249) (#3255)
  • 68b6b90 Fix FAB-18528: remove panic in ifConfig func (#2828)
  • f7318ff Release commit for v2.2.5
  • c04cd7d Bump Go to 1.17.5 (release-2.2) (#3186)
  • 4996e82 - Fix failure to generate all possible combinations (backport #3132) (#3150)
  • 162f867 Add Information about AWS HSM
  • fcdc0b5 Backport setEvent information to 2.2 [ #2958 ]
  • acf88a0 [Backport] #2936 to release-2.2 (#2953)
  • eddb470 Unit test flake when rpc server stream not closed (backport #2935) (#2942)
  • 19a137b Fix broken links for international workgroups (#2920)
  • 2088b5f Update docs for Jira to GitHub issue transition
  • 263ca9e Release commit for v2.2.4 (#2901)
  • 029e6ed Fixed a typo in private_data_tutorial
  • 1eedcff Update Go to v1.16.7 and alpine to 3.14 (release-2.2)
  • 851f838 Fix process termination waits in health tests (#2889)
  • e6a6a61 platform/golang: loosen assertion for Go 1.16.2 (release-2.2)
  • ba2a9f1 deps: bump testify (release-2.2) (#2886) [ #2336 ]
  • 50064c8 Update x509.CertPool equality checks (#2880)
  • f441ba2 Change name of test network docker network in 2.2
  • 859c7d5 Clean up Go modules (release-2.2) (#2876)
  • 07ac9f5 Stop spamming for wait channel acquirement in orderer integration test
  • b076bd7 Options for GRPC message size configurable
  • c91b546 Change name of comm msg size default consts
  • da9e1bd Refactor max message sizes in comm client config
  • fbf7b93 FAB18529 added nil check in channel header parsing
  • 9a6b351 Additional documentation for implicit private data collections
  • 8fd2ad8...
Read more

v2.4.3

25 Feb 17:39
Compare
Choose a tag to compare

v2.4.3 Release Notes - February 25, 2022

Fixes

peer - Add Intermediate CA certificates to gateway dial options

The gateway service was not including TLS intermediate certificates in the dial options when connecting to other nodes,
resulting in TLS handshake errors between the gateway peer and other nodes.
The gateway service now includes TLS root certificates and intermediate certificates when connecting to other nodes.

peer - Gateway support for mutual TLS

The gateway service was not passing the peer's client certificate when connecting to other nodes.
To support TLS client authentication (mutual authentication), the gateway service now passes the peer's
client certificate (if one is configured) when connecting to other nodes.

peer and orderer - Handle TLS CA certificate expiry

When any TLS CA certificate configured on a channel expired,
peer and orderer nodes fail to start due to MSP initialization error
"setting up the MSP manager failed: CA Certificate is not valid: certificate has expired or is not yet valid".
MSP initialization now ignores TLS CA certificate expiration so that the peer
or orderer can start up and receive channel configuration updates with renewed TLS CA certificates.

Dependencies

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

  • Go 1.17.5
  • CouchDB v3.1.1

Fabric docker images on dockerhub utilize Alpine 3.14.

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 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 the normal config update flow.

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.

Changes:

This list of changes was auto generated.

v2.4.2

28 Jan 13:20
Compare
Choose a tag to compare

v2.4.2 Release Notes - January 28, 2022

Fixes

peer - Discovery service does not consider full set of endorsement options

Due to a bug in the permutation logic, the discovery service may not consider the
full set of endorsement options for a given endorsement policy, potentially resulting in the following error:
"no peer combination can satisfy the endorsement policy".
The fix ensures that all endorsement options are considered for a given endorsement policy and set of peers.

peer - Peer gateway does not close connections to orderers that are removed from channel configuration

The peer gateway service now closes connections to ordering service nodes when they are no longer part of any channel configuration.

Dependencies

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

  • Go 1.17.5
  • CouchDB v3.1.1

Fabric docker images on dockerhub utilize Alpine 3.14.

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 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 the normal config update flow.

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.

Changes:

  • fad7f69 Release commit for v2.4.2
  • 0e9cdb2 Address windows platform in documentation [ #2993 ]
  • 63a7779 Bump Go to 1.17.5 (release-2.4) (#3182) [ #3114 ]
  • e24c332 Refactor gateway Endorse() method
  • e7cb726 Close connections to stale ordering nodes
  • e1ed78f - Fix failure to generate all possible combinations (#3132)
  • af5d5df v2.4.1 release commit
  • ef5ac00 Update 'Running a Fabric Application' tutorial for Fabric Gateway
  • 3580b4e Reduce CPU&memory cost of collecting endorsements
  • fbfdc1d Enable gateway concurrency limits
See More
  • 1f87709 Remove discovery.acl principal warning [ #3006 ]
  • e0bb139 Adding a dedicated external builder
  • 654a02b Fix channel config callback in gateway
  • abf5d30 Final peer for gateway (#3091) (#3095)
  • 2d8d7f4 Randomize endorsement layouts
  • 29d1e21 Network and Orderers for gateway
  • a95a8e7 latest PR review comments
  • 41b6586 v2.4.0 release commit (#3078)
  • 4f4e096 Update v2.4.0 release notes
  • f15b4ee Add command reference doc for ledgerutil
  • 45707ac Add read version to the example in read-write set
  • b0de139 Add logging for identity, policy, and signature troubleshooting
  • 1266978 Clarify v2.x upgrade docs (#3083)
  • 6a7cdd0 Refine Gateway gRPC error status codes (#3075)
  • 40fea67 goimports updates to prepare for Go 1.17 (#3070)
  • c14239c Add gateway ref to private data doc topic
  • a6a9fde EndorsementTimeout should apply to each endorser
  • bd1aaae Reference current application APIs in peer event service docs
  • 91951d0 Log the transactionID in all log messages
  • 2abb074 Remove redundant SDK documentation page
  • a1c13d8 Updates to endorser and gateway logging
  • 34dcb8d Update protobuf definitions
  • 5c2e358 Enhance gateway error logic
  • 5014709 docs: fixing some typos
  • dee44d9 Don't use EndorseResponse.Result field (#3051)
  • c463b32 Fix CI script syntax
  • 44faa13 Enable unaware threshold signature endorsement
  • 8a4c7f3 Update Contract and Application API docs for Fabric Gateway (#3048)
  • 91d7b7c Updates to Gateway doc topic (#3047)
  • 6a415ee collection singular
  • e3abd66 use member of a collection
  • da935d7 Gateway overview edited
  • 9c5e1df Clarify ProcessProposal error handling (#3044)
  • f089b24 Reword evaluate() error message
  • 688d4d2 Add extra info to error message
  • 6926cc1 no gateway via cli - tutorials (#3037)
  • cdc342e Add gateway architecture page to docs
  • 534b1c1 Use correct timeout option (#3032)
  • d67d421 Show what do not match (#3012)
  • 5113aa9 Better gRPC error on context error from CommitStatus serv...
Read more

v2.2.5

28 Jan 12:53
Compare
Choose a tag to compare

v2.2.5 Release Notes - January 28, 2022

Fixes

orderer - Fix bug when an orderer crashes at channel creation

This fix handles a scenario where an ordering service node crashes during channel creation.
Previously the ordering service node would attempt to re-create the channel upon next startup,
resulting in a panic with the following error:
"Error creating chain support: error creating consenter for channel: failed to restore persisted raft data: failed to create or read WAL: failed to open WAL: fileutil: file already locked".

peer - Discovery service does not consider full set of endorsement options

Due to a bug in the permutation logic, the discovery service may not consider the
full set of endorsement options for a given endorsement policy, potentially resulting in the following error:
"no peer combination can satisfy the endorsement policy".
The fix ensures that all endorsement options are considered for a given endorsement policy and set of peers.

Dependencies

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

  • Go 1.17.5
  • CouchDB v3.1.1

Deprecations (existing)

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 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 the normal config update flow.

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 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.

Changes:

See More
  • 029e6ed Fixed a typo in private_data_tutorial
  • 1eedcff Update Go to v1.16.7 and alpine to 3.14 (release-2.2)
  • 851f838 Fix process termination waits in health tests (#2889)
  • e6a6a61 platform/golang: loosen assertion for Go 1.16.2 (release-2.2)
  • ba2a9f1 deps: bump testify (release-2.2) (#2886) [ #2336 ]
  • 50064c8 Update x509.CertPool equality checks (#2880)
  • f441ba2 Change name of test network docker network in 2.2
  • 859c7d5 Clean up Go modules (release-2.2) (#2876)
  • 07ac9f5 Stop spamming for wait channel acquirement in orderer integration test
  • b076bd7 Options for GRPC message size configurable
  • c91b546 Change name of comm msg size default consts
  • da9e1bd Refactor max message sizes in comm client config
  • fbf7b93 FAB18529 added nil check in channel header parsing
  • 9a6b351 Additional documentation for implicit private data collections
  • 8fd2ad8 [FAB-18509] Stop panic of collection index path is wrong (#2726) (#2744)
  • 62c68d1 Updated enrollUser function in write_first_app Doc (#2713)
  • a0dcb5c Update docs to clarify that an implicit collection can not have an index
  • 2f7fd17 Fixed grammatical errors
  • f36fe03 [Doc-Update] + What is a commercial paper section
  • 8b1d355 Fix a typo in CouchDB tutorial
  • 4c77749 Fix typo
  • f3f170f Fix peerchaincode.md as well
  • 30a0931 Add explanation of --ctor JSON string
  • b926247 Clarify orderers seeing the transaction data
  • f4feedb Cherry pick deploy CC fixes into release-2.2
  • 68bc522 Clarify "identity expired" error messages (#2685) (#2688)
  • 3a69034 Fix spelling mistakes in the Github Contributions page
  • ccecf10 [FAB-18484] Return transaction forwarding result back to the client synchronously
  • 7e61944 [FAB-18487] Update broken link in 2.2 branch
  • 186d9bf Typo fix in peer deployment guide in main (#2660)
  • 31e41ce Update private_data_tutorial.rst
  • 4cb453e Fix jq commands in create channel tutorial (#2662)
  • 8851da3 Back port 2023 - skip empty ledge and 2635 - RetrieveBlockByNumber (#2648) [ #2023, #2635 ]
  • cc50451 Clarify doc for readset validations (#2647) (#2655)
  • 3548215 Update secured_private_asset_transfer_tutorial.md
  • 56b3689 [FAB-18479] Log error if orderer can't forward SubmitRequest to Raft leader
  • dd7e921 fix duplicate entry in code snippet
  • 7871c26 Optionally disable gossip block forwarding (#2606)
  • bce75cf Update docs/sourc...
Read more

v2.4.1

17 Dec 13:08
Compare
Choose a tag to compare

v2.4.1 Release Notes - December 17, 2021

Improvements

peer - Chaincode as a service builder delivered with Fabric release artifacts and in fabric-peer docker image

Starting in v2.0 chaincode can be run as a service by utilizing the external builder pattern for chaincodes.
Running 'chaincode as a service' has advantages in Kubernetes and other deployment environments since the chaincode can be managed independently rather than requiring the peer to build chaincode images and start chaincode containers at runtime.
The external builder pattern required you to deliver a builder script or program alongside the peer.
Starting in v2.4.1 an external builder for 'chaincode as a service' is available in the Fabric release artifacts and is pre-configured with the fabric-peer docker image,
removing the need to build your own external builder and repackage and configure the peer.

peer - Gateway service now randomizes endorsement layouts

For improved load balancing of endorsement requests and fairer workload distribution across organizations,
the gateway service now randomizes the peers it connects to for every transaction.

peer - Gateway service concurrency limits

Add support for setting gateway service concurrency limits, similar to how concurrency limits are
set for the existing endorser and deliver services.
Concurrency limits ensure that a peer does not process more than the configured number of requests,
reducing the chance of a peer getting overloaded with more requests than it can process.
The peer's core.yaml 'peer.limits.concurrency.gatewayService' setting defaults to 500.

Fixes

peer - Fix for orderer endpoint updates in channel configuration transactions

When processing a channel configuration transaction, the gateway service was setting orderer endpoints based on the
prior configuration and therefore the gateway may attempt to submit transactions to outdated orderer endpoints.
A peer restart was required to refresh the orderer endpoints.
The gateway now sets the orderer endpoints based on the updated channel configuration without a peer restart required.

peer - Extraneous warnings logged for service discovery endorsers requests

The 'discovery.acl' logger was logging an unexpected "identity does not satisfy principal" warning message.
The message has now been removed.

peer - Improve gateway service memory garbage collection

Remove duplicate proposal responses from gateway service memory to improve garbage collection and peer process memory footprint.

peer - Reduce the size of gateway service gRPC error responses for non-matching endorsements

The gateway service was returning error responses with full payloads to clients when it received non-matching endorsements from peers.
Large error responses in gRPC can cause loss of connection between client and server.
A shorter error message is now returned to the client, while the full payloads are reported in the peer log as a warning.

Dependencies

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

  • Go 1.16.7
  • CouchDB v3.1.1

Fabric docker images on dockerhub utilize Alpine 3.14.

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 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 the normal config update flow.

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.

Changes:

  • af5d5df v2.4.1 release commit
  • ef5ac00 Update 'Running a Fabric Application' tutorial for Fabric Gateway
  • 3580b4e Reduce CPU&memory cost of collecting endorsements
  • fbfdc1d Enable gateway concurrency limits
  • 1f87709 Remove discovery.acl principal warning [ #3006 ]
  • e0bb139 Adding a dedicated external builder
  • 654a02b Fix channel config callback in gateway
  • abf5d30 Final peer for gateway (#3091) (#3095)
  • 2d8d7f4 Randomize endorsement layouts
  • 29d1e21 Network and Orderers for gateway
See More
  • a95a8e7 latest PR review comments

This list of changes was auto generated.

v2.4.0

29 Nov 20:45
41b6586
Compare
Choose a tag to compare

v2.4.0 Release Notes - November 29, 2021

New features

Fabric Gateway

Fabric Gateway is a new service running on peer nodes that manages transaction submission and processing for client applications, with the following benefits:

  • Simplifies client applications and SDKs - Your client application can simply delegate transaction submission to a trusted peer. There is no need for your application to open connections to peer nodes and ordering service nodes from other organizations.
  • Fabric Gateway manages collection of transaction endorsements from other organizations and submission to ordering service on behalf of client applications.
  • Fabric Gateway has intelligence to determine what endorsements are required for a given transaction, even if your solution utilizes a combination of chaincode-level endorsement policies, private data collection endorsement policies, and state-based endorsement policies.

New lightweight Gateway SDKs (v1.0.0) are available for Node, Java, and Go. The SDKs support flexible application patterns:

  • You can utilize the high level programming model similar to prior SDK versions, allowing your application to simply call a single SubmitTransaction() function.
  • More advanced applications can leverage the gateway's individual Endorse, Submit, and CommitStatus services for transaction submission, and the Evaluate service for queries.
  • You can delegate transaction endorsement entirely to the gateway, or if needed, specify the endorsing organizations and the gateway will utilize a peer from each organization.

For more information, see the Fabric Gateway documentation topic.

Unjoin a channel from a peer

The new command peer node unjoin enables an administrator to remove (unjoin) a channel from a peer.
The peer must be stopped when the command is executed so that channel artifacts can be cleaned up.
The channel's blockchain, state database, and associated entries will be removed from the peer.
When the peer is restarted it will no longer receive blocks for the channel.

For more information, see the peer node command reference.

Calculate package ID of a packaged chaincode

You can calculate the package ID from a packaged chaincode without installing the chaincode on peers using the new peer lifecycle chaincode calculatepackageid command.
This command will be useful, for example, in the following cases:

  • When multiple chaincode packages with the same label name are installed, it is possible to identify which ID corresponds to which package later.
  • To check whether a particular chaincode package is installed or not without installing that package.

For more information, see the peer lifecycle command reference.

Improvements

peer and orderer - Implement legacy name constraints verification for Go 1.15 and above

These changes reproduce the Go 1.14 name constraint verification in the MSP.
Without these changes, certificate chains that would fail verification in Go 1.14 would
successfully validate in Go 1.15 and above due to the change mentioned in the Go 1.15 release notes.
Specifically, if a signing certificate contains a name constraint, the leaf certificate
does not include SAN extensions, and the leaf's common name looks like a host name,
then the additional verification is performed to ensure deterministic behavior relative
to prior Fabric releases.

peer and orderer - Default log record format improvements

Expanded the width of the log record sequence number to a minimum of four characters,
moved the log sequence number and log level to the left,
and added bold formatting to the function name.
These changes keep the fixed-width columns together at the left
and add a visual break between the logging module name and log message text.

peer - New configuration option to disable gossip block forwarding

If all peers in an organization explicitly set "peer.deliveryclient.blockGossipEnabled" to false,
no peer in the organization gossips blocks to any other peer in that organization.
Use this setting when all peers pull blocks from ordering service. For more
information see deprecation announcement below: FAB-15317: Block dissemination via gossip is deprecated.

orderer - Return transaction forwarding result back to the client synchronously

With this improvement a Raft follower waits for the transaction to be forwarded to the Raft leader,
and returns the result (success or failure) back to the client accordingly.
Prior to this improvement, the Raft follower returned success after enqueueing it into the message queue,
which might have resulted in the transaction being dropped but a success being returned to the client.
Application clients should still monitor transaction commit events, since the Raft leader is not guaranteed
to deliver the transaction into a block in exception scenarios, but this improvement avoids
transactions from being dropped when there are connection issues between a Raft follower and Raft leader.

peer - Ability to override core.yaml chaincode.externalBuilders via environment variable

Since chaincode.externalBuilders is an array, it previously was not possible to set via environment variable override.
It is now possible to override chaincode.externalBuilders using an environment variable
using the format CORE_CHAINCODE_EXTERNALBUILDERS=[{name: x, path: dir1}, {name: y, path: dir2}].

peer and orderer - Make gRPC maximum message size configurable

This improvement makes gRPC maximum message size configurable in peer and orderer.
Previously the maximum message size was hardcoded to 100 megabytes.
Since all nodes should be consistent it is recommended to keep
the default value of 100 megabytes for MaxRecvMsgSize & MaxSendMsgSize.
The value can be configured if needed however.
Configure in peer core.yaml with peer.maxRecvMsgSize and peer.maxSendMsgSize.
Configure in orderer orderer.yaml with General.MaxRecvMsgSize and General.MaxSendMsgSize.

Fixes

All fixes as of v2.3.3 are included in v2.4.0. Additionally, the following fix is made in v2.4.0.

orderer - Fix bug when an orderer crashes at channel creation

This fix handles a scenario where an ordering service node crashes during channel creation.
Previously the ordering service node would attempt to re-create the channel upon next startup,
resulting in a panic with the following error:
"Error creating chain support: error creating consenter for channel: failed to restore persisted raft data: failed to create or read WAL: failed to open WAL: fileutil: file already locked".

Dependencies

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

  • Go 1.16.7
  • CouchDB v3.1.1

Fabric docker images on dockerhub utilize Alpine 3.14.

Deprecations (new)

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.

Deprecations (existing)

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 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 certific...

Read more

v2.3.3

09 Sep 15:49
9955302
Compare
Choose a tag to compare

v2.3.3 Release Notes - September 8, 2021

Improvements

peer - New configuration option to disable gossip block forwarding

If all peers in an organization explicitly set peer.deliveryclient.blockGossipEnabled to false,
no peer in the organization gossips blocks to any other peer in that organization.
Use this setting when all peers pull blocks from ordering service. For more
information see deprecation announcement below: FAB-15317: Block dissemination via gossip is deprecated.

orderer - [FAB-18484] Return transaction forwarding result back to the client synchronously

With this improvement a Raft follower waits for the transaction to be forwarded to the Raft leader,
and returns the result (success or failure) back to the client accordingly.
Prior to this improvement, the Raft follower returned success after enqueueing it into the message queue,
which might have resulted in the transaction being dropped but a success being returned to the client.
Application clients should still monitor transaction commit events, since the Raft leader is not guaranteed
to deliver the transaction into a block in exception scenarios, but this improvement avoids
transactions from being dropped when there are connection issues between a Raft follower and Raft leader.

peer and orderer - Make gRPC maximum message size configurable

This improvement makes gRPC maximum message size configurable in peer and orderer.
Previously the maximum message size was hardcoded to 100 megabytes.
Since all nodes should be consistent it is recommended to keep
the default value of 100 megabytes for MaxRecvMsgSize & MaxSendMsgSize.
The value can be configured if needed however.
Configure in peer core.yaml with peer.maxRecvMsgSize and peer.maxSendMsgSize.
Configure in orderer orderer.yaml with General.MaxRecvMsgSize and General.MaxSendMsgSize.

Fixes

orderer - [FAB-18521] Consenters' metadata is not replicated while OSN catches up with snapshot

If an ordering service node crashes while replicating blocks from another ordering service,
the consenters metadata will not be available and the ordering service node will not be
able to reconnect to the consenter set upon restart. This fix ensures that an ordering
service node that is replicating blocks persists the consenters metadata so that it
can reconnect to the consenter set.

Dependencies

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

  • Go 1.16.7
  • CouchDB v3.1.1

Deprecations (existing)

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 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 the normal config update flow.

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 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.

Changes:

  • 9955302 Release commit for v2.3.3 (#2903)
  • b5eb7f0 Fixed a typo in private_data_tutorial
  • 5be686f Update Go to v1.16.7 and alpine to 3.14 (release-2.3) (#2874)
  • 0ebd9cf platform/golang: loosen assertion for Go 1.16.2 (#2480)
  • c5c1acc deps: bump testify (release-2.3) (#2885) [ #2336 ]
  • cf3470b Update x509.CertPool equality checks (#2879)
  • 67d3523 Clean up Go modules (#2875)
  • 758735b Stop spamming for wait channel acquirement in orderer integration test
  • 497d3ab Options for GRPC message size configurable
  • cc88dfa Change name of comm msg size default consts
See More
  • 8956c06 Refactor max message sizes in comm client config
  • befdaee FAB18529 added nil check in channel header parsing
  • c1b298d Fix small doc errors (#2816)
  • 9815a7a Update private data docs - remove SDK reference (#2770)
  • 1294920 Additional documentation for implicit private data collections
  • b7463be [FAB-18521] Replicate block metadata with block while OSN catching up (#2762)
  • 90673b7 Added a possibility to override chaincode.externalBuilders via env variable (#2643)
  • 43ef319 [FAB-18509] Stop panic of collection index path is wrong (#2726) (#2745)
  • 6727a63 Updated enrollUser function in write_first_app Doc (#2713)
  • f0f16f4 Update docs to clarify that an implicit collection can not have an index
  • 98b6523 docker network net_test -> fabric_test
  • 56e2f83 Fixed grammatical errors
  • ca1cf22 [Doc-Update] + What is a commercial paper section
  • 5c5b7a5 Fix a typo in CouchDB tutorial
  • f424e95 Fix typo
  • c74cbb4 Fix peerchaincode.md as well
  • a089501 Add explanation of --ctor JSON string
  • f20421a Clarify orderers seeing the transaction data
  • 3f743a9 Mandate TLS 1.2 or higher in fabhttp package
  • f7eefee Clarify "identity expired" error messages (#2685) (#2686)
  • f91d82f Fix spelling mistakes in the Github Contributions page
  • ef9b3f1 [FAB-18484] Return transaction forwarding result back to the client synchronously
  • 981a4e8 Link fixes detailed in FAB-18494
  • a07a105 Update ordererplan.md
  • 6eccd4...
Read more

v2.2.4

09 Sep 16:17
263ca9e
Compare
Choose a tag to compare

v2.2.4 Release Notes - September 8, 2021

Improvements

peer - New configuration option to disable gossip block forwarding

If all peers in an organization explicitly set peer.deliveryclient.blockGossipEnabled to false,
no peer in the organization gossips blocks to any other peer in that organization.
Use this setting when all peers pull blocks from ordering service. For more
information see deprecation announcement below: FAB-15317: Block dissemination via gossip is deprecated.

orderer - [FAB-18484] Return transaction forwarding result back to the client synchronously

With this improvement a Raft follower waits for the transaction to be forwarded to the Raft leader,
and returns the result (success or failure) back to the client accordingly.
Prior to this improvement, the Raft follower returned success after enqueueing it into the message queue,
which might have resulted in the transaction being dropped but a success being returned to the client.
Application clients should still monitor transaction commit events, since the Raft leader is not guaranteed
to deliver the transaction into a block in exception scenarios, but this improvement avoids
transactions from being dropped when there are connection issues between a Raft follower and Raft leader.

peer and orderer - Make gRPC maximum message size configurable

This improvement makes gRPC maximum message size configurable in peer and orderer.
Previously the maximum message size was hardcoded to 100 megabytes.
Since all nodes should be consistent it is recommended to keep
the default value of 100 megabytes for MaxRecvMsgSize & MaxSendMsgSize.
The value can be configured if needed however.
Configure in peer core.yaml with peer.maxRecvMsgSize and peer.maxSendMsgSize.
Configure in orderer orderer.yaml with General.MaxRecvMsgSize and General.MaxSendMsgSize.

Dependencies

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

  • Go 1.16.7
  • CouchDB v3.1.1

Deprecations (existing)

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 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 the normal config update flow.

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 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.

Changes:

  • 263ca9e Release commit for v2.2.4 (#2901)
  • 029e6ed Fixed a typo in private_data_tutorial
  • 1eedcff Update Go to v1.16.7 and alpine to 3.14 (release-2.2)
  • 851f838 Fix process termination waits in health tests (#2889)
  • e6a6a61 platform/golang: loosen assertion for Go 1.16.2 (release-2.2)
  • ba2a9f1 deps: bump testify (release-2.2) (#2886) [ #2336 ]
  • 50064c8 Update x509.CertPool equality checks (#2880)
  • f441ba2 Change name of test network docker network in 2.2
  • 859c7d5 Clean up Go modules (release-2.2) (#2876)
  • 07ac9f5 Stop spamming for wait channel acquirement in orderer integration test
See More
  • b076bd7 Options for GRPC message size configurable
  • c91b546 Change name of comm msg size default consts
  • da9e1bd Refactor max message sizes in comm client config
  • fbf7b93 FAB18529 added nil check in channel header parsing
  • 9a6b351 Additional documentation for implicit private data collections
  • 8fd2ad8 [FAB-18509] Stop panic of collection index path is wrong (#2726) (#2744)
  • 62c68d1 Updated enrollUser function in write_first_app Doc (#2713)
  • a0dcb5c Update docs to clarify that an implicit collection can not have an index
  • 2f7fd17 Fixed grammatical errors
  • f36fe03 [Doc-Update] + What is a commercial paper section
  • 8b1d355 Fix a typo in CouchDB tutorial
  • 4c77749 Fix typo
  • f3f170f Fix peerchaincode.md as well
  • 30a0931 Add explanation of --ctor JSON string
  • b926247 Clarify orderers seeing the transaction data
  • f4feedb Cherry pick deploy CC fixes into release-2.2
  • 68bc522 Clarify "identity expired" error messages (#2685) (#2688)
  • 3a69034 Fix spelling mistakes in the Github Contributions page
  • ccecf10 [FAB-18484] Return transaction forwarding result back to the client synchronously
  • 7e61944 [FAB-18487] Update broken link in 2.2 branch
  • 186d9bf Typo fix in peer deployment guide in main (#2660)
  • 31e41ce Update private_data_tutorial.rst
  • 4cb453e Fix jq commands in create channel tutorial (#2662)
  • 8851da3 Back port 2023 - skip empty ledge and 2635 - RetrieveBlockByNumber (#2648) [ #2023, #2635 ]
  • cc50451 Clarify doc for readset validations (#2647) (#2655)
  • 3548215 Update secured_private_asset_transfer_tutorial.md
  • 56b3689 [FAB-18479] Log error if orderer can't forward SubmitRequest to Raft leader
  • dd7e921 fix duplicate entry in code snippet
  • 7871c26 Optionally disable gossip block forwarding (...
Read more

v2.4.0-beta

12 Aug 02:34
Compare
Choose a tag to compare

v2.4.0-beta Release Notes - August 12, 2021

New features

[FABGW-1] Fabric Gateway

The Hyperledger Fabric v2.4.0 Beta contains the new Fabric Gateway feature.

The Fabric Gateway is a new component that will implement much of the high-level 'gateway' programming model in the Fabric peer,
enabling the removal of much of the transaction submission and query logic from client applications, and shifting it to a common gateway component running within the Fabric peer.
The various client SDKs can therefore be slimmer, more consistent, and require less maintenance.

The Fabric Gateway will also simplify the administrative overhead of running a Fabric network because client applications
will be able to connect and submit transactions via a single network port rather than the current situation where ports
have to be opened from a client application to multiple peers across potentially multiple organizations.

The Fabric Gateway is delivered along with slim SDKs in the https://github.com/hyperledger/fabric-gateway repository.
Check out the client application samples.

[FAB-11334] Unjoin a channel from a peer

The new command peer node unjoin enables an administrator to remove (unjoin) a channel from a peer.
The peer must be stopped when the command is executed so that channel artifacts can be cleaned up.
The channel's blockchain, state database, and associated entries will be removed from the peer.
When the peer is restarted it will no longer receive blocks for the channel.

Improvements

peer and orderer - Implement legacy name constraints verification for Go 1.15

These changes reproduce the Go 1.14 name constraint verification in the MSP.
Without these changes, certificate chains that would fail verification in Go 1.14 would
successfully validate in Go 1.15 due to the change mentioned in the Go 1.15 release notes.
Specifically, if a signing certificate contains a name constraint, the leaf certificate
does not include SAN extensions, and the leaf's common name looks like a host name,
then the additional verification is performed to ensure deterministic behavior relative
to prior Fabric releases.

peer and orderer - Default log record format improvements

Expanded the width of the log record sequence number to a minimum of four characters,
moved the log sequence number and log level to the left,
and added bold formatting to the function name.
These changes keep the fixed-width columns together at the left
and add a visual break between the logging module name and log message text.

peer - New configuration option to disable gossip block forwarding

If all peers in an organization explicitly set "peer.deliveryclient.blockGossipEnabled" to false,
no peer in the organization gossips blocks to any other peer in that organization.
Use this setting when all peers pull blocks from ordering service. For more
information see deprecation announcement below: FAB-15317: Block dissemination via gossip is deprecated.

orderer - [FAB-18484] Return transaction forwarding result back to the client synchronously

With this improvement a Raft follower waits for the transaction to be forwarded to the Raft leader,
and returns the result (success or failure) back to the client accordingly.
Prior to this improvement, the Raft follower returned success after enqueueing it into the message queue,
which might have resulted in the transaction being dropped but a success being returned to the client.
Application clients should still monitor transaction commit events, since the Raft leader is not guaranteed
to deliver the transaction into a block in exception scenarios, but this improvement avoids
transactions from being dropped when there are connection issues between a Raft follower and Raft leader.

peer - Ability to override core.yaml chaincode.externalBuilders via environment variable

Since chaincode.externalBuilders is an array, it previously was not possible to set via environment variable override.
It is now possible to override chaincode.externalBuilders using an environment variable
using the format CORE_CHAINCODE_EXTERNALBUILDERS=[{name: x, path: dir1}, {name: y, path: dir2}].

Fixes

All fixes as of v2.3.2 are included in v2.4.0-beta. Additionally, the following fixes are made in v2.4.0-beta.

orderer - [FAB-18521] Consenters' metadata is not replicated while OSN catches up with snapshot

If an ordering service node crashes while replicating blocks from another ordering service,
the consenters metadata will not be available and the ordering service node will not be
able to reconnect to the consenter set upon restart. This fix ensures that an ordering
service node that is replicating blocks persists the consenters metadata so that it
can reconnect to the consenter set.

Dependencies

Fabric v2.4.0-alpha has been tested with the following dependencies:

  • Go 1.15.7
  • CouchDB v3.1.1
  • Alpine images 3.13

Deprecations (existing)

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 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 the normal config update flow.

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.

Changes:

Read more