|
| 1 | +v3.0.0-rc1 Release Notes - September 17, 2024 |
| 2 | +============================================= |
| 3 | + |
| 4 | +New features |
| 5 | +------------ |
| 6 | + |
| 7 | +**Byzantine Fault Tolerant (BFT) ordering service** |
| 8 | + |
| 9 | +Hyperledger Fabric has utilized a Raft crash fault tolerant (CFT) ordering service since version v1.4.1. |
| 10 | +A Byzantine Fault Tolerant (BFT) ordering service can withstand not only crash failures, but also a subset of nodes behaving maliciously. |
| 11 | +Fabric v3.0.0 provides a BFT ordering service based on the [SmartBFT](https://arxiv.org/abs/2107.06922) [consensus library](https://github.com/hyperledger-labs/SmartBFT). |
| 12 | +Consider using the BFT orderer if true decentralization is required, where up to and not including a third of the parties running the orderers may not be trusted due to malicious intent or being compromised. |
| 13 | +Channel capability `V3_0` must be enabled to utilize SmartBFT consensus. |
| 14 | +For more details of the BFT ordering service and other recent features, see the [What's New documentation](https://hyperledger-fabric.readthedocs.io/en/latest/whatsnew.html). |
| 15 | + |
| 16 | +**Query all approved chaincodes on a channel** |
| 17 | + |
| 18 | +The updated `peer lifecycle chaincode queryapproved` command allows you to pass only a channel name. |
| 19 | +The command will return all approved chaincodes on the channel. |
| 20 | + |
| 21 | +**Support for Ed25519** |
| 22 | + |
| 23 | +Ed25519 cryptographic algorithm is now supported in addition to ECDSA for MSP functions including transaction signing and verification. |
| 24 | +Channel capability `V3_0` must be enabled to utilize certificates with Ed25519 keys. |
| 25 | + |
| 26 | + |
| 27 | +Improvements and Fixes |
| 28 | +---------------------- |
| 29 | + |
| 30 | +All improvements and fixes as of v2.5.9 have also been included in v3.0.0. |
| 31 | + |
| 32 | + |
| 33 | +Dependencies |
| 34 | +------------ |
| 35 | +Fabric v3.0.0 has been tested with the following dependencies: |
| 36 | +* Go 1.23.1 |
| 37 | +* CouchDB v3.3.3 |
| 38 | + |
| 39 | +Fabric docker images on dockerhub utilize Ubuntu 22.04. |
| 40 | + |
| 41 | + |
| 42 | +Changes |
| 43 | +------- |
| 44 | + |
| 45 | +**peer.gossip.pvtData.transientstoreMaxBlockRetention default value increased from 1000 to 20000** |
| 46 | + |
| 47 | +`peer.gossip.pvtData.transientstoreMaxBlockRetention` specifies the number of blocks to keep uncommitted private data |
| 48 | +in the transient store before it is purged. Increasing the value provides more tolerance for delayed commits |
| 49 | +before the data is purged. |
| 50 | + |
| 51 | +**TimeWindowCheck for proposal timestamps** |
| 52 | + |
| 53 | +New `TimeWindowCheck` endorsement authFilter configured at `peer.handlers.authFilters.name` checks the timestamp of a proposal request against endorsing peer time, |
| 54 | +using the time window configured at `peer.authentication.timewindow`. |
| 55 | +This check helps to ensure that the proposal timestamp that eventually gets committed in a transaction is accurate relative to the endorsing peers. |
| 56 | + |
| 57 | +**peer.deliveryclient.blockGossipEnabled default value changed to false** |
| 58 | + |
| 59 | +Block dissemination via gossip is deprecated and may be removed in a future release, |
| 60 | +therefore `peer.deliveryclient.blockGossipEnabled` now defaults to false. |
| 61 | +Fabric peers should be configured to receive blocks directly from an ordering service |
| 62 | +node, and not gossip blocks, by using the following configuration: |
| 63 | +``` |
| 64 | +peer.gossip.orgLeader: true |
| 65 | +peer.gossip.useLeaderElection: false |
| 66 | +peer.gossip.state.enabled: false |
| 67 | +peer.deliveryclient.blockGossipEnabled: false |
| 68 | +``` |
| 69 | + |
| 70 | +Removals |
| 71 | +-------- |
| 72 | + |
| 73 | +**Support for ordering service system channel has been removed** |
| 74 | + |
| 75 | +v2.3 introduced the ability to manage an ordering service without a system channel. |
| 76 | +Managing an ordering service without a system channel has privacy, scalability, and operational benefits. |
| 77 | +The system channel is removed in Fabric v3.0, as well as the concept of a 'consortium' of organizations that can create channels. |
| 78 | +If you used the system channel in prior releases, you must remove the system channel and migrate to the channel participation API before upgrading to v3.x. |
| 79 | +For information about removal of the system channel, see the [Create a channel without system channel documentation](https://hyperledger-fabric.readthedocs.io/en/release-2.5/create_channel/create_channel_participation.html). |
| 80 | + |
| 81 | +**Support for 'Solo' consensus ordering service has been removed** |
| 82 | + |
| 83 | +The 'Solo' consensus type was intended for test environments only in prior releases and has never been supported for production environments. |
| 84 | +Support for 'Solo' consensus has been removed in Fabric v3.0. |
| 85 | +For trial environments you can utilize a single node Raft ordering service as demonstrated in the [test network tutorial](https://hyperledger-fabric.readthedocs.io/en/latest/test_network.html). |
| 86 | + |
| 87 | +**Support for 'Kafka' consensus ordering service has been removed** |
| 88 | + |
| 89 | +The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred production Crash Fault Tolerant consensus type. |
| 90 | +Support for 'Kafka' consensus has been removed in Fabric v3.0. |
| 91 | +If you used Kafka consensus in prior releases, you must migrate to Raft consensus prior to upgrading to v3.x. |
| 92 | +For details about the migration process, see the [Migrating from Kafka to Raft documentation](https://hyperledger-fabric.readthedocs.io/en/release-2.5/kafka_raft_migration.html). |
| 93 | + |
| 94 | +**Legacy chaincode lifecycle has been removed** |
| 95 | + |
| 96 | +The legacy chaincode lifecycle from Fabric v1.x is removed in v3.x. |
| 97 | +Prior to upgrading peers to v3.x, you must update all channels to utilize the v2.x lifecycle |
| 98 | +by setting the channel application capability to either V2_0 or V2_5, |
| 99 | +and redeploying all chaincodes using the v2.x lifecycle. The new |
| 100 | +chaincode lifecycle provides a more flexible and robust governance model |
| 101 | +for chaincodes. For more details see the |
| 102 | +[documentation for enabling the new lifecycle](https://hyperledger-fabric.readthedocs.io/en/release-2.5/enable_cc_lifecycle.html). |
| 103 | + |
| 104 | +**Support for specifying orderer endpoints at the `OrdererAddresses` global level in channel configuration has been removed when using V3_0 channel capability** |
| 105 | + |
| 106 | +Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead. |
| 107 | +Configuring orderer endpoints at the organization level accommodates |
| 108 | +scenarios where orderers are run by different organizations. Using |
| 109 | +this configuration ensures that only the TLS CA certificates of that organization |
| 110 | +are used for orderer communications; in contrast to the global channel level endpoints which |
| 111 | +would cause an aggregation of all orderer TLS CA certificates across |
| 112 | +all orderer organizations to be used for orderer communications. |
| 113 | +Remove the `OrdererAddresses` global configuration prior to enabling the `V3_0` channel capability. |
| 114 | + |
| 115 | +**Support for configtxgen flag `--outputAnchorPeersUpdate` has been removed** |
| 116 | + |
| 117 | +The former `--outputAnchorPeersUpdate` mechanism for updating anchor peers has always had |
| 118 | +limitations (for instance, it only works the first time anchor peers are updated). |
| 119 | +Instead, anchor peer updates should be performed through channel configuration updates. |
| 120 | + |
| 121 | +**The fabric-tools docker image is no longer available** |
| 122 | + |
| 123 | +The fabric-tools docker image is no longer published for Fabric releases. |
| 124 | +Instead of using the fabric-tools docker image, users should utilize the |
| 125 | +published Fabric binaries. The Fabric binaries can be used to make client calls |
| 126 | +to Fabric runtime components, regardless of where the Fabric components are running. |
| 127 | + |
| 128 | +Deprecated features |
| 129 | +------------------- |
| 130 | + |
| 131 | +**Block dissemination via gossip is deprecated and may be removed** |
| 132 | + |
| 133 | +Block dissemination via gossip is deprecated and may be removed in a future release. |
| 134 | +Fabric peers can be configured to receive blocks directly from an ordering service |
| 135 | +node, and not gossip blocks, by using the following configuration: |
| 136 | +``` |
| 137 | +peer.gossip.orgLeader: true |
| 138 | +peer.gossip.useLeaderElection: false |
| 139 | +peer.gossip.state.enabled: false |
| 140 | +peer.deliveryclient.blockGossipEnabled: false |
| 141 | +``` |
0 commit comments