v2.0.0-beta Release Notes - December 12, 2019
What's New in Hyperledger Fabric v2.0
The following new major features are included in the v2.0.0 Beta release.
For additional details, see the What's New documentation.
FAB-11237: Decentralized chaincode governance
Fabric 2.0 introduces decentralized governance for chaincode, with a
new process for installing a chaincode on your peers and starting it on a
channel. The new Fabric chaincode lifecycle allows multiple organizations to
come to agreement on the parameters of a chaincode, such as the chaincode
endorsement policy, before it can be used to interact with the ledger.
FAB-13584: External chaincode launcher
While chaincode is still run in a docker container by default in Fabric v2.0,
the external chaincode launcher feature empowers operators to build and launch
chaincode with the technology of their choice.
Private data enhancements
- FAB-10889: Implicit org-specific collections
- FAB-15066: Endorsement policies for collections
- FAB-13581: memberOnlyWrite collection configuration option
- FAB-13527: GetPrivateDataHash chaincode API
- FAB-12043: Option to include private data in block events
The private data enhancements enable new private data application patterns.
FAB-103: State database cache for CouchDB
A new peer cache improves performance when using CouchDB state database.
Fixes
All fixes as of release v1.4.4 are also included in v2.0.0-beta.
For the full list of fixes, refer to the release change log.
Changes
FAB-11144: Removal of native token support
The native token support included in v2.0.0-alpha has been removed.
An improved implementation is being evaluated for future releases.
FAB-5177: The ccenv build image no longer includes the shim
The shim package and dependencies for go chaincode are no longer included in
the chaincode build environment. Chaincode packages that do not include their
own dependencies will no longer successfully build on the peer. We strongly
recommend that existing go chaincode be updated to vendor the
github.com/hyperledger/fabric-chaincode-go/shim package and its dependencies.
While there are many tools for managing vendored dependencies, we recommend
moving directly to go modules and vendoring with go mod vendor
.
FAB-15366: Logger removed from chaincode shim
Chaincode that used the shim's NewLogger() will need to shift to a new
logging mechanism. Chaincode logging is intended to be the responsibility
of the application developer. As such it should be handled using tools and
libraries that make the most sense to the chaincode developer and the
application in general. Chaincode developers can forward STDOUT and STDERR
from the chaincode container to the peer container by setting
CORE_VM_DOCKER_ATTACHSTDOUT=true
. While not recommended for production,
once enabled, each chaincode will receive its own logging channel and
STDOUT and STDERR will be integrated in the peers log on a per-line basis.
A production grade approach would be to run a log aggregation service and
forward your logs to the aggregation service.
FAB-16213: The go chaincode entities extension has been removed
Chaincode implementations that used the entities extension package from an
earlier version of Fabric will need to vendor a 1.x version of the package
for as part of their chaincode package.
FAB-14720: Support for CAR chaincode package format removed
FAB-15285: Support for invoking system chaincodes from user chaincodes
has been removed.
System chaincodes, for example QSCC, are intended to be
invoked by a client rather than by a user chaincode. Invoking from a user
chaincode caused deadlocks in prior releases.
FAB-15390: Support for peer's Admin service has been removed.
The peer's Admin service exposed APIs such as GetLogSpec() and SetLogSpec().
Instead of using these services, utilize the HTTP operations service that was
introduced in v1.4.0.
FAB-16303: GetHistoryForKey returns results from newest to oldest
In prior releases, the GetHistoryForKey chaincode API had no
guarantees on the order of returned results.
Starting in Fabric v2.0, the GetHistoryForKey chaincode API
will return results from newest to oldest in terms of ordered transaction
height (block height and transaction height within block).
This will allow applications to iterate through the top results
to understand recent changes to a key.
FAB-16722: The 'provisional' genesis method of generating the system channel
for orderers has been removed.
Existing users of the provisional genesis method
should instead set BootstrapMethod to 'file', and generate a genesis block file
using configtxgen. Orderer nodes will then use the generated file for the
orderer system channel.
FAB-16477 and FAB-17116: New configuration for orderer genesismethod and genesisfile
The orderer config general.genesismethod
and general.genesisfile
are replaced
by the new general.bootstrapmethod
and general.bootstrapfile
.
FAB-15343: System Chaincode Plugins have been removed.
As part of a general
move away from go plugins as an extension mechanism for Fabric, the ability to
add system chaincodes via go plugins has been removed. Users wishing to extend
Fabric with custom system chaincodes may rebuild the peer binary with the
system chaincode built into the binary. This system chaincode should then be
defined and initialized like any other user chaincode would be. This new model
is very similar to the plugin model (which required that the plugin to be built
at the same exact commit of Fabric), and addresses the significant shortcomings
around the lifecycle and validation of system chaincode transactions.
FAB-11096: Docker images with Alpine Linux
Hyperledger Fabric Docker images will now use Alpine Linux,
a security-oriented, lightweight Linux distribution.
FAB-11096: Bash not available in Docker images with Alpine Linux
Bash is no longer available in Fabric images. Utilize Alpine's built-in
sh or ash instead.
FAB-16987: Go version has been updated to 1.13.4.
Deprecations
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.
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.
Known Issues and Workarounds
FAB-12134: Same chaincode source receiving fingerprint mismatch error
When using the legacy chaincode lifecycle, chaincode installed in different
ways may result in "chaincode fingerprint mismatch data mismatch" error
upon instantiation. This may happen when installing chaincode by using
different SDKs. To workaround the problem, package the chaincode prior to
installation and instantiation, by using the "peer chaincode package" command.
Known Vulnerabilities
FAB-8664: Peer should detect and react when its org has been removed
This is a relatively low severity problem, because it requires a significant
conspiracy of network admins, but it will be addressed in a future release.
Resolved Vulnerabilities
None.
For the full list of improvements and fixes, refer to the release change log:
https://github.com/hyperledger/fabric/blob/master/CHANGELOG.md#v200-beta
Changes:
- 242b1e3 [FAB-17247] Release fabric v2.0.0-beta
- 16d8436 Update byfn download command
- 6de9dc2 Change 'node' language to 'javascript'
- 7cd1eda Add release notes for v2.0.0-beta
- 5deab9a Merge pull request #399 from pamandrejko/FAB-14083
- 402a077 [FAB-17199] Add new test network tutorial
- 2420fa5 Merge branch 'master' into FAB-14083
- 1432b66 [FAB-14083] Chaincode as an external service documentation
- f93acfa [FAB-17239] What's new links 2.0 beta
- c37f8cf [FAB-17240] Small fix to upgrade doc
See More
- 2e44a2a [FAB-16906] Chaincode launcher doc
- 79a4e8c Modified doc links and a few edits
- e73407f [FAB-14086] Chaincode launcher doc
- c3a3723 Merge pull request #384 from wlahti/FAB-17160
- 5e4ede7 [FAB-16754] Upgrade doc
- 339e682 Add two digit release variable
- 7d91ef4 What's New in Fabric v2.0 Beta
- a4bf700 Update prereq doc for Go 1.13.x
- cce46ac Add an instantiation policy cache layer
- 6f32be4 FAB-17160 Ensure peer can be started without any docker requirements
- c2c5183 FAB-17170 externalbuilder pass metadata unmangled
- e7f5ab8 FAB-16731 Use org1peer0 in lifecycle test
- 5b722b5 Merge pull request #385 from jyellick/FAB-17170-lowercase-json
- 84845ff FAB-17170 Peer CLI should encode mdata lowercase
- b1d37c6 Attempt to fix flaky integration ApproveForMyOrg
- 206795d Merge pull request #377 from satota2/FAB-17196
- 77de117 Merge pull request #381 from idiota101/gossipUpdate
- b430f81 [FAB-16125] fix allow ledger test to succeed when no tests are run
- 76765db Copy if rename fails during external build
- 49ed882 [FAB-17196] Fix broken md structures in docs
- 3e3b0fc [FAB-17135] Document private data enhancements in v2.0
- 96fefd0 FAB-17222 updating go version to go1.13.4 in vagrant dev_env
- 00eecd1 Fix incorrect block metadata documentation (#378)
- 4149c6d Merge pull request #376 from yacovm/tlsRotate
- 3cce10a [FAB-17220] Dynamically build TLS config in Raft client handshake
- f5799c0 FAB-17057 Generate crypto during orderer/common/server UT (#373)
- c3720b4 Fix for FAB-16996, Removed solo and kafka refference in BYNF doc
- 05706bb Merge pull request #370 from mastersingh24/fab-14693
- 46ccaf0 [FAB-15035] Remove couchdb HTTP Request headers from debug log
- bf085a2 FAB-14693 Vendor updated fabric-amcl package
- 1b8be06 [FAB-16937] complete by hooking CC fwork with ext. CC
- 4bde8c4 [FAB-17141] Update fabric docs for updated go programming model
- 0b4ca1c [FAB-17116] Add orderer config change to release note
- 09ad9dc [FAB-17188] unit test for couchDB revision fetching functions
- 64c888f Bump IT pull retry threshold to 7s
- 31a2d51 FAB-16437 Remove common mocks
- 2402250 FAB-16437 Remove unused common/mocks
- 6de732f FAB-16437 Remove common/mocks/config
- a1f2794 FAB-16437 Remove common/mocks/peer
- 5025cad [FAB-17150] Clean up temp dir on configure_test
- 0bfcd36 Merge pull request #357 from nikhil550/FAB-16157
- 169fc51 [FAB-15724] Improve migration integration test
- f84b1f0 Merge pull request #352 from mastersingh24/kill-common-mocks2
- f02440d Merge pull request #348 from caod123/fix-it-flake
- 0999e0e [FAB-16157] Remove references to alpha and disclaimers
- fc0a9e9 [FAB-17165] Reduce pvtdata pull-retry threshold to 3s in IT core_template
- 9dcb65e FAB-17177] Config block shouldn't verify itself in block replication (#355)
- 9fa8172 Merge pull request #333 from fnlctrl/patch-1
- c0f019e Merge pull request #323 from Shubham-koli/patch-1
- 03576df fixed typo.
- e6a9bde FAB-16437 Remove common/mocks from v20 validator
- b8aaafc FAB-16408 Deprecate the Kafka based orderer
- 6e52f56 FAB-16437 Remove common/mocks from v13 validator
- b6830f1 FAB-15343 Document removal of SCC Plugins
- 24d1954 replace http with https in install.rst
- f2dbb66 Merge pull request #321 from guoger/err-msg-improvement
- e3188cf FAB-16437 Remove common/mocks from v12 validator
- 6044822 FAB-16687 reduce mutex contention in validator
- 151ea02 [FAB-17133] Add branch to AZP trigger
- da8b99c Amend GitHub workflow guidance
- 94c3a09 Merge pull request #337 from btl5037/azp_gate
- 29dd911 fix for FAB-17156, clean up main_test folder by defer
- 7a309c7 FAB-17161 improve error message
- f0422d6 [FAB-17166] Gate UT, IT and DocBuild
- 4947729 fix FAB-17153, change temp folder mode to remove
- 0264eb6 fix FAB-17148 defer to delete 'bccsp-sw' directory (#328)
- ab4d595 [FAB-17132] Add Parallel Strategy to Integration Tests
- ea93b8f Merge pull request #325 from guoger/FAB-17158-ignore-test
- e779196 [FAB-17135] Private data sharing doc
- db73af2 fix FAB-17146
- 027d751 FAB-17158 ignore util test using build tag
- 4cec60e Merge pull request #327 from yacovm/golintgossip
- 01d1eb4 Golint gossip/gossip/
- c5d4087 FAB-17157 rm createTempDir method
- e939f9c [FAB-17116] Use bootstrapmethod for raft consensus
- dd26403 Merge pull request #313 from btl5037/action_trigger
- 7f30434 [FAB-17136] Fix the typo error (#318)
- 543e38c FAB-16393 Cleanup endorser logging
- 24afa12 [FAB-11241] Move Profiling init Service external
- cfae78e [FAB-17133] Add Action to Trigger CI
- db3b1cc Remove read-only note and Gerrit reference
- 8e33173 FAB-17105 - Fixing broken links
- 87f6240 Merge pull request #301 from maniankara/master
- d00b96e Merge "[FAB-16117] Add test to kill cc container in IT"
- c18a194 docs/source/channel_update_tutorial.rst: CHANNEL_NAME variable missing in 2 places in channel update tutorial
- fb56820 [FAB-17123] Update dep for fabric-protos-go
- 8d073c1 [FAB-17123] Revert FAB-17038
- fc86d1a Add PULL_REQUEST_TEMPLATE.md
- ef4b79f Merge "FAB-16812 Update bootstrap script"
- 2869d92 Merge "[FAB-16376] MSP_1.4.3: support for admincerts"
- 71f40ed Merge "[FAB-17115] Update doc for GitHub migration"
- 07b2f14 Merge "[FAB-15900] Add pkcs11 section to orderer.yaml"
- 75e51fb Merge "[FAB-16890] move build out of container runtime"
- 78471de Merge "[FAB-16842] prep for for ext CC config"
- 603dbf7 [FAB-16117] Add test to kill cc container in IT
- 01a80e4 Merge "FAB-16477 Fix regression in orderer bootstrap"
- ecec58b [FAB-15900] Add pkcs11 section to orderer.yaml
- 6d98cac [FAB-17115] Update doc for GitHub migration
- 4a75c13 Merge "[FAB-16118] Add IT for MSP unauthorized Peer"
- a1b83d4 FAB-16477 Fix regression in orderer bootstrap
- 8105eff FAB-16812 Update bootstrap script
- 061ef6a [FAB-16118] Add IT for MSP unauthorized Peer
- fc53b9d Merge "[FAB-17086] Update references in master for v1.4.4"
- 4a3c65c Merge "[FAB-16574] Cache results of msp.Validate function"
- 0ae7c3d Merge "Add rebuild test with real ledger data"
- 7cbbc74 Merge "[FAB-15066] Add additional IT"
- a9572d6 [FAB-16890] move build out of container runtime
- fead9d9 [FAB-16842] prep for for ext CC config
- 3d8825e Add rebuild test with real ledger data
- ddd24b9 [FAB-15066] Add additional IT
- bbdfa7f Merge "[FAB-16560] Fix review comments"
- f747ff1 [FAB-16574] Cache results of msp.Validate function
- d41953a Merge "FAB-17097 Implemented recommendations after review"
- 8eab735 Merge "FAB-17097"
- ba2b328 Merge "[FAB-16921] Upgrade older ledger data w/ couchdb"
- 2c5c442 Merge "[FAB-17118] Make CI scripts executable"
- 29056b0 [FAB-16921] Upgrade older ledger data w/ couchdb
- 127e224 Merge "[FAB-16169] Separate unmarshalling from validation"
- 96651c6 Merge "Convert creation block to genesis block early on"
- 67d4f6f Merge "FAB-16969"
- c665f14 [FAB-17118] Make CI scripts executable
- f421582 Merge "[FAB-16169] clean up tests"
- 3adcab3 Merge "Minor cleanup for orderer without a system channel"
- 8aca8e7 Merge "[FAB-16169] CR Comments"
- 5c898da Merge "[FAB-16377] Perform validation of channel ID"
- 7cc8760 Merge "[FAB-16170] hdr validation for endorser transactions"
- 60ef90d Merge "[FAB-15066] Enable endorsement policies for collections"
- 1946812 Merge "[FAB-15066] Cleanup pvtdata integration test"
- 454a9fa Merge "[FAB-17114] Add AZP support for Fabric"
- 2d9bacd Merge "FAB-16573 Ledger consistency is across channel"
- 2cc9258 Merge "[FAB-15226] Re-enable gossip integration test"
- 9de6ec5 Merge "integrate cache with LoadCommittedVersion"
- e08ff81 Merge "cache config via core.yaml"
- 0f2c4b6 Merge "integrate cache with statecouchdb"
- 102ea3c Merge "[FAB-16477] Use bootstrap file for raft consensus"
- b77fbe6 Merge changes I37685688,Ia45f537b,Ibd9b6849,I1ed90b94
- be073f2 FAB-17097 Implemented recommendations after review
- 0830665 [FAB-17114] Add AZP support for Fabric
- b852a86 [FAB-15066] Enable endorsement policies for collections
- cc39bc7 Minor cleanup for orderer without a system channel
- 36ed75c Merge "Minor restructure of externalbuilders"
- 5c49542 Merge "[FAB-16397] Check file names for spaces"
- ee778bc Break out small functions and add godoc
- 109fccb Rename externalbuilders package to externalbuilder
- 6257073 Implement Stop on the externalbuilders.Instance
- 3032e8e Implement a session handle to running processes
- 4704ed5 [FAB-15066] Cleanup pvtdata integration test
- 59a4bfa [FAB-16169] Separate unmarshalling from validation
- 9772163 [FAB-16397] Check file names for spaces
- af55876 Minor restructure of externalbuilders
- 1b99fdd Merge "Minor cleanup of externalbuilders_test.go"
- 929f654 [FAB-16560] Fix review comments
- 3107016 [FAB-16169] clean up tests
- 8a70b67 [FAB-16169] CR Comments
- 30a1c6c [FAB-16377] Perform validation of channel ID
- 20dbb4a [FAB-16170] hdr validation for endorser transactions
- 1b3c683 Merge "FAB-16286 Unexport and rename IT func"
- 4cfafee Merge "[FAB-16712] Update Java chaincode doc links"
- 48c9819 FAB-17097
- 9d1c247 Merge "[FAB-17095] MCS not to print identities as bytes"
- b86a86f Merge "[FAB-17095] Pretty print peer identities in gossip"
- f30f3f0 Merge "[FAB-17038] Update peer.ApplicationPolicy references"
- 6baa59e FAB-16286 Unexport and rename IT func
- fd55ee2 Merge changes I14846f8d,I7aec7028
- 2e4d92e Merge "FAB-16663 Defang Stalebot"
- 66ab59f Merge "[FAB-17052] pretty print EndpointCriteria TLS CAs"
- 29bd8c5 integrate cache with LoadCommittedVersion
- e9be627 cache config via core.yaml
- 67fccab integrate cache with statecouchdb
- 6cd02a6 [FAB-17095] MCS not to print identities as bytes
- 0cd1107 [FAB-17095] Pretty print peer identities in gossip
- 49fbc47 FAB-16663 Defang Stalebot
- 3cbb0bc Minor cleanup of externalbuilders_test.go
- caeebd8 [FAB-17086] Update references in master for v1.4.4
- 0411196 Merge "Remove persistence.PackageProvider"
- 019c7ab Merge "FAB-16286 protolator understand ChaincodeHeaderExt"
- a0ab031 FAB-16286 IT with forged RWset for LSCC IP failure
- 7b19faa FAB-16286 Split raft Broadcast/Deliver IT tool out
- 2e75f66 [FAB-16712] Update Java chaincode doc links
- 33139a9 [FAB-17092] Update bootstrap.sh
- b268b11 [FAB-17052] pretty print EndpointCriteria TLS CAs
- 59bad46 FAB-16286 protolator understand ChaincodeHeaderExt
- 3ec743b [FAB-17038] Update peer.ApplicationPolicy references
- 048351a Merge "[FAB-17032] Fix some errors in the doc."
- d919905 [FAB-16477] Use bootstrap file for raft consensus
- 86f53bc Remove persistence.PackageProvider
- a282f71 Merge "[FAB-15814] Add endpoint for versioning metadata"
- 445fd06 Merge "Allow orderer startup with no system channel defined"
- 028d9fb Merge "Do not require reboot when re-adding consenter"
- b66fc33 [FAB-15814] Add endpoint for versioning metadata
- 727850f Allow orderer startup with no system channel defined
- eb65b8e Convert creation block to genesis block early on
- cce2247 Do not require reboot when re-adding consenter
- 34587f7 [FAB-17060] Remove s390x from multiarch script
- 85aebd6 Merge changes Ibc1eb5c0,Ide57e8ca,Ic2d69839
- f594c20 FAB-15754 Add solo deprecation to release-notes
- 1c18f83 FAB-15754 Deprecate solo orderer
- 1e39899 [FAB-17032] Fix some errors in the doc.
- 18dbbb0 FAB-15754 Fix and re-run generateHelpDocs.sh
- af69416 Relocate raft config specific helpers to raft tests
- ce7aca8 Merge "External launch metadata uses PEM encoding"
- f4c7914 Merge changes from topic "kill-common-mocks"
- 59064f3 [FAB-15226] Re-enable gossip integration test
- cd8c374 Merge "[FAB-15066] Update fabric-protos-go dep"
- 9463d0f Merge "[FAB-15982] gossip IT test with no leader election"
- f62a2c0 FAB-16437 Remove common/mocks/policies
- 5d23cfa Merge "FAB-17001 Delete chaincode package on build fail"
- 94ab790 FAB-16573 Ledger consistency is across channel
- f52af9a External launch metadata uses PEM encoding
- 946056c FAB-16544 IT for orderer endpoint overrides
- 5758c93 Merge "Generate block fixtures in orderer/common/server UT"
- f876f2f FAB-16437 Remove common/mocks/msp
- 03710df Merge "FAB-16437 Remove common/mocks from protoutil"
- 7254385 Merge "Add fake generation directives discovery/support/mocks"
- 31534f0 Merge "remove existing lscc state cache"
- a90f67d Merge "vendor fastCache to use as ledger cache"
- 4940b1f [FAB-15982] gossip IT test with no leader election
- 7aa4a81 [FAB-15066] Update fabric-protos-go dep
- 7b3fafc Merge "refactor statecouchdb committer"
- 6617030 FAB-16437 Remove common/mocks from protoutil
- 6aa4978 Merge "Add consensus type ectdraft in orderer/README.md"
- 3867a47 Merge "[FAB-15389] Fix private data dissemination"
- ef5ff5d remove existing lscc state cache
- 3a8dae8 vendor fastCache to use as ledger cache
- 2448b5e FAB-16544 Properly detect node-readdition
- b97ca73 [FAB-15389] Fix private data dissemination
- ffa3335 Merge "Complete chaincode execution on stream termination"
- 53a1bce refactor statecouchdb committer
- 5665cf5 Merge "FAB-16940 report underlying error msg in configtx"
- 5ebf39e FAB-16995 Note removal of provisional bootstrap
- 930e53d Merge "Add integration test for failing external builder"
- e8618c4 Merge "refactor kv_ledger_provider"
- f27b122 Merge "Extract ccenv-1.4 test to its own file"
- 4952829 Merge "Address CR comments for FAB-17000"
- 2332eea Merge "[FAB-17000] Warn when cert expiration is nigh"
- 649d563 Address CR comments for FAB-17000
- 9b266bd Merge "Add timeout configuration for chaincode install"
- 8ff17e1 FAB-17001 Delete chaincode package on build fail
- 6325fe1 Add consensus type ectdraft in orderer/README.md
- fbb4c89 Complete chaincode execution on stream termination
This list of changes was auto generated.