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:
- a330b66 Add release notes for v2.4.0-beta release
- dac896a Add slash command for invalid issue
- 474badd Better error messages from Gateway
- 497a177 Fix FAB-18528: remove panic in ifConfig func (#2828)
- c41ffff Fix small doc errors (#2816)
- 99d2e32 Output File Exists Error
- ea48474 [FAB-11334] Adds a 'peer node unjoin' CLI entrypoint to unjoin a peer from a channel (#2769)
- 87ea070 Gateway enabled by default
- 5331bbc FAB-18067 Discovery support Implicit Collections (#2784)
- 240cf0e Merge and enhance coding guidelines across github and wiki
See More
- bb8bada [FAB-11334] Adds a function to purge a ledger's transient storage (#2769)
- f662d98 FABGW-25 Endorse using generated ChaincodeInterest (#2773)
- 71037f3 Update CHANGELOG.md
- 95fb683 Hardening raft catchup IT
- 463271e FAB 18365 evictionsuspicion failing when osn failed (#2780)
- fe71474 Additional documentation for implicit private data collections
- fa3960b FABGW-25 Test for system chaincode (#2771) [ #2767 ]
- 52b12dc Update private data docs - remove SDK reference (#2770)
- 26ec54a FABGW-25 Build ChaincodeInterest in TX simulator (#2767)
- e5e623d [FAB-18527] Discovery supports DisregardNamespacePolicy hint from client (#2768)
- 9a922fd [FAB-18527] Discovery supports state based endorsement queries (#2764)
- 84c1270 [FABGW-25] Move chaincode interest to proposal response proto (#2763)
- ffe7d36 [FAB-18521] Fixing flaky IT, send remove tx to another node (#2761) [ #2748 ]
- 44ab2bf [FAB-18521] Replicate block metadata with block while OSN catching up (#2748)
- 2c69863 Update test network tutorial for new profile
- e4b66f9 Update boostrap.sh for test network
- cf263b0 [FAB-11334] Scrubs partially constructed/deleted ledgers at peer init (#2754)
- 62cd59c fixed peer documents
- f7f77af fixed peer sample config
- fda47c5 Renamed Ledger Binary To Ledgerutil (#2746)
- 9736485 [FAB-11334] Adds a new 'peer node unjoin' feature (#2732)
- 73c46a1 Updated enrollUser function in write_first_app Doc (#2713)
- 965664f Update docs to clarify that an implicit collection can not have an index
- 1249da2 [FAB-18509] Stop panic of collection index path is wrong (#2726)
- 9c3d459 [FAB-18508] ledger utility always outputs txNum (#2724)
- 4c4e58c File Location Flag (#2709)
- b5e0d27 Added a possibility to override chaincode.externalBuilders via env variable (#2643)
- 1f1c303 fix typo
- b034225 [Doc-Update] + What is a commercial paper section
- 1ee03b3 Add function to delete the ledger data for a channel (#2722)
- 7151302 Fixed grammatical errors
- 4e2f86e Fix a typo in CouchDB tutorial
- 3a75b65 Use protoc-gen-go 1.3.3 for generating protos [ #2113 ]
- 8ce450e Fix typo
- 4422a19 Fix peerchaincode.md as well
- 4e67cbe Add explanation of
--ctor
JSON string - cdd5a04 Compare Snapshots Utility
- d80cd2a Clarify Verify behaviour in PKCS11 Impl
- d55dc8e fix typo (#2695)
- 8689771 Retire Will Lahti as maintainer (#2704)
- 16259ed Mandate TLS 1.2 or higher in fabhttp package
- b5a4fe9 Address PR comments in Gateway integration tests
- 52c09b6 Clarify orderers seeing the transaction data
- aa0b33f Retire Brett Logan as maintainer
- 00910ba Handle missing endpoints from discovery
- dc09b6e Cherry pick deploy CC fixes to main branch
- fd218eb Clarify "identity expired" error messages (#2685)
- d9e850d Fix spelling mistakes in the Github Contributions page
- 3c7fa86 [FAB-18484] Return transaction forwarding result back to the client synchronously
- 6fbca49 Update Artem Barger email address (#2671)
- c81f265 Link fixes detailed in FAB-18494
- 266497f Typo fix in peer deployment guide in main (#2660)
- b4cd030 Link fixes in create channel tutorial (#2661)
- dde41d9 Fix link in orderer deployment guide in main
- b2f7292 Improve mvcc log warnings (#2649)
- 04796e6 Use protobuf Getters to avoid nil reference (#2646)
- 07808a0 Clarify doc for readset validations (#2647)
- a8dbb68 FABGW-20 Implement TargetOrgs for Evaluate() (#2642)
- 85ae90c Added RetrieveBlockByNumber into blockledger (#2635)
- 1ad4422 Update secured_private_asset_transfer_tutorial.md
- 1f89be9 FABGW-21: Realtime implementation of ChaincodeEvents service (#2604)
- 34a4186 Fix minor code comment
- 9170fea Return block number along with validation code (#2614)
- e8e39e6 [FAB-18479] Log error if orderer can't forward SubmitRequest to Raft leader
- f1fc499 fix duplicate entry in code snippet
- 17dc11c Update Building docs to reflect UI changes
- 0334d52 replace brew cask install --appdir='/Applications' docker with brew install --cask docker
- 4e201af Optionally disable gossip block forwarding (#2606)
- b4efe85 FABGW-20 Specify endorsing organizations (#2578)
- 6f0bef1 Bump vmImage to Ubuntu-20.04
- f8070ec Maintain order of transactions in the commit notification
- cca66b6 Add chaincode events in the commit notification
- 885e83d FABGW-18: Fix concurrency issue in commit notifier close (#2599)
- 856c5a1 Update docs/source/upgrade_to_newest_version.md
- d296963 Govendor added to documentation
- 13bcf3f Improve Logging When Data File Does Not Exist (#2586)
- dbf7eb1 Improve error message for invalid consenter cert (#2587)
- 5e1e590 fix typo
- b20d356 fix typo
- 318510f modify some errors
- c73f893 Revert "Simplify GitHub Action for AZP Triggering"
- 1866ade FABGW-19: Secure CommitStatus service (#2570)
- df8c049 fix typo
- c03ccf8 Fix incorrect error message in Gateway submit
- edd0f04 fix typo (#2569)
- 2d50402 Add log warning for unathorized operations requests (#2567)
- 627f963 Corrected function name in comments (#2568)
- ef59964 Removed early mentioning of organization R3
- f2c0f8e Updates in main branch for release v2.3.2
- 3798624 fix typo (#2564)
- b96fa09 Add debug for policy defaults (#2559)
- 12f9b40 Remove redundant casts (#2558)
- bd640c8 Remove redundant comma (#2557)
- 7db78b3 Remove redundant type cast
- ed1026c fix typo
- 6790f42 fix typo
- d5ab072 fix typo
- 7c91224 Prepare for next release v2.4.0
- deecdf9 Update email addresses (#2544)
- a18f1c7 Fix Typo
- 92ca023 Fixed grammar in docs for membership
- 06509ad v2.4.0-alpha release notes
- 4365412 remove redundant slice cast
- 5d500ee Fixed Typo
- d001dbc Add debug for gateway endorsement requests (#2538)
- 4cfc722 Skip plugin tests when the noplugin tag is used (#2535)
- ba7e923 fix: fix typo
- dead74f Fixed Typo (#2533)
- c7dc5d7 Improve snapshot dir error message
- 3714ca3 Document ledger.snapshots.rootDir
- b1f4329 Simplify GitHub Action for AZP Triggering
- a8bfc98 Update deploy_chaincode.md
- 345a08b Add Security Model topic to docs
- aefa755 Fix link in
international_languages.md
- a559b2c Fix timeout in orderer connection from gateway
- d88e09c peer: the 'noplugin' build tag disables plugins
- f5de431 FABGW-9 Select endorsers with max block height
- f4dba9d Fix old or incorrect contents in the doc build instruction
- 576d186 Fix the fix for race condition in Finder unit test (#2504)
- 1147977 Clarify private data doc for endorsement policies (#2502)
- 1cc0ed0 Clarify private data doc related to private data responses. (#2501)
- 7ac0b60 FABGW-8: Fix race condition in Finder unit test
- 62e327e FABGW-8: Implement Gateway CommitStatus service
- a1d06eb Wire function parameter to its actual usage (#2499)
- 4793d86 build(deps): bump jinja2 from 2.10.1 to 2.11.3 in /docs
- 54e27a6 Update "master" branch references to "main".
- c0ca3c2 Regression test for prev commit "Bugfix: loadLastConfig wrongly returns nil instead of error"
- a54199b FABGW-8: Hook commit notifier into Gateway service
- 13092bb Bugfix: loadLastConfig wrongly returns nil instead of error
- 18b78da integration: PKCS#11 SKI to CKA_ID mapping test
- 5484a18 pkcs11: Add SKI to CKA_ID mapping for BCCSP [ #11 ]
- 178de67 nwo: capture config file updates through network
- fffb2bf docs: Add some comments about untested code
- fd72843 Handle unsuccessful status from Gateway orderer send
- 9319f4a Prepared tx must be signed before submission
- ab79e69 FABGW-8: Tidy up commit notifier
- fad002c Gateway error logic refactor
- 5ff76d3 Tidy up gateway unit tests
- 76763d1 FABGW-8: Wait for transaction commits
- b40f703 platform/golang: loosen assertion for Go 1.16.2 (#2480)
- fd62c39 msp/mgmt: remove reflect based type assertion
- e5827c5 lscc: remove GetManagerForChain from prod code
- 2c7c37d peer: remove GetManagerFromChain from prod code
- ba6a87e peer: use MSPManager from bundle instead of mspmgmt
- 86d1d0a common: remove the unused common/config package
- 85dbd43 cscc: stop wiring policy.PolicyChecker
- 7204344 peer: remove NewConfigSupport and friends
- e2218d7 msp/mgmt: remove Setup/Deserialize wrappers
- c40cce0 msp/mgmt: remove LoadLocalMsp
- 50406fe msp/mgmt: remove LoadLocalMspWithType
- 8e3751a msp/mgmt: remove GetLocalSigningIdentityOrPanic
- c4eb80f peer: stop using GetLocalSigningIdentityOrPanic
- 10b09b9 msp/mgmt: move TestLocalMSP into mgmt_test
- 1dbd6e9 msp/mgmt: move MSPPrincipalGetter to policy
- bfa7dcf Remove unused policy checker from lscc
- e6a04b9 msp/mgmt: move DeserializersManager its user
- ed964d3 msp: construct DeserializersManager with local MSP
- 0c28b4e Update Gateway with latest fabric-proto-go version
- dc5ceca Implementation for commit notification events for embedded gateway.
- 73d6539 Gateway gRPC functions to return google.rpc.Status
- 8edf513 Update fabric-proto-go to latest version
- 2d81cb2 FABGW-6 endpoint factory to use refactored comms
- e71b99a Provide commit events from ledger (#2470)
- 69b636c Run
go mod tidy
with the latest Go version - 8209646 Remove un-needed casts in discovery_impl.go (#2469)
- 0afd404 Upgrade goleveldb
- 542f320 comm: move GetLocalIP to its caller
- acceb08 comm: move cert extraction to common/util
- ef156bd comm: move BindingInspector to its consumer
- a2f2fa5 comm: remove AddPemToCertPool
- 61ecf96 comm: remove GRPCClient structure
- 701ef16 comm: get dial options from config at new conn
- 505b917 comm: remove unused fixtures from testdata
- 1767b55 comm: remove TLSOption list from NewConnection
- 3a91146 deliverservice: update DialerAdapter signature
- a402702 deliverservice: replace CertPool PEM certs
- ac5fd79 comm: stop passing GRPCConnection to deliver svc
- 933ac90 comm: move ServerNameOverride to SecureOptions
- 5242742 comm: remove GRPCClient#SetServerRootCAs
- ca15dc4 comm: remove GRPCClient#TLSEnabled
- 8c7cb70 comm: move Certificate to SecureOptions#ClientCert
- 8ae44de comm: remove MutualTLSRequired from GRPCClient
- e7b9c38 comm: ClientConfig builds the grpc.DialOption list
- d944633 comm: rename ClientConfig#Timeout to DialTimeout
- 6281c0c comm: SecureOptions used to build TLSConfig
- e0fbdf3 comm: hang option accessors off KeepaliveOptions
- ab9ff14 comm: remove ClientConfig#Clone
- 4829636 Add a note explaining channel name restrictions on test network tutorial
- 9ac47b1 FABGW-6 Use concurrent go routines for endorsement
- 6279191 Initial gateway integration tests
- 4a37575 Update Prereq, Install, and SDK docs
- 15e95d6 Docs: Update Getting Started section with install commands and add links to asset transfer basic.
- e1915a3 Change name of comm msg size default consts
- 6a458ad Refactor max message sizes in comm client config
- 11636f5 Replace WaitGroups with channels and timeouts
- fda1ee7 hygiene: minor cleanup from previous commits
- b83dacf Replace Config interface with ConfigUpdate struct
- 7751eae hygiene: remove camelCase import name
- 7a8e1de FABGW-6 Implement Submit()
- 7172484 protoutil: add CreateTx helper
- 21a800b integration: exercise osnadmin in the e2e suite
- e708729 osnadmin: add --no-status flag to remove Status
- e53b900 Add check-help-docs target to basic checks
- 7dc4d03 integration: throttle grpc/http client creation
- 9c3a732 integration/ledger: rename commitTx argument
- 2f78967 Add tools target for the tools docker image
- 5bad6ae deps: bump fabric-config to v0.1.0
- e0253ef Fix images in network concept and upload new diagrams power point
- c4e6a48 Increase build timeout for integration/pluggable
- 24da29e integration: remove use of internal/peer/chaincode
- 6108e5b integration/nwo: add grpc.ClientConn accessors
- d32d1e6 integration/lifecycle: refactor RestartNetwork
- 95cb08a Bump Alpine to 3.13
- 51cf708 Add Alpine Version to Tools Image
- c73a680 integration: replace custom function with matcher
- 3b15d60 integration: move templates to nwo/template
- 6a28a35 integration: remove yaml network definitions
- b3e6036 integration: remove helpers package
- b22af03 integration: move runners under nwo/runners
- 44abc6b Fix bug in snapshot request submission
- f0584c6 Report correct reason of stream abort in orderer cluster
- db0a864 Log stream total lifetime
- 6c3dcc4 integration/raft: use nwo.Signer
- 28b9f00 integration/kafka: use nwo.Signer
- 99e8cd5 integration/ledger: use nwo.Signer
- 8279188 integration/pvtdata: use nwo.Signer
- bd2c193 integration/lifecycle: use nwo.Signer
- ff7f98d e2e: replace common/signer with nwo.SigningIdentity
- f832807 nwo: add nwo.SigningIdentity and accessors
- ecaf697 Disable connection pool in operational clients
- d3d7e05 corrected organization labels
- 316cdcd corrected Org1 text in Org2 box to Org2
- ed8d556 Only run Kafka suite and ccenv-1.4 test on amd64
- 54ae5c7 Remove Kafka test from integration/network
- 4090606 Use busybox image for cc platform pull/build test
- 7dc39a4 add linux/runtime.GOARCH to legacy cc package deps
- 84b332d deps: bump golang/snappy for arm64 fixes
- 33886a4 Add binutils-gold to resolve link failures
- 5caf9f2 Fix a duplicate message while orderer setting up
- f9d05b3 Update x509.CertPool equality checks
This list of changes was auto generated.