github.com/defanghe/fabric@v2.1.1+incompatible/release_notes/v2.0.0.txt (about) 1 v2.0.0 Release Notes - RELEASE DATE TBD 2 --------------------------------------- 3 4 What's New in Hyperledger Fabric v2.0 5 ------------------------------------- 6 7 The following major features are included in the v2.0.0 Alpha release: 8 9 FAB-11237 - Improved chaincode lifecycle 10 Fabric 2.0 introduces decentralized governance for chaincode, with a 11 new process for installing a chaincode on your peers and starting it on a 12 channel. The new Fabric chaincode lifecycle allows multiple organizations to 13 come to agreement on the parameters of a chaincode, such as the chaincode 14 endorsement policy, before it can be used to interact with the ledger. 15 16 FAB-6135 - Raft Consensus 17 Introduced in v1.4.1 and v2.0.0, the ordering service now provides 18 an option to use the Raft Consensus algorithm. Raft is a crash fault tolerant 19 (CFT) ordering service based on an implementation of Raft protocol in etcd. 20 21 FAB-11096 - Docker images with Alpine Linux 22 Hyperledger Fabric Docker images will now use Alpine Linux, 23 a security-oriented, lightweight Linux distribution. 24 25 New operational metrics and health checks 26 FAB-13088 Endorser metrics 27 FAB-14077 Orderer communication metrics 28 FAB-11937 Raft metrics 29 FAB-13237 Metrics for log records 30 FAB-12727 Gossip metrics 31 FAB-13341 Kafka health check 32 FAB-12908 CouchDB health check 33 34 Changes, Known Issues, and Workarounds 35 -------------------------------------- 36 37 FAB-5177 - The ccenv build image no longer includes the shim 38 The shim package and dependencies for go chaincode are no longer included in 39 the chaincode build environment. Chaincode packages that do not include their 40 own dependencies will no longer successfully build on the peer. We strongly 41 recommend that existing go chaincode be updated to vendor the 42 github.com/hyperledger/fabric-chaincode-go/shim package and its dependencies. 43 While there are many tools for managing vendored dependencies, we recommend 44 moving directly to go modules and vendoring with `go mod vendor`. 45 46 FAB-11096 - Docker images with Alpine Linux 47 Bash is no longer available in Fabric images. Utilize Alpine's built-in 48 sh or ash instead. 49 50 FAB-12075 - Duplicate Go Client identity library removed 51 If vendoring the Client identity library (CID) in chaincode, import 52 github.com/hyperledger/fabric/core/chaincode/shim/ext/cid 53 rather than 54 github.com/hyperledger/fabriccore/chaincode/lib/cid/cid.go 55 56 FAB-12088 - Java chaincode support on s390x architecture 57 Java chaincode support is not yet available on s390x architecture. 58 59 FAB-12134 - Same chaincode source receiving fingerprint mismatch error 60 Chaincode installed in different ways may result in "chaincode fingerprint 61 mismatch data mismatch" error upon instantiation. This may happen when 62 installing chaincode by using different SDKs. To workaround the problem, 63 package the chaincode prior to installation and instantiation, by using 64 the "peer chaincode package" command. 65 66 FAB-15366 - Logger removed from chaincode shim 67 Chaincode that used the shim's NewLogger() will need to shift to a new 68 logging mechanism. Chaincode logging is intended to be the responsibility 69 of the application developer. As such it should be handled using tools and 70 libraries that make the most sense to the chaincode developer and the 71 application in general. Chaincode developers can forward STDOUT and STDERR 72 from the chaincode container to the peer container by setting 73 `CORE_VM_DOCKER_ATTACHSTDOUT=true`. While not recommended for production, 74 once enabled, each chaincode will receive its own logging channel and 75 STDOUT and STDERR will be integrated in the peers log on a per-line basis. 76 A production grade approach would be to run a log aggregation service and 77 forward your logs to the aggregation service. 78 79 FAB-16213 - The go chaincode entities extension has been removed 80 Chaincode implementations that used the entities extension package from an 81 earlier version of Fabric will need to vendor a 1.x version of the package 82 for as part of their chaincode package. 83 84 FAB-16303 - GetHistoryForKey returns results from newest to oldest 85 In prior releases, the GetHistoryForKey chaincode API had no 86 guarantees on the order of returned results. 87 Starting in Fabric v2.0, the GetHistoryForKey chaincode API 88 will return results from newest to oldest in terms of ordered transaction 89 height (block height and transaction height within block). 90 This will allow applications to iterate through the top results 91 to understand recent changes to a key. 92 93 FAB-16722 - The 'provisional' genesis method of generating the system channel 94 for orderers has been removed. Existing users of the provisional genesis method 95 should instead set BootstrapMethod to 'file', and generate a genesis block file 96 using configtxgen. Orderer nodes will then use the generated file for the 97 orderer system channel. 98 99 FAB-15343 - System Chaincode Plugins have been removed. As part of a general 100 move away from go plugins as an extension mechanism for Fabric, the ability to 101 add system chaincodes via go plugins has been removed. Users wishing to extend 102 Fabric with custom system chaincodes may rebuild the peer binary with the 103 system chaincode built into the binary. This system chaincode should then be 104 defined and initialized like any other user chaincode would be. This new model 105 is very similar to the plugin model (which required that the plugin to be built 106 at the same exact commit of Fabric), and addresses the significant shortcomings 107 around the lifecycle and validation of system chaincode transactions. 108 109 FAB-15754 - The 'Solo' consensus type is officially deprecated. The 'Solo' 110 consensus type has always been marked non-production and should be in use only 111 in test environments, however for compatibility it is still available, but may 112 be removed entirely in a future release. 113 114 FAB-16408 - The 'Kafka' consensus type is officially deprecated. The 'Raft' 115 consensus type was introduced in v1.4.1 and has become the preferred production 116 consensus type. There is a documented and tested migration path from Kafka to 117 Raft, and existing users should migrate to the newer Raft consensus type. For 118 compatibility with existing deployments, Kafka is still supported, but may be 119 removed entirely in a future release. 120 121 FAB-16477 and FAB-17116 The orderer config `general.genesismethod` and 122 `general.genesisfile` will be replaced by the new `general.bootstrapmethod` and 123 `general.bootstrapfile`. 124 125 FAB-17428 - The configtxgen flag `--outputAnchorPeersUpdate` is officially deprecated. 126 This flag was originally used for creating channel config updates to update an anchor peer 127 and only worked for the first update of the default channel creation. The flag will be 128 officially removed in FAB-17427 in favor of using the `configtx.yaml` for the default 129 channel configuration. 130 131 Known Vulnerabilities 132 --------------------- 133 FAB-8664 - Peer should detect and react when its org has been removed 134 This is a relatively low severity problem, because it requires a significant 135 conspiracy of network admins, but it will be addressed in a future release. 136 137 Resolved Vulnerabilities 138 ------------------------ 139 None. 140 141 Other improvements and fixes 142 ---------------------------- 143 FAB-13471 - Fix for multiple chaincode upgrades in a single block 144 FAB-14687 - Fix memory leak in gossip message store 145 Updated to Go version 1.12.5 146 147 For the full list of improvements and fixes, refer to the release change log: 148 https://github.com/hyperledger/fabric/blob/master/CHANGELOG.md#v200