From 1cdb585bb4e308375ba64d4c91dac126315cfd04 Mon Sep 17 00:00:00 2001 From: James Taylor Date: Tue, 10 Nov 2020 15:59:05 +0000 Subject: [PATCH] Merge 2.3 (#227) * [FABCI-482] Update Nexus URL's to Artifactory Signed-off-by: Brett Logan * [FABCN-377] Prepare v2.0 release Signed-off-by: James Taylor * Fix docker tag Tag needs to include hyperledger to match the publish command Signed-off-by: James Taylor * [FABCN-377] Bump version to 2.0.1 Signed-off-by: James Taylor * [FABCN-378] Publish jsdoc Signed-off-by: James Taylor * Re-enable tests Signed-off-by: James Taylor * [FABCN-381] Access localmspid Signed-off-by: James Taylor * Update audit level Temporarily raise audit level to moderate to work around current minimist audit failures Can be reverted after grpc, rc, and tar dependecies have been updated to pull in updated versions of mkdirp and minimist Signed-off-by: James Taylor * Expand node engine version range Signed-off-by: James Taylor * FABCN-391 Use version 2.1 of fabric docker images Signed-off-by: heatherlp * FABCN-391 Update test/chaincodes to use node 10 and add a missing hat Signed-off-by: heatherlp * [FABCN-377] Prepare for v2.1 unstable builds (WIP) Signed-off-by: James Taylor * [FABCN-373] Compatibility Matrix Ammended all the node-engines in package.json to match that in the docker image Signed-off-by: Matthew B White Change-Id: Ia536ed66daf857679adf9f858b35d206a4f1007f * [FABCN-382] fix compatibility.md title Signed-off-by: Andrew Hurt * Improve build reliability It looks like rushjs symlinking can cause issues with the CopyFiles task. Use a script instead as suggested in microsoft/azure-pipelines-tasks#9046 Signed-off-by: James Taylor * Add readme to redirect to site Signed-off-by: Ry Jones * FABCN-241 Remove to.be.ok Signed-off-by: lesleyannj * FABCN-241 Change to.be.ok Signed-off-by: lesleyannj * FABCN-241 Remove to.be.ok Signed-off-by: lesleyannj * fix: remove semicolon Signed-off-by: Johnny Da Costa * FABCN-391 Set docker images to use node 10 - reflect this in compatibility.md - update some out of date tutorial lines Signed-off-by: heatherlp * FABCN-391 Build against release-2.x Signed-off-by: heatherlp * FABCN-391 Remove references to 2.0 and 2.0.0 - replace with 2.x Signed-off-by: heatherlp * [FABCN-392] Update to Node 12 Set node engine to be the latest LTS at time of commit 12.6.1 Due to issues with comibation of the 12.6 and rewire, unit tests are run with node 12.5.0 Updated timeout as Typescript compilation seems to have slowed down. Signed-off-by: Matthew B White * [FABCN-391] Publish JSDoc to release-2.1 Signed-off-by: James Taylor * FABCN-391 v2.1.0 Release (#112) * FABCN-391 v2.1.0 Release - also fixed nodeenv images to use node 12 Signed-off-by: heatherlp * Update timeout (#114) Signed-off-by: Brett Logan Co-authored-by: Brett Logan * FABCN-391 Bump to 2.1.1 and fix docker tag (#122) * FABCN-391 Remove "latest" from tag name on docker image publishing for tagged versions Signed-off-by: heatherlp * FABCN-391 Bump version number to 2.1.1 Signed-off-by: heatherlp * [FABCN-391] fix directory for api doc publish (#125) Signed-off-by: James Taylor * [FABCN-394] Update typescript interface file (#128) Updated both typescript definition files to match the case and the existance of the implementation function. Signed-off-by: Matthew B White * Prepare 2.1.1 release (#133) Signed-off-by: James Taylor * Bump version (#134) Signed-off-by: James Taylor * [FABCN-397] State queries limited to 100 results (#141) Errow was the new version of protobufjs used to create the bundle.js gave a different property to the 'has more' field. hasMore replaced has_more As this accessed as JS property it didn't fail, but meant only a limited number could be accessed. corrected, added test for 229 results. bit of dead code pruning Signed-off-by: Matthew B White * [FABCN-396] Add notes on minimum 1.4 module version for node 12 (#139) Stated that 1.4.5 and above are the versions that work with node 12 Added a better example for the use of the chaincode node runtime environment variable Signed-off-by: Matthew B White * FABCN-395: Use @grpc/grpc-js for Node.js chaincode (#143) (#144) Signed-off-by: Simon Stone * FABCN-401 Correct use of Yargs api (#145) * FABCN-401 Correct use of Yargs api Change from package.json to api parser configuration Signed-off-by: Matthew B White * Force build Signed-off-by: Matthew B White * Fix broken tutorials link (#137) (#138) Signed-off-by: NIKHIL E GUPTA Co-authored-by: NIKHIL E GUPTA Co-authored-by: NIKHIL E GUPTA * Prepare 2.1.2 release (#148) Signed-off-by: James Taylor * Bump version to 2.1.3 (#149) Signed-off-by: James Taylor * FABCN-405 Fix tutorial reference (#150) (#152) Updated to use 2.1 modules Signed-off-by: Ry Jones Co-authored-by: Matthew B White Signed-off-by: Matthew B White Co-authored-by: Ry Jones * [FABCN-407] Update protos (#154) (#157) To prepare for the implementation of chaincode gRPC server, this patch updates protobuf definitions to the latest ones. Signed-off-by: Taku Shimosawa * [FABCN-410] Use new lifecycle for fv/e2e tests (#160) This patch enables v2.0 feature in the test Hyperledger Fabric network and uses new lifecycle commands in the fv and e2e tests. Signed-off-by: Taku Shimosawa * Fix 'rush install' error in release-2.x (#163) This patch upgrades pnpm to fix the "Could not find peer dependency 'google-auth-library'" error. Signed-off-by: Taku Shimosawa * Cheery-pick chaincode server feature to release-2.x (#166) * [FABCN-408] Separate message handler from client (#155) This patch divides the ChaincodeSupportClient class into two classes: ChaincodeSupportClient, which represents a chaincode client that connects to a peer, and ChaincodeMessageHandler, which handles messages in communciation with the peer through a stream. Because the latter part is common in both client and server model, the ChaincodeMessageHandler class will be used in the future implementation for a chaincode gRPC server. Signed-off-by: Taku Shimosawa Co-authored-by: Matthew B White * [FABCN-409] Chaincode gRPC server w/o TLS (#159) This patch adds the ChaincodeServer class to support the server mode of chaincode. It also adds the server() method, which creates a new instance of the ChaincodeServer class, to the Shim class, the entrypoint of the fabric-shim library. Signed-off-by: Taku Shimosawa * [FABCN-411] Add server command to CLI (#161) This patch adds a "server" command to the "fabric-chaincode-node" CLI. The command starts the contracts as a chaincode server. Example: fabric-chaincode-node server --chaincode-address 0.0.0.0:9999 \ --chaincode-id mycc_v0:a1233bb13227a05932 Signed-off-by: Taku Shimosawa * [FABCN-413] Add e2e test for chaincode server (#162) This patch adds new e2e test for the chaincode gRPC server feature. The test performs as following: - Create a package which contains server and cc information - Build a container image of the chaincode - Install the package into peers - Obtain the installed package ID from the peers - Start the chaincode container with the package ID - Approve and commit the chaincode definition - Invoke and query the chaincode "rush test:e2e" will perform both tests for both server and client mode. This patch also modifies "rush start-fabric" to use external builder scripts. Signed-off-by: Taku Shimosawa * [FABCN-414] Update TypeScript definition (#165) This patch updates the type defintion file for TypeScript to add classes and interfaces related to the chaincode server feature. Signed-off-by: Taku Shimosawa * [FABCN-412] TLS support for chaincode server (#164) This patch adds TLS support for chaincode server. To enable TLS, set tlsProps in the second argument for shim.server, or add --chaincode-tls-cert-file and --chaincode-tls.key-file for CLI. Client certificate validation can be enabled via tlsProps.clientCACerts for shim.server or --chaincode-tls-client-cacert-file for CLI. Also the -path options (for base64 encoded files) are supported. Signed-off-by: Taku Shimosawa Co-authored-by: Matthew B White * [FABCN-415] Lock grpc-js to 1.0.3 (#170) @grpc/grpc-js updated to 1.1.0; this has caused the initial request to the peer on chaincode start to fail. Dropping back to 1.0.3 resolves the issue. See FABCN-415 Signed-off-by: Matthew B White * [FABCN-416] Release v2.1.3 (#171) For resolving grpc version dependency Signed-off-by: Matthew B White * Specify exact version of winston dependency Work around for issue winstonjs/winston#1814 Signed-off-by: James Taylor * Prepare 2.1.4 release (#174) Signed-off-by: James Taylor * [FABCN-393] Fix broken links in documents (#169) This patch fixes broken links to the fabric documents. This patch also fixes links to point to those for the proper version (2.1). Signed-off-by: Taku Shimosawa * Bump version to 2.1.5 (#175) Signed-off-by: James Taylor * [FABCN-319] Update dependnency versions (#176) - Update grpc-js and winston to pre-lock levels - General update of dependcies - Note add about shirnkwrap. - Corrected test cases Signed-off-by: Matthew B White * [FABCN-420] Remove Azure pipeline warnings (#177) Used new coverage merge tool to joing coverage together Signed-off-by: Matthew B White * Use Official CouchDB 3.1 Image (#180) Fabric 2.2 removes official support for CouchDB 2.x. The migration to 3.1 was to address fsync issues in the underlying storage implementation in Couch. This change moves to CouchDB 3.1 which requires the user to now set an admin identity at startup. Node 12.18.2 is the latest LTS Signed-off-by: Brett Logan * [FABCN-421] release: 2.2.0 LTS release (#181) Signed-off-by: Matthew B White * Bump version to 2.2.1 (#184) Signed-off-by: James Taylor * Fix: ChaincodeStub.getMspID should be in lowerCamelCASE Signed-off-by: winderica * [FABCN-422] Add release guide (#187) Signed-off-by: James Taylor * [FABCN-433] Update typescript and @types/node (#199) Need current supported levels. Signed-off-by: Matthew B White * [FABCN-241] Remove to.be.ok (#204) Signed-off-by: lesleyannj * [FABCN-435] OOM on Large Arg Size (#207) Incorrect trace point logging entire binary message Signed-off-by: Matthew B White * v2.x tutorials updated (#217) Signed-off-by: Kestutis Gudynas <44440041+kemi04@users.noreply.github.com> * [FABCN-430] Fix type for timestamp.second (#194) (#209) This patch fixes the type definition for the second field in the Timestamp, which is actually Long (int64). Signed-off-by: Taku Shimosawa Co-authored-by: Matthew B White Co-authored-by: Taku Shimosawa * [FABCN-432] - Update class transformer dependency (#213) * [FABCN-241] Remove to.be.ok Signed-off-by: lesleyannj * [FABCN-1627]-Update class transformer dependency Signed-off-by: lesleyannj * Release v2.3.0 Signed-off-by: Kestutis Gudynas * Bump version to 2.3.1 Signed-off-by: Kestutis Gudynas Co-authored-by: Brett Logan Co-authored-by: heatherlp Co-authored-by: Matthew B White Co-authored-by: Andrew Hurt Co-authored-by: Ry Jones Co-authored-by: lesleyannj Co-authored-by: Johnny Da Costa Co-authored-by: Matthew B White Co-authored-by: heatherlp <40789053+heatherlp@users.noreply.github.com> Co-authored-by: Simon Stone Co-authored-by: nikhil550 Co-authored-by: NIKHIL E GUPTA Co-authored-by: Taku Shimosawa Co-authored-by: winderica Co-authored-by: LAJ <33546098+lesleyannjordan@users.noreply.github.com> Co-authored-by: Kestutis Gudynas <44440041+kemi04@users.noreply.github.com> Co-authored-by: Kestutis Gudynas --- CHANGELOG.md | 67 ++++++++++++++++++- COMPATIBILITY.md | 30 ++++----- CONTRIBUTING.md | 4 +- TUTORIAL.md | 8 +-- apis/fabric-contract-api/README.md | 6 +- apis/fabric-contract-api/package.json | 8 +-- apis/fabric-shim-api/package.json | 6 +- ci/azure-pipelines.yml | 18 ++--- common/config/rush/pnpm-lock.yaml | 61 +++++++++-------- docker/fabric-nodeenv/Dockerfile | 2 +- docker/fabric-nodeenv/docker.js | 2 +- .../tutorials/using-chaincodeinterface.md | 8 +-- .../tutorials/using-contractinterface.md | 8 +-- docs/_jsdoc/tutorials/using-iterators.md | 4 +- docs/package.json | 2 +- libraries/fabric-ledger/package.json | 6 +- libraries/fabric-shim-crypto/package.json | 6 +- libraries/fabric-shim/package.json | 10 +-- package.json | 2 +- release_notes/v2.0.0.txt | 2 +- release_notes/v2.1.0.txt | 17 +++++ release_notes/v2.1.1.txt | 16 +++++ release_notes/v2.1.2.txt | 15 +++++ release_notes/v2.1.3.txt | 16 +++++ release_notes/v2.1.4.txt | 20 ++++++ release_notes/v2.2.0.txt | 12 ++++ release_notes/v2.3.0.txt | 17 +++++ rush.json | 2 +- test/chaincodes/annotations/package.json | 6 +- test/chaincodes/clientidentity/package.json | 6 +- test/chaincodes/crosschaincode/package.json | 6 +- test/chaincodes/crosschaincode2/package.json | 8 +-- test/chaincodes/crud/package.json | 6 +- test/chaincodes/encryption/package.json | 8 +-- test/chaincodes/events/package.json | 6 +- test/chaincodes/ledger/package.json | 8 +-- test/chaincodes/query/package.json | 6 +- test/chaincodes/scenario/package.json | 6 +- test/chaincodes/server/package.json | 6 +- test/e2e/package.json | 4 +- test/fv/package.json | 20 +++--- .../docker-compose/docker-compose-base.yaml | 6 +- 42 files changed, 331 insertions(+), 146 deletions(-) create mode 100644 release_notes/v2.1.0.txt create mode 100644 release_notes/v2.1.1.txt create mode 100644 release_notes/v2.1.2.txt create mode 100644 release_notes/v2.1.3.txt create mode 100644 release_notes/v2.1.4.txt create mode 100644 release_notes/v2.2.0.txt create mode 100644 release_notes/v2.3.0.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 14020172..dac183d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,72 @@ +## v2.3.0 +Tue 3 Nov 15:40:46 GMT 2020 + +* [f71eb0c](https://github.com/hyperledger/fabric-chaincode-node/commit/f71eb0c) [FABCN-432](https://jira.hyperledger.org/browse/FABCN-432) - Update class transformer dependency (#213) +* [fc32346](https://github.com/hyperledger/fabric-chaincode-node/commit/fc32346) [FABCN-430](https://jira.hyperledger.org/browse/FABCN-430) Fix type for timestamp.second (#194) (#209) +* [85188f5](https://github.com/hyperledger/fabric-chaincode-node/commit/85188f5) v2.x tutorials updated (#217) +* [05df03f](https://github.com/hyperledger/fabric-chaincode-node/commit/05df03f) [FABCN-435](https://jira.hyperledger.org/browse/FABCN-435) OOM on Large Arg Size (#207) +* [58387e8](https://github.com/hyperledger/fabric-chaincode-node/commit/58387e8) [FABCN-241](https://jira.hyperledger.org/browse/FABCN-241) Remove to.be.ok (#204) +* [c9a1f5d](https://github.com/hyperledger/fabric-chaincode-node/commit/c9a1f5d) [FABCN-433](https://jira.hyperledger.org/browse/FABCN-433) Update typescript and @types/node (#199) +* [eb39270](https://github.com/hyperledger/fabric-chaincode-node/commit/eb39270) [FABCN-422](https://jira.hyperledger.org/browse/FABCN-422) Add release guide (#187) +* [be2ef68](https://github.com/hyperledger/fabric-chaincode-node/commit/be2ef68) Fix: ChaincodeStub.getMspID should be in lowerCamelCASE +* [7de3c12](https://github.com/hyperledger/fabric-chaincode-node/commit/7de3c12) Bump version to 2.2.1 (#184) + +## v2.2.0 +Thu 2 Jul 11:40:02 BST 2020 + +* [0f1b616](https://github.com/hyperledger/fabric-chaincode-node/commit/0f1b616) [FABCN-421](https://jira.hyperledger.org/browse/FABCN-421) release: 2.2.0 LTS release +* [9f30e90](https://github.com/hyperledger/fabric-chaincode-node/commit/9f30e90) Use Official CouchDB 3.1 Image (#180) +* [eeca625](https://github.com/hyperledger/fabric-chaincode-node/commit/eeca625) [FABCN-420](https://jira.hyperledger.org/browse/FABCN-420) Remove Azure pipeline warnings (#177) +* [cc7fee7](https://github.com/hyperledger/fabric-chaincode-node/commit/cc7fee7) [FABCN-319](https://jira.hyperledger.org/browse/FABCN-319) Update dependnency versions (#176) +* [8966eed](https://github.com/hyperledger/fabric-chaincode-node/commit/8966eed) [FABCN-393](https://jira.hyperledger.org/browse/FABCN-393) Fix broken links in documents (#169) + +## v2.1.4 +Mon 22 Jun 2020 14:51:02 BST + +* [81e1123](https://github.com/hyperledger/fabric-chaincode-node/commit/81e1123) Specify exact version of winston dependency + +## v2.1.3 +Fri 19 Jun 15:26:50 BST 2020 + +* [cb4afae](https://github.com/hyperledger/fabric-chaincode-node/commit/cb4afae) [FABCN-410](https://jira.hyperledger.org/browse/FABCN-410) Use new lifecycle for fv/e2e tests (#160) +* [e02abf4](https://github.com/hyperledger/fabric-chaincode-node/commit/e02abf4) [FABCN-407](https://jira.hyperledger.org/browse/FABCN-407) Update protos (#154) (#157) +* [f4643f4](https://github.com/hyperledger/fabric-chaincode-node/commit/f4643f4) [FABCN-405](https://jira.hyperledger.org/browse/FABCN-405) Fix tutorial reference (#150) (#152) +* [c1979e3](https://github.com/hyperledger/fabric-chaincode-node/commit/c1979e3) Bump version to 2.1.3 (#149) + +## v2.1.2 +Mon 18 May 2020 17:06:23 BST + +* [3d3264d](https://github.com/hyperledger/fabric-chaincode-node/commit/3d3264d) Fix broken tutorials link (#137) (#138) +* [ac5b009](https://github.com/hyperledger/fabric-chaincode-node/commit/ac5b009) [FABCN-401](https://jira.hyperledger.org/browse/FABCN-401) Correct use of Yargs api (#145) +* [a81935a](https://github.com/hyperledger/fabric-chaincode-node/commit/a81935a) [FABCN-395](https://jira.hyperledger.org/browse/FABCN-395): Use @grpc/grpc-js for Node.js chaincode (#143) (#144) +* [8de8a6e](https://github.com/hyperledger/fabric-chaincode-node/commit/8de8a6e) [FABCN-396](https://jira.hyperledger.org/browse/FABCN-396) Add notes on minimum 1.4 module version for node 12 (#139) +* [00fab0a](https://github.com/hyperledger/fabric-chaincode-node/commit/00fab0a) [FABCN-397](https://jira.hyperledger.org/browse/FABCN-397) State queries limited to 100 results (#141) +* [b1f992d](https://github.com/hyperledger/fabric-chaincode-node/commit/b1f992d) Bump version (#134) + +## v2.1.1 +Wed 22 Apr 2020 10:31:05 BST + +* [3e67b8c](https://github.com/hyperledger/fabric-chaincode-node/commit/3e67b8c) [FABCN-394](https://jira.hyperledger.org/browse/FABCN-394) Update typescript interface file (#128) +* [61c253a](https://github.com/hyperledger/fabric-chaincode-node/commit/61c253a) [FABCN-391](https://jira.hyperledger.org/browse/FABCN-391) fix directory for api doc publish (#125) +* [c753261](https://github.com/hyperledger/fabric-chaincode-node/commit/c753261) [FABCN-391](https://jira.hyperledger.org/browse/FABCN-391) Bump to 2.1.1 and fix docker tag (#122) + +## v2.1.0 +Wed 1 Apr 2020 16:12:36 BST + +* [644213a](https://github.com/hyperledger/fabric-chaincode-node/commit/644213a) [FABCN-391](https://jira.hyperledger.org/browse/FABCN-391) Remove references to 2.0 and 2.0.0 - replace with 2.x +* [de8c29c](https://github.com/hyperledger/fabric-chaincode-node/commit/de8c29c) [FABCN-241](https://jira.hyperledger.org/browse/FABCN-241) Change to.be.ok test calls +* [a3ff93c](https://github.com/hyperledger/fabric-chaincode-node/commit/a3ff93c) Add readme to redirect to site +* [659d36d](https://github.com/hyperledger/fabric-chaincode-node/commit/659d36d) Improve build reliability +* [d62ecae](https://github.com/hyperledger/fabric-chaincode-node/commit/d62ecae) [FABCN-373](https://jira.hyperledger.org/browse/FABCN-373) Compatibility Matrix +* [c09385c](https://github.com/hyperledger/fabric-chaincode-node/commit/c09385c) [FABCN-391](https://jira.hyperledger.org/browse/FABCN-391) Use version 2.1 of fabric docker images +* [78f8cf8](https://github.com/hyperledger/fabric-chaincode-node/commit/78f8cf8) Expand node engine version range +* [c9e9e5b](https://github.com/hyperledger/fabric-chaincode-node/commit/c9e9e5b) Update audit level +* [dd51dfa](https://github.com/hyperledger/fabric-chaincode-node/commit/dd51dfa) [FABCN-381](https://jira.hyperledger.org/browse/FABCN-381) Access localmspid + ## v2.0.0 Wed 22 Jan 2020 16:03:50 GMT -* [869f107](https://github.com/hyperledger/fabric-chaincode-node/commit/869f107) [FABCI-482](https://jira.hyperledger.org/browse/FABCI-482) Update Nexus URL's to Artifactory +* [6ef0042](https://github.com/hyperledger/fabric-chaincode-node/commit/6ef0042) [FABCI-482](https://jira.hyperledger.org/browse/FABCI-482) Update Nexus URL's to Artifactory * [b296d0a](https://github.com/hyperledger/fabric-chaincode-node/commit/b296d0a) [FABCN-241](https://jira.hyperledger.org/browse/FABCN-241) - Remove to.be.ok (#55) * [b345925](https://github.com/hyperledger/fabric-chaincode-node/commit/b345925) Update maintainers list * [81eb5a9](https://github.com/hyperledger/fabric-chaincode-node/commit/81eb5a9) Update rush node.js version (#54) diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md index 23d19572..dc18beec 100644 --- a/COMPATIBILITY.md +++ b/COMPATIBILITY.md @@ -5,16 +5,16 @@ Github is used for code base management, issues should reported in the [FABCN](h ## Summary of Compatibility -This table shows the summary of the compatibility of the Node modules at versions 1.4 and 2.0, together with the Nodejs runtime they require and the Fabric Peer versions they can communicate with. +This table shows the summary of the compatibility of the Node modules at versions 1.4 and 2.x, together with the Nodejs runtime they require and the Fabric Peer versions they can communicate with. -| | Peer Connectivity v1.4 | NodeJS 8 | Peer Connectivity v2.0 | NodeJS12 | -| ----------------------- | ---------------------- | -------- | ---------------------- | -------- | -| Node modules **v1.4.5** | Yes | Yes | Yes | Yes | -| Node modules **v2.1.x** | Yes | No | Yes | Yes | +| | Peer Connectivity v1.4 | NodeJS | Peer Connectivity v2.x | +| ----------------------- | ---------------------- | ------ | ---------------------- | +| Node modules **v1.4.5** | Yes | 8 | Yes | +| Node modules **v2.x.x** | Yes | 12 | Yes | -By default a Fabric Peer v1.4 will create a Nodejs v8 , and a Fabric Peer v2.0 will create a Nodejs v12 runtime. Whilst is the default, the docker image used to host the chaincode and contracts can be altered. Set the environment variable `CORE_CHAINCODE_NODE_RUNTIME` on the peer to the name of the docker image. +By default a Fabric Peer v1.4 will create a Nodejs v8 runtime, and a Fabric Peer v2.x will create a Nodejs 12 runtime. Whilst this is the default, the docker image used to host the chaincode and contracts can be altered. Set the environment variable `CORE_CHAINCODE_NODE_RUNTIME` on the peer to the name of the docker image. -For example `CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.1` will allow the latest Node 12 runtime to be used within a Peer v1.4. +For example `CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.1` will allow the use of the latest Node 12 runtime to be used within a Peer v1.4. The Node modules will connect to the peer whilst running; this is referred to as 'Fabric Peer Connectivity' in the table. For example, whilst the Fabric Peer v1.4 will create a Nodejs 8 runtime, if a Nodejs 12 runtime was configured, the node modules at v2.x still function when connecting to the Fabric Peer v1.4. @@ -26,30 +26,30 @@ The key elements are :  - the version of the Fabric Contract Node modules used - the version of the Nodejs runtime used to run the code -- When starting a chaincode container to run a Smart Contract the version of the runtime that is used is determined by these factors: +- When starting a chaincode container to run a Smart Contract, the version of the runtime that is used is determined by these factors: -Fabric v1.4.2, and Fabric v2.0.0 will, by default, start up docker image to host the chaincode and contracts. The version of the docker image used is defined by the version of Fabric in use. +Fabric v1.4.2, and Fabric v2.x will, by default, start up docker image to host the chaincode and contracts. The version of the docker image used is defined by the version of Fabric in use. -With Fabric v2.0.0, the chaincode container can be configured to be started by other means, and not the Peer. In this case, the environment used is not in the control of Fabric. +With Fabric v2.x, the chaincode container can be configured to be started by other means, and not the Peer. In this case, the environment used is not in the control of Fabric. Node modules that are produced are `fabric-contract-api`, `fabric-shim`, `fabric-shim-crypto` & `fabric-shim-api` ### Supported Runtimes -v1.4.x and v2.0.0 Node modules are supported running in Nodejs 12.13 with the x86_64 architecture. Later Nodejs 12 versions are supported but are not tested. +v2.x Node modules are supported running in Nodejs 12.16.1, with the x86_64 architecture. -v1.4.x Node modules are supported running Nodejs 8.16.1 with the  x86_64 architecture. Later Nodejs 8 versions are supported but are not tested. +v1.4.x Node modules are supported running Nodejs 8.16.1 with the x86_64 architecture. Architecture Support: all docker images, runtimes, tools are tested under x86_64 ONLY ### Default Peer Runtime selection -When using Fabric 2.0.0, the default docker image that is used to run the Node chaincode is node:12.13.0-alpine  +When using Fabric 2.x, the default docker image that is used to run the Node chaincode is node:12.16.1-alpine  -*Note:* With the default docker image used by Fabric 2.0.0 the packaged code will be installed with npm. If a `package-lock.json` or a `npm-shrinkwrap.json` file is present, `npm ci --only=production` will be used. Otherwise `npm install --production` will be used.  +*Note:* With the default docker image used by Fabric 2.x, the packaged code will be installed with npm. If a `package-lock.json` or a `npm-shrinkwrap.json` file is present, `npm ci --only=production` will be used. Otherwise `npm install --production` will be used.  When using Fabric 1.4.4, the docker image that is used to run the Node chaincode is node v8.16.1. It is installed with npm install --production ### Supported Runtime communication with the Peer -Subject to a suitable runtime environment, the 1.4.4 Node modules and 2.0.0 Node modules can used to communicate with a Fabric 2.0.0 or 1.4.4 Peer - with the level of functionality that is implied by the Fabric version in use.  \ No newline at end of file +Subject to a suitable runtime environment, the 1.4.4 Node modules and 2.x Node modules can be used to communicate with a Fabric 2.x or 1.4.4 Peer - with the level of functionality that is implied by the Fabric version in use.  \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7d9800ba..bee823d9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ The following [Rush categories](https://rushjs.io/pages/maintainer/add_to_repo/) ### Pre-requisites -* node v10.15.2 (npm v6.4.1) => recommend to use [nvm](https://github.com/nvm-sh/nvm) +* node v12.16.1 (npm v6.4.1) => recommend to use [nvm](https://github.com/nvm-sh/nvm) * rush => `npm install -g @microsoft/rush` > Note that npm v6 has some bugs that mean adding new dependencies etc are not properly picked up. Longer term we should consider moving to yarn or pnpm. However in practice this isn't a serious problem and has been possible to be worked around by issuing `rm ./common/config/rush/npm-shrinkwrap.json` and then `rush update` @@ -33,7 +33,7 @@ They also need to have the `nodeenv` image present - this is build as part of th ## Using the repo -* Clone the repo, and ensure you are using node v10, and have rush installed +* Clone the repo, and ensure you are using node v12, and have rush installed * `rush update` is needed to ensure everything is correctly linked and updated. * `rush edge-docker` will pull down and tag the very latest docker images for the peers, orderes etc to test against diff --git a/TUTORIAL.md b/TUTORIAL.md index 649d760a..2c942773 100644 --- a/TUTORIAL.md +++ b/TUTORIAL.md @@ -15,8 +15,8 @@ The dependencies of `fabric-contract-api` and `fabric-shim` will be required. "name": "chaincode", "description": "My first exciting chaincode implemented in node.js", "engines": { - "node": ">=8.4.0", - "npm": ">=5.3.0" + "node": "^12.13.0", + "npm": "^6.13.4" }, "scripts": { "test":"mocha..... @@ -28,8 +28,8 @@ The dependencies of `fabric-contract-api` and `fabric-shim` will be required. "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-contract-api": "^1.4.0", - "fabric-shim": "^1.4.0" + "fabric-contract-api": "^2.3.1-unstable", + "fabric-shim": "^2.3.1-unstable" } } diff --git a/apis/fabric-contract-api/README.md b/apis/fabric-contract-api/README.md index a17b179e..bcf38978 100644 --- a/apis/fabric-contract-api/README.md +++ b/apis/fabric-contract-api/README.md @@ -4,9 +4,9 @@ [![Version](https://badge.fury.io/js/fabric-shim.svg)](http://badge.fury.io/js/fabric-shim) -The `fabric-contract-api` provides the *contract interface* a high level API for application developers to implement [Smart Contracts](https://hyperledger-fabric.readthedocs.io/en/latest/glossary.html#smart-contract). Working with this API provides a high level entry point to writing business logic. +The `fabric-contract-api` provides the *contract interface* a high level API for application developers to implement [Smart Contracts](https://hyperledger-fabric.readthedocs.io/en/release-2.1/glossary.html#smart-contract). Working with this API provides a high level entry point to writing business logic. -Within Hyperledger Fabric, Smart Contracts can also be referred to as [Chaincode](https://hyperledger-fabric.readthedocs.io/en/latest/glossary.html#chaincode). To be more specific, the term chaincode is preferred to be used to refer to the overall container that is hosting the contracts. +Within Hyperledger Fabric, Smart Contracts can also be referred to as [Chaincode](https://hyperledger-fabric.readthedocs.io/en/release-2.1/glossary.html#chaincode). To be more specific, the term chaincode is preferred to be used to refer to the overall container that is hosting the contracts. The `fabric-shim` provides the *chaincode interface*, a lower level API for implementing "Smart Contracts". It also _currently_ provides the implementation to support communication with Hyperledger Fabric peers for Smart Contracts written using the `fabric-contract-api`. To confirm that this is the same as the `fabric-shim` in previous versions of Hyperledger Fabric. @@ -129,7 +129,7 @@ Visit [API Reference](https://hyperledger.github.io/fabric-chaincode-node/master ## Support -Tested with node.js 8.9, and also the v10 LTS release. +Tested with Node v12 LTS release. ## License diff --git a/apis/fabric-contract-api/package.json b/apis/fabric-contract-api/package.json index 973de0ae..ebbe268b 100644 --- a/apis/fabric-contract-api/package.json +++ b/apis/fabric-contract-api/package.json @@ -1,6 +1,6 @@ { "name": "fabric-contract-api", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "tag": "unstable", "description": "A node.js implementation of Hyperledger Fabric chaincode shim, to allow endorsing peers and user-provided chaincodes to communicate with each other", "main": "index.js", @@ -46,7 +46,7 @@ "lines": 100 }, "dependencies": { - "fabric-shim-api": "3.0.0-unstable", + "fabric-shim-api": "2.3.1-unstable", "class-transformer": "^0.3.1", "fast-safe-stringify": "^2.0.7", "get-params": "^0.1.2", @@ -56,10 +56,10 @@ "devDependencies": { "ajv": "^6.12.2", "ajv-cli": "^3.2.1", - "chai": "^4.1.1", + "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "chai-things": "^0.2.0", - "eslint": "6.6.0", + "eslint": "^6.6.0", "gulp": "^4.0.0", "gulp-debug": "~4.0.0", "gulp-eslint": "~6.0.0", diff --git a/apis/fabric-shim-api/package.json b/apis/fabric-shim-api/package.json index 7517073d..dd721684 100644 --- a/apis/fabric-shim-api/package.json +++ b/apis/fabric-shim-api/package.json @@ -1,6 +1,6 @@ { "name": "fabric-shim-api", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "tag": "unstable", "description": "A node.js API of Hyperledger Fabric chaincode shim, to allow endorsing peers and user-provided chaincodes to communicate with each other", "main": "index.js", @@ -19,11 +19,11 @@ "engines": { "node": "^12.13.0", "npm": "^6.4.1", - "eslint": "6.6.0" + "eslint": "^6.6.0" }, "types": "./types/index.d.ts", "license": "Apache-2.0", "devDependencies": { "@types/long": "^4.0.1" } -} +} \ No newline at end of file diff --git a/ci/azure-pipelines.yml b/ci/azure-pipelines.yml index 4f339d1a..aeaeb59c 100644 --- a/ci/azure-pipelines.yml +++ b/ci/azure-pipelines.yml @@ -93,8 +93,8 @@ stages: - script: | mkdir -p $(Build.ArtifactStagingDirectory)/logs find . \( -type d -name 'node_modules' \) -prune -o -name '*.build*.log' -exec cp {} $(Build.ArtifactStagingDirectory)/logs \; - condition: or(succeeded(), failed()) # publish either way displayName: 'Copy build logs' + condition: or(succeeded(), failed()) # publish either way - task: PublishBuildArtifacts@1 condition: or(succeeded(), failed()) # publish either way inputs: @@ -145,8 +145,8 @@ stages: node common/scripts/install-run-rush.js start-fabric node common/scripts/install-run-rush.js start-verdaccio # script will check for the ci variable and use built images docker images | grep hyperledger && docker ps -a - node common/scripts/install-run-rush.js test:fv - node common/scripts/install-run-rush.js test:e2e + node common/scripts/install-run-rush.js test:fv --verbose + node common/scripts/install-run-rush.js test:e2e --verbose displayName: 'FV Tests' - task: PublishTestResults@2 @@ -311,11 +311,13 @@ stages: docker login ${DOCKER_REGISTRY_URL} --username=${DOCKER_REGISTRY_USERNAME} --password=${DOCKER_REGISTRY_PASSWORD} echo "Logged in to docker registry" # tag nodeenv image to PACKAGE_VERSION - docker tag hyperledger/fabric-nodeenv fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION)-unstable + docker tag hyperledger/fabric-nodeenv hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION) # push nodeenv to repository - docker push hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION)-unstable - ./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION)-unstable" --target "hyperledger/fabric-nodeenv:$(BuildData.PACKAGE_VERSION)-unstable" - ./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION)-unstable" --target "hyperledger/fabric-nodeenv:2.0-unstable" + docker push hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION) + # publish patch version (3-digit) image + ./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION)" --target "hyperledger/fabric-nodeenv:$(BuildData.PACKAGE_VERSION)" + # publish minor version (2-digit) image + ./manifest-tool push from-args --platforms linux/amd64 --template "hyperledger/fabric-nodeenv:amd64-$(BuildData.PACKAGE_VERSION)" --target "hyperledger/fabric-nodeenv:$(BuildData.MINOR_PACKAGE_VERSION)" env: DOCKER_REGISTRY_USERNAME: $(DockerHub-Username) - DOCKER_REGISTRY_PASSWORD: $(DockerHub-Password) + DOCKER_REGISTRY_PASSWORD: $(DockerHub-Password) \ No newline at end of file diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index a2e961de..c08221bf 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -27,7 +27,9 @@ dependencies: del: 3.0.0 delay: 4.3.0 elliptic: 6.5.3 + fabric-contract-api: 2.3.1-unstable fast-safe-stringify: 2.0.7 + fs-extra: 9.0.1 get-params: 0.1.2 git-rev-sync: 1.12.0 gulp: 4.0.2 @@ -2915,6 +2917,28 @@ packages: '0': node >=0.6.0 resolution: integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + /fabric-contract-api/2.3.1-unstable: + dependencies: + class-transformer: 0.3.1 + fabric-shim-api: 2.3.1-unstable + fast-safe-stringify: 2.0.7 + get-params: 0.1.2 + reflect-metadata: 0.1.13 + winston: 3.3.3 + dev: false + engines: + node: ^12.13.0 + npm: ^6.4.1 + resolution: + integrity: sha512-49OlWHWoW63LY/YaJIufdlYhRAmbzI/RkuYIC6J/E58uYRd8Sqn6CpubUhje3f4FHN5BCm7GfkgBJVgxDRfgeA== + /fabric-shim-api/2.3.1-unstable: + dev: false + engines: + eslint: 6.6.0 + node: ^12.13.0 + npm: ^6.4.1 + resolution: + integrity: sha512-7lLx/LwmM58eYlgORz0NwRd0rznWPVS7PcMzcQeDDi51nIiNq3TVmbop1NkR5dtDFCpXxm6ldolMFQ1bYw8qBA== /fancy-log/1.3.3: dependencies: ansi-gray: 0.1.1 @@ -3213,16 +3237,6 @@ packages: dev: false resolution: integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - /fs-extra/8.1.0: - dependencies: - graceful-fs: 4.2.4 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - engines: - node: '>=6 <7 || >=8' - resolution: - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== /fs-extra/9.0.1: dependencies: at-least-node: 1.0.0 @@ -4701,12 +4715,6 @@ packages: hasBin: true resolution: integrity: sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - /jsonfile/4.0.0: - dev: false - optionalDependencies: - graceful-fs: 4.2.4 - resolution: - integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= /jsonfile/6.0.1: dependencies: universalify: 1.0.0 @@ -8125,12 +8133,6 @@ packages: node: '>=8' resolution: integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - /universalify/0.1.2: - dev: false - engines: - node: '>= 4.0.0' - resolution: - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== /universalify/1.0.0: dev: false engines: @@ -8666,7 +8668,7 @@ packages: dev: false name: '@rush-temp/fabric-contract-api' resolution: - integrity: sha512-jVu+xuofVpl1qhSNT0/iTyZmxqoJ28VHXlcB5P3NiL92/pVq4Q9irCdT6yvxjIkwKQpSCXUyinNmwMSLCG3lmg== + integrity: sha512-07lOhJJOaJXKZrOEjeCAT+N+ZiuLkn39lFTGEqCNFtVwkGRODe5kKbyMUBFnMqFjG/QcHXixds5az0VkttpoCg== tarball: 'file:projects/fabric-contract-api.tgz' version: 0.0.0 'file:projects/fabric-e2e-tests.tgz': @@ -8694,6 +8696,7 @@ packages: chai-as-promised: 7.1.1_chai@4.2.0 cpx: 1.5.0 eslint: 6.8.0 + fabric-contract-api: 2.3.1-unstable mocha: 6.2.2 mockery: 2.1.0 nyc: 14.1.1 @@ -8707,7 +8710,7 @@ packages: dev: false name: '@rush-temp/fabric-ledger' resolution: - integrity: sha512-CUylRbVtXG0K5A+16OjbfDHabof32BNCgNEZO/PQP3cxs+f42LhDMNxLDnjgA1idAZWGie8VIaC+vp4ya4dbkw== + integrity: sha512-hzfnU11HKatNBkiKeZh0X0GAVaP6dbGTe/UByWJncehDNzIzApWn8OUTFPShKmP4ydS3sxA3246G8dnYuq+Qaw== tarball: 'file:projects/fabric-ledger.tgz' version: 0.0.0 'file:projects/fabric-nodeenv.tgz': @@ -8756,7 +8759,7 @@ packages: dev: false name: '@rush-temp/fabric-shim-docs' resolution: - integrity: sha512-nkK7U6amYP8W+Ab7fz6AQ5wfW0GuHQ4sPuUh/Gqz/Swe3+spe+5Dsi2g9Q6H+Lf8VW50FNLnSBRHKGjyvVs8Lg== + integrity: sha512-oi7XBbRvf+D+M7bwJuWs6rG39CayCaGApjqx65zibUnsenpriYXMSTpClR4V7QVzjUoK14lHV9iw8kTFaVT4rg== tarball: 'file:projects/fabric-shim-docs.tgz' version: 0.0.0 'file:projects/fabric-shim.tgz': @@ -8785,7 +8788,7 @@ packages: dev: false name: '@rush-temp/fabric-shim' resolution: - integrity: sha512-ez+BgcGg6P1ysGXs8scLu+KbODIPfN0NMDhsRwmtMtQXT1t05qMOdSG3xNumYnc6mR1Gy57RV5HQO1nWFR4sqg== + integrity: sha512-ow411yr9b2B6W7TT0A3PmtzX3sy5+tnvF+0cfUcmsfW0+9ybhsyEwMli1zbmDQSmSSaOm8TIcC6crzc8ZKA5Kw== tarball: 'file:projects/fabric-shim.tgz' version: 0.0.0 'file:projects/fvtests.tgz': @@ -8799,7 +8802,7 @@ packages: del: 3.0.0 delay: 4.3.0 eslint: 6.6.0 - fs-extra: 8.1.0 + fs-extra: 9.0.1 git-rev-sync: 1.12.0 gulp: 4.0.2 ip: 1.1.5 @@ -8813,7 +8816,7 @@ packages: dev: false name: '@rush-temp/fvtests' resolution: - integrity: sha512-JWS04jfZvKtN0j47rI+toZAop8grfGOjoT2xQQMIS6H9N/P1O5hTq0csAckWPcI/oN9HELIKJ/DBWXtpRqB4jg== + integrity: sha512-T59w2nKPdhDaUw0z2uU4HdTtLKi441Qkbqc65jRH99gxHpCLx7tCWR6LAnm+Aq32XP93c4aC8VB6HOwDvIpMpQ== tarball: 'file:projects/fvtests.tgz' version: 0.0.0 'file:projects/toolchain.tgz': @@ -8864,7 +8867,9 @@ specifiers: del: ^3.0.0 delay: 4.3.0 elliptic: ^6.5.3 + fabric-contract-api: 2.3.1-unstable fast-safe-stringify: ^2.0.7 + fs-extra: ^9.0.1 get-params: ^0.1.2 git-rev-sync: 1.12.0 gulp: ^4.0.0 diff --git a/docker/fabric-nodeenv/Dockerfile b/docker/fabric-nodeenv/Dockerfile index 252632c9..c0eb3f9a 100644 --- a/docker/fabric-nodeenv/Dockerfile +++ b/docker/fabric-nodeenv/Dockerfile @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 # -ARG NODE_VER=12.13.0 +ARG NODE_VER=12.16.1 FROM node:${NODE_VER}-alpine RUN apk add --no-cache \ make \ diff --git a/docker/fabric-nodeenv/docker.js b/docker/fabric-nodeenv/docker.js index 7c56d7aa..40c2dc56 100644 --- a/docker/fabric-nodeenv/docker.js +++ b/docker/fabric-nodeenv/docker.js @@ -16,7 +16,7 @@ const util = require('util'); const { shell: runcmds } = require('toolchain'); const version = JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'package.json'))).version; -const node_version = process.env.NODE_VERSION || '12.9.1'; +const node_version = process.env.NODE_VERSION || '12.16.1'; const build_dir = path.join(__dirname); const tag = version + '-' + git.short(); diff --git a/docs/_jsdoc/tutorials/using-chaincodeinterface.md b/docs/_jsdoc/tutorials/using-chaincodeinterface.md index c555459c..11427709 100644 --- a/docs/_jsdoc/tutorials/using-chaincodeinterface.md +++ b/docs/_jsdoc/tutorials/using-chaincodeinterface.md @@ -8,7 +8,7 @@ cd mycc // create a new node project npm init // install fabric-shim at master branch -npm install 3.0.0-unstable +npm install fabric-shim@2.3.1-unstable // or using the released version npm install fabric-shim touch mychaincode.js @@ -60,15 +60,15 @@ Finally, update the "start" script in package.json to "node mychaincode.js": "version": "1.0.0", "description": "My first exciting chaincode implemented in node.js", "engines": { - "node": ">=8.4.0", - "npm": ">=5.3.0" + "node": "^12.13.0", + "npm": "^6.4.1" }, "scripts": { "start" : "node mychaincode.js" }, "engine-strict": true, "engineStrict": true, "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable" } } ``` diff --git a/docs/_jsdoc/tutorials/using-contractinterface.md b/docs/_jsdoc/tutorials/using-contractinterface.md index c82bb9e4..6c77c064 100644 --- a/docs/_jsdoc/tutorials/using-contractinterface.md +++ b/docs/_jsdoc/tutorials/using-contractinterface.md @@ -15,8 +15,8 @@ The dependencies of `fabric-contract-api` and `fabric-shim` will be required. "name": "chaincode", "description": "My first exciting chaincode implemented in node.js", "engines": { - "node": ">=8.4.0", - "npm": ">=5.3.0" + "node": "^12.13.0", + "npm": "^6.4.1" }, "scripts": { "test":"mocha..... @@ -28,8 +28,8 @@ The dependencies of `fabric-contract-api` and `fabric-shim` will be required. "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-contract-api": "^1.4.0", - "fabric-shim": "^1.4.0" + "fabric-contract-api": "^2.3.1-unstable", + "fabric-shim": "^2.3.1-unstable" } } diff --git a/docs/_jsdoc/tutorials/using-iterators.md b/docs/_jsdoc/tutorials/using-iterators.md index 8fdcb7c3..d739f39b 100644 --- a/docs/_jsdoc/tutorials/using-iterators.md +++ b/docs/_jsdoc/tutorials/using-iterators.md @@ -18,14 +18,14 @@ An example of these apis (but may not be a complete list) is given here - getStateByRange - getStateByRangeWithPagination -These api's are a request to return a set of data for which you need to iterate over using the provided iterator. Some of these apis will return the iterator directly and others return an iterator as part of an object property. In previous versions of the fabric-shim api you would need to know which ones did that and handle it appropriately and you need to check the documentation, but the rules are +These apis are a request to return a set of data for which you need to iterate over using the provided iterator. Some of these apis will return the iterator directly and others return an iterator as part of an object property. In previous versions of the fabric-shim api you would need to know which ones did that and handle it appropriately and you need to check the documentation, but the rules are - all private data range queries return an object with just an iterator property containing the iterator - all Pagination queries return an object with an iterator property and metadata property - all other rich/range/history queries return just the iterator itself. These iterators were essentially asynchronous iterators (the next and close methods returned promises) but you couldn't use standard iterator capabilities such as for/of constructs in node because node could not work with the concept of asynchronous iterators. -From fabric v2.0 onwards, node chaincode will be using node 12 as the node version and this has added support for asynchronous iterators. Also in fabric v2.0 onwards, fabric-shim has added support to enable it's asynchronous iterators so that `for/of` can now be used, but note that they don't have full support, so should not be used in generator functions. +From fabric v2.x onwards, node chaincode will be using node 12 and this has added support for asynchronous iterators. Also in fabric v2.x onwards, fabric-shim has added support to enable it's asynchronous iterators so that `for/of` can now be used, but note that they don't have full support, so should not be used in generator functions. As a comparison, let's present first how you would use iterators in previous releases and then show the new way. diff --git a/docs/package.json b/docs/package.json index d021177a..fdf2ca1e 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,7 +8,7 @@ "docs": "rimraf ./gen && jsdoc -c ./_jsdoc.json" }, "devDependencies": { - "fabric-ledger": "3.0.0-unstable", + "fabric-ledger": "2.3.1-unstable", "ink-docstrap": "^1.3.2", "jsdoc": "^3.6.3", "rimraf": "^3.0.0" diff --git a/libraries/fabric-ledger/package.json b/libraries/fabric-ledger/package.json index defda21a..53160b1f 100644 --- a/libraries/fabric-ledger/package.json +++ b/libraries/fabric-ledger/package.json @@ -1,6 +1,6 @@ { "name": "fabric-ledger", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "tag": "unstable", "description": "A node.js implementation of Hyperledger Fabric ledger api, to allow access to ledger data from smart contracts", "main": "lib/index.js", @@ -49,8 +49,8 @@ "lines": 100 }, "dependencies": { - "fabric-contract-api": "3.0.0-unstable", - "winston": "^3.2.1" + "fabric-contract-api": "2.3.1-unstable", + "winston": "^3.3.2" }, "devDependencies": { "@types/chai": "^4.2.0", diff --git a/libraries/fabric-shim-crypto/package.json b/libraries/fabric-shim-crypto/package.json index b6e92943..27ee8de1 100644 --- a/libraries/fabric-shim-crypto/package.json +++ b/libraries/fabric-shim-crypto/package.json @@ -1,6 +1,6 @@ { "name": "fabric-shim-crypto", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "tag": "unstable", "description": "A node.js implementation of encryption library for Hyperledger Fabric chaincode shim", "main": "index.js", @@ -30,10 +30,10 @@ }, "devDependencies": { "mocha": "6.2.2", - "eslint": "6.6.0", + "eslint": "^6.6.0", "nyc": "14.1.1", "typescript": "3.4.5", - "chai": "^4.1.1", + "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "rewire": "4.0.1", "sinon": "7.5.0", diff --git a/libraries/fabric-shim/package.json b/libraries/fabric-shim/package.json index fef26ae1..cd6bfa39 100644 --- a/libraries/fabric-shim/package.json +++ b/libraries/fabric-shim/package.json @@ -1,6 +1,6 @@ { "name": "fabric-shim", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "tag": "unstable", "description": "A node.js implementation of Hyperledger Fabric chaincode shim, to allow endorsing peers and user-provided chaincodes to communicate with each other", "main": "index.js", @@ -59,8 +59,8 @@ "@grpc/proto-loader": "^0.5.4", "@types/node": "^14.0.13", "ajv": "^6.12.2", - "fabric-contract-api": "3.0.0-unstable", - "fabric-shim-api": "3.0.0-unstable", + "fabric-contract-api": "2.3.1-unstable", + "fabric-shim-api": "2.3.1-unstable", "fs-extra": "^9.0.1", "reflect-metadata": "^0.1.13", "winston": "^3.3.2", @@ -68,11 +68,11 @@ "yargs-parser": "^18.1.3" }, "devDependencies": { - "chai": "^4.1.1", + "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "chai-things": "^0.2.0", "cpx": "^1.5.0", - "eslint": "6.6.0", + "eslint": "^6.6.0", "mocha": "6.2.2", "mockery": "^2.1.0", "nyc": "14.1.1", diff --git a/package.json b/package.json index 3ecb5ed4..3d2e0530 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fabric-chaincode-node", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "tag": "unstable", "description": "fabric-chaincode-node monorepo, built with rush", "testFabricVersion": "master", diff --git a/release_notes/v2.0.0.txt b/release_notes/v2.0.0.txt index e39b9cbd..f46b59db 100644 --- a/release_notes/v2.0.0.txt +++ b/release_notes/v2.0.0.txt @@ -50,4 +50,4 @@ none Change Log ---------- -https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.0/CHANGELOG.md#v2.0.0 +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.0.0 diff --git a/release_notes/v2.1.0.txt b/release_notes/v2.1.0.txt new file mode 100644 index 00000000..b052bdb4 --- /dev/null +++ b/release_notes/v2.1.0.txt @@ -0,0 +1,17 @@ +v2.1.0 +------ + +Release Notes +------------- +There are minimal changes between v2.0.0 and v2.1.0, please see the change log for a full list of updates. + +The release-2.0 branch has been renamed to release-2.x; the v2.1.0 release supercedes v2.0.0. +The release-1.4 branch is currently LTS, please see the proposed Fabric LTS strategy for more information: +https://github.com/hyperledger/fabric-rfcs/pull/23 + +- FABCN-373 Added a compatibility.md file, explaining support for node and fabric versions +- FABCN-381 Exposes a new shim function for returning the CORE_PEER_LOCALMSPID peer environment variable + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.1.0 diff --git a/release_notes/v2.1.1.txt b/release_notes/v2.1.1.txt new file mode 100644 index 00000000..4c4a709b --- /dev/null +++ b/release_notes/v2.1.1.txt @@ -0,0 +1,16 @@ +v2.1.1 +------ + +Release Notes +------------- +There are minimal changes between v2.1.0 and v2.1.1, please see the change log for a full list of updates. + +The release-2.0 branch has been renamed to release-2.x; the v2.1.0 release supercedes v2.0.0. +The release-1.4 branch is currently LTS, please see the proposed Fabric LTS strategy for more information: +https://github.com/hyperledger/fabric-rfcs/pull/23 + +- FABCN-394 fabric-shim incorrectly implements interface ChaincodeStub from fabric-shim-api + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.1.1 diff --git a/release_notes/v2.1.2.txt b/release_notes/v2.1.2.txt new file mode 100644 index 00000000..375563d8 --- /dev/null +++ b/release_notes/v2.1.2.txt @@ -0,0 +1,15 @@ +v2.1.2 +------ + +Release Notes +------------- + +This release fixs a bug when querying more than 100 assets. + +The release-2.0 branch has been renamed to release-2.x; the v2.1.0 release supercedes v2.0.0. +The release-1.4 branch is currently LTS, please see the proposed Fabric LTS strategy for more information: +https://github.com/hyperledger/fabric-rfcs/pull/23 + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.1.2 diff --git a/release_notes/v2.1.3.txt b/release_notes/v2.1.3.txt new file mode 100644 index 00000000..3c17c2c0 --- /dev/null +++ b/release_notes/v2.1.3.txt @@ -0,0 +1,16 @@ +v2.1.3 +------ + +Release Notes +------------- + +Locks the version of the @grpc/grpc-js library to 1.0.3 +The updated grpc lirbary of 1.1.0 prevents the chaincode from contacting the peer. + +The release-2.0 branch has been renamed to release-2.x; the v2.1.0 release supercedes v2.0.0. +The release-1.4 branch is currently LTS, please see the proposed Fabric LTS strategy for more information: +https://github.com/hyperledger/fabric-rfcs/pull/23 + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.1.3 diff --git a/release_notes/v2.1.4.txt b/release_notes/v2.1.4.txt new file mode 100644 index 00000000..7c7de146 --- /dev/null +++ b/release_notes/v2.1.4.txt @@ -0,0 +1,20 @@ +v2.1.4 +------ + +Release Notes +------------- + +- FABCN-418 Dependency unable to use git + + Locks the version of the winston library to 3.2.1 + The updated winston library after 3.3.0 prevents chaincode installing due to + a new requirement for git which is not available in the + hyperledger/fabric-nodeenv docker image. + +The release-2.0 branch has been renamed to release-2.x; the v2.1.0 release supercedes v2.0.0. +The release-1.4 branch is currently LTS, please see the proposed Fabric LTS strategy for more information: +https://github.com/hyperledger/fabric-rfcs/pull/23 + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.1.4 diff --git a/release_notes/v2.2.0.txt b/release_notes/v2.2.0.txt new file mode 100644 index 00000000..9a9302c4 --- /dev/null +++ b/release_notes/v2.2.0.txt @@ -0,0 +1,12 @@ +v2.2.0 +------ + +Release Notes +------------- + +The v2.2.0 release is the LTS version of the fabric-chaincode-node + + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.2.0 diff --git a/release_notes/v2.3.0.txt b/release_notes/v2.3.0.txt new file mode 100644 index 00000000..e27dbc4b --- /dev/null +++ b/release_notes/v2.3.0.txt @@ -0,0 +1,17 @@ +v2.3.0 +------ + +Release Notes +------------- + +- Updated class transformer dependency +- Fixed type for timestamp.second +- OOM on Large Arg Size +- Removed to.be.ok +- Updated typescript and @types/node +- Added release guide + + +Change Log +---------- +https://github.com/hyperledger/fabric-chaincode-node/blob/release-2.x/CHANGELOG.md#v2.3.0 diff --git a/rush.json b/rush.json index 3a1fa418..25c76b5f 100644 --- a/rush.json +++ b/rush.json @@ -62,7 +62,7 @@ * Specify a SemVer range to ensure developers use a Node.js version that is appropriate * for your repo. */ - "nodeSupportedVersionRange": ">=10.13.0 <13.0.0", + "nodeSupportedVersionRange": ">=12.15.0 <13.0.0", /** * Odd-numbered major versions of Node.js are experimental. Even-numbered releases * spend six months in a stabilization period before the first Long Term Support (LTS) version. diff --git a/test/chaincodes/annotations/package.json b/test/chaincodes/annotations/package.json index 176e72af..899fae09 100644 --- a/test/chaincodes/annotations/package.json +++ b/test/chaincodes/annotations/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing typescript functionality and annotations", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "build": "tsc", @@ -19,8 +19,8 @@ "license": "APACHE-2.0", "dependencies": { "@types/node": "^14.6.4", - "fabric-contract-api": "3.0.0-unstable", - "fabric-shim": "3.0.0-unstable", + "fabric-contract-api": "2.3.1-unstable", + "fabric-shim": "2.3.1-unstable", "ts-node": "^3.3.0", "tslint": "^5.6.0", "typescript": "^4.0.2" diff --git a/test/chaincodes/clientidentity/package.json b/test/chaincodes/clientidentity/package.json index 5a6001f4..a4ec639f 100644 --- a/test/chaincodes/clientidentity/package.json +++ b/test/chaincodes/clientidentity/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing ClientIdentity functionality", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/crosschaincode/package.json b/test/chaincodes/crosschaincode/package.json index 2fe61fa1..840994b2 100644 --- a/test/chaincodes/crosschaincode/package.json +++ b/test/chaincodes/crosschaincode/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing cross chaincode functionality", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/crosschaincode2/package.json b/test/chaincodes/crosschaincode2/package.json index 2fe61fa1..51d80a5c 100644 --- a/test/chaincodes/crosschaincode2/package.json +++ b/test/chaincodes/crosschaincode2/package.json @@ -2,8 +2,8 @@ "name": "chaincode", "description": "Chaincode testing cross chaincode functionality", "engines": { - "node": "^12.13.0", - "npm": ">=5.3.0" + "node":"^12.13.0", + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/crud/package.json b/test/chaincodes/crud/package.json index ac2ed5d3..eed7c193 100644 --- a/test/chaincodes/crud/package.json +++ b/test/chaincodes/crud/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing crud functionality", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/encryption/package.json b/test/chaincodes/encryption/package.json index a10734df..31d015a6 100644 --- a/test/chaincodes/encryption/package.json +++ b/test/chaincodes/encryption/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing encryption functionality", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,8 +15,8 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable", - "fabric-shim-crypto": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable", + "fabric-shim-crypto": "2.3.1-unstable" } } diff --git a/test/chaincodes/events/package.json b/test/chaincodes/events/package.json index 67593880..370d11d6 100644 --- a/test/chaincodes/events/package.json +++ b/test/chaincodes/events/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing events functionality", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/ledger/package.json b/test/chaincodes/ledger/package.json index 364604e6..244865d2 100644 --- a/test/chaincodes/ledger/package.json +++ b/test/chaincodes/ledger/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing ledger functionality", "engines": { "node": ">=8.4.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,8 +15,8 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable", - "fabric-ledger": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable", + "fabric-ledger": "2.3.1-unstable" } } diff --git a/test/chaincodes/query/package.json b/test/chaincodes/query/package.json index 7fb1ebc5..5aa0cb62 100644 --- a/test/chaincodes/query/package.json +++ b/test/chaincodes/query/package.json @@ -3,7 +3,7 @@ "description": "Chaincode testing query functionality", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/scenario/package.json b/test/chaincodes/scenario/package.json index 7a72cca7..e30177ad 100644 --- a/test/chaincodes/scenario/package.json +++ b/test/chaincodes/scenario/package.json @@ -3,7 +3,7 @@ "description": "My first exciting chaincode implemented in node.js", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node start" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/chaincodes/server/package.json b/test/chaincodes/server/package.json index 04717ee9..d61a01d0 100644 --- a/test/chaincodes/server/package.json +++ b/test/chaincodes/server/package.json @@ -3,7 +3,7 @@ "description": "Chaincode server", "engines": { "node": "^12.13.0", - "npm": ">=5.3.0" + "npm": "^6.4.1" }, "scripts": { "start": "fabric-chaincode-node server" @@ -15,7 +15,7 @@ "author": "", "license": "Apache-2.0", "dependencies": { - "fabric-shim": "3.0.0-unstable", - "fabric-contract-api": "3.0.0-unstable" + "fabric-shim": "2.3.1-unstable", + "fabric-contract-api": "2.3.1-unstable" } } diff --git a/test/e2e/package.json b/test/e2e/package.json index eae46054..4d6289e8 100644 --- a/test/e2e/package.json +++ b/test/e2e/package.json @@ -17,8 +17,8 @@ "delay": "4.3.0", "fs-extra": "^9.0.1", "ip": "^1.1.5", - "ajv": "^6.5.5", - "ajv-cli": "^3.0.0", + "ajv": "^6.12.2", + "ajv-cli": "^3.2.1", "azure-mocha-reporter": "1.0.0" } } diff --git a/test/fv/package.json b/test/fv/package.json index 8afdeed0..d0c26c72 100644 --- a/test/fv/package.json +++ b/test/fv/package.json @@ -1,6 +1,6 @@ { "name": "fvtests", - "version": "3.0.0-unstable", + "version": "2.3.1-unstable", "description": "fv tests", "testFabricVersion": "master", "testFabricThirdParty": "0.4.15", @@ -18,19 +18,19 @@ }, "dependencies": { "@sinonjs/referee-sinon": "~5.0.0", - "ajv": "^6.5.5", - "ajv-cli": "^3.0.0", - "chai": "^4.1.1", + "ajv": "^6.12.2", + "ajv-cli": "^3.2.1", + "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "chai-things": "^0.2.0", "del": "^3.0.0", "delay": "4.3.0", - "eslint": "6.6.0", - "fabric-contract-api": "3.0.0-unstable", - "fabric-shim": "3.0.0-unstable", - "fabric-shim-api": "3.0.0-unstable", - "fabric-shim-crypto": "3.0.0-unstable", - "fs-extra": "8.1.0", + "eslint": "^6.6.0", + "fabric-contract-api": "2.3.1-unstable", + "fabric-shim": "2.3.1-unstable", + "fabric-shim-api": "2.3.1-unstable", + "fabric-shim-crypto": "2.3.1-unstable", + "fs-extra": "^9.0.1", "git-rev-sync": "1.12.0", "gulp": "^4.0.0", "ip": "^1.1.5", diff --git a/tools/toolchain/network/docker-compose/docker-compose-base.yaml b/tools/toolchain/network/docker-compose/docker-compose-base.yaml index 37720de2..d5d6015e 100644 --- a/tools/toolchain/network/docker-compose/docker-compose-base.yaml +++ b/tools/toolchain/network/docker-compose/docker-compose-base.yaml @@ -15,7 +15,7 @@ version: '2' services: ca0: - image: hyperledger/fabric-ca + image: hyperledger/fabric-ca${CA_IMG_TAG} environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - FABRIC_CA_SERVER_CA_NAME=ca-org1 @@ -29,7 +29,7 @@ services: container_name: ca_peerOrg1 ca1: - image: hyperledger/fabric-ca + image: hyperledger/fabric-ca${CA_IMG_TAG} environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - FABRIC_CA_SERVER_CA_NAME=ca-org2 @@ -92,7 +92,7 @@ services: # # bridge network as the peers # # https://docs.docker.com/compose/networking/ - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=node_default - - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv + - CORE_CHAINCODE_NODE_RUNTIME=hyperledger/fabric-nodeenv:2.3.1-unstable # Allow more time for chaincode container to build on install. - CORE_CHAINCODE_EXECUTETIMEOUT=300s