github.com/pvitto98/fabric@v2.1.1+incompatible/release_notes/v2.0.0-beta.md (about) 1 v2.0.0-beta Release Notes - December 12, 2019 2 ============================================= 3 4 What's New in Hyperledger Fabric v2.0 5 ------------------------------------- 6 7 The following new major features are included in the v2.0.0 Beta release. 8 For additional details, see the What's New documentation. 9 10 **FAB-11237: Decentralized chaincode governance** 11 12 Fabric 2.0 introduces decentralized governance for chaincode, with a 13 new process for installing a chaincode on your peers and starting it on a 14 channel. The new Fabric chaincode lifecycle allows multiple organizations to 15 come to agreement on the parameters of a chaincode, such as the chaincode 16 endorsement policy, before it can be used to interact with the ledger. 17 18 **FAB-13584: External chaincode launcher** 19 20 While chaincode is still run in a docker container by default in Fabric v2.0, 21 the external chaincode launcher feature empowers operators to build and launch 22 chaincode with the technology of their choice. 23 24 **Private data enhancements** 25 - **FAB-10889: Implicit org-specific collections** 26 - **FAB-15066: Endorsement policies for collections** 27 - **FAB-13581: memberOnlyWrite collection configuration option** 28 - **FAB-13527: GetPrivateDataHash chaincode API** 29 - **FAB-12043: Option to include private data in block events** 30 31 The private data enhancements enable new private data application patterns. 32 33 **FAB-103: State database cache for CouchDB** 34 35 A new peer cache improves performance when using CouchDB state database. 36 37 38 Fixes 39 ----- 40 All fixes as of release v1.4.4 are also included in v2.0.0-beta. 41 42 For the full list of fixes, refer to the release change log. 43 44 45 Changes 46 ------- 47 **FAB-11144: Removal of native token support** 48 49 The native token support included in v2.0.0-alpha has been removed. 50 An improved implementation is being evaluated for future releases. 51 52 **FAB-5177: The ccenv build image no longer includes the shim** 53 54 The shim package and dependencies for go chaincode are no longer included in 55 the chaincode build environment. Chaincode packages that do not include their 56 own dependencies will no longer successfully build on the peer. We strongly 57 recommend that existing go chaincode be updated to vendor the 58 github.com/hyperledger/fabric-chaincode-go/shim package and its dependencies. 59 While there are many tools for managing vendored dependencies, we recommend 60 moving directly to go modules and vendoring with `go mod vendor`. 61 62 **FAB-15366: Logger removed from chaincode shim** 63 64 Chaincode that used the shim's NewLogger() will need to shift to a new 65 logging mechanism. Chaincode logging is intended to be the responsibility 66 of the application developer. As such it should be handled using tools and 67 libraries that make the most sense to the chaincode developer and the 68 application in general. Chaincode developers can forward STDOUT and STDERR 69 from the chaincode container to the peer container by setting 70 `CORE_VM_DOCKER_ATTACHSTDOUT=true`. While not recommended for production, 71 once enabled, each chaincode will receive its own logging channel and 72 STDOUT and STDERR will be integrated in the peers log on a per-line basis. 73 A production grade approach would be to run a log aggregation service and 74 forward your logs to the aggregation service. 75 76 **FAB-16213: The go chaincode entities extension has been removed** 77 78 Chaincode implementations that used the entities extension package from an 79 earlier version of Fabric will need to vendor a 1.x version of the package 80 for as part of their chaincode package. 81 82 **FAB-14720: Support for CAR chaincode package format removed** 83 84 **FAB-15285: Support for invoking system chaincodes from user chaincodes 85 has been removed.** 86 87 System chaincodes, for example QSCC, are intended to be 88 invoked by a client rather than by a user chaincode. Invoking from a user 89 chaincode caused deadlocks in prior releases. 90 91 **FAB-15390: Support for peer's Admin service has been removed.** 92 93 The peer's Admin service exposed APIs such as GetLogSpec() and SetLogSpec(). 94 Instead of using these services, utilize the HTTP operations service that was 95 introduced in v1.4.0. 96 97 **FAB-16303: GetHistoryForKey returns results from newest to oldest** 98 99 In prior releases, the GetHistoryForKey chaincode API had no 100 guarantees on the order of returned results. 101 Starting in Fabric v2.0, the GetHistoryForKey chaincode API 102 will return results from newest to oldest in terms of ordered transaction 103 height (block height and transaction height within block). 104 This will allow applications to iterate through the top results 105 to understand recent changes to a key. 106 107 **FAB-16722: The 'provisional' genesis method of generating the system channel 108 for orderers has been removed.** 109 110 Existing users of the provisional genesis method 111 should instead set BootstrapMethod to 'file', and generate a genesis block file 112 using configtxgen. Orderer nodes will then use the generated file for the 113 orderer system channel. 114 115 **FAB-16477 and FAB-17116: New configuration for orderer genesismethod and genesisfile** 116 117 The orderer config `general.genesismethod` and `general.genesisfile` are replaced 118 by the new `general.bootstrapmethod` and `general.bootstrapfile`. 119 120 **FAB-15343: System Chaincode Plugins have been removed.** 121 122 As part of a general 123 move away from go plugins as an extension mechanism for Fabric, the ability to 124 add system chaincodes via go plugins has been removed. Users wishing to extend 125 Fabric with custom system chaincodes may rebuild the peer binary with the 126 system chaincode built into the binary. This system chaincode should then be 127 defined and initialized like any other user chaincode would be. This new model 128 is very similar to the plugin model (which required that the plugin to be built 129 at the same exact commit of Fabric), and addresses the significant shortcomings 130 around the lifecycle and validation of system chaincode transactions. 131 132 **FAB-11096: Docker images with Alpine Linux** 133 134 Hyperledger Fabric Docker images will now use Alpine Linux, 135 a security-oriented, lightweight Linux distribution. 136 137 **FAB-11096: Bash not available in Docker images with Alpine Linux** 138 Bash is no longer available in Fabric images. Utilize Alpine's built-in 139 sh or ash instead. 140 141 **FAB-16987: Go version has been updated to 1.13.4.** 142 143 144 Deprecations 145 ------------ 146 147 **FAB-15754: The 'Solo' consensus type is deprecated.** 148 149 The 'Solo' consensus type has always been marked non-production and should be in 150 use only in test environments, however for compatibility it is still available, 151 but may be removed entirely in a future release. 152 153 **FAB-16408: The 'Kafka' consensus type is deprecated.** 154 155 The 'Raft' consensus type was introduced in v1.4.1 and has become the preferred 156 production consensus type. There is a documented and tested migration path from 157 Kafka to Raft, and existing users should migrate to the newer Raft consensus type. 158 For compatibility with existing deployments, Kafka is still supported, 159 but may be removed entirely in a future release. 160 161 **FAB-7559: Support for specifying orderer endpoints at the global level 162 in channel configuration is deprecated.** 163 164 Utilize the new 'OrdererEndpoints' stanza within the channel configuration of an organization instead. 165 Configuring orderer endpoints at the organization level accommodates 166 scenarios where orderers are run by different organizations. Using 167 this configuration ensures that only the TLS CA certificates of that organization 168 are used for orderer communications, in contrast to the global channel level endpoints which 169 would cause an aggregation of all orderer TLS CA certificates across 170 all orderer organizations to be used for orderer communications. 171 172 Known Issues and Workarounds 173 ---------------------------- 174 **FAB-12134: Same chaincode source receiving fingerprint mismatch error** 175 176 When using the legacy chaincode lifecycle, chaincode installed in different 177 ways may result in "chaincode fingerprint mismatch data mismatch" error 178 upon instantiation. This may happen when installing chaincode by using 179 different SDKs. To workaround the problem, package the chaincode prior to 180 installation and instantiation, by using the "peer chaincode package" command. 181 182 183 Known Vulnerabilities 184 --------------------- 185 **FAB-8664: Peer should detect and react when its org has been removed** 186 187 This is a relatively low severity problem, because it requires a significant 188 conspiracy of network admins, but it will be addressed in a future release. 189 190 191 Resolved Vulnerabilities 192 ------------------------ 193 None. 194 195 For the full list of improvements and fixes, refer to the release change log: 196 https://github.com/hyperledger/fabric/blob/master/CHANGELOG.md#v200-beta