diff --git a/.gitignore b/.gitignore index 914247c6a..63b9afc2a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,9 @@ node_modules/* package-lock.json output.log +#Ignore default Caliper log location +log/ + # Ignore any generted html files *.html diff --git a/.travis/script.sh b/.travis/script.sh index 1adda6a40..08c0494d2 100755 --- a/.travis/script.sh +++ b/.travis/script.sh @@ -24,24 +24,17 @@ echo "---- Target version ${VERSION}" if [ "${BENCHMARK}" == "composer" ]; then # Run version if [ "${VERSION}" == "0.19" ]; then - npm install composer-admin@">=0.19.0 <0.20.0" - npm install composer-client@">=0.19.0 <0.20.0" - npm install composer-common@">=0.19.0 <0.20.0" - npm install fabric-client@1.1.0 + npm run composer-deps npm run test -- composer else echo "Unknown version ${VERSION} for benchmark ${BENCHMARK}" exit 1 fi elif [ "${BENCHMARK}" == "drm" ]; then - npm install grpc@1.10.1 - npm install fabric-ca-client@1.1.0 - npm install fabric-client@1.1.0 + npm run fabric-deps npm run test -- drm elif [ "${BENCHMARK}" == "simple" ]; then - npm install grpc@1.10.1 - npm install fabric-ca-client@1.1.0 - npm install fabric-client@1.1.0 + npm run fabric-deps npm run test -- simple else echo "Unknown target benchmark ${BENCHMARK}" diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..82bb4a76f --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,39 @@ + + +## Context + + +## Expected Behavior + + +## Actual Behavior + + +## Possible Fix + + +## Steps to Reproduce + + +1. +2. +3. +4. + +## Existing issues + +- [ ] [Stack Overflow issues](http://stackoverflow.com/tags/hyperledger-caliper) +- [ ] [GitHub Issues](https://github.com/hyperledger/caliper/issues) +- [ ] [Rocket Chat history](https://chat.hyperledger.org/channel/caliper) + + + +## Context + + +## Your Environment + +* Version used: +* Environment name and version (e.g. Chrome 39, node.js 5.4): +* Operating System and version (desktop or mobile): +* Link to your project: diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..4c1ae4786 --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,42 @@ + + +## Checklist + - [ ] A link to the issue/user story that the pull request relates to + - [ ] How to recreate the problem without the fix + - [ ] Design of the fix + - [ ] How to prove that the fix works + - [ ] Automated tests that prove the fix keeps on working + - [ ] Documentation - any JSDoc, website, or Stackoverflow answers? + + +## Issue/User story + + +## Steps to Reproduce + + +1. +2. +3. +4. + + +## Existing issues + +- [ ] [Stack Overflow issues](http://stackoverflow.com/tags/hyperledger-caliper) +- [ ] [GitHub Issues](https://github.com/hyperledger/caliper/issues) +- [ ] [Rocket Chat history](https://chat.hyperledger.org/channel/caliper) + + + +## Design of the fix + + +## Validation of the fix + + +## Automated Tests + + +## What documentation has been provided for this pull request + diff --git a/README.md b/README.md index d98a2aea7..3f6e0f682 100644 --- a/README.md +++ b/README.md @@ -35,10 +35,10 @@ Run `npm install` in caliper folder to install dependencies locally ### Install blockchain SDKs * Fabric - * Install using the repository - * run `npm install grpc@1.10.1 fabric-ca-client fabric-client` in the root folder - * If you want to test fabric with old version such as v1.1.0, you should install compatible client SDK, - e.g. `npm install fabric-ca-client@1.1.0 fabric-client@1.1.0` + * Install using the repository (for the supported Fabric v1.1) + * run `npm install grpc@1.10.1 fabric-ca-client@1.1.0 fabric-client@1.1.0` in the root folder + * If you want to test Fabric with old version such as v1.0.0, you should install compatible client SDK, + e.g. `npm install grpc@1.10.1 fabric-ca-client@1.0.0 fabric-client@1.0.0` * Sawtooth * Install dependencies @@ -55,6 +55,7 @@ Run `npm install` in caliper folder to install dependencies locally * Composer * Install dependencies + The easiest way to get started using a target version of Composer is to update the main package.json file to include the required Composer and Fabric modules, and subsequently run an `npm install` command. It is important that the Composer and Fabric versions are compatible. ``` diff --git a/benchmark/composer/composer-micro/query-asset.js b/benchmark/composer/composer-micro/query-asset.js index 4df3d7da5..262d7d9da 100755 --- a/benchmark/composer/composer-micro/query-asset.js +++ b/benchmark/composer/composer-micro/query-asset.js @@ -31,6 +31,7 @@ 'use strict'; const Util = require('../../../src/comm/util'); +const logger = Util.getLogger('query-asset.js'); const TxStatus = require('../../../src/comm/transaction'); module.exports.info = 'Query Asset Performance Test'; @@ -75,7 +76,7 @@ module.exports.init = async function(blockchain, context, args) { vehicles.push(vehicle); } - Util.log(`About to add ${vehicles.length} Vehicles to Asset Registry`); + logger.debug(`About to add ${vehicles.length} Vehicles to Asset Registry`); let vehicleRegistry = await busNetConnection.getAssetRegistry(vda_ns + '.Vehicle'); await vehicleRegistry.addAll(vehicles); }; @@ -83,6 +84,9 @@ module.exports.init = async function(blockchain, context, args) { module.exports.run = function() { let invoke_status = new TxStatus(qryRef++); + if(busNetConnection.engine) { + busNetConnection.engine.submitCallback(1); + } // use the pre-compiled query named 'selectAllCarsByColour' that is within the business // network queries file return busNetConnection.query('selectAllCarsByColour', { colour: matchColor}) diff --git a/benchmark/composer/composer-samples/basic-sample-network.js b/benchmark/composer/composer-samples/basic-sample-network.js index a0aca7314..4b1820e22 100755 --- a/benchmark/composer/composer-samples/basic-sample-network.js +++ b/benchmark/composer/composer-samples/basic-sample-network.js @@ -36,7 +36,7 @@ module.exports.info = 'Basic Sample Network Performance Test'; const composerUtils = require('../../../src/composer/composer_utils'); const removeExisting = require('../composer-test-utils').clearAll; -const Log = require('../../../src/comm/util').log; +const logger = require('../../../src/comm/util').getLogger('basic-sample-network.js'); const os = require('os'); const namespace = 'org.example.basic'; @@ -71,7 +71,7 @@ module.exports.init = async function(blockchain, context, args) { participant.lastName = 'wombat'; await participantRegistry.add(participant); - Log('About to create new participant card'); + logger.debug('About to create new participant card'); let userName = 'User1_' + uuid; let newConnection = await composerUtils.obtainConnectionForParticipant(busNetConnections.get('admin'), busNetName, participant, userName); busNetConnections.set(userName, newConnection); @@ -88,17 +88,17 @@ module.exports.init = async function(blockchain, context, args) { // Conditionally add/update Test Assets let populated = await assetRegistry.exists(assets[0].getIdentifier()); if (!populated) { - Log('Adding test assets ...'); + logger.debug('Adding test assets ...'); await assetRegistry.addAll(assets); - Log('Asset addition complete ...'); + logger.debug('Asset addition complete ...'); } else { - Log('Updating test assets ...'); + logger.debug('Updating test assets ...'); await removeExisting(assetRegistry, 'ASSET_' + uuid); await assetRegistry.addAll(assets); - Log('Asset update complete ...'); + logger.debug('Asset update complete ...'); } } catch (error) { - Log('error in test init(): ', error); + logger.error('error in test init(): ', error); return Promise.reject(error); } }; diff --git a/benchmark/composer/composer-samples/bond-network.js b/benchmark/composer/composer-samples/bond-network.js index 5ec85f8ad..b8550e84d 100755 --- a/benchmark/composer/composer-samples/bond-network.js +++ b/benchmark/composer/composer-samples/bond-network.js @@ -31,7 +31,7 @@ 'use strict'; const removeExisting = require('../composer-test-utils').clearAll; -const Log = require('../../../src/comm/util').log; +const logger = require('../../../src/comm/util').getLogger('bond-network.js'); const os = require('os'); const uuid = os.hostname() + process.pid; // UUID for client within test @@ -56,18 +56,18 @@ module.exports.init = async function(blockchain, context, args) { participant.name = 'penguin'; let populated = await participantRegistry.exists(participant.getIdentifier()); if (!populated) { - Log('Adding test assets ...'); + logger.debug('Adding test assets ...'); await participantRegistry.add(participant); - Log('Asset addition complete ...'); + logger.debug('Asset addition complete ...'); } else { - Log('Updating test assets ...'); + logger.debug('Updating test assets ...'); // remove all previously created items form test run let assetRegistry = await busNetConnection.getAssetRegistry(namespace + '.BondAsset'); await removeExisting(assetRegistry, 'ISIN_' + uuid); - Log('Asset update complete ...'); + logger.debug('Asset update complete ...'); } } catch (error) { - Log('error in test init(): ', error); + logger.error('error in test init(): ', error); return Promise.reject(error); } }; diff --git a/benchmark/composer/composer-samples/digitalproperty-network.js b/benchmark/composer/composer-samples/digitalproperty-network.js index ba0ccc8e4..01de7f11d 100755 --- a/benchmark/composer/composer-samples/digitalproperty-network.js +++ b/benchmark/composer/composer-samples/digitalproperty-network.js @@ -33,7 +33,7 @@ 'use strict'; const removeExisting = require('../composer-test-utils').clearAll; -const Log = require('../../../src/comm/util').log; +const logger = require('../../../src/comm/util').getLogger('digitalproperty-network.js'); const os = require('os'); const uuid = os.hostname() + process.pid; // UUID for client within test @@ -77,18 +77,18 @@ module.exports.init = async function(blockchain, context, args) { // Conditionally add/update Test Assets let populated = await assetRegistry.exists(assets[0].getIdentifier()); if (!populated) { - Log('Adding test assets ...'); + logger.debug('Adding test assets ...'); await participantRegistry.addAll([participant]); await assetRegistry.addAll(assets); - Log('Asset addition complete ...'); + logger.debug('Asset addition complete ...'); } else { - Log('Updating test assets ...'); + logger.debug('Updating test assets ...'); await removeExisting(assetRegistry, 'TITLE_' + uuid); await assetRegistry.updateAll(assets); - Log('Asset update complete ...'); + logger.debug('Asset update complete ...'); } } catch (error) { - Log('error in test init(): ', error); + logger.error('error in test init(): ', error); return Promise.reject(error); } }; diff --git a/benchmark/composer/composer-samples/marbles-network.js b/benchmark/composer/composer-samples/marbles-network.js index 381771e53..d9b092fb9 100755 --- a/benchmark/composer/composer-samples/marbles-network.js +++ b/benchmark/composer/composer-samples/marbles-network.js @@ -33,7 +33,7 @@ 'use strict'; const removeExisting = require('../composer-test-utils').clearAll; -const Log = require('../../../src/comm/util').log; +const logger = require('../../../src/comm/util').getLogger('marbles-network.js'); const os = require('os'); const uuid = os.hostname() + process.pid; // UUID for client within test @@ -79,18 +79,18 @@ module.exports.init = async function(blockchain, context, args) { // Conditionally add/update Test Assets let populated = await assetRegistry.exists(marbles[0].getIdentifier()); if (!populated) { - Log('Adding test assets ...'); + logger.debug('Adding test assets ...'); await participantRegistry.addAll(players); await assetRegistry.addAll(marbles); - Log('Asset addition complete ...'); + logger.debug('Asset addition complete ...'); } else { - Log('Updating test assets ...'); + logger.debug('Updating test assets ...'); await removeExisting(assetRegistry, 'MARBLE_' + uuid); await assetRegistry.updateAll(marbles); - Log('Asset update complete ...'); + logger.debug('Asset update complete ...'); } } catch (error) { - Log('error in test init(): ', error); + logger.error('error in test init(): ', error); return Promise.reject(error); } }; diff --git a/benchmark/composer/composer-samples/perishable-network.js b/benchmark/composer/composer-samples/perishable-network.js index 9051537d2..9098ce0d6 100755 --- a/benchmark/composer/composer-samples/perishable-network.js +++ b/benchmark/composer/composer-samples/perishable-network.js @@ -33,7 +33,7 @@ 'use strict'; const removeExisting = require('../composer-test-utils').clearAll; -const Log = require('../../../src/comm/util').log; +const logger = require('../../../src/comm/util').getLogger('perishable-network.js'); const os = require('os'); const uuid = os.hostname() + process.pid; // UUID for client within test @@ -132,25 +132,25 @@ module.exports.init = async function(blockchain, context, args) { // Conditionally add/update registries let populated = await growerRegistry.exists(growers[0].getIdentifier()); if (!populated) { - Log('Adding test assets ...'); + logger.debug('Adding test assets ...'); await growerRegistry.addAll(growers); await importerRegistry.addAll(importers); await shipperRegistry.addAll([shipper]); await contractRegistry.addAll(contracts); await shipmentRegistry.addAll(shipments); - Log('Asset addition complete ...'); + logger.debug('Asset addition complete ...'); } else { - Log('Updating test assets ...'); + logger.debug('Updating test assets ...'); await removeExisting(growerRegistry, 'Grower_' + uuid); await removeExisting(importerRegistry, 'Importer_' + uuid); await removeExisting(shipmentRegistry, 'SHIP_' + uuid); await growerRegistry.addAll(growers); await importerRegistry.addAll(importers); await shipmentRegistry.addAll(shipments); - Log('Asset update complete ...'); + logger.debug('Asset update complete ...'); } } catch (error) { - Log('error in test init(): ', error); + logger.error('error in test init(): ', error); return Promise.reject(error); } }; diff --git a/benchmark/composer/composer-samples/vehicle-lifecycle-network.js b/benchmark/composer/composer-samples/vehicle-lifecycle-network.js index d64ead2a4..4367dc232 100755 --- a/benchmark/composer/composer-samples/vehicle-lifecycle-network.js +++ b/benchmark/composer/composer-samples/vehicle-lifecycle-network.js @@ -51,7 +51,7 @@ 'use strict'; const removeExisting = require('../composer-test-utils').clearAll; -const Log = require('../../../src/comm/util').log; +const logger = require('../../../src/comm/util').getLogger('vehicle-lifecycle-network.js'); const os = require('os'); const uuid = os.hostname() + process.pid; // UUID for client within test @@ -143,15 +143,15 @@ module.exports.init = async function(blockchain, context, args) { try { if (!populated) { // First test pass, just add - Log('Adding test assets ...'); + logger.debug('Adding test assets ...'); await manufacturerRegistry.addAll(manufacturers); await ownerRegistry.addAll(privateOwners); await vehicleRegistry.addAll(vehicles); await orderRegistry.addAll(orders); - Log('Asset addition complete ...'); + logger.debug('Asset addition complete ...'); } else { // Second test pass, update/remove - Log('Updating test assets ...'); + logger.debug('Updating test assets ...'); await removeExisting(manufacturerRegistry, 'MANUFACTURER_' + uuid); await removeExisting(ownerRegistry, 'PRIVATEOWNER_' + uuid); await removeExisting(vehicleRegistry, 'VEHICLE_' + uuid); @@ -160,10 +160,10 @@ module.exports.init = async function(blockchain, context, args) { await ownerRegistry.addAll(privateOwners); await vehicleRegistry.addAll(vehicles); await orderRegistry.addAll(orders); - Log('Asset update complete ...'); + logger.debug('Asset update complete ...'); } } catch (error) { - Log('error in test init(): ', error); + logger.error('error in test init(): ', error); return Promise.reject(error); } }; diff --git a/benchmark/composer/config-composer-dev.json b/benchmark/composer/config-composer-pid.json old mode 100755 new mode 100644 similarity index 70% rename from benchmark/composer/config-composer-dev.json rename to benchmark/composer/config-composer-pid.json index 817398cb4..02a7279b6 --- a/benchmark/composer/config-composer-dev.json +++ b/benchmark/composer/config-composer-pid.json @@ -1,18 +1,10 @@ { - "blockchain": { - "type": "composer", - "config": "network/fabric/dev/composer-tls.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/dev/docker-compose-tls.yaml up -d", - "end": "docker-compose -f network/fabric/dev/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" - }, "test": { "name": "Composer Performance test", "description" : "This is an example Composer perf test", "clients": { "type": "local", - "number": 1 + "number": 2 }, "rounds": [{ "label" : "basic-sample-network", @@ -26,7 +18,7 @@ "label" : "basic-sample-network", "txNumber" : [50], "trim" : 0, - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 10}}], + "rateControl" : [{"type": "pid-rate", "opts": {"targetLoad": 5, "initialTPS": 2, "proportional": 0.2, "integral": 0.0001, "derrivative": 0.1}}], "arguments": {"testAssets": 50}, "callback" : "benchmark/composer/composer-samples/basic-sample-network.js" }] diff --git a/benchmark/composer/config-composer.json b/benchmark/composer/config-composer.json old mode 100755 new mode 100644 index 83b420d09..418487ede --- a/benchmark/composer/config-composer.json +++ b/benchmark/composer/config-composer.json @@ -1,18 +1,10 @@ { - "blockchain": { - "type": "composer", - "config": "network/fabric/2-org-1-peer/composer.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/2-org-1-peer/docker-compose.yaml up -d", - "end": "docker-compose -f network/fabric/2-org-1-peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" - }, "test": { "name": "Composer Performance test", "description" : "This is an example Composer perf test", "clients": { "type": "local", - "number": 2 + "number": 1 }, "rounds": [{ "label" : "basic-sample-network", @@ -23,12 +15,11 @@ "callback" : "benchmark/composer/composer-samples/basic-sample-network.js" }, { - "label" : "basic-sample-network", - "txNumber" : [50], - "trim" : 0, - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 10}}], - "arguments": {"testAssets": 50}, - "callback" : "benchmark/composer/composer-samples/basic-sample-network.js" + "label" : "vehicle-lifecycle-network", + "txNumber" : [100], + "rateControl" : [{"type": "fixed-rate", "opts": {"tps" :8}}], + "arguments": {"testAssets": 10, "testMatches": 5}, + "callback" : "benchmark/composer/composer-micro/query-asset.js" }] }, "monitor": { diff --git a/benchmark/composer/main.js b/benchmark/composer/main.js index 7f9a5fe3f..90725b55c 100755 --- a/benchmark/composer/main.js +++ b/benchmark/composer/main.js @@ -49,15 +49,16 @@ function main() { let path = require('path'); let fs = require('fs-extra'); + let logger = Util.getLogger('benchmark/composer/main.js'); let absConfigFile; if(typeof configFile === 'undefined') { absConfigFile = path.join(__dirname, 'config-composer.json'); } else { - absConfigFile = path.join(__dirname, configFile); + absConfigFile = path.isAbsolute(configFile) ? configFile : path.join(__dirname, configFile); } if(!fs.existsSync(absConfigFile)) { - Util.log('file ' + absConfigFile + ' does not exist'); + logger.error('file ' + absConfigFile + ' does not exist'); return; } @@ -65,24 +66,29 @@ function main() { let absCaliperDir = path.join(__dirname, '../..'); if(typeof networkFile === 'undefined') { try{ - let config = require(absConfigFile); - absNetworkFile = path.join(absCaliperDir, config.blockchain.config); + absNetworkFile = path.join(absCaliperDir, 'network/fabric/2org1peer/composer-tls.json'); } catch(err) { - Util.log('failed to find blockchain.config in ' + absConfigFile); + logger.error('failed to find blockchain.config in ' + absConfigFile); return; } } else { - absNetworkFile = path.join(__dirname, networkFile); + absNetworkFile = path.isAbsolute(networkFile) ? networkFile : path.join(__dirname, networkFile); } if(!fs.existsSync(absNetworkFile)) { - Util.log('file ' + absNetworkFile + ' does not exist'); + logger.error('file ' + absNetworkFile + ' does not exist'); return; } let framework = require('../../src/comm/bench-flow.js'); - framework.run(absConfigFile, absNetworkFile); + (async () => { + try { + await framework.run(absConfigFile, absNetworkFile); + } catch (err) { + logger.error(`Error while executing the benchmark: ${err.stack ? err.stack : err}`); + } + })(); } main(); \ No newline at end of file diff --git a/benchmark/drm/config.json b/benchmark/drm/config.json index 4e7803552..1eda998d6 100644 --- a/benchmark/drm/config.json +++ b/benchmark/drm/config.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/drm/fabric.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq)" - }, "test": { "name": "drm", "description" : "Benchmark for DRM scenario", diff --git a/benchmark/drm/main.js b/benchmark/drm/main.js index ed4858ba7..4c91ff743 100644 --- a/benchmark/drm/main.js +++ b/benchmark/drm/main.js @@ -41,15 +41,16 @@ function main() { const path = require('path'); const fs = require('fs-extra'); + let logger = Util.getLogger('benchmark/drm/main.js'); let absConfigFile; if(typeof configFile === 'undefined') { absConfigFile = path.join(__dirname, 'config.json'); } else { - absConfigFile = path.join(__dirname, configFile); + absConfigFile = path.isAbsolute(configFile) ? configFile : path.join(__dirname, configFile); } if(!fs.existsSync(absConfigFile)) { - Util.log('file ' + absConfigFile + ' does not exist'); + logger.error('file ' + absConfigFile + ' does not exist'); return; } @@ -57,25 +58,30 @@ function main() { let absCaliperDir = path.join(__dirname, '../..'); if(typeof networkFile === 'undefined') { try{ - let config = require(absConfigFile); - absNetworkFile = path.join(absCaliperDir, config.blockchain.config); + absNetworkFile = path.join(absCaliperDir, 'network/fabric/2org2peer/fabric-drm.json'); } catch(err) { - Util.log('failed to find blockchain.config in ' + absConfigFile); + logger.error('failed to find blockchain.config in ' + absConfigFile); return; } } else { - absNetworkFile = path.join(__dirname, networkFile); + absNetworkFile = path.isAbsolute(networkFile) ? networkFile : path.join(__dirname, networkFile); } if(!fs.existsSync(absNetworkFile)) { - Util.log('file ' + absNetworkFile + ' does not exist'); + logger.error('file ' + absNetworkFile + ' does not exist'); return; } const framework = require('../../src/comm/bench-flow.js'); - framework.run(absConfigFile, absNetworkFile); + (async () => { + try { + await framework.run(absConfigFile, absNetworkFile); + } catch (err) { + logger.error(`Error while executing the benchmark: ${err.stack ? err.stack : err}`); + } + })(); } main(); diff --git a/benchmark/marbles/config-fabric-node.json b/benchmark/marbles/config-fabric-node.json deleted file mode 100644 index 73ae0cf17..000000000 --- a/benchmark/marbles/config-fabric-node.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "blockchain": { - "type": "fabric", - "config": "benchmark/marbles/fabric-node.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/2-org-1-peer/docker-compose-tls.yaml up -d", - "end" : "docker-compose -f network/fabric/2-org-1-peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, - "test": { - "clients": { - "type": "local", - "number": 5 - }, - "rounds": [{ - "label" : "init", - "txNumber" : [500, 500, 500], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 25}}, {"type": "fixed-rate", "opts": {"tps" : 50}}, {"type": "fixed-rate", "opts": {"tps" : 75}}], - "callback" : "benchmark/marbles/init.js" - }, - { - "label" : "query", - "txNumber" : [15, 15], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 5}}, {"type": "fixed-rate", "opts": {"tps" : 5}}], - "callback" : "benchmark/marbles/query.js" - }] - }, - "monitor": { - "type": ["docker", "process"], - "docker":{ - "name": ["all"] - }, - "process": [ - { - "command" : "node", - "arguments" : "local-client.js", - "multiOutput" : "avg" - } - ], - "interval": 1 - } -} \ No newline at end of file diff --git a/benchmark/marbles/config-fabric-go.json b/benchmark/marbles/config.json similarity index 70% rename from benchmark/marbles/config-fabric-go.json rename to benchmark/marbles/config.json index f13464607..63bbd2618 100644 --- a/benchmark/marbles/config-fabric-go.json +++ b/benchmark/marbles/config.json @@ -1,12 +1,4 @@ -{ - "blockchain": { - "type": "fabric", - "config": "benchmark/marbles/fabric-go.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/2-org-1-peer/docker-compose-tls.yaml up -d", - "end" : "docker-compose -f network/fabric/2-org-1-peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, +{ "test": { "clients": { "type": "local", diff --git a/benchmark/marbles/main.js b/benchmark/marbles/main.js index ed4858ba7..762d3be12 100644 --- a/benchmark/marbles/main.js +++ b/benchmark/marbles/main.js @@ -41,15 +41,16 @@ function main() { const path = require('path'); const fs = require('fs-extra'); + let logger = Util.getLogger('benchmark/marbles/main.js'); let absConfigFile; if(typeof configFile === 'undefined') { absConfigFile = path.join(__dirname, 'config.json'); } else { - absConfigFile = path.join(__dirname, configFile); + absConfigFile = path.isAbsolute(configFile) ? configFile : path.join(__dirname, configFile); } if(!fs.existsSync(absConfigFile)) { - Util.log('file ' + absConfigFile + ' does not exist'); + logger.error('file ' + absConfigFile + ' does not exist'); return; } @@ -57,25 +58,30 @@ function main() { let absCaliperDir = path.join(__dirname, '../..'); if(typeof networkFile === 'undefined') { try{ - let config = require(absConfigFile); - absNetworkFile = path.join(absCaliperDir, config.blockchain.config); + absNetworkFile = path.join(absCaliperDir, 'network/fabric/2org1peer/fabric-marbles-go.json'); } catch(err) { - Util.log('failed to find blockchain.config in ' + absConfigFile); + logger.error('failed to find blockchain.config in ' + absConfigFile); return; } } else { - absNetworkFile = path.join(__dirname, networkFile); + absNetworkFile = path.isAbsolute(networkFile) ? networkFile : path.join(__dirname, networkFile); } if(!fs.existsSync(absNetworkFile)) { - Util.log('file ' + absNetworkFile + ' does not exist'); + logger.error('file ' + absNetworkFile + ' does not exist'); return; } const framework = require('../../src/comm/bench-flow.js'); - framework.run(absConfigFile, absNetworkFile); + (async () => { + try { + await framework.run(absConfigFile, absNetworkFile); + } catch (err) { + logger.error(`Error while executing the benchmark: ${err.stack ? err.stack : err}`); + } + })(); } main(); diff --git a/benchmark/simple/config-composite-rate.json b/benchmark/simple/config-composite-rate.json index a3335bf22..781cfb294 100644 --- a/benchmark/simple/config-composite-rate.json +++ b/benchmark/simple/config-composite-rate.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, "test": { "name": "simple", "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", @@ -24,11 +16,11 @@ "rateControllers": [ { "type": "fixed-rate", - "opts": {"tps" : 100} + "opts": {"tps" : 20} }, { "type": "fixed-rate", - "opts": {"tps" : 200} + "opts": {"tps" : 40} }, { "type": "zero-rate", @@ -36,7 +28,7 @@ }, { "type": "fixed-rate", - "opts": {"tps" : 100} + "opts": {"tps" : 30} } ], "logChange": true diff --git a/benchmark/simple/config-custom-domain.json b/benchmark/simple/config-custom-domain.json deleted file mode 100644 index a8375af34..000000000 --- a/benchmark/simple/config-custom-domain.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric-custom-domain.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/customdomain/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/customdomain/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, - "test": { - "name": "simple", - "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", - "clients": { - "type": "local", - "number": 5 - }, - "rounds": [{ - "label" : "open", - "txNumber" : [1000, 1000, 1000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}, {"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 150}}], - "arguments": { "money": 10000 }, - "callback" : "benchmark/simple/open.js" - }, - { - "label" : "query", - "txNumber" : [5000, 5000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 200}}], - "callback" : "benchmark/simple/query.js" - }] - }, - "monitor": { - "type": ["docker", "process"], - "docker":{ - "name": ["all"] - }, - "process": [ - { - "command" : "node", - "arguments" : "local-client.js", - "multiOutput" : "avg" - } - ], - "interval": 1 - } -} \ No newline at end of file diff --git a/benchmark/simple/config-dev.json b/benchmark/simple/config-dev.json deleted file mode 100644 index e9e7cda1c..000000000 --- a/benchmark/simple/config-dev.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric-dev.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/dev/docker-compose-tls.yaml up -d", - "end" : "docker-compose -f network/fabric/dev/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, - "test": { - "name": "simple", - "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", - "clients": { - "type": "local", - "number": 1 - }, - "rounds": [{ - "label" : "open", - "txNumber" : [250], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 25}}], - "arguments": { "money": 10000 }, - "callback" : "benchmark/simple/open.js" - }, - { - "label" : "query", - "txNumber" : [500], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}], - "callback" : "benchmark/simple/query.js" - }] - }, - "monitor": { - "type": ["docker", "process"], - "docker":{ - "name": ["all"] - }, - "process": [ - { - "command" : "node", - "arguments" : "local-client.js", - "multiOutput" : "avg" - } - ], - "interval": 1 - } -} \ No newline at end of file diff --git a/benchmark/simple/config-fabric.json b/benchmark/simple/config-feedback-rate.json similarity index 65% rename from benchmark/simple/config-fabric.json rename to benchmark/simple/config-feedback-rate.json index 54b035a8b..402b61978 100644 --- a/benchmark/simple/config-fabric.json +++ b/benchmark/simple/config-feedback-rate.json @@ -4,8 +4,8 @@ "config": "benchmark/simple/fabric.json" }, "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" }, "test": { "clients": { @@ -14,8 +14,8 @@ }, "rounds": [{ "label" : "open", - "txNumber" : [5000, 5000, 5000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 200}}, {"type": "fixed-rate", "opts": {"tps" : 300}}], + "txNumber" : [5000], + "rateControl" : [{"type": "fixed-feedback-rate", "opts": {"tps" : 100, "sleep_time": 1000, "unfinished_per_client": 10}}], "arguments": { "money": 10000 }, "callback" : "benchmark/simple/open.js" }, @@ -40,4 +40,4 @@ ], "interval": 1 } -} \ No newline at end of file +} diff --git a/benchmark/simple/config-iroha.json b/benchmark/simple/config-iroha.json index f793cc1d8..b44a3516d 100644 --- a/benchmark/simple/config-iroha.json +++ b/benchmark/simple/config-iroha.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "iroha", - "config": "benchmark/simple/iroha.json" - }, - "command" : { - "start": "docker-compose -f network/iroha/simplenetwork/docker-compose.yml up -d", - "end" : "docker logs iroha_node0; docker logs iroha_node1; docker-compose -f network/iroha/simplenetwork/docker-compose.yml down" - }, "test": { "clients": { "type": "local", diff --git a/benchmark/simple/config-linear-rate.json b/benchmark/simple/config-linear-rate.json index 88d2fce5a..cf7453d28 100644 --- a/benchmark/simple/config-linear-rate.json +++ b/benchmark/simple/config-linear-rate.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, "test": { "name": "simple", "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", diff --git a/benchmark/simple/config-node.json b/benchmark/simple/config-node.json deleted file mode 100644 index 2b8609a3b..000000000 --- a/benchmark/simple/config-node.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric-node.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, - "test": { - "name": "simple", - "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", - "clients": { - "type": "local", - "number": 5 - }, - "rounds": [{ - "label" : "open", - "txNumber" : [1000, 1000, 1000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}, {"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 150}}], - "arguments": { "money": 10000 }, - "callback" : "benchmark/simple/open.js" - }, - { - "label" : "query", - "txNumber" : [5000, 5000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 200}}], - "callback" : "benchmark/simple/query.js" - }] - }, - "monitor": { - "type": ["docker", "process"], - "docker":{ - "name": ["all"] - }, - "process": [ - { - "command" : "node", - "arguments" : "local-client.js", - "multiOutput" : "avg" - } - ], - "interval": 1 - } -} \ No newline at end of file diff --git a/benchmark/simple/config-record-replay-rate.json b/benchmark/simple/config-record-replay-rate.json index 206026b91..ce002d062 100644 --- a/benchmark/simple/config-record-replay-rate.json +++ b/benchmark/simple/config-record-replay-rate.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, "test": { "name": "simple", "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", diff --git a/benchmark/simple/config-sawtooth.json b/benchmark/simple/config-sawtooth.json index 3d867e851..12f0d8925 100644 --- a/benchmark/simple/config-sawtooth.json +++ b/benchmark/simple/config-sawtooth.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "sawtooth", - "config": "benchmark/simple/sawtooth.json" - }, - "command" : { - "start": "docker-compose -f network/sawtooth/simplenetwork/sawtooth-simple.yaml up -d", - "end" : "docker-compose -f network/sawtooth/simplenetwork/sawtooth-simple.yaml down;docker rm $(docker ps -aq)" - }, "test": { "name": "simple", "description" : "This is an example benchmark for caliper", @@ -18,7 +10,7 @@ "label" : "open", "txNumber" : [5], "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 1}}], - "arguments": { "money": 10000 }, + "arguments": { "money": 10000, "txnPerBatch":10 }, "callback" : "benchmark/simple/open.js" }, { diff --git a/benchmark/simple/config-zookeeper.json b/benchmark/simple/config-zookeeper.json index 2e0792eb9..8fea74177 100644 --- a/benchmark/simple/config-zookeeper.json +++ b/benchmark/simple/config-zookeeper.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric-remote.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq)" - }, "test": { "name": "simple", "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", diff --git a/benchmark/simple/config.json b/benchmark/simple/config.json index 62dff6d72..1dae6f188 100644 --- a/benchmark/simple/config.json +++ b/benchmark/simple/config.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/simple/fabric.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" - }, "test": { "name": "simple", "description" : "This is an example benchmark for caliper, to test the backend DLT's performance with simple account opening & querying transactions", @@ -15,18 +7,18 @@ "number": 5 }, "rounds": [{ - "label" : "open", - "txNumber" : [1000, 1000, 1000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}, {"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 150}}], - "arguments": { "money": 10000 }, - "callback" : "benchmark/simple/open.js" - }, - { - "label" : "query", - "txNumber" : [5000, 5000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 200}}], - "callback" : "benchmark/simple/query.js" - }] + "label" : "open", + "txNumber" : [1000, 1000, 1000], + "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}, {"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 150}}], + "arguments": { "money": 10000 }, + "callback" : "benchmark/simple/open.js" + }, + { + "label" : "query", + "txNumber" : [1000, 1000], + "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 100}}, {"type": "fixed-rate", "opts": {"tps" : 200}}], + "callback" : "benchmark/simple/query.js" + }] }, "monitor": { "type": ["docker", "process"], @@ -42,4 +34,4 @@ ], "interval": 1 } -} \ No newline at end of file +} diff --git a/benchmark/simple/main.js b/benchmark/simple/main.js index ed4858ba7..d06e31e48 100644 --- a/benchmark/simple/main.js +++ b/benchmark/simple/main.js @@ -41,41 +41,45 @@ function main() { const path = require('path'); const fs = require('fs-extra'); + let logger = Util.getLogger('benchmark/simple/main.js'); let absConfigFile; if(typeof configFile === 'undefined') { absConfigFile = path.join(__dirname, 'config.json'); } else { - absConfigFile = path.join(__dirname, configFile); + absConfigFile = path.isAbsolute(configFile) ? configFile : path.join(__dirname, configFile); } if(!fs.existsSync(absConfigFile)) { - Util.log('file ' + absConfigFile + ' does not exist'); + logger.error('file ' + absConfigFile + ' does not exist'); return; } let absNetworkFile; - let absCaliperDir = path.join(__dirname, '../..'); if(typeof networkFile === 'undefined') { try{ - let config = require(absConfigFile); - absNetworkFile = path.join(absCaliperDir, config.blockchain.config); + absNetworkFile = Util.resolvePath('network/fabric/2org2peer/fabric-simple.json'); } catch(err) { - Util.log('failed to find blockchain.config in ' + absConfigFile); + logger.error('failed to find blockchain.config in ' + absConfigFile); return; } } else { - absNetworkFile = path.join(__dirname, networkFile); + absNetworkFile = path.isAbsolute(networkFile) ? networkFile : path.join(__dirname, networkFile); } if(!fs.existsSync(absNetworkFile)) { - Util.log('file ' + absNetworkFile + ' does not exist'); + logger.error('file ' + absNetworkFile + ' does not exist'); return; } - const framework = require('../../src/comm/bench-flow.js'); - framework.run(absConfigFile, absNetworkFile); + (async () => { + try { + await framework.run(absConfigFile, absNetworkFile); + } catch (err) { + logger.error(`Error while executing the benchmark: ${err.stack ? err.stack : err}`); + } + })(); } main(); @@ -93,7 +97,6 @@ if(process.argv.length < 3) { else { config_path = path.join(__dirname, process.argv[2]); } - // use default framework to run the tests var framework = require('../../src/comm/bench-flow.js'); framework.run(config_path); diff --git a/benchmark/simple/open.js b/benchmark/simple/open.js index 302a98e78..5c6148ed2 100644 --- a/benchmark/simple/open.js +++ b/benchmark/simple/open.js @@ -9,15 +9,20 @@ module.exports.info = 'opening accounts'; -let accounts = []; +let account_array = []; +let txnPerBatch; let initMoney; let bc, contx; module.exports.init = function(blockchain, context, args) { if(!args.hasOwnProperty('money')) { - return Promise.reject(new Error('simple.open - "money" is missed in the arguments')); + return Promise.reject(new Error('simple.open - \'money\' is missed in the arguments')); } - initMoney = args.money.toString(); + if(!args.hasOwnProperty('txnPerBatch')) { + args.txnPerBatch = 1; + } + initMoney = args.money; + txnPerBatch = args.txnPerBatch; bc = blockchain; contx = context; return Promise.resolve(); @@ -48,17 +53,35 @@ function generateAccount() { if(typeof prefix === 'undefined') { prefix = get26Num(process.pid); } - return prefix + get26Num(accounts.length+1); + return prefix + get26Num(account_array.length+1); +} + +/** + * Generates simple workload + * @returns {Object} array of json objects + */ +function generateWorkload() { + let workload = []; + for(let i= 0; i < txnPerBatch; i++) { + let acc_id = generateAccount(); + account_array.push(acc_id); + let acc = { + 'verb': 'open', + 'account': acc_id, + 'money': initMoney + }; + workload.push(acc); + } + return workload; } module.exports.run = function() { - let newAcc = generateAccount(); - accounts.push(newAcc); - return bc.invokeSmartContract(contx, 'simple', 'v0', {verb: 'open', account: newAcc, money: initMoney}, 30); + let args = generateWorkload(); + return bc.invokeSmartContract(contx, 'simple', 'v0', args, 100); }; module.exports.end = function() { return Promise.resolve(); }; -module.exports.accounts = accounts; +module.exports.account_array = account_array; diff --git a/benchmark/simple/query.js b/benchmark/simple/query.js index 253daf503..83454bd5f 100644 --- a/benchmark/simple/query.js +++ b/benchmark/simple/query.js @@ -11,17 +11,17 @@ module.exports.info = 'querying accounts'; let bc, contx; -let accounts; +let account_array; module.exports.init = function(blockchain, context, args) { const open = require('./open.js'); bc = blockchain; contx = context; - accounts = open.accounts; + account_array = open.account_array; return Promise.resolve(); }; module.exports.run = function() { - const acc = accounts[Math.floor(Math.random()*(accounts.length))]; + const acc = account_array[Math.floor(Math.random()*(account_array.length))]; return bc.queryState(contx, 'simple', 'v0', acc); }; diff --git a/benchmark/simple/sawtooth.json b/benchmark/simple/sawtooth.json deleted file mode 100644 index a3e512b88..000000000 --- a/benchmark/simple/sawtooth.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sawtooth": { - "network": { - "restapi": { - "url": "http://127.0.0.1:8008" - } - } - } -} diff --git a/benchmark/smallbank/config-smallbank-sawtooth.json b/benchmark/smallbank/config-smallbank-sawtooth.json index 66de62922..62af57cb9 100644 --- a/benchmark/smallbank/config-smallbank-sawtooth.json +++ b/benchmark/smallbank/config-smallbank-sawtooth.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "sawtooth", - "config": "benchmark/smallbank/sawtooth.json" - }, - "command" : { - "start": "docker-compose -f network/sawtooth/smallbank/sawtooth-smallbank-go.yaml up -d", - "end" : "docker-compose -f network/sawtooth/smallbank/sawtooth-smallbank-go.yaml down;docker rm $(docker ps -aq)" - }, "test": { "name": "smallbank", "description" : "This is smallbank benchmark for caliper", diff --git a/benchmark/smallbank/config.json b/benchmark/smallbank/config.json index 33cb68569..b231d9ea6 100644 --- a/benchmark/smallbank/config.json +++ b/benchmark/smallbank/config.json @@ -1,12 +1,4 @@ { - "blockchain": { - "type": "fabric", - "config": "benchmark/smallbank/fabric.json" - }, - "command" : { - "start": "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml up -d", - "end" : "docker-compose -f network/fabric/simplenetwork/docker-compose.yaml down;docker rm $(docker ps -aq)" - }, "test": { "name": "smallbank", "description" : "This is smallbank benchmark for caliper", @@ -17,15 +9,15 @@ "rounds": [ { "label" : "smallOperations", - "txNumber" : [4000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 200}}], - "arguments": {"accounts":400, "txnPerBatch":10}, + "txNumber" : [500], + "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 20}}], + "arguments": {"accounts":400, "txnPerBatch":1}, "callback" : "benchmark/smallbank/smallbankOperations.js" }, { "label" : "query", - "txNumber" : [2000], - "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 200}}], + "txNumber" : [500], + "rateControl" : [{"type": "fixed-rate", "opts": {"tps" : 50}}], "callback" : "benchmark/smallbank/query.js" }] }, diff --git a/benchmark/smallbank/main.js b/benchmark/smallbank/main.js index 3ea522917..abb24ad54 100644 --- a/benchmark/smallbank/main.js +++ b/benchmark/smallbank/main.js @@ -8,7 +8,7 @@ 'use strict'; -const log = require('../../src/comm/util.js').log; +const Util = require('../../src/comm/util.js'); let configFile; let networkFile; /** @@ -42,15 +42,16 @@ function main() { let path = require('path'); let fs = require('fs-extra'); + let logger = Util.getLogger('benchamark/smallbank/main.js'); let absConfigFile; if(typeof configFile === 'undefined') { absConfigFile = path.join(__dirname, 'config.json'); } else { - absConfigFile = path.join(__dirname, configFile); + absConfigFile = path.isAbsolute(configFile) ? configFile : path.join(__dirname, configFile); } if(!fs.existsSync(absConfigFile)) { - log('file ' + absConfigFile + ' does not exist'); + logger.error('file ' + absConfigFile + ' does not exist'); return; } @@ -58,25 +59,30 @@ function main() { let absCaliperDir = path.join(__dirname, '../..'); if(typeof networkFile === 'undefined') { try{ - let config = require(absConfigFile); - absNetworkFile = path.join(absCaliperDir, config.blockchain.config); + absNetworkFile = path.join(absCaliperDir, 'network/fabric/2org2peer/fabric-smallbank.json'); } catch(err) { - log('failed to find blockchain.config in ' + absConfigFile); + logger.error('failed to find blockchain.config in ' + absConfigFile); return; } } else { - absNetworkFile = path.join(__dirname, networkFile); + absNetworkFile = path.isAbsolute(networkFile) ? networkFile : path.join(__dirname, networkFile); } if(!fs.existsSync(absNetworkFile)) { - log('file ' + absNetworkFile + ' does not exist'); + logger.error('file ' + absNetworkFile + ' does not exist'); return; } let framework = require('../../src/comm/bench-flow.js'); - framework.run(absConfigFile, absNetworkFile); + (async () => { + try { + await framework.run(absConfigFile, absNetworkFile); + } catch (err) { + logger.error(`Error while executing the benchmark: ${err.stack ? err.stack : err}`); + } + })(); } main(); diff --git a/benchmark/smallbank/sawtooth.json b/benchmark/smallbank/sawtooth.json deleted file mode 100644 index a3e512b88..000000000 --- a/benchmark/smallbank/sawtooth.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "sawtooth": { - "network": { - "restapi": { - "url": "http://127.0.0.1:8008" - } - } - } -} diff --git a/config/default.yaml b/config/default.yaml new file mode 100644 index 000000000..316e98c21 --- /dev/null +++ b/config/default.yaml @@ -0,0 +1,10 @@ +core: + client-request-timeout: 45000 + tx-update-time: 1000 + log-file: + debug: log/caliper.log + info: console + error: console + warn: console +fabric: +sawtooth: diff --git a/docs/ConfigFramework.md b/docs/ConfigFramework.md new file mode 100644 index 000000000..cbd1be773 --- /dev/null +++ b/docs/ConfigFramework.md @@ -0,0 +1,31 @@ +# A unified configuration framework +Adopt a unified configuration framework to handle configuration in caliper project. +## Hierarchical configuration +Using [nconf](https://github.com/indexzero/nconf) to give caliper the ability to add hierarchical configuration with files, environment variables, command-line arguments, and atomic object merging. +In the framework, create a Config object that is defined as follows: +``` +const Config = class { + constructor() { + nconf.use('memory'); + nconf.argv(); + nconf.env(); + this._fileStores = []; + // reference to configuration settings + this._config = nconf; + } +``` +The Config object constructor read command line arguments, environment variables, and environment config files in that order of specificity. Later loaded config items will override any previous item, It merges the config items supplied across all the different methods into one single dictionary. + +Config load config files such as default.yaml which looks like this: +``` + core: + client-request-timeout: 45000 + tx-update-time: 3000 + fabric: + sawtooth: +``` + +Import Config whenever need to access configuration values like so: +``` + let txUpdateTime = cfUtil.getConfigSetting('core:tx-update-time', 1000); +``` diff --git a/docs/RateControllers.md b/docs/RateControllers.md index dc3c17f7a..a7b7cf79c 100644 --- a/docs/RateControllers.md +++ b/docs/RateControllers.md @@ -102,14 +102,15 @@ The composite rate controller can be specified by setting the rate controller `t * `logChange`: a `boolean` value indicating whether the switches between the specified rate controllers should be logged or not. -**Important!** The existence of the composite rate controller is completely transparent to the specified "sub-controllers." This is achieved by essentially placing the controllers in a "virtualized" round, i.e., "lying" to them about: +**Important!** The existence of the composite rate controller is almost transparent to the specified "sub-controllers." This is achieved by essentially placing the controllers in a "virtualized" round, i.e., "lying" to them about: * the duration of the round (for duration-based rounds), * the total number of transactions to submit (for transaction number-based rounds), -* the starting time of the round, -* the index of the next transaction to submit, and -* the set of previously executed transactions. +* the starting time of the round, and +* the index of the next transaction to submit. -This "virtualization" does not affect the memoryless controllers, i.e., the controllers whose control logic does not depend on global round properties or past transaction results. However, other controllers might exhibit some strange (but hopefully transient) behavior due to this "virtualized" round approach. The logic of the [PID controller](#pid-rate) for example depends on the transaction backlog, but the (possibly pending) transactions submitted in the previous phase (with a different controller) are not visible to the controller. +The results of recently finished transactions are propagated to the sub-controllers as-is, so for the first few call of a newly activated sub-controller it can receive recent results that don't belong to its virtualized round. + +This virtualization does not affect the memoryless controllers, i.e., the controllers whose control logic does not depend on global round properties or past transaction results. However, other controllers might exhibit some strange (but hopefully transient) behavior due to this "virtualized" round approach. For example, the logic of the [PID controller](#pid-rate) for example depends on the transaction backlog. ## Linear Rate diff --git a/network/fabric/2-org-1-peer/README.md b/network/fabric/2org1peer/README.md similarity index 100% rename from network/fabric/2-org-1-peer/README.md rename to network/fabric/2org1peer/README.md diff --git a/network/fabric/2-org-1-peer/composer-tls.json b/network/fabric/2org1peer/composer-tls.json similarity index 88% rename from network/fabric/2-org-1-peer/composer-tls.json rename to network/fabric/2org1peer/composer-tls.json index d05aa1f43..fbc26e3a7 100755 --- a/network/fabric/2-org-1-peer/composer-tls.json +++ b/network/fabric/2org1peer/composer-tls.json @@ -1,6 +1,13 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/2org1peer/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/2org1peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { - "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], + "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}, {"id": "vehicle-lifecycle-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", "network": { "x-type" : "hlfv1", diff --git a/network/fabric/2-org-1-peer/composer.json b/network/fabric/2org1peer/composer.json similarity index 87% rename from network/fabric/2-org-1-peer/composer.json rename to network/fabric/2org1peer/composer.json index 1ac1ae660..2c448ea2c 100755 --- a/network/fabric/2-org-1-peer/composer.json +++ b/network/fabric/2org1peer/composer.json @@ -1,6 +1,13 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/2org1peer/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/2org1peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { - "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], + "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}, {"id": "vehicle-lifecycle-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", "network": { "x-type" : "hlfv1", diff --git a/network/fabric/2-org-1-peer/docker-compose-tls.yaml b/network/fabric/2org1peer/docker-compose-tls.yaml similarity index 100% rename from network/fabric/2-org-1-peer/docker-compose-tls.yaml rename to network/fabric/2org1peer/docker-compose-tls.yaml diff --git a/network/fabric/2-org-1-peer/docker-compose.yaml b/network/fabric/2org1peer/docker-compose.yaml similarity index 100% rename from network/fabric/2-org-1-peer/docker-compose.yaml rename to network/fabric/2org1peer/docker-compose.yaml diff --git a/benchmark/marbles/fabric-go.json b/network/fabric/2org1peer/fabric-marbles-go-tls.json similarity index 90% rename from benchmark/marbles/fabric-go.json rename to network/fabric/2org1peer/fabric-marbles-go-tls.json index c78880a1a..f47388972 100644 --- a/benchmark/marbles/fabric-go.json +++ b/network/fabric/2org1peer/fabric-marbles-go-tls.json @@ -1,4 +1,11 @@ { + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org1peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org1peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { "cryptodir": "network/fabric/config/crypto-config", "network": { diff --git a/network/fabric/2org1peer/fabric-marbles-go.json b/network/fabric/2org1peer/fabric-marbles-go.json new file mode 100644 index 000000000..d9c10d75a --- /dev/null +++ b/network/fabric/2org1peer/fabric-marbles-go.json @@ -0,0 +1,98 @@ +{ + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org1peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org1peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "user": { + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + }, + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "user": { + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + }, + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "ca": { + "url": "http://localhost:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1", "org2"], + "deployed": false + } + ], + "chaincodes": [{"id": "marbles", "path": "contract/fabric/marbles/go", "language":"golang", "version": "v1", "channel": "mychannel", "metadataPath": "src/contract/fabric/marbles/go/metadata"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "init": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.1.0", + "Size": "2 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/benchmark/marbles/fabric-node.json b/network/fabric/2org1peer/fabric-marbles-node-tls.json similarity index 90% rename from benchmark/marbles/fabric-node.json rename to network/fabric/2org1peer/fabric-marbles-node-tls.json index d4577698b..b7ac1b446 100644 --- a/benchmark/marbles/fabric-node.json +++ b/network/fabric/2org1peer/fabric-marbles-node-tls.json @@ -1,4 +1,11 @@ { + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org1peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org1peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { "cryptodir": "network/fabric/config/crypto-config", "network": { diff --git a/network/fabric/2org1peer/fabric-marbles-node.json b/network/fabric/2org1peer/fabric-marbles-node.json new file mode 100644 index 000000000..25419836d --- /dev/null +++ b/network/fabric/2org1peer/fabric-marbles-node.json @@ -0,0 +1,98 @@ +{ + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org1peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org1peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "user": { + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + }, + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "user": { + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + }, + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "ca": { + "url": "http://localhost:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1", "org2"], + "deployed": false + } + ], + "chaincodes": [{"id": "marbles", "path": "src/contract/fabric/marbles/node", "language":"node", "version": "v1", "channel": "mychannel", "metadataPath": "src/contract/fabric/marbles/node/metadata"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "init": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.1.0", + "Size": "2 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/network/fabric/2-org-2-peer/README.md b/network/fabric/2org2peer/README.md similarity index 100% rename from network/fabric/2-org-2-peer/README.md rename to network/fabric/2org2peer/README.md diff --git a/network/fabric/2-org-2-peer/composer-tls.json b/network/fabric/2org2peer/composer-tls.json similarity index 93% rename from network/fabric/2-org-2-peer/composer-tls.json rename to network/fabric/2org2peer/composer-tls.json index 71bea229b..a4702dbef 100755 --- a/network/fabric/2-org-2-peer/composer-tls.json +++ b/network/fabric/2org2peer/composer-tls.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/2-org-2-peer/composer.json b/network/fabric/2org2peer/composer.json similarity index 92% rename from network/fabric/2-org-2-peer/composer.json rename to network/fabric/2org2peer/composer.json index 8ee51f6a1..69c0052be 100755 --- a/network/fabric/2-org-2-peer/composer.json +++ b/network/fabric/2org2peer/composer.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/2-org-2-peer/docker-compose-tls.yaml b/network/fabric/2org2peer/docker-compose-tls.yaml similarity index 100% rename from network/fabric/2-org-2-peer/docker-compose-tls.yaml rename to network/fabric/2org2peer/docker-compose-tls.yaml diff --git a/network/fabric/2-org-2-peer/docker-compose.yaml b/network/fabric/2org2peer/docker-compose.yaml similarity index 100% rename from network/fabric/2-org-2-peer/docker-compose.yaml rename to network/fabric/2org2peer/docker-compose.yaml diff --git a/benchmark/drm/fabric.json b/network/fabric/2org2peer/fabric-drm-tls.json similarity index 61% rename from benchmark/drm/fabric.json rename to network/fabric/2org2peer/fabric-drm-tls.json index 0c2d78b1d..57b0a4b02 100644 --- a/benchmark/drm/fabric.json +++ b/network/fabric/2org2peer/fabric-drm-tls.json @@ -1,18 +1,25 @@ { + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { - "cryptodir": "network/fabric/simplenetwork/crypto-config", + "cryptodir": "network/fabric/config/crypto-config", "network": { "orderer": { "url": "grpcs://localhost:7050", "mspid": "OrdererMSP", - "msp": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/", + "msp": "network/fabric/config/crypto-config/ordererOrganizations/example.com/msp/", "server-hostname": "orderer.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" }, "org1": { "name": "peerOrg1", "mspid": "Org1MSP", - "msp": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/", + "msp": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/msp/", "ca": { "url": "https://localhost:7054", "name": "ca-org1" @@ -21,19 +28,19 @@ "requests": "grpcs://localhost:7051", "events": "grpcs://localhost:7053", "server-hostname": "peer0.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:7057", "events": "grpcs://localhost:7059", "server-hostname": "peer1.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" } }, "org2": { "name": "peerOrg2", "mspid": "Org2MSP", - "msp": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/", + "msp": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/msp/", "ca": { "url": "https://localhost:8054", "name": "ca-org2" @@ -42,13 +49,13 @@ "requests": "grpcs://localhost:8051", "events": "grpcs://localhost:8053", "server-hostname": "peer0.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:8057", "events": "grpcs://localhost:8059", "server-hostname": "peer1.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" } } }, @@ -56,7 +63,7 @@ { "name": "mychannel", "deployed": false, - "config": "network/fabric/simplenetwork/mychannel.tx", + "config": "network/fabric/config/mychannel.tx", "organizations": ["org1", "org2"] } ], diff --git a/network/fabric/2org2peer/fabric-drm.json b/network/fabric/2org2peer/fabric-drm.json new file mode 100644 index 000000000..ab421527f --- /dev/null +++ b/network/fabric/2org2peer/fabric-drm.json @@ -0,0 +1,105 @@ +{ + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "msp": "network/fabric/config/crypto-config/ordererOrganizations/example.com/msp/", + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "msp": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/msp/", + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:7057", + "events": "grpc://localhost:7059", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "msp": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/msp/", + "ca": { + "url": "http://localhost:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:8057", + "events": "grpc://localhost:8059", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "deployed": false, + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1", "org2"] + } + ], + "chaincodes": [{"id": "drm", "path": "contract/fabric/drm", "version": "v0", "language":"golang", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "publish": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.0.0", + "Size": "4 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/benchmark/simple/fabric-node.json b/network/fabric/2org2peer/fabric-simple-node-tls.json similarity index 58% rename from benchmark/simple/fabric-node.json rename to network/fabric/2org2peer/fabric-simple-node-tls.json index 2c5427aad..071187f9a 100644 --- a/benchmark/simple/fabric-node.json +++ b/network/fabric/2org2peer/fabric-simple-node-tls.json @@ -1,25 +1,32 @@ { + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { - "cryptodir": "network/fabric/simplenetwork/crypto-config", + "cryptodir": "network/fabric/config/crypto-config", "network": { "orderer": { "url": "grpcs://localhost:7050", "mspid": "OrdererMSP", "domain": "example.com", "user": { - "key": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/be595291403ff68280a724d7e868521815ad9e2fc8c5486f6d7ce6b62d6357cd_sk", - "cert": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" }, "server-hostname": "orderer.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" }, "org1": { "name": "peerOrg1", "mspid": "Org1MSP", "domain": "org1.example.com", "user": { - "key": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/0d2b2fc385b10fa59003217e1bb5af2d24a3d762266e287867a1bc290eb44657_sk", - "cert": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" }, "ca": { "url": "https://localhost:7054", @@ -29,13 +36,13 @@ "requests": "grpcs://localhost:7051", "events": "grpcs://localhost:7053", "server-hostname": "peer0.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:7057", "events": "grpcs://localhost:7059", "server-hostname": "peer1.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" } }, "org2": { @@ -50,20 +57,20 @@ "requests": "grpcs://localhost:8051", "events": "grpcs://localhost:8053", "server-hostname": "peer0.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:8057", "events": "grpcs://localhost:8059", "server-hostname": "peer1.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" } } }, "channel": [ { "name": "mychannel", - "config": "network/fabric/simplenetwork/mychannel.tx", + "config": "network/fabric/config/mychannel.tx", "organizations": ["org1", "org2"], "deployed": false } diff --git a/network/fabric/2org2peer/fabric-simple-node.json b/network/fabric/2org2peer/fabric-simple-node.json new file mode 100644 index 000000000..a9246dcee --- /dev/null +++ b/network/fabric/2org2peer/fabric-simple-node.json @@ -0,0 +1,113 @@ +{ + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "domain": "example.com", + "user": { + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + }, + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "domain": "org1.example.com", + "user": { + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + }, + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:7057", + "events": "grpc://localhost:7059", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "domain": "org2.example.com", + "ca": { + "url": "http://localhost:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:8057", + "events": "grpc://localhost:8059", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1", "org2"], + "deployed": false + } + ], + "chaincodes": [{"id": "simple", "path": "src/contract/fabric/simple/node", "language":"node", "version": "v0", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "open": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.1.0", + "Size": "4 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/benchmark/simple/fabric-remote.json b/network/fabric/2org2peer/fabric-simple-remote-tls.json similarity index 62% rename from benchmark/simple/fabric-remote.json rename to network/fabric/2org2peer/fabric-simple-remote-tls.json index 30dda101a..6e4dabc95 100644 --- a/benchmark/simple/fabric-remote.json +++ b/network/fabric/2org2peer/fabric-simple-remote-tls.json @@ -1,20 +1,27 @@ { + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { - "cryptodir": "network/fabric/simplenetwork/crypto-config", + "cryptodir": "network/fabric/2org2peer/crypto-config", "network": { "orderer": { "url": "grpcs://10.229.42.159:7050", "mspid": "OrdererMSP", "domain": "example.com", - "msp": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/", + "msp": "network/fabric/2org2peer/crypto-config/ordererOrganizations/example.com/msp/", "server-hostname": "orderer.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/2org2peer/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" }, "org1": { "name": "peerOrg1", "mspid": "Org1MSP", "domain": "org1.example.com", - "msp": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/", + "msp": "network/fabric/2org2peer/crypto-config/peerOrganizations/org1.example.com/msp/", "ca": { "url": "https://10.229.42.159:7054", "name": "ca-org1" @@ -23,20 +30,20 @@ "requests": "grpcs://10.229.42.159:7051", "events": "grpcs://10.229.42.159:7053", "server-hostname": "peer0.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://10.229.42.159:7057", "events": "grpcs://10.229.42.159:7059", "server-hostname": "peer1.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" } }, "org2": { "name": "peerOrg2", "mspid": "Org2MSP", "domain": "org2.example.com", - "msp": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/", + "msp": "network/fabric/2org2peer/crypto-config/peerOrganizations/org2.example.com/msp/", "ca": { "url": "https://10.229.42.159:8054", "name": "ca-org2" @@ -45,20 +52,20 @@ "requests": "grpcs://10.229.42.159:8051", "events": "grpcs://10.229.42.159:8053", "server-hostname": "peer0.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://10.229.42.159:8057", "events": "grpcs://10.229.42.159:8059", "server-hostname": "peer1.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" } } }, "channel": [ { "name": "mychannel", - "config": "network/fabric/simplenetwork/mychannel.tx", + "config": "network/fabric/2org2peer/mychannel.tx", "organizations": ["org1", "org2"] } ], diff --git a/network/fabric/2org2peer/fabric-simple-remote.json b/network/fabric/2org2peer/fabric-simple-remote.json new file mode 100644 index 000000000..d6f6e6072 --- /dev/null +++ b/network/fabric/2org2peer/fabric-simple-remote.json @@ -0,0 +1,107 @@ +{ + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/2org2peer/crypto-config", + "network": { + "orderer": { + "url": "grpc://10.229.42.159:7050", + "mspid": "OrdererMSP", + "domain": "example.com", + "msp": "network/fabric/2org2peer/crypto-config/ordererOrganizations/example.com/msp/", + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/2org2peer/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "domain": "org1.example.com", + "msp": "network/fabric/2org2peer/crypto-config/peerOrganizations/org1.example.com/msp/", + "ca": { + "url": "http://10.229.42.159:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://10.229.42.159:7051", + "events": "grpc://10.229.42.159:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://10.229.42.159:7057", + "events": "grpc://10.229.42.159:7059", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "domain": "org2.example.com", + "msp": "network/fabric/2org2peer/crypto-config/peerOrganizations/org2.example.com/msp/", + "ca": { + "url": "http://10.229.42.159:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://10.229.42.159:8051", + "events": "grpc://10.229.42.159:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://10.229.42.159:8057", + "events": "grpc://10.229.42.159:8059", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "network/fabric/2org2peer/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/2org2peer/mychannel.tx", + "organizations": ["org1", "org2"] + } + ], + "chaincodes": [{"id": "simple", "path": "contract/fabric/simple/go", "language":"golang", "version": "v0", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "open": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.0.5", + "Size": "4 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/benchmark/simple/fabric.json b/network/fabric/2org2peer/fabric-simple-tls.json similarity index 58% rename from benchmark/simple/fabric.json rename to network/fabric/2org2peer/fabric-simple-tls.json index b920d3c70..bb8f1784c 100644 --- a/benchmark/simple/fabric.json +++ b/network/fabric/2org2peer/fabric-simple-tls.json @@ -1,25 +1,32 @@ { + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { - "cryptodir": "network/fabric/simplenetwork/crypto-config", + "cryptodir": "network/fabric/config/crypto-config", "network": { "orderer": { "url": "grpcs://localhost:7050", "mspid": "OrdererMSP", "domain": "example.com", "user": { - "key": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/be595291403ff68280a724d7e868521815ad9e2fc8c5486f6d7ce6b62d6357cd_sk", - "cert": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" }, "server-hostname": "orderer.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" }, "org1": { "name": "peerOrg1", "mspid": "Org1MSP", "domain": "org1.example.com", "user": { - "key": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/0d2b2fc385b10fa59003217e1bb5af2d24a3d762266e287867a1bc290eb44657_sk", - "cert": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" }, "ca": { "url": "https://localhost:7054", @@ -29,13 +36,13 @@ "requests": "grpcs://localhost:7051", "events": "grpcs://localhost:7053", "server-hostname": "peer0.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:7057", "events": "grpcs://localhost:7059", "server-hostname": "peer1.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" } }, "org2": { @@ -50,20 +57,20 @@ "requests": "grpcs://localhost:8051", "events": "grpcs://localhost:8053", "server-hostname": "peer0.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:8057", "events": "grpcs://localhost:8059", "server-hostname": "peer1.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" } } }, "channel": [ { "name": "mychannel", - "config": "network/fabric/simplenetwork/mychannel.tx", + "config": "network/fabric/config/mychannel.tx", "organizations": ["org1", "org2"], "deployed": false } diff --git a/network/fabric/2org2peer/fabric-simple.json b/network/fabric/2org2peer/fabric-simple.json new file mode 100644 index 000000000..c4e774e26 --- /dev/null +++ b/network/fabric/2org2peer/fabric-simple.json @@ -0,0 +1,113 @@ +{ + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "domain": "example.com", + "user": { + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + }, + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "domain": "org1.example.com", + "user": { + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + }, + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:7057", + "events": "grpc://localhost:7059", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "domain": "org2.example.com", + "ca": { + "url": "http://localhost:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:8057", + "events": "grpc://localhost:8059", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1", "org2"], + "deployed": false + } + ], + "chaincodes": [{"id": "simple", "path": "contract/fabric/simple/go", "language":"golang", "version": "v0", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "open": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.0.5", + "Size": "4 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/benchmark/smallbank/fabric.json b/network/fabric/2org2peer/fabric-smallbank-tls.json similarity index 57% rename from benchmark/smallbank/fabric.json rename to network/fabric/2org2peer/fabric-smallbank-tls.json index 5c74edc6e..95fb5496b 100644 --- a/benchmark/smallbank/fabric.json +++ b/network/fabric/2org2peer/fabric-smallbank-tls.json @@ -1,23 +1,30 @@ { + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { - "cryptodir": "network/fabric/simplenetwork/crypto-config", + "cryptodir": "network/fabric/config/crypto-config", "network": { "orderer": { "url": "grpcs://localhost:7050", "mspid": "OrdererMSP", "user": { - "key": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/be595291403ff68280a724d7e868521815ad9e2fc8c5486f6d7ce6b62d6357cd_sk", - "cert": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" }, "server-hostname": "orderer.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" }, "org1": { "name": "peerOrg1", "mspid": "Org1MSP", "user": { - "key": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/0d2b2fc385b10fa59003217e1bb5af2d24a3d762266e287867a1bc290eb44657_sk", - "cert": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" }, "ca": { "url": "https://localhost:7054", @@ -27,13 +34,13 @@ "requests": "grpcs://localhost:7051", "events": "grpcs://localhost:7053", "server-hostname": "peer0.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:7057", "events": "grpcs://localhost:7059", "server-hostname": "peer1.org1.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" } }, "org2": { @@ -47,20 +54,20 @@ "requests": "grpcs://localhost:8051", "events": "grpcs://localhost:8053", "server-hostname": "peer0.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" }, "peer2": { "requests": "grpcs://localhost:8057", "events": "grpcs://localhost:8059", "server-hostname": "peer1.org2.example.com", - "tls_cacerts": "network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" } } }, "channel": [ { "name": "mychannel", - "config": "network/fabric/simplenetwork/mychannel.tx", + "config": "network/fabric/config/mychannel.tx", "organizations": ["org1", "org2"], "deployed": false } diff --git a/network/fabric/2org2peer/fabric-smallbank.json b/network/fabric/2org2peer/fabric-smallbank.json new file mode 100644 index 000000000..bc0cd2252 --- /dev/null +++ b/network/fabric/2org2peer/fabric-smallbank.json @@ -0,0 +1,110 @@ +{ + "caliper": { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/2org2peer/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/2org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "user": { + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + }, + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "user": { + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + }, + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:7057", + "events": "grpc://localhost:7059", + "server-hostname": "peer1.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt" + } + }, + "org2": { + "name": "peerOrg2", + "mspid": "Org2MSP", + "ca": { + "url": "http://localhost:8054", + "name": "ca-org2" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:8057", + "events": "grpc://localhost:8059", + "server-hostname": "peer1.org2.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1", "org2"], + "deployed": false + } + ], + "chaincodes": [{"id": "smallbank", "path": "contract/fabric/smallbank", "language":"golang", "version": "v0", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "Org2MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "smallOperations": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.1.0", + "Size": "4 Peers", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/network/fabric/2-org-3-peer/README.md b/network/fabric/2org3peer/README.md similarity index 100% rename from network/fabric/2-org-3-peer/README.md rename to network/fabric/2org3peer/README.md diff --git a/network/fabric/2-org-3-peer/composer-tls.json b/network/fabric/2org3peer/composer-tls.json similarity index 94% rename from network/fabric/2-org-3-peer/composer-tls.json rename to network/fabric/2org3peer/composer-tls.json index 4a737ebca..57ffc0582 100755 --- a/network/fabric/2-org-3-peer/composer-tls.json +++ b/network/fabric/2org3peer/composer-tls.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/2org3peer/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/2org3peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/2-org-3-peer/composer.json b/network/fabric/2org3peer/composer.json similarity index 93% rename from network/fabric/2-org-3-peer/composer.json rename to network/fabric/2org3peer/composer.json index ae138230b..9428160aa 100755 --- a/network/fabric/2-org-3-peer/composer.json +++ b/network/fabric/2org3peer/composer.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/2org3peer/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/2org3peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/2-org-3-peer/docker-compose-tls.yaml b/network/fabric/2org3peer/docker-compose-tls.yaml similarity index 100% rename from network/fabric/2-org-3-peer/docker-compose-tls.yaml rename to network/fabric/2org3peer/docker-compose-tls.yaml diff --git a/network/fabric/2-org-3-peer/docker-compose.yaml b/network/fabric/2org3peer/docker-compose.yaml similarity index 100% rename from network/fabric/2-org-3-peer/docker-compose.yaml rename to network/fabric/2org3peer/docker-compose.yaml diff --git a/network/fabric/3-org-1-peer/README.md b/network/fabric/3org1peer/README.md similarity index 100% rename from network/fabric/3-org-1-peer/README.md rename to network/fabric/3org1peer/README.md diff --git a/network/fabric/3-org-1-peer/composer-tls.json b/network/fabric/3org1peer/composer-tls.json similarity index 93% rename from network/fabric/3-org-1-peer/composer-tls.json rename to network/fabric/3org1peer/composer-tls.json index 3cd9e1494..3417c809c 100755 --- a/network/fabric/3-org-1-peer/composer-tls.json +++ b/network/fabric/3org1peer/composer-tls.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/3org1peer/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/3org1peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2", "Org3"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/3-org-1-peer/composer.json b/network/fabric/3org1peer/composer.json similarity index 93% rename from network/fabric/3-org-1-peer/composer.json rename to network/fabric/3org1peer/composer.json index 17cae4ca9..aa3705686 100755 --- a/network/fabric/3-org-1-peer/composer.json +++ b/network/fabric/3org1peer/composer.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/3org1peer/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/3org1peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2", "Org3"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/3-org-1-peer/docker-compose-tls.yaml b/network/fabric/3org1peer/docker-compose-tls.yaml similarity index 100% rename from network/fabric/3-org-1-peer/docker-compose-tls.yaml rename to network/fabric/3org1peer/docker-compose-tls.yaml diff --git a/network/fabric/3-org-1-peer/docker-compose.yaml b/network/fabric/3org1peer/docker-compose.yaml similarity index 100% rename from network/fabric/3-org-1-peer/docker-compose.yaml rename to network/fabric/3org1peer/docker-compose.yaml diff --git a/network/fabric/3-org-2-peer/README.md b/network/fabric/3org2peer/README.md similarity index 100% rename from network/fabric/3-org-2-peer/README.md rename to network/fabric/3org2peer/README.md diff --git a/network/fabric/3-org-2-peer/composer-tls.json b/network/fabric/3org2peer/composer-tls.json similarity index 95% rename from network/fabric/3-org-2-peer/composer-tls.json rename to network/fabric/3org2peer/composer-tls.json index c478e042b..95ab62fb7 100755 --- a/network/fabric/3-org-2-peer/composer-tls.json +++ b/network/fabric/3org2peer/composer-tls.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/3org2peer/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/3org2peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2", "Org3"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/3-org-2-peer/composer.json b/network/fabric/3org2peer/composer.json similarity index 94% rename from network/fabric/3-org-2-peer/composer.json rename to network/fabric/3org2peer/composer.json index 0580aad19..eb7b2ae49 100755 --- a/network/fabric/3-org-2-peer/composer.json +++ b/network/fabric/3org2peer/composer.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/3org2peer/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/3org2peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2", "Org3"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/3-org-2-peer/docker-compose-tls.yaml b/network/fabric/3org2peer/docker-compose-tls.yaml similarity index 100% rename from network/fabric/3-org-2-peer/docker-compose-tls.yaml rename to network/fabric/3org2peer/docker-compose-tls.yaml diff --git a/network/fabric/3-org-2-peer/docker-compose.yaml b/network/fabric/3org2peer/docker-compose.yaml similarity index 100% rename from network/fabric/3-org-2-peer/docker-compose.yaml rename to network/fabric/3org2peer/docker-compose.yaml diff --git a/network/fabric/3-org-3-peer/README.md b/network/fabric/3org3peer/README.md similarity index 100% rename from network/fabric/3-org-3-peer/README.md rename to network/fabric/3org3peer/README.md diff --git a/network/fabric/3-org-3-peer/composer-tls.json b/network/fabric/3org3peer/composer-tls.json similarity index 95% rename from network/fabric/3-org-3-peer/composer-tls.json rename to network/fabric/3org3peer/composer-tls.json index 659877865..ab98218a8 100755 --- a/network/fabric/3-org-3-peer/composer-tls.json +++ b/network/fabric/3org3peer/composer-tls.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/3org3peer/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/3org3peer/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2", "Org3"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/3-org-3-peer/composer.json b/network/fabric/3org3peer/composer.json similarity index 95% rename from network/fabric/3-org-3-peer/composer.json rename to network/fabric/3org3peer/composer.json index 4e5494894..6fcb3adc2 100755 --- a/network/fabric/3-org-3-peer/composer.json +++ b/network/fabric/3org3peer/composer.json @@ -1,4 +1,11 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/3org3peer/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/3org3peer/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1", "Org2", "Org3"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", diff --git a/network/fabric/3-org-3-peer/docker-compose-tls.yaml b/network/fabric/3org3peer/docker-compose-tls.yaml similarity index 100% rename from network/fabric/3-org-3-peer/docker-compose-tls.yaml rename to network/fabric/3org3peer/docker-compose-tls.yaml diff --git a/network/fabric/3-org-3-peer/docker-compose.yaml b/network/fabric/3org3peer/docker-compose.yaml similarity index 100% rename from network/fabric/3-org-3-peer/docker-compose.yaml rename to network/fabric/3org3peer/docker-compose.yaml diff --git a/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/ca/3c61a49b6731e7ce06dc98e697e75fded9cafea6f0475d16bbcb7c73c81e6f39_sk b/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/ca/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/ca/3c61a49b6731e7ce06dc98e697e75fded9cafea6f0475d16bbcb7c73c81e6f39_sk rename to network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/ca/key.pem diff --git a/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/orderers/orderer.mydomain.com/msp/keystore/64f292ab4159b5e3ff533e31e19423182b0ae291f426d2d029a6db5ba3ec805d_sk b/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/orderers/orderer.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/orderers/orderer.mydomain.com/msp/keystore/64f292ab4159b5e3ff533e31e19423182b0ae291f426d2d029a6db5ba3ec805d_sk rename to network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/orderers/orderer.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/tlsca/94842e2fc05fb4275ea48891742fd1f7698277a7423d4421b3fbe18f5b9cd7c9_sk b/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/tlsca/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/tlsca/94842e2fc05fb4275ea48891742fd1f7698277a7423d4421b3fbe18f5b9cd7c9_sk rename to network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/tlsca/key.pem diff --git a/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/1435ca4590754efaefc6963ee97fd9d0b256516e11c07490b7f307b88599c42e_sk b/network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/1435ca4590754efaefc6963ee97fd9d0b256516e11c07490b7f307b88599c42e_sk rename to network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/ca/c3d81d794b25f564cf5b350a87ba624cdf43199342cc761603696edcc3f288dc_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/ca/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/ca/c3d81d794b25f564cf5b350a87ba624cdf43199342cc761603696edcc3f288dc_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/ca/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/msp/keystore/5d6d7fd99c9abc8f420ca634808585bbe187eb0c8761ea0f2a22a29f7d5556a7_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/msp/keystore/5d6d7fd99c9abc8f420ca634808585bbe187eb0c8761ea0f2a22a29f7d5556a7_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer1.org1.mydomain.com/msp/keystore/6fd89914e2d9a5ce8d6d4fe34f4f186fe9005ffb3616056f7b400af60dc2f80f_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer1.org1.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer1.org1.mydomain.com/msp/keystore/6fd89914e2d9a5ce8d6d4fe34f4f186fe9005ffb3616056f7b400af60dc2f80f_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer1.org1.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/tlsca/64111d25edfe0fa4acefb537bd7b9bf7f5fdb0adb0ab6ffb341aa784df8aea3a_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/tlsca/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/tlsca/64111d25edfe0fa4acefb537bd7b9bf7f5fdb0adb0ab6ffb341aa784df8aea3a_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/tlsca/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/d1868001e58970697ab964b00087e2a7895d499cbb1a45ae5f4d3ac9936017e6_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/d1868001e58970697ab964b00087e2a7895d499cbb1a45ae5f4d3ac9936017e6_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/User1@org1.mydomain.com/msp/keystore/9e3d1c5349c44f1a076fe390ea391370273fdd3c0a2043b7c05f407cb6da68d2_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/User1@org1.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/User1@org1.mydomain.com/msp/keystore/9e3d1c5349c44f1a076fe390ea391370273fdd3c0a2043b7c05f407cb6da68d2_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/User1@org1.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/ca/75e2ab5f86a47d346f6171c47b7e523258f26099e099a63743a1387b089d04ba_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/ca/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/ca/75e2ab5f86a47d346f6171c47b7e523258f26099e099a63743a1387b089d04ba_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/ca/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/msp/keystore/3c5791adef1e9c22daccebd0dee596fdee0eea0f15ec90b4658baf67625b41c6_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/msp/keystore/3c5791adef1e9c22daccebd0dee596fdee0eea0f15ec90b4658baf67625b41c6_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer1.org6.mydomain.com/msp/keystore/71cc94159ff4e9b13db1002c509427f23e16ec3e693faa64081cb14c8bb5010c_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer1.org6.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer1.org6.mydomain.com/msp/keystore/71cc94159ff4e9b13db1002c509427f23e16ec3e693faa64081cb14c8bb5010c_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer1.org6.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/tlsca/bf7181d30a5c7d7b10d73e37a3524ca6aad4774d6bfc365a1beca4463e3ba286_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/tlsca/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/tlsca/bf7181d30a5c7d7b10d73e37a3524ca6aad4774d6bfc365a1beca4463e3ba286_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/tlsca/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/keystore/763db8bae22ab76bce1616bffef548d3879da59cc7b67c46a2a513bb678ab745_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/keystore/763db8bae22ab76bce1616bffef548d3879da59cc7b67c46a2a513bb678ab745_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/User1@org6.mydomain.com/msp/keystore/a33a1f9caa995ae6544b543ae338de351828c36ec1cf4e7431317ad109efd017_sk b/network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/User1@org6.mydomain.com/msp/keystore/key.pem similarity index 100% rename from network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/User1@org6.mydomain.com/msp/keystore/a33a1f9caa995ae6544b543ae338de351828c36ec1cf4e7431317ad109efd017_sk rename to network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/User1@org6.mydomain.com/msp/keystore/key.pem diff --git a/network/fabric/customdomain/docker-compose-tls.yaml b/network/fabric/customdomain/docker-compose-tls.yaml new file mode 100644 index 000000000..d60013ff5 --- /dev/null +++ b/network/fabric/customdomain/docker-compose-tls.yaml @@ -0,0 +1,194 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version: '2' + +services: + ca0: + image: hyperledger/fabric-ca:x86_64-1.1.0 + environment: + - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server + - FABRIC_CA_SERVER_TLS_ENABLED=true + - GODEBUG=netdns=go + - FABRIC_CA_SERVER_CA_NAME=ca-org1 + - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.mydomain.com-cert.pem + - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/key.pem + - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.mydomain.com-cert.pem + - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/key.pem + ports: + - "7054:7054" + command: sh -c 'fabric-ca-server start -b admin:adminpw -d' + volumes: + - ./crypto-config/peerOrganizations/org1.mydomain.com/ca/:/etc/hyperledger/fabric-ca-server-config + container_name: ca_peerOrg1 + + ca1: + image: hyperledger/fabric-ca:x86_64-1.1.0 + environment: + - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server + - FABRIC_CA_SERVER_TLS_ENABLED=true + - GODEBUG=netdns=go + - FABRIC_CA_SERVER_CA_NAME=ca-org6 + - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org6.mydomain.com-cert.pem + - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/key.pem + - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org6.mydomain.com-cert.pem + - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/key.pem + ports: + - "8054:7054" + command: sh -c 'fabric-ca-server start -b admin:adminpw -d' + volumes: + - ./crypto-config/peerOrganizations/org6.mydomain.com/ca/:/etc/hyperledger/fabric-ca-server-config + container_name: ca_peerOrg6 + + orderer.mydomain.com: + container_name: orderer.mydomain.com + image: hyperledger/fabric-orderer:x86_64-1.1.0 + environment: + - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 + - ORDERER_GENERAL_GENESISMETHOD=file + - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/twoorgs.genesis.block + - ORDERER_GENERAL_LOCALMSPID=OrdererMSP + - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/msp/orderer/msp + - ORDERER_GENERAL_TLS_ENABLED=true + - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/msp/orderer/tls/server.key + - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/msp/orderer/tls/server.crt + - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/msp/orderer/tls/ca.crt, /etc/hyperledger/msp/peerOrg1/tls/ca.crt, /etc/hyperledger/msp/peerOrg2/tls/ca.crt] + - GODEBUG=netdns=go + working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer + command: orderer + ports: + - 7050:7050 + volumes: + - ./:/etc/hyperledger/configtx + - ./crypto-config/ordererOrganizations/mydomain.com/orderers/orderer.mydomain.com/:/etc/hyperledger/msp/orderer + - ./crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/:/etc/hyperledger/msp/peerOrg1 + - ./crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/:/etc/hyperledger/msp/peerOrg2 + + peer0.org1.mydomain.com: + image: hyperledger/fabric-peer:x86_64-1.1.0 + container_name: peer0.org1.mydomain.com + environment: + - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock + - CORE_PEER_ENDORSER_ENABLED=true + - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ + - CORE_PEER_GOSSIP_USELEADERELECTION=true + - CORE_PEER_GOSSIP_ORGLEADER=false + - CORE_PEER_TLS_ENABLED=true + - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key + - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt + - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default + - GODEBUG=netdns=go + - CORE_PEER_ID=peer0.org1.mydomain.com + - CORE_PEER_LOCALMSPID=org1MSP + - CORE_PEER_ADDRESS=peer0.org1.mydomain.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.mydomain.com:7051 + ports: + - 7051:7051 + - 7053:7053 + working_dir: /opt/gopath/src/github.com/hyperledger/fabric + command: peer node start + volumes: + - /var/run/:/host/var/run/ + - ./crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/:/etc/hyperledger/msp/peer + depends_on: + - orderer.mydomain.com + + peer1.org1.mydomain.com: + image: hyperledger/fabric-peer:x86_64-1.1.0 + container_name: peer1.org1.mydomain.com + environment: + - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock + - CORE_PEER_ENDORSER_ENABLED=true + - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ + - CORE_PEER_GOSSIP_USELEADERELECTION=true + - CORE_PEER_GOSSIP_ORGLEADER=false + - CORE_PEER_TLS_ENABLED=true + - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key + - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt + - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default + - GODEBUG=netdns=go + - CORE_PEER_ID=peer1.org1.mydomain.com + - CORE_PEER_LOCALMSPID=org1MSP + - CORE_PEER_ADDRESS=peer1.org1.mydomain.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.mydomain.com:7051 + ports: + - 7057:7051 + - 7059:7053 + working_dir: /opt/gopath/src/github.com/hyperledger/fabric + command: peer node start + volumes: + - /var/run/:/host/var/run/ + - ./crypto-config/peerOrganizations/org1.mydomain.com/peers/peer1.org1.mydomain.com/:/etc/hyperledger/msp/peer + depends_on: + - orderer.mydomain.com + + peer0.org6.mydomain.com: + image: hyperledger/fabric-peer:x86_64-1.1.0 + container_name: peer0.org6.mydomain.com + environment: + - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock + - CORE_PEER_ENDORSER_ENABLED=true + - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ + - CORE_PEER_GOSSIP_USELEADERELECTION=true + - CORE_PEER_GOSSIP_ORGLEADER=false + - CORE_PEER_TLS_ENABLED=true + - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key + - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt + - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default + - GODEBUG=netdns=go + - CORE_PEER_ID=peer0.org6.mydomain.com + - CORE_PEER_LOCALMSPID=org6MSP + - CORE_PEER_ADDRESS=peer0.org6.mydomain.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org6.mydomain.com:7051 + ports: + - 8051:7051 + - 8053:7053 + working_dir: /opt/gopath/src/github.com/hyperledger/fabric + command: peer node start + volumes: + - /var/run/:/host/var/run/ + - ./crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/:/etc/hyperledger/msp/peer + depends_on: + - orderer.mydomain.com + + peer1.org6.mydomain.com: + image: hyperledger/fabric-peer:x86_64-1.1.0 + container_name: peer1.org6.mydomain.com + environment: + - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock + - CORE_PEER_ENDORSER_ENABLED=true + - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ + - CORE_PEER_GOSSIP_USELEADERELECTION=true + - CORE_PEER_GOSSIP_ORGLEADER=false + - CORE_PEER_TLS_ENABLED=true + - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key + - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt + - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default + - GODEBUG=netdns=go + - CORE_PEER_ID=peer1.org6.mydomain.com + - CORE_PEER_LOCALMSPID=org6MSP + - CORE_PEER_ADDRESS=peer1.org6.mydomain.com:7051 + - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org6.mydomain.com:7051 + ports: + - 8057:7051 + - 8059:7053 + working_dir: /opt/gopath/src/github.com/hyperledger/fabric + command: peer node start + volumes: + - /var/run/:/host/var/run/ + - ./crypto-config/peerOrganizations/org6.mydomain.com/peers/peer1.org6.mydomain.com/:/etc/hyperledger/msp/peer + depends_on: + - orderer.mydomain.com \ No newline at end of file diff --git a/network/fabric/customdomain/docker-compose.yaml b/network/fabric/customdomain/docker-compose.yaml index a85a2ddf9..e001cd1f7 100644 --- a/network/fabric/customdomain/docker-compose.yaml +++ b/network/fabric/customdomain/docker-compose.yaml @@ -17,13 +17,11 @@ services: image: hyperledger/fabric-ca:x86_64-1.1.0 environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - - FABRIC_CA_SERVER_TLS_ENABLED=true + - FABRIC_CA_SERVER_TLS_ENABLED=false - GODEBUG=netdns=go - FABRIC_CA_SERVER_CA_NAME=ca-org1 - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.mydomain.com-cert.pem - - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c3d81d794b25f564cf5b350a87ba624cdf43199342cc761603696edcc3f288dc_sk - - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.mydomain.com-cert.pem - - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c3d81d794b25f564cf5b350a87ba624cdf43199342cc761603696edcc3f288dc_sk + - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/key.pem ports: - "7054:7054" command: sh -c 'fabric-ca-server start -b admin:adminpw -d' @@ -35,13 +33,11 @@ services: image: hyperledger/fabric-ca:x86_64-1.1.0 environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - - FABRIC_CA_SERVER_TLS_ENABLED=true + - FABRIC_CA_SERVER_TLS_ENABLED=false - GODEBUG=netdns=go - FABRIC_CA_SERVER_CA_NAME=ca-org6 - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org6.mydomain.com-cert.pem - - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/75e2ab5f86a47d346f6171c47b7e523258f26099e099a63743a1387b089d04ba_sk - - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org6.mydomain.com-cert.pem - - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/75e2ab5f86a47d346f6171c47b7e523258f26099e099a63743a1387b089d04ba_sk + - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/key.pem ports: - "8054:7054" command: sh -c 'fabric-ca-server start -b admin:adminpw -d' @@ -58,10 +54,7 @@ services: - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/twoorgs.genesis.block - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/msp/orderer/msp - - ORDERER_GENERAL_TLS_ENABLED=true - - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/msp/orderer/tls/server.key - - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/msp/orderer/tls/server.crt - - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/msp/orderer/tls/ca.crt, /etc/hyperledger/msp/peerOrg1/tls/ca.crt, /etc/hyperledger/msp/peerOrg2/tls/ca.crt] + - ORDERER_GENERAL_TLS_ENABLED=false - GODEBUG=netdns=go working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer command: orderer @@ -82,10 +75,7 @@ services: - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ - CORE_PEER_GOSSIP_USELEADERELECTION=true - CORE_PEER_GOSSIP_ORGLEADER=false - - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key - - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt - - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_PEER_TLS_ENABLED=false - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default - GODEBUG=netdns=go - CORE_PEER_ID=peer0.org1.mydomain.com @@ -112,10 +102,7 @@ services: - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ - CORE_PEER_GOSSIP_USELEADERELECTION=true - CORE_PEER_GOSSIP_ORGLEADER=false - - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key - - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt - - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_PEER_TLS_ENABLED=false - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default - GODEBUG=netdns=go - CORE_PEER_ID=peer1.org1.mydomain.com @@ -142,10 +129,7 @@ services: - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ - CORE_PEER_GOSSIP_USELEADERELECTION=true - CORE_PEER_GOSSIP_ORGLEADER=false - - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key - - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt - - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_PEER_TLS_ENABLED=false - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default - GODEBUG=netdns=go - CORE_PEER_ID=peer0.org6.mydomain.com @@ -172,10 +156,7 @@ services: - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ - CORE_PEER_GOSSIP_USELEADERELECTION=true - CORE_PEER_GOSSIP_ORGLEADER=false - - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key - - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt - - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt + - CORE_PEER_TLS_ENABLED=false - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=customdomain_default - GODEBUG=netdns=go - CORE_PEER_ID=peer1.org6.mydomain.com diff --git a/benchmark/simple/fabric-custom-domain.json b/network/fabric/customdomain/fabric-custom-domain-tls.json similarity index 84% rename from benchmark/simple/fabric-custom-domain.json rename to network/fabric/customdomain/fabric-custom-domain-tls.json index 1b2f7cc5f..804b934e9 100644 --- a/benchmark/simple/fabric-custom-domain.json +++ b/network/fabric/customdomain/fabric-custom-domain-tls.json @@ -1,4 +1,11 @@ { + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/customdomain/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/customdomain/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { "cryptodir": "network/fabric/customdomain/crypto-config", "network": { @@ -7,7 +14,7 @@ "mspid": "OrdererMSP", "domain": "mydomain.com", "user": { - "key": "network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/1435ca4590754efaefc6963ee97fd9d0b256516e11c07490b7f307b88599c42e_sk", + "key": "network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/key.pem", "cert": "network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/signcerts/Admin@mydomain.com-cert.pem" }, "server-hostname": "orderer.mydomain.com", @@ -18,7 +25,7 @@ "mspid": "org1MSP", "domain": "org1.mydomain.com", "user": { - "key": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/d1868001e58970697ab964b00087e2a7895d499cbb1a45ae5f4d3ac9936017e6_sk", + "key": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/key.pem", "cert": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/signcerts/Admin@org1.mydomain.com-cert.pem" }, "ca": { @@ -42,6 +49,10 @@ "name": "peerOrg6", "mspid": "org6MSP", "domain": "org6.mydomain.com", + "user": { + "key": "network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/keystore/key.pem", + "cert": "network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/signcerts/Admin@org6.mydomain.com-cert.pem" + }, "ca": { "url": "https://localhost:8054", "name": "ca-org6" diff --git a/network/fabric/customdomain/fabric-custom-domain.json b/network/fabric/customdomain/fabric-custom-domain.json new file mode 100644 index 000000000..b4730cc63 --- /dev/null +++ b/network/fabric/customdomain/fabric-custom-domain.json @@ -0,0 +1,117 @@ +{ + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/customdomain/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/customdomain/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/customdomain/crypto-config", + "network": { + "orderer": { + "url": "grpc://localhost:7050", + "mspid": "OrdererMSP", + "domain": "mydomain.com", + "user": { + "key": "network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/keystore/key.pem", + "cert": "network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/users/Admin@mydomain.com/msp/signcerts/Admin@mydomain.com-cert.pem" + }, + "server-hostname": "orderer.mydomain.com", + "tls_cacerts": "network/fabric/customdomain/crypto-config/ordererOrganizations/mydomain.com/orderers/orderer.mydomain.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "org1MSP", + "domain": "org1.mydomain.com", + "user": { + "key": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/keystore/key.pem", + "cert": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/users/Admin@org1.mydomain.com/msp/signcerts/Admin@org1.mydomain.com-cert.pem" + }, + "ca": { + "url": "http://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", + "server-hostname": "peer0.org1.mydomain.com", + "tls_cacerts": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer0.org1.mydomain.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:7057", + "events": "grpc://localhost:7059", + "server-hostname": "peer1.org1.mydomain.com", + "tls_cacerts": "network/fabric/customdomain/crypto-config/peerOrganizations/org1.mydomain.com/peers/peer1.org1.mydomain.com/tls/ca.crt" + } + }, + "org6": { + "name": "peerOrg6", + "mspid": "org6MSP", + "domain": "org6.mydomain.com", + "user": { + "key": "network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/keystore/key.pem", + "cert": "network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/users/Admin@org6.mydomain.com/msp/signcerts/Admin@org6.mydomain.com-cert.pem" + }, + "ca": { + "url": "http://localhost:8054", + "name": "ca-org6" + }, + "peer1": { + "requests": "grpc://localhost:8051", + "events": "grpc://localhost:8053", + "server-hostname": "peer0.org6.mydomain.com", + "tls_cacerts": "network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer0.org6.mydomain.com/tls/ca.crt" + }, + "peer2": { + "requests": "grpc://localhost:8057", + "events": "grpc://localhost:8059", + "server-hostname": "peer1.org6.mydomain.com", + "tls_cacerts": "network/fabric/customdomain/crypto-config/peerOrganizations/org6.mydomain.com/peers/peer1.org6.mydomain.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/customdomain/mychannel.tx", + "organizations": ["org1", "org6"], + "deployed": false + } + ], + "chaincodes": [{"id": "simple", "path": "src/contract/fabric/simple/node", "language":"node", "version": "v0", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "org1MSP" + } + }, + { + "role": { + "name": "member", + "mspId": "org6MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "org1MSP" + } + } + ], + "policy": { "2-of": [{"signed-by": 0}, {"signed-by": 1}]} + }, + "context": { + "open": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.1.0", + "Size": "4 Peers", + "Orderer": "Solo", + "Distribution": "Single Host, Custom Orgs" + } +} \ No newline at end of file diff --git a/network/fabric/customdomain/generate.sh b/network/fabric/customdomain/generate.sh index 3b9a7d790..82cb7cc23 100755 --- a/network/fabric/customdomain/generate.sh +++ b/network/fabric/customdomain/generate.sh @@ -1,4 +1,11 @@ #!/usr/bin/env bash + bin/cryptogen generate --config=./crypto-config.yaml bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock twoorgs.genesis.block -bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx mychannel.tx -channelID mychannel \ No newline at end of file +bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx mychannel.tx -channelID mychannel + +# Rename the key files we use to be key.pem instead of a uuid +for KEY in $(find crypto-config -type f -name "*_sk"); do + KEY_DIR=$(dirname ${KEY}) + mv ${KEY} ${KEY_DIR}/key.pem +done \ No newline at end of file diff --git a/network/fabric/dev/composer-tls.json b/network/fabric/dev/composer-tls.json index ece81a99c..ae6d1c63a 100755 --- a/network/fabric/dev/composer-tls.json +++ b/network/fabric/dev/composer-tls.json @@ -1,6 +1,13 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/dev/docker-compose-tls.yaml up -d", + "end": "docker-compose -f network/fabric/dev/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { - "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "contract/composer", "orgs": ["Org1"], "loglevel": "INFO"}], + "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", "network": { "x-type" : "hlfv1", @@ -12,7 +19,7 @@ "url": "grpcs://localhost:7050", "mspid": "OrdererMSP", "mspconfig": "/etc/hyperledger/msp/orderer/tls/ca.crt", - "cert": "/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt", "hostname": "orderer.example.com", "hosturl": "orderer.example.com:7050" } @@ -28,8 +35,8 @@ "name": "Org1", "mspid": "Org1MSP", "mspconfig": "/etc/hyperledger/msp/users/Admin@org1.example.com/msp", - "adminCert": "/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem", - "adminKey" : "/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "adminCert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem", + "adminKey" : "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", "certificateAuthorities": [ "ca.org1.example.com" ], @@ -43,7 +50,7 @@ "url": "grpcs://localhost:7051", "eventUrl": "grpcs://localhost:7053", "hostname": "peer0.org1.example.com", - "cert" : "/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt", + "cert" : "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt", "channels":[ "mychannel" ] @@ -51,7 +58,7 @@ }, "channels": { "mychannel": { - "config": "/etc/hyperledger/configtx/mychannel.tx", + "config": "/etc/hyperledger/configtx/mychannel.tx", "mspconfig": "/etc/hyperledger/msp/users/Admin@org1.example.com/msp", "cafile": "/etc/hyperledger/msp/orderer/tls/ca.crt", "orderers": [ @@ -62,6 +69,6 @@ ] } } - } + } } } \ No newline at end of file diff --git a/network/fabric/dev/composer.json b/network/fabric/dev/composer.json index a7cc6b81f..2f0de9e43 100755 --- a/network/fabric/dev/composer.json +++ b/network/fabric/dev/composer.json @@ -1,6 +1,13 @@ -{ +{ + "caliper": { + "blockchain": "composer", + "command" : { + "start": "docker-compose -f network/fabric/dev/docker-compose.yaml up -d", + "end": "docker-compose -f network/fabric/dev/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev-* -q)" + } + }, "composer": { - "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "contract/composer", "orgs": ["Org1"], "loglevel": "INFO"}], + "chaincodes": [{"id": "basic-sample-network", "version": "0.1.0", "path": "src/contract/composer", "orgs": ["Org1"], "loglevel": "INFO"}], "cryptodir": "network/fabric/config/crypto-config", "network": { "x-type" : "hlfv1", @@ -27,8 +34,8 @@ "name": "Org1", "mspid": "Org1MSP", "mspconfig": "/etc/hyperledger/msp/users/Admin@org1.example.com/msp", - "adminCert": "/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem", - "adminKey" : "/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "adminCert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem", + "adminKey" : "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", "certificateAuthorities": [ "ca.org1.example.com" ], @@ -41,7 +48,7 @@ "peer0.org1.example.com": { "url": "grpc://localhost:7051", "eventUrl": "grpc://localhost:7053", - "hostname": "peer0.org1.example.com", + "hostname": "peer0.org1.example.com", "channels":[ "mychannel" ] @@ -49,7 +56,7 @@ }, "channels": { "mychannel": { - "config": "/etc/hyperledger/configtx/mychannel.tx", + "config": "/etc/hyperledger/configtx/mychannel.tx", "mspconfig": "/etc/hyperledger/msp/users/Admin@org1.example.com/msp", "orderers": [ "orderer.example.com" @@ -59,6 +66,6 @@ ] } } - } + } } } \ No newline at end of file diff --git a/network/fabric/dev/fabric-dev-tls.json b/network/fabric/dev/fabric-dev-tls.json new file mode 100644 index 000000000..32d7be285 --- /dev/null +++ b/network/fabric/dev/fabric-dev-tls.json @@ -0,0 +1,80 @@ +{ + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/dev/docker-compose-tls.yaml up -d", + "end" : "docker-compose -f network/fabric/dev/docker-compose-tls.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, + "fabric": { + "cryptodir": "network/fabric/config/crypto-config", + "network": { + "orderer": { + "url": "grpcs://localhost:7050", + "mspid": "OrdererMSP", + "domain": "example.com", + "user": { + "key": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem" + }, + "server-hostname": "orderer.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt" + }, + "org1": { + "name": "peerOrg1", + "mspid": "Org1MSP", + "domain": "org1.example.com", + "user": { + "key": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/key.pem", + "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" + }, + "ca": { + "url": "https://localhost:7054", + "name": "ca-org1" + }, + "peer1": { + "requests": "grpcs://localhost:7051", + "events": "grpcs://localhost:7053", + "server-hostname": "peer0.org1.example.com", + "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" + } + } + }, + "channel": [ + { + "name": "mychannel", + "config": "network/fabric/config/mychannel.tx", + "organizations": ["org1"], + "deployed": false + } + ], + "chaincodes": [{"id": "simple", "path": "contract/fabric/simple/go", "language":"golang", "version": "v0", "channel": "mychannel"}], + "endorsement-policy": { + "identities": [ + { + "role": { + "name": "member", + "mspId": "Org1MSP" + } + }, + { + "role": { + "name": "admin", + "mspId": "Org1MSP" + } + } + ], + "policy": { "1-of": [{"signed-by": 0}]} + }, + "context": { + "open": "mychannel", + "query": "mychannel" + } + }, + "info" : { + "Version": "1.1.0", + "Size": "1 Peer", + "Orderer": "Solo", + "Distribution": "Single Host" + } +} \ No newline at end of file diff --git a/benchmark/simple/fabric-dev.json b/network/fabric/dev/fabric-dev.json similarity index 82% rename from benchmark/simple/fabric-dev.json rename to network/fabric/dev/fabric-dev.json index e6f9db0e4..1a11f1b6d 100644 --- a/benchmark/simple/fabric-dev.json +++ b/network/fabric/dev/fabric-dev.json @@ -1,9 +1,16 @@ { + "caliper" : { + "blockchain": "fabric", + "command" : { + "start": "docker-compose -f network/fabric/dev/docker-compose.yaml up -d", + "end" : "docker-compose -f network/fabric/dev/docker-compose.yaml down;docker rm $(docker ps -aq);docker rmi $(docker images dev* -q)" + } + }, "fabric": { "cryptodir": "network/fabric/config/crypto-config", "network": { "orderer": { - "url": "grpcs://localhost:7050", + "url": "grpc://localhost:7050", "mspid": "OrdererMSP", "domain": "example.com", "user": { @@ -22,12 +29,12 @@ "cert": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem" }, "ca": { - "url": "https://localhost:7054", + "url": "http://localhost:7054", "name": "ca-org1" }, "peer1": { - "requests": "grpcs://localhost:7051", - "events": "grpcs://localhost:7053", + "requests": "grpc://localhost:7051", + "events": "grpc://localhost:7053", "server-hostname": "peer0.org1.example.com", "tls_cacerts": "network/fabric/config/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" } diff --git a/network/fabric/simplenetwork/configtx.yaml b/network/fabric/simplenetwork/configtx.yaml deleted file mode 100644 index 48bffec6c..000000000 --- a/network/fabric/simplenetwork/configtx.yaml +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright IBM Corp. All Rights Reserved. -# -# SPDX-License-Identifier: Apache-2.0 -# - ---- - -################################################################################ -# -# Section: Organizations -# -# - This section defines the different organizational identities which will -# be referenced later in the configuration. -# -################################################################################ -Organizations: - - # SampleOrg defines an MSP using the sampleconfig. It should never be used - # in production but may be used as a template for other definitions - - &OrdererOrg - # DefaultOrg defines the organization which is used in the sampleconfig - # of the fabric.git development environment - Name: OrdererMSP - - # ID to load the MSP definition as - ID: OrdererMSP - - # MSPDir is the filesystem path which contains the MSP configuration - MSPDir: crypto-config/ordererOrganizations/example.com/msp - - AdminPrincipal: Role.MEMBER - - - &Org0 - # DefaultOrg defines the organization which is used in the sampleconfig - # of the fabric.git development environment - Name: Org1MSP - - # ID to load the MSP definition as - ID: Org1MSP - - MSPDir: crypto-config/peerOrganizations/org1.example.com/msp - - AdminPrincipal: Role.ADMIN - - AnchorPeers: - # AnchorPeers defines the location of peers which can be used - # for cross org gossip communication. Note, this value is only - # encoded in the genesis block in the Application section context - - Host: peer0.org1.example.com - Port: 7051 - - Host: peer1.org1.example.com - Port: 7051 - - - &Org1 - # DefaultOrg defines the organization which is used in the sampleconfig - # of the fabric.git development environment - Name: Org2MSP - - # ID to load the MSP definition as - ID: Org2MSP - - MSPDir: crypto-config/peerOrganizations/org2.example.com/msp - - AdminPrincipal: Role.ADMIN - - AnchorPeers: - # AnchorPeers defines the location of peers which can be used - # for cross org gossip communication. Note, this value is only - # encoded in the genesis block in the Application section context - - Host: peer0.org2.example.com - Port: 7051 - - Host: peer1.org2.example.com - Port: 7051 - -################################################################################ -# -# SECTION: Orderer -# -# - This section defines the values to encode into a config transaction or -# genesis block for orderer related parameters -# -################################################################################ -Orderer: &OrdererDefaults - - # Orderer Type: The orderer implementation to start - # Available types are "solo" and "kafka" - OrdererType: solo - - Addresses: - - orderer.example.com:7050 - - # Batch Timeout: The amount of time to wait before creating a batch - BatchTimeout: 1s - - # Batch Size: Controls the number of messages batched into a block - BatchSize: - - # Max Message Count: The maximum number of messages to permit in a batch - MaxMessageCount: 500 - - # Absolute Max Bytes: The absolute maximum number of bytes allowed for - # the serialized messages in a batch. - AbsoluteMaxBytes: 999 MB - - # Preferred Max Bytes: The preferred maximum number of bytes allowed for - # the serialized messages in a batch. A message larger than the preferred - # max bytes will result in a batch larger than preferred max bytes. - PreferredMaxBytes: 5 MB - - MaxChannels: 0 - - Kafka: - # Brokers: A list of Kafka brokers to which the orderer connects - # NOTE: Use IP:port notation - Brokers: - - 127.0.0.1:9092 - - # Organizations is the list of orgs which are defined as participants on - # the orderer side of the network - Organizations: - -################################################################################ -# -# SECTION: Application -# -# - This section defines the values to encode into a config transaction or -# genesis block for application related parameters -# -################################################################################ -Application: &ApplicationDefaults - - # Organizations is the list of orgs which are defined as participants on - # the application side of the network - Organizations: - -################################################################################ -# -# Profile -# -# - Different configuration profiles may be encoded here to be specified -# as parameters to the configtxgen tool -# -################################################################################ -Profiles: - - TwoOrgsOrdererGenesis: - Orderer: - <<: *OrdererDefaults - Organizations: - - *OrdererOrg - Consortiums: - SampleConsortium: - Organizations: - - *Org0 - - *Org1 - TwoOrgsChannel: - Consortium: SampleConsortium - Application: - <<: *ApplicationDefaults - Organizations: - - *Org0 - - *Org1 diff --git a/network/fabric/simplenetwork/crypto-config.yaml b/network/fabric/simplenetwork/crypto-config.yaml deleted file mode 100644 index 06ad8185c..000000000 --- a/network/fabric/simplenetwork/crypto-config.yaml +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright IBM Corp. All Rights Reserved. -# -# SPDX-License-Identifier: Apache-2.0 -# - -# --------------------------------------------------------------------------- -# "OrdererOrgs" - Definition of organizations managing orderer nodes -# --------------------------------------------------------------------------- -OrdererOrgs: - # --------------------------------------------------------------------------- - # Orderer - # --------------------------------------------------------------------------- - - Name: Orderer - Domain: example.com - # --------------------------------------------------------------------------- - # "Specs" - See PeerOrgs below for complete description - # --------------------------------------------------------------------------- - Specs: - - Hostname: orderer -# --------------------------------------------------------------------------- -# "PeerOrgs" - Definition of organizations managing peer nodes -# --------------------------------------------------------------------------- -PeerOrgs: - # --------------------------------------------------------------------------- - # Org1 - # --------------------------------------------------------------------------- - - Name: Org1 - Domain: org1.example.com - # --------------------------------------------------------------------------- - # "Specs" - # --------------------------------------------------------------------------- - # Uncomment this section to enable the explicit definition of hosts in your - # configuration. Most users will want to use Template, below - # - # Specs is an array of Spec entries. Each Spec entry consists of two fields: - # - Hostname: (Required) The desired hostname, sans the domain. - # - CommonName: (Optional) Specifies the template or explicit override for - # the CN. By default, this is the template: - # - # "{{.Hostname}}.{{.Domain}}" - # - # which obtains its values from the Spec.Hostname and - # Org.Domain, respectively. - # --------------------------------------------------------------------------- - # Specs: - # - Hostname: foo # implicitly "foo.org1.example.com" - # CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above - # - Hostname: bar - # - Hostname: baz - # --------------------------------------------------------------------------- - # "Template" - # --------------------------------------------------------------------------- - # Allows for the definition of 1 or more hosts that are created sequentially - # from a template. By default, this looks like "peer%d" from 0 to Count-1. - # You may override the number of nodes (Count), the starting index (Start) - # or the template used to construct the name (Hostname). - # - # Note: Template and Specs are not mutually exclusive. You may define both - # sections and the aggregate nodes will be created for you. Take care with - # name collisions - # --------------------------------------------------------------------------- - Template: - Count: 2 - # Start: 5 - # Hostname: {{.Prefix}}{{.Index}} # default - # --------------------------------------------------------------------------- - # "Users" - # --------------------------------------------------------------------------- - # Count: The number of user accounts _in addition_ to Admin - # --------------------------------------------------------------------------- - Users: - Count: 1 - # --------------------------------------------------------------------------- - # Org2: See "Org1" for full specification - # --------------------------------------------------------------------------- - - Name: Org2 - Domain: org2.example.com - Template: - Count: 2 - Users: - Count: 1 diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/ca/8854fbdf1c73508089f7a2b1ca44f6c9ef153cd51ba9de677567170cfa6de132_sk b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/ca/8854fbdf1c73508089f7a2b1ca44f6c9ef153cd51ba9de677567170cfa6de132_sk deleted file mode 100644 index 87e456b7e..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/ca/8854fbdf1c73508089f7a2b1ca44f6c9ef153cd51ba9de677567170cfa6de132_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgUVvt3NZ5jE0QYwtz -Qx41+HNGv4GyUj3FVPMqy43JL0ihRANCAAQP9m5DGT+WxjlqvS4sO+gvsMLYixZP -8fT+t/o0EnMlo1pYWZh42iOMbTz0bi5MK3GKTQYJ9IY5RGe+YrMsFqG+ ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem deleted file mode 100644 index dadd1ee5e..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/ca/ca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICMDCCAdagAwIBAgIRAJsvIdytwaqRqSl+/iQzC0EwCgYIKoZIzj0EAwIwaTEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt -cGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBaMGkxCzAJBgNV -BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp -c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j -b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQP9m5DGT+WxjlqvS4sO+gvsMLY -ixZP8fT+t/o0EnMlo1pYWZh42iOMbTz0bi5MK3GKTQYJ9IY5RGe+YrMsFqG+o18w -XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD -AQH/MCkGA1UdDgQiBCCIVPvfHHNQgIn3orHKRPbJ7xU81Rup3md1ZxcM+m3hMjAK -BggqhkjOPQQDAgNIADBFAiEAwPMYKvDQTTtiBa0MOYIioAY7fVO9RFXMOOuYA78s -cL4CIFBlSZzjCVb88Qap4MJDodoR9LVZArlTwtukf9lWDI2F ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/admincerts/Admin@example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/admincerts/Admin@example.com-cert.pem deleted file mode 100644 index 3d4a5c69c..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/admincerts/Admin@example.com-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICCjCCAbCgAwIBAgIQDWwr2Oc9gseaHoDO6iv/QjAKBggqhkjOPQQDAjBpMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w -bGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowVjELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz -Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI -zj0DAQcDQgAEZLglaaXoQc3MHUUAcqJL7owxs7mbs+n6kbuHdEzvFHIq3TETJDg4 -UfsBUz9mOI3D//4Cz56MgMfSkaKXv9xayKNNMEswDgYDVR0PAQH/BAQDAgeAMAwG -A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgiFT73xxzUICJ96KxykT2ye8VPNUbqd5n -dWcXDPpt4TIwCgYIKoZIzj0EAwIDSAAwRQIhALSLBNZI4snmFD6xN+6htt2PqFHG -qIwh9MLRfL4qMCz2AiAHQQfQvu5DEBZ/91Vn/0WfYbM6/etQpu4atyBaJdN4Ig== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem deleted file mode 100644 index dadd1ee5e..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/cacerts/ca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICMDCCAdagAwIBAgIRAJsvIdytwaqRqSl+/iQzC0EwCgYIKoZIzj0EAwIwaTEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt -cGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBaMGkxCzAJBgNV -BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp -c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j -b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQP9m5DGT+WxjlqvS4sO+gvsMLY -ixZP8fT+t/o0EnMlo1pYWZh42iOMbTz0bi5MK3GKTQYJ9IY5RGe+YrMsFqG+o18w -XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD -AQH/MCkGA1UdDgQiBCCIVPvfHHNQgIn3orHKRPbJ7xU81Rup3md1ZxcM+m3hMjAK -BggqhkjOPQQDAgNIADBFAiEAwPMYKvDQTTtiBa0MOYIioAY7fVO9RFXMOOuYA78s -cL4CIFBlSZzjCVb88Qap4MJDodoR9LVZArlTwtukf9lWDI2F ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem deleted file mode 100644 index 938496bce..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICNTCCAdugAwIBAgIQSrq2RtcXxglHCeKe+NbiOjAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowbDELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt -cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPaortDMzWKuv6eiD3S2 -0fly6PrFthL9lWODLPR2M32UXHgholATmpbU9go90drQ1QDr92O7Gv51LCzUJxU3 -t4WjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB -/wQFMAMBAf8wKQYDVR0OBCIEILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTL -vBaAMAoGCCqGSM49BAMCA0gAMEUCIQCtjJqpp4CFZSXm6n2TD2FQCkY/HYrrujcR -55vmzNemPwIgEH7CN+iPzBXSItHT3rYupyt/FlcwmJ3pZII/LIu3Sg8= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/admincerts/Admin@example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/admincerts/Admin@example.com-cert.pem deleted file mode 100644 index 3d4a5c69c..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/admincerts/Admin@example.com-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICCjCCAbCgAwIBAgIQDWwr2Oc9gseaHoDO6iv/QjAKBggqhkjOPQQDAjBpMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w -bGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowVjELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz -Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI -zj0DAQcDQgAEZLglaaXoQc3MHUUAcqJL7owxs7mbs+n6kbuHdEzvFHIq3TETJDg4 -UfsBUz9mOI3D//4Cz56MgMfSkaKXv9xayKNNMEswDgYDVR0PAQH/BAQDAgeAMAwG -A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgiFT73xxzUICJ96KxykT2ye8VPNUbqd5n -dWcXDPpt4TIwCgYIKoZIzj0EAwIDSAAwRQIhALSLBNZI4snmFD6xN+6htt2PqFHG -qIwh9MLRfL4qMCz2AiAHQQfQvu5DEBZ/91Vn/0WfYbM6/etQpu4atyBaJdN4Ig== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem deleted file mode 100644 index dadd1ee5e..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICMDCCAdagAwIBAgIRAJsvIdytwaqRqSl+/iQzC0EwCgYIKoZIzj0EAwIwaTEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt -cGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBaMGkxCzAJBgNV -BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp -c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j -b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQP9m5DGT+WxjlqvS4sO+gvsMLY -ixZP8fT+t/o0EnMlo1pYWZh42iOMbTz0bi5MK3GKTQYJ9IY5RGe+YrMsFqG+o18w -XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD -AQH/MCkGA1UdDgQiBCCIVPvfHHNQgIn3orHKRPbJ7xU81Rup3md1ZxcM+m3hMjAK -BggqhkjOPQQDAgNIADBFAiEAwPMYKvDQTTtiBa0MOYIioAY7fVO9RFXMOOuYA78s -cL4CIFBlSZzjCVb88Qap4MJDodoR9LVZArlTwtukf9lWDI2F ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/keystore/159a3d8dc0cafd93810739f43b1d91db0c41eec7a6a34ae1509e07850e2d28d7_sk b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/keystore/159a3d8dc0cafd93810739f43b1d91db0c41eec7a6a34ae1509e07850e2d28d7_sk deleted file mode 100644 index 4ecae054d..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/keystore/159a3d8dc0cafd93810739f43b1d91db0c41eec7a6a34ae1509e07850e2d28d7_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgwoLU4Z3FNnMNDzi5 -QjlyO4OqK4v9p1AyaAtGYMJeW7ChRANCAASR5rC2cIMgXefzhWh5iL2lX58JMuJ0 -6oCyM47KUHm3ReX/yZ9egGdvw1y28Rq4bR9LGdc+BP8Zfu6+mShvW98G ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem deleted file mode 100644 index 2e86ab1b3..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts/orderer.example.com-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICCzCCAbKgAwIBAgIQRJoF+kwLmyqebtAcqXcLyDAKBggqhkjOPQQDAjBpMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w -bGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowWDELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz -Y28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq -hkjOPQMBBwNCAASR5rC2cIMgXefzhWh5iL2lX58JMuJ06oCyM47KUHm3ReX/yZ9e -gGdvw1y28Rq4bR9LGdc+BP8Zfu6+mShvW98Go00wSzAOBgNVHQ8BAf8EBAMCB4Aw -DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCCIVPvfHHNQgIn3orHKRPbJ7xU81Rup -3md1ZxcM+m3hMjAKBggqhkjOPQQDAgNHADBEAiA7NsmJB/1sv0GJdEgVvwL0ka39 -NZ8JMjVXwaIdT0EOvQIgKRe17mKxHSASEysFVTf+wqvqW2L/BDVIxtJ2Ws6x7JY= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem deleted file mode 100644 index 938496bce..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICNTCCAdugAwIBAgIQSrq2RtcXxglHCeKe+NbiOjAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowbDELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt -cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPaortDMzWKuv6eiD3S2 -0fly6PrFthL9lWODLPR2M32UXHgholATmpbU9go90drQ1QDr92O7Gv51LCzUJxU3 -t4WjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB -/wQFMAMBAf8wKQYDVR0OBCIEILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTL -vBaAMAoGCCqGSM49BAMCA0gAMEUCIQCtjJqpp4CFZSXm6n2TD2FQCkY/HYrrujcR -55vmzNemPwIgEH7CN+iPzBXSItHT3rYupyt/FlcwmJ3pZII/LIu3Sg8= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt deleted file mode 100644 index 938496bce..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICNTCCAdugAwIBAgIQSrq2RtcXxglHCeKe+NbiOjAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowbDELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt -cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPaortDMzWKuv6eiD3S2 -0fly6PrFthL9lWODLPR2M32UXHgholATmpbU9go90drQ1QDr92O7Gv51LCzUJxU3 -t4WjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB -/wQFMAMBAf8wKQYDVR0OBCIEILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTL -vBaAMAoGCCqGSM49BAMCA0gAMEUCIQCtjJqpp4CFZSXm6n2TD2FQCkY/HYrrujcR -55vmzNemPwIgEH7CN+iPzBXSItHT3rYupyt/FlcwmJ3pZII/LIu3Sg8= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt deleted file mode 100644 index 99b537dc7..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICWjCCAgCgAwIBAgIRANk0PFx4j8o5ypGzHLT2rrMwCgYIKoZIzj0EAwIwbDEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l -eGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBaMFgxCzAJ -BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh -bmNpc2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C -AQYIKoZIzj0DAQcDQgAE12Z3W9YJdSKJNIncry4ccFkPKhhE+/rtrnL/rKsAO1ck -yl40h0RW7QnPpGn4O/Nl+BTZArzLIaJdsElo3bYMjKOBljCBkzAOBgNVHQ8BAf8E -BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC -MAAwKwYDVR0jBCQwIoAgs+SRsthvDNSSnFwEjgTZbAoTqE/IzERGUI0thMu8FoAw -JwYDVR0RBCAwHoITb3JkZXJlci5leGFtcGxlLmNvbYIHb3JkZXJlcjAKBggqhkjO -PQQDAgNIADBFAiEAjhUxmDQporV+TE0hw+fb6Aj/xNi/DDIgUTLOAOaBPz4CIFLe -LJaUBqpjPmnujzNyrtZ8ovu/mCXfE9sLFtA5qJ9Y ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key deleted file mode 100644 index 2fcc19e51..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeMtlaiFuoQZB2mCW -mB+eSL3hWAszlXgU2wOHJXrg2EihRANCAATXZndb1gl1Iok0idyvLhxwWQ8qGET7 -+u2ucv+sqwA7VyTKXjSHRFbtCc+kafg782X4FNkCvMshol2wSWjdtgyM ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/tlsca/b3e491b2d86f0cd4929c5c048e04d96c0a13a84fc8cc4446508d2d84cbbc1680_sk b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/tlsca/b3e491b2d86f0cd4929c5c048e04d96c0a13a84fc8cc4446508d2d84cbbc1680_sk deleted file mode 100644 index c0eb6f34b..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/tlsca/b3e491b2d86f0cd4929c5c048e04d96c0a13a84fc8cc4446508d2d84cbbc1680_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgg52FQZLf+3d66Den -LtFuwu14FLOphzba4rr5DpWZITqhRANCAAT2qK7QzM1irr+nog90ttH5cuj6xbYS -/ZVjgyz0djN9lFx4IaJQE5qW1PYKPdHa0NUA6/djuxr+dSws1CcVN7eF ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem deleted file mode 100644 index 938496bce..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICNTCCAdugAwIBAgIQSrq2RtcXxglHCeKe+NbiOjAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowbDELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt -cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPaortDMzWKuv6eiD3S2 -0fly6PrFthL9lWODLPR2M32UXHgholATmpbU9go90drQ1QDr92O7Gv51LCzUJxU3 -t4WjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB -/wQFMAMBAf8wKQYDVR0OBCIEILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTL -vBaAMAoGCCqGSM49BAMCA0gAMEUCIQCtjJqpp4CFZSXm6n2TD2FQCkY/HYrrujcR -55vmzNemPwIgEH7CN+iPzBXSItHT3rYupyt/FlcwmJ3pZII/LIu3Sg8= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/admincerts/Admin@example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/admincerts/Admin@example.com-cert.pem deleted file mode 100644 index 3d4a5c69c..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/admincerts/Admin@example.com-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICCjCCAbCgAwIBAgIQDWwr2Oc9gseaHoDO6iv/QjAKBggqhkjOPQQDAjBpMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w -bGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowVjELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz -Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI -zj0DAQcDQgAEZLglaaXoQc3MHUUAcqJL7owxs7mbs+n6kbuHdEzvFHIq3TETJDg4 -UfsBUz9mOI3D//4Cz56MgMfSkaKXv9xayKNNMEswDgYDVR0PAQH/BAQDAgeAMAwG -A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgiFT73xxzUICJ96KxykT2ye8VPNUbqd5n -dWcXDPpt4TIwCgYIKoZIzj0EAwIDSAAwRQIhALSLBNZI4snmFD6xN+6htt2PqFHG -qIwh9MLRfL4qMCz2AiAHQQfQvu5DEBZ/91Vn/0WfYbM6/etQpu4atyBaJdN4Ig== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem deleted file mode 100644 index dadd1ee5e..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/cacerts/ca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICMDCCAdagAwIBAgIRAJsvIdytwaqRqSl+/iQzC0EwCgYIKoZIzj0EAwIwaTEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt -cGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBaMGkxCzAJBgNV -BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp -c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j -b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQP9m5DGT+WxjlqvS4sO+gvsMLY -ixZP8fT+t/o0EnMlo1pYWZh42iOMbTz0bi5MK3GKTQYJ9IY5RGe+YrMsFqG+o18w -XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD -AQH/MCkGA1UdDgQiBCCIVPvfHHNQgIn3orHKRPbJ7xU81Rup3md1ZxcM+m3hMjAK -BggqhkjOPQQDAgNIADBFAiEAwPMYKvDQTTtiBa0MOYIioAY7fVO9RFXMOOuYA78s -cL4CIFBlSZzjCVb88Qap4MJDodoR9LVZArlTwtukf9lWDI2F ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/be595291403ff68280a724d7e868521815ad9e2fc8c5486f6d7ce6b62d6357cd_sk b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/be595291403ff68280a724d7e868521815ad9e2fc8c5486f6d7ce6b62d6357cd_sk deleted file mode 100644 index 8afb7c444..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore/be595291403ff68280a724d7e868521815ad9e2fc8c5486f6d7ce6b62d6357cd_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgZ6E+uwidNO/Fn56C -2kUyNqtPMn8MoTIQXSiePuW1CvChRANCAARkuCVppehBzcwdRQByokvujDGzuZuz -6fqRu4d0TO8UcirdMRMkODhR+wFTP2Y4jcP//gLPnoyAx9KRope/3FrI ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem deleted file mode 100644 index 3d4a5c69c..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts/Admin@example.com-cert.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICCjCCAbCgAwIBAgIQDWwr2Oc9gseaHoDO6iv/QjAKBggqhkjOPQQDAjBpMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w -bGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowVjELMAkGA1UE -BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz -Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI -zj0DAQcDQgAEZLglaaXoQc3MHUUAcqJL7owxs7mbs+n6kbuHdEzvFHIq3TETJDg4 -UfsBUz9mOI3D//4Cz56MgMfSkaKXv9xayKNNMEswDgYDVR0PAQH/BAQDAgeAMAwG -A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgiFT73xxzUICJ96KxykT2ye8VPNUbqd5n -dWcXDPpt4TIwCgYIKoZIzj0EAwIDSAAwRQIhALSLBNZI4snmFD6xN+6htt2PqFHG -qIwh9MLRfL4qMCz2AiAHQQfQvu5DEBZ/91Vn/0WfYbM6/etQpu4atyBaJdN4Ig== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem deleted file mode 100644 index 938496bce..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/tlscacerts/tlsca.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICNTCCAdugAwIBAgIQSrq2RtcXxglHCeKe+NbiOjAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowbDELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt -cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPaortDMzWKuv6eiD3S2 -0fly6PrFthL9lWODLPR2M32UXHgholATmpbU9go90drQ1QDr92O7Gv51LCzUJxU3 -t4WjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB -/wQFMAMBAf8wKQYDVR0OBCIEILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTL -vBaAMAoGCCqGSM49BAMCA0gAMEUCIQCtjJqpp4CFZSXm6n2TD2FQCkY/HYrrujcR -55vmzNemPwIgEH7CN+iPzBXSItHT3rYupyt/FlcwmJ3pZII/LIu3Sg8= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt deleted file mode 100644 index 938496bce..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/ca.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICNTCCAdugAwIBAgIQSrq2RtcXxglHCeKe+NbiOjAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowbDELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt -cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPaortDMzWKuv6eiD3S2 -0fly6PrFthL9lWODLPR2M32UXHgholATmpbU9go90drQ1QDr92O7Gv51LCzUJxU3 -t4WjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB -/wQFMAMBAf8wKQYDVR0OBCIEILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTL -vBaAMAoGCCqGSM49BAMCA0gAMEUCIQCtjJqpp4CFZSXm6n2TD2FQCkY/HYrrujcR -55vmzNemPwIgEH7CN+iPzBXSItHT3rYupyt/FlcwmJ3pZII/LIu3Sg8= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/server.crt deleted file mode 100644 index b17c6e096..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/server.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICLDCCAdKgAwIBAgIQTT+3BwclwO4G2/p2iPi1szAKBggqhkjOPQQDAjBsMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4 -YW1wbGUuY29tMB4XDTE3MDcyMTAxMjgxMFoXDTI3MDcxOTAxMjgxMFowVjELMAkG -A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu -Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI -KoZIzj0DAQcDQgAEYFNHDoFzAQoJ45DGogmWBfb8f4jKkDIK4VfKKuLrIOOfvHRB -Mjb7HGgYbXxxTUqoeuaelazL5vqKVkwcx/x1i6NsMGowDgYDVR0PAQH/BAQDAgWg -MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG -A1UdIwQkMCKAILPkkbLYbwzUkpxcBI4E2WwKE6hPyMxERlCNLYTLvBaAMAoGCCqG -SM49BAMCA0gAMEUCIQDHDCgekjYEw54HDbrRlUjPDzXYdST0EEBqNalbhks6BQIg -RSTjxpuo+x+d+yyYPRfjfbL0P+01/EMhNJPVReC5jNk= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/server.key deleted file mode 100644 index e65eeaefa..000000000 --- a/network/fabric/simplenetwork/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgM5N6eXnKt8N6JClT -H3TrwHkqyJo4Q++pMTsqGkEwXq6hRANCAARgU0cOgXMBCgnjkMaiCZYF9vx/iMqQ -MgrhV8oq4usg45+8dEEyNvscaBhtfHFNSqh65p6VrMvm+opWTBzH/HWL ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/ca/2fbb10374113397e45316b7487a605f800a1a4883e769b3ade3c65b903ae48fc_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/ca/2fbb10374113397e45316b7487a605f800a1a4883e769b3ade3c65b903ae48fc_sk deleted file mode 100644 index 6cc9034aa..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/ca/2fbb10374113397e45316b7487a605f800a1a4883e769b3ade3c65b903ae48fc_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgq7znxiIs+3I66W+K -6fCRVeG2UoQQpgwVgMDtQUWYVeuhRANCAARX/tTvCJoANdWf/MtJZ3JZMSq8Q5wJ -DzSzZHukMhtGeEcVGOQybArC5HTSAQoVmTNvmbRFnWdTR+/6PEgFyMky ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem deleted file mode 100644 index eaaa74ffb..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/ca/ca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQb6tuRvKPPi4nV+AxJVjdhDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -V/7U7wiaADXVn/zLSWdyWTEqvEOcCQ80s2R7pDIbRnhHFRjkMmwKwuR00gEKFZkz -b5m0RZ1nU0fv+jxIBcjJMqNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgL7sQN0ETOX5FMWt0h6YF -+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhAKpiECpO9rIqUkLL -DLFLH0YnToQCZko/9hxmNI2G1dSfAiAYGtP7Mx9ZEBYBtcb48PZLejwAhthfFPQj -TM+QRqdlbQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem deleted file mode 100644 index 056951d63..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRAIkS03lyoew8F67TTS93mW0wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABOjx+2mV25b8P+6v9+Cq3GFVBSNNITny -SSZgYGbsPZvhEq0SoMGQdmQEpnFgO0otbDOcOfWcM3AKO39Y08KDCJGjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCsXL0f -VjBbpH5GXmsXngn01DAPqOFPofZ/gC/Gs/jMPAIgZgi7pICftF0ceuOwffxarMLy -cSugSNob5B3IpccFwsM= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem deleted file mode 100644 index eaaa74ffb..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQb6tuRvKPPi4nV+AxJVjdhDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -V/7U7wiaADXVn/zLSWdyWTEqvEOcCQ80s2R7pDIbRnhHFRjkMmwKwuR00gEKFZkz -b5m0RZ1nU0fv+jxIBcjJMqNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgL7sQN0ETOX5FMWt0h6YF -+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhAKpiECpO9rIqUkLL -DLFLH0YnToQCZko/9hxmNI2G1dSfAiAYGtP7Mx9ZEBYBtcb48PZLejwAhthfFPQj -TM+QRqdlbQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem deleted file mode 100644 index 056951d63..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRAIkS03lyoew8F67TTS93mW0wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABOjx+2mV25b8P+6v9+Cq3GFVBSNNITny -SSZgYGbsPZvhEq0SoMGQdmQEpnFgO0otbDOcOfWcM3AKO39Y08KDCJGjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCsXL0f -VjBbpH5GXmsXngn01DAPqOFPofZ/gC/Gs/jMPAIgZgi7pICftF0ceuOwffxarMLy -cSugSNob5B3IpccFwsM= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem deleted file mode 100644 index eaaa74ffb..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQb6tuRvKPPi4nV+AxJVjdhDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -V/7U7wiaADXVn/zLSWdyWTEqvEOcCQ80s2R7pDIbRnhHFRjkMmwKwuR00gEKFZkz -b5m0RZ1nU0fv+jxIBcjJMqNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgL7sQN0ETOX5FMWt0h6YF -+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhAKpiECpO9rIqUkLL -DLFLH0YnToQCZko/9hxmNI2G1dSfAiAYGtP7Mx9ZEBYBtcb48PZLejwAhthfFPQj -TM+QRqdlbQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/d4570d6dd037a2cab7aa4574947b3197891b2968ed3c3f0b3a7b6e17f7480d70_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/d4570d6dd037a2cab7aa4574947b3197891b2968ed3c3f0b3a7b6e17f7480d70_sk deleted file mode 100644 index 30cf32023..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/keystore/d4570d6dd037a2cab7aa4574947b3197891b2968ed3c3f0b3a7b6e17f7480d70_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgR2P4JhCZnd1FOo/1 -P8NV9TvAMbFjsghbToSpUDiy78ChRANCAARO/5YwLrvAiqytoAK799EP85F5FY7P -QyDHUz7ng7+PbOHdkAwm/Ulc+lPkd3eEjnfaKt21Gz0Gt+zB98jIzDE/ ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem deleted file mode 100644 index ec5b3c31f..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/signcerts/peer0.org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAb+gAwIBAgIQJ8mBgslnx6BwJ/IEsGf3HDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29tMFkw -EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETv+WMC67wIqsraACu/fRD/OReRWOz0Mg -x1M+54O/j2zh3ZAMJv1JXPpT5Hd3hI532irdtRs9BrfswffIyMwxP6NNMEswDgYD -VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgL7sQN0ETOX5F -MWt0h6YF+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhANalZ8ye -ojX1IZe70Y3RqOp9k8Yv0Rty/YIJPdztNHogAiBRO7+iRpRYzF3b4W1F9jHna4JX -NZgvU7eXq6xSy2Zpsg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt deleted file mode 100644 index f1f44aac3..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICZzCCAg2gAwIBAgIQdClk8hdfpXHTnMMf3UZa3zAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29t -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEatF8gsFGg0rTTR/4UY1UOSR9er7n -3cruMU2UlV8312ApIbOJBCZKrr5frUKq/i2nkgMjtHkOzizx/Ft4qlacSKOBlzCB -lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC -MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgQ7N3ERLpIE/pqhtwU+iYGSOWzdY/ -TC4BO7jKZWUdRogwKAYDVR0RBCEwH4IWcGVlcjAub3JnMS5leGFtcGxlLmNvbYIF -cGVlcjAwCgYIKoZIzj0EAwIDSAAwRQIhAIzI/tjLS7/mq8o3UNQUuIbp73lv3OwY -GATHljc0pL08AiBtQ4e9L9jfH0Yn0G/iBCgiSk5oBfTOpdUxeWoKiCzFOg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key deleted file mode 100644 index 3e83d30e6..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgv0W9q+zh5ttK7rpy -5bEqzS7lwPoExFSVV4sgSlkQU3ihRANCAARq0XyCwUaDStNNH/hRjVQ5JH16vufd -yu4xTZSVXzfXYCkhs4kEJkquvl+tQqr+LaeSAyO0eQ7OLPH8W3iqVpxI ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem deleted file mode 100644 index 056951d63..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRAIkS03lyoew8F67TTS93mW0wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABOjx+2mV25b8P+6v9+Cq3GFVBSNNITny -SSZgYGbsPZvhEq0SoMGQdmQEpnFgO0otbDOcOfWcM3AKO39Y08KDCJGjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCsXL0f -VjBbpH5GXmsXngn01DAPqOFPofZ/gC/Gs/jMPAIgZgi7pICftF0ceuOwffxarMLy -cSugSNob5B3IpccFwsM= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem deleted file mode 100644 index eaaa74ffb..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQb6tuRvKPPi4nV+AxJVjdhDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -V/7U7wiaADXVn/zLSWdyWTEqvEOcCQ80s2R7pDIbRnhHFRjkMmwKwuR00gEKFZkz -b5m0RZ1nU0fv+jxIBcjJMqNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgL7sQN0ETOX5FMWt0h6YF -+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhAKpiECpO9rIqUkLL -DLFLH0YnToQCZko/9hxmNI2G1dSfAiAYGtP7Mx9ZEBYBtcb48PZLejwAhthfFPQj -TM+QRqdlbQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/d010c48f1defc5617d8504028d9ba99285b64d5f271f6540972b29a52c8f095d_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/d010c48f1defc5617d8504028d9ba99285b64d5f271f6540972b29a52c8f095d_sk deleted file mode 100644 index fc422dfae..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/keystore/d010c48f1defc5617d8504028d9ba99285b64d5f271f6540972b29a52c8f095d_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgkTCla7+rcZqMj/uW -TWRYW4771VTQ77PhU0XGcp8x47OhRANCAAQ3fs+51oGMNa3Xh9ZiDc4R3oj4KZae -AZ4p2jWj/Z14T3D2KObIO1Z7KBIvZW8tvwFu2Q+aEVvSqEbaMJEP+FoX ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem deleted file mode 100644 index 850234213..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/signcerts/peer1.org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGDCCAb+gAwIBAgIQTRlYT9PrIyK0+uYNR1fEyTAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcxLmV4YW1wbGUuY29tMFkw -EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEN37PudaBjDWt14fWYg3OEd6I+CmWngGe -Kdo1o/2deE9w9ijmyDtWeygSL2VvLb8BbtkPmhFb0qhG2jCRD/haF6NNMEswDgYD -VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgL7sQN0ETOX5F -MWt0h6YF+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDRwAwRAIgeTaV7hNA -79Cy/GyAPCFhuPTfwZDiOE/ZjKTUeCnJ6bECIC1SOB0dJg1TX/zY7pWixucfSrdy -18KcUrfYD+feI30y ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt deleted file mode 100644 index 3bd0c074f..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICaDCCAg6gAwIBAgIRANcdRzUI7qpNsF9Rc/NOQIkwCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNv -bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOo24o5yToBP1oGhtRI2MK1Zk0HS -zh1CCcoiKIk7n/FN0EWizH4FS62Zfons2oEuZaLx4gQvt4XblWzQYWFqf9OjgZcw -gZQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD -AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEOzdxES6SBP6aobcFPomBkjls3W -P0wuATu4ymVlHUaIMCgGA1UdEQQhMB+CFnBlZXIxLm9yZzEuZXhhbXBsZS5jb22C -BXBlZXIxMAoGCCqGSM49BAMCA0gAMEUCIQCPP0fVxSzkm5OqUslW8FG4RDmhbKza -wY0S8uZzOGOUYwIgUkSJ+/yrHo2gF7MABLzefVleu9iy+6odcL9pjv1rD1E= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key deleted file mode 100644 index 9513b4a11..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgA7+EZTm8/A2jCC5Z -aWTlkEOhifJevd2cAwOuxlUeAAihRANCAATqNuKOck6AT9aBobUSNjCtWZNB0s4d -QgnKIiiJO5/xTdBFosx+BUutmX6J7NqBLmWi8eIEL7eF25Vs0GFhan/T ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/tlsca/43b3771112e9204fe9aa1b7053e898192396cdd63f4c2e013bb8ca65651d4688_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/tlsca/43b3771112e9204fe9aa1b7053e898192396cdd63f4c2e013bb8ca65651d4688_sk deleted file mode 100644 index fecdb0df5..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/tlsca/43b3771112e9204fe9aa1b7053e898192396cdd63f4c2e013bb8ca65651d4688_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFF3uAoQQ6UDJAbWe -al+DABYkBCPc3qqS6TiJzWzHdQahRANCAASmH8T8U47L+lrR/YSmJsy/Ltyf/apJ -wIO1LUujwBxqGPAoYFEf7lSy5rmoNHTVjnVqrNKIwIZN9HgjyRvZiVfU ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem deleted file mode 100644 index 056951d63..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/admincerts/Admin@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRAIkS03lyoew8F67TTS93mW0wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABOjx+2mV25b8P+6v9+Cq3GFVBSNNITny -SSZgYGbsPZvhEq0SoMGQdmQEpnFgO0otbDOcOfWcM3AKO39Y08KDCJGjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCsXL0f -VjBbpH5GXmsXngn01DAPqOFPofZ/gC/Gs/jMPAIgZgi7pICftF0ceuOwffxarMLy -cSugSNob5B3IpccFwsM= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem deleted file mode 100644 index eaaa74ffb..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQb6tuRvKPPi4nV+AxJVjdhDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -V/7U7wiaADXVn/zLSWdyWTEqvEOcCQ80s2R7pDIbRnhHFRjkMmwKwuR00gEKFZkz -b5m0RZ1nU0fv+jxIBcjJMqNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgL7sQN0ETOX5FMWt0h6YF -+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhAKpiECpO9rIqUkLL -DLFLH0YnToQCZko/9hxmNI2G1dSfAiAYGtP7Mx9ZEBYBtcb48PZLejwAhthfFPQj -TM+QRqdlbQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/0d2b2fc385b10fa59003217e1bb5af2d24a3d762266e287867a1bc290eb44657_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/0d2b2fc385b10fa59003217e1bb5af2d24a3d762266e287867a1bc290eb44657_sk deleted file mode 100644 index f24f52cfc..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/0d2b2fc385b10fa59003217e1bb5af2d24a3d762266e287867a1bc290eb44657_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQggkdz0n0VVhawIGmX -ZUQ9eDWxoiWLc/EWUweQL1v+vYKhRANCAATo8ftplduW/D/ur/fgqtxhVQUjTSE5 -8kkmYGBm7D2b4RKtEqDBkHZkBKZxYDtKLWwznDn1nDNwCjt/WNPCgwiR ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem deleted file mode 100644 index 056951d63..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRAIkS03lyoew8F67TTS93mW0wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABOjx+2mV25b8P+6v9+Cq3GFVBSNNITny -SSZgYGbsPZvhEq0SoMGQdmQEpnFgO0otbDOcOfWcM3AKO39Y08KDCJGjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCsXL0f -VjBbpH5GXmsXngn01DAPqOFPofZ/gC/Gs/jMPAIgZgi7pICftF0ceuOwffxarMLy -cSugSNob5B3IpccFwsM= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/server.crt deleted file mode 100644 index ea43928a8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/server.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICOjCCAeGgAwIBAgIQGMNdDB3Ej9QJUYD+vkD6YzAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29t -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEL13AAGSQf9/muJyCbJUst4SLXQeX -0y3qu5hG0U6UKhnwCRL9qIHyr8CicvOD0gY0uJCbz4goKnc7VsMTnubpCaNsMGow -DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM -BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEOzdxES6SBP6aobcFPomBkjls3WP0wu -ATu4ymVlHUaIMAoGCCqGSM49BAMCA0cAMEQCIC/iW5bqUrSzcidKgKMpM5ZmuVk2 -w5KPVfyi7n14JSJlAiBx/cFUfCNG9VOHnKCe3n1NJTF/VFIRSwRcoZB/p3cqqQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/server.key deleted file mode 100644 index f213416ce..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdi2FolHkn4TKQPq/ -wOGx01NG+E6ed9R7bEsjhazDhTChRANCAAQvXcAAZJB/3+a4nIJslSy3hItdB5fT -Leq7mEbRTpQqGfAJEv2ogfKvwKJy84PSBjS4kJvPiCgqdztWwxOe5ukJ ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/admincerts/User1@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/admincerts/User1@org1.example.com-cert.pem deleted file mode 100644 index df6627659..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/admincerts/User1@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRANH0iSFFx0T5H/rbNg/5l30wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABIEbjRE+OBs9FzGxHst/I5C3Hdc4HhbZ -BUW6LwOhkfcfkWVq9MqrDlAm5LSpIC/pDPiDVYwSQ85lxbDWWkid+P2jTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCuXiLr -Fm/aC/5nm7jaYDY43E7nWhRkSNdpoDgGETHx1gIgSIUHArJ7lOIa81rSi6INjfnu -piCcc0Y2NU025JVJiyA= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem deleted file mode 100644 index eaaa74ffb..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/cacerts/ca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQb6tuRvKPPi4nV+AxJVjdhDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -V/7U7wiaADXVn/zLSWdyWTEqvEOcCQ80s2R7pDIbRnhHFRjkMmwKwuR00gEKFZkz -b5m0RZ1nU0fv+jxIBcjJMqNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgL7sQN0ETOX5FMWt0h6YF -+AChpIg+dps63jxluQOuSPwwCgYIKoZIzj0EAwIDSAAwRQIhAKpiECpO9rIqUkLL -DLFLH0YnToQCZko/9hxmNI2G1dSfAiAYGtP7Mx9ZEBYBtcb48PZLejwAhthfFPQj -TM+QRqdlbQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/5d199bc2e226583a82ae5b3bb94fe471bfb1523d774f5a4a3d23dad52aed59b2_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/5d199bc2e226583a82ae5b3bb94fe471bfb1523d774f5a4a3d23dad52aed59b2_sk deleted file mode 100644 index 0ede8e2ed..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore/5d199bc2e226583a82ae5b3bb94fe471bfb1523d774f5a4a3d23dad52aed59b2_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgIYrDpRg8Zcl96vYy -uMHgnRzzpQHGKJ3OctiN5yTonoOhRANCAASBG40RPjgbPRcxsR7LfyOQtx3XOB4W -2QVFui8DoZH3H5FlavTKqw5QJuS0qSAv6Qz4g1WMEkPOZcWw1lpInfj9 ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem deleted file mode 100644 index df6627659..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts/User1@org1.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGjCCAcCgAwIBAgIRANH0iSFFx0T5H/rbNg/5l30wCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABIEbjRE+OBs9FzGxHst/I5C3Hdc4HhbZ -BUW6LwOhkfcfkWVq9MqrDlAm5LSpIC/pDPiDVYwSQ85lxbDWWkid+P2jTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIC+7EDdBEzl+ -RTFrdIemBfgAoaSIPnabOt48ZbkDrkj8MAoGCCqGSM49BAMCA0gAMEUCIQCuXiLr -Fm/aC/5nm7jaYDY43E7nWhRkSNdpoDgGETHx1gIgSIUHArJ7lOIa81rSi6INjfnu -piCcc0Y2NU025JVJiyA= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/tlscacerts/tlsca.org1.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt deleted file mode 100644 index b6bc960e8..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAe+gAwIBAgIQV7zacwjQ+uDmCs0BJe6AsDAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMHYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMR8wHQYD -VQQDExZ0bHNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0D -AQcDQgAEph/E/FOOy/pa0f2EpibMvy7cn/2qScCDtS1Lo8AcahjwKGBRH+5Usua5 -qDR01Y51aqzSiMCGTfR4I8kb2YlX1KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1Ud -JQQIMAYGBFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgQ7N3ERLpIE/p -qhtwU+iYGSOWzdY/TC4BO7jKZWUdRogwCgYIKoZIzj0EAwIDSAAwRQIhANSHKEpm -CVecq6Y822/ySTkmabdnzQ3NturURE5Yq7vTAiBOpsVDj2GTzQJNfHvRjrvn/lHq -DnFelraykddCMx2iwg== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/server.crt deleted file mode 100644 index 1e7693c48..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/server.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICOjCCAeGgAwIBAgIQQ/Nw56iHDmCpHN+KoEJ7PzAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcxLmV4YW1wbGUuY29t -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs6WJQtuGLL69AZsqHyoXRRqWXenX -2jTF8K2hY1REQSU0krRFozuQqrjYDw6f4EwGt/VIKIN7tM3LkXVgLHfg4qNsMGow -DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM -BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEOzdxES6SBP6aobcFPomBkjls3WP0wu -ATu4ymVlHUaIMAoGCCqGSM49BAMCA0cAMEQCIEKIgJ8GZiMNaecuCkDe0y7QKlW6 -91GjeikB/qgfKTdRAiBOPjhXvJJ8BCVF/++Kqlnr4H5JYyKX09Jiv51W2Na5Xw== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/server.key deleted file mode 100644 index 96a755f74..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2zbtxisUM6Kx5h76 -vTeNK7E30FbPTJimb8ogzCeCtZmhRANCAASzpYlC24Ysvr0BmyofKhdFGpZd6dfa -NMXwraFjVERBJTSStEWjO5CquNgPDp/gTAa39Ugog3u0zcuRdWAsd+Di ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/ca/bf56c23fc917c718d3461b2c9de54e75c36575e883e808091e25e4d64520c4f9_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/ca/bf56c23fc917c718d3461b2c9de54e75c36575e883e808091e25e4d64520c4f9_sk deleted file mode 100644 index 0320310ca..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/ca/bf56c23fc917c718d3461b2c9de54e75c36575e883e808091e25e4d64520c4f9_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgEo4uWgpujBbGbGut -Wn6k1mCMtiPmpizEdUutgfPHMWChRANCAASbcU442kBa6fZse3AJ5v5OaUiPI2oF -xYHXUMGFFxitXKmb4J8XKNHW/waqZy2FTZqFsIM3Afo3QXHcKUeEFSHQ ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem deleted file mode 100644 index 1da64a4c9..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/ca/ca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQdiTLw+4kUHeZPmDG9fO58DAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -m3FOONpAWun2bHtwCeb+TmlIjyNqBcWB11DBhRcYrVypm+CfFyjR1v8GqmcthU2a -hbCDNwH6N0Fx3ClHhBUh0KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgv1bCP8kXxxjTRhssneVO -dcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhAIaewfXE64r32hDR -vTrX15Gqc3t0jM3lHSfcyvsI8C7zAiBB1DOc5JiUssekkJREYzhL18xMJH5j6SvV -G9a2TQoqww== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem deleted file mode 100644 index 1191c0f92..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAcCgAwIBAgIRAP48omMbKvcj2zJ7R44eyeswCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABCDYP9gCWMyekhl3fNWvDjqiDNDjHRLm -sMjGEWVKpAg94XQy8hsNCra/MerOZtv4O3nVTsLlSQRlcTqNmyR3CDCjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIL9Wwj/JF8cY -00YbLJ3lTnXDZXXog+gICR4l5NZFIMT5MAoGCCqGSM49BAMCA0cAMEQCIAx73JJJ -7lfNr/7TBWZ5PTd7IgGnLEq0hQvKIo6ok2VuAiAnc6Mw53he5ufUaxo6Z+TxUook -BhS+2eAvmEbQi4UdlQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem deleted file mode 100644 index 1da64a4c9..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQdiTLw+4kUHeZPmDG9fO58DAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -m3FOONpAWun2bHtwCeb+TmlIjyNqBcWB11DBhRcYrVypm+CfFyjR1v8GqmcthU2a -hbCDNwH6N0Fx3ClHhBUh0KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgv1bCP8kXxxjTRhssneVO -dcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhAIaewfXE64r32hDR -vTrX15Gqc3t0jM3lHSfcyvsI8C7zAiBB1DOc5JiUssekkJREYzhL18xMJH5j6SvV -G9a2TQoqww== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem deleted file mode 100644 index 1191c0f92..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAcCgAwIBAgIRAP48omMbKvcj2zJ7R44eyeswCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABCDYP9gCWMyekhl3fNWvDjqiDNDjHRLm -sMjGEWVKpAg94XQy8hsNCra/MerOZtv4O3nVTsLlSQRlcTqNmyR3CDCjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIL9Wwj/JF8cY -00YbLJ3lTnXDZXXog+gICR4l5NZFIMT5MAoGCCqGSM49BAMCA0cAMEQCIAx73JJJ -7lfNr/7TBWZ5PTd7IgGnLEq0hQvKIo6ok2VuAiAnc6Mw53he5ufUaxo6Z+TxUook -BhS+2eAvmEbQi4UdlQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem deleted file mode 100644 index 1da64a4c9..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQdiTLw+4kUHeZPmDG9fO58DAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -m3FOONpAWun2bHtwCeb+TmlIjyNqBcWB11DBhRcYrVypm+CfFyjR1v8GqmcthU2a -hbCDNwH6N0Fx3ClHhBUh0KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgv1bCP8kXxxjTRhssneVO -dcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhAIaewfXE64r32hDR -vTrX15Gqc3t0jM3lHSfcyvsI8C7zAiBB1DOc5JiUssekkJREYzhL18xMJH5j6SvV -G9a2TQoqww== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/84194068906c55a5b80ca3237d265ca718518d38c8864ee245382b517af637bc_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/84194068906c55a5b80ca3237d265ca718518d38c8864ee245382b517af637bc_sk deleted file mode 100644 index a7f6a6cb1..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/keystore/84194068906c55a5b80ca3237d265ca718518d38c8864ee245382b517af637bc_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdF32OQKeJ4FHKgGW -vUp0gaNEHpxFkhVlCAIa531Mw3ahRANCAASpbyDRg0Ix8Bw6v/5dKJc2vEhOPmx6 -bfDrGihKbpphnaVZajQxJM2s93bcl9Zg9+9ziZ+Gs1xNKE4Kd45LXile ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem deleted file mode 100644 index c1422ed59..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/signcerts/peer0.org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGDCCAb+gAwIBAgIQDvXJ+Aiyx/oXcu5/gsHduzAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcyLmV4YW1wbGUuY29tMFkw -EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqW8g0YNCMfAcOr/+XSiXNrxITj5sem3w -6xooSm6aYZ2lWWo0MSTNrPd23JfWYPfvc4mfhrNcTShOCneOS14pXqNNMEswDgYD -VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgv1bCP8kXxxjT -RhssneVOdcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDRwAwRAIgVzjjCUho -5tUzWQbEgN2wkidMZtRoLIPT7Rv7TkEJEiQCIAgGh/zm/pLYvp28ovPlhMM7WlCw -u+tiz5coRlOLn5VK ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt deleted file mode 100644 index 517cc0067..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICZzCCAg6gAwIBAgIRALcf9mP9PE6nZqvcI0kcbKYwCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMi5leGFtcGxlLmNv -bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABP4YhRb3ymvVw5ebbAJByf3bU9yR -Fc309vBGI5vSeVfVK8SxvP/e89R8v/xK3dF3/54fxDsUqIbdxP7mmke9+S+jgZcw -gZQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD -AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAILXCgtz0SvgBVLozayx5GdYEoOxB -8PmTjfHxIyQKgU1QMCgGA1UdEQQhMB+CFnBlZXIwLm9yZzIuZXhhbXBsZS5jb22C -BXBlZXIwMAoGCCqGSM49BAMCA0cAMEQCIDPGuTdRcBun9sdNyaatdGyNvBgBzaoD -y3112LODhFhtAiAFliyW4kekT46O2A1PoENrFwcMAR7Va6fgwI8ejONvCA== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key deleted file mode 100644 index c023a1ffa..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfy3lhme2JjcxYn7s -cOUBH+XpHcqgw4MSws9JCIFjFJOhRANCAAT+GIUW98pr1cOXm2wCQcn921PckRXN -9PbwRiOb0nlX1SvEsbz/3vPUfL/8St3Rd/+eH8Q7FKiG3cT+5ppHvfkv ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem deleted file mode 100644 index 1191c0f92..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAcCgAwIBAgIRAP48omMbKvcj2zJ7R44eyeswCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABCDYP9gCWMyekhl3fNWvDjqiDNDjHRLm -sMjGEWVKpAg94XQy8hsNCra/MerOZtv4O3nVTsLlSQRlcTqNmyR3CDCjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIL9Wwj/JF8cY -00YbLJ3lTnXDZXXog+gICR4l5NZFIMT5MAoGCCqGSM49BAMCA0cAMEQCIAx73JJJ -7lfNr/7TBWZ5PTd7IgGnLEq0hQvKIo6ok2VuAiAnc6Mw53he5ufUaxo6Z+TxUook -BhS+2eAvmEbQi4UdlQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem deleted file mode 100644 index 1da64a4c9..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQdiTLw+4kUHeZPmDG9fO58DAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -m3FOONpAWun2bHtwCeb+TmlIjyNqBcWB11DBhRcYrVypm+CfFyjR1v8GqmcthU2a -hbCDNwH6N0Fx3ClHhBUh0KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgv1bCP8kXxxjTRhssneVO -dcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhAIaewfXE64r32hDR -vTrX15Gqc3t0jM3lHSfcyvsI8C7zAiBB1DOc5JiUssekkJREYzhL18xMJH5j6SvV -G9a2TQoqww== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/86deba2e7b6b1e5181504582309db0f8a6b21088473c27ba4b5b78be0ba7ca8e_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/86deba2e7b6b1e5181504582309db0f8a6b21088473c27ba4b5b78be0ba7ca8e_sk deleted file mode 100644 index 09ef8a807..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/keystore/86deba2e7b6b1e5181504582309db0f8a6b21088473c27ba4b5b78be0ba7ca8e_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrpqFcXeK4dbfi16+ -ndN/GZ48VeiTaaPdMSQ4d1mFeuKhRANCAARQ65l5QqAiVPB/HtpzY1NFhmmI3YK/ -guQ5u//NHsVGZvkBFU+IqKzxQkHeAGDeD/avn8UfJt5BAH5+NBdSJ/Xb ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem deleted file mode 100644 index 361740c42..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/signcerts/peer1.org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGDCCAb+gAwIBAgIQanHUqMxeGVdccLv/yAghszAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcyLmV4YW1wbGUuY29tMFkw -EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUOuZeUKgIlTwfx7ac2NTRYZpiN2Cv4Lk -Obv/zR7FRmb5ARVPiKis8UJB3gBg3g/2r5/FHybeQQB+fjQXUif126NNMEswDgYD -VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgv1bCP8kXxxjT -RhssneVOdcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDRwAwRAIgdIiPAAJz -rbbe8wqqvO6hGm3HvZf17p4GNg63PaGyIM4CIGzwj/of5vzjqIxLm6L7mUdjKoTz -xwVjHN5KGC9tZNA5 ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt deleted file mode 100644 index c71af835d..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICaDCCAg6gAwIBAgIRAIPsrcLf7mE9V+wltUU2HRIwCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMi5leGFtcGxlLmNv -bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGxJRmzW0J/y0zfNeeZYoLV6qJ4x -iWXLIXq1z7qEEL+8ncCIHLtrdSfmcJqNVhYzoOxzSK70loJsEWN34RI4YYGjgZcw -gZQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD -AjAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAILXCgtz0SvgBVLozayx5GdYEoOxB -8PmTjfHxIyQKgU1QMCgGA1UdEQQhMB+CFnBlZXIxLm9yZzIuZXhhbXBsZS5jb22C -BXBlZXIxMAoGCCqGSM49BAMCA0gAMEUCIQDFQ2eQTiiucpO4LFxPmXK8huZ/qTgu -LG3yDmyLf9A37QIgGMhs03GNhO7RlNsy4KizuIEBTzp2SLKo+c1QFmJ29pc= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key deleted file mode 100644 index 3514a1288..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgTIEjW0BBt+3reVIh -F+t0uEF5tm32faZHe93ASx+a5dehRANCAARsSUZs1tCf8tM3zXnmWKC1eqieMYll -yyF6tc+6hBC/vJ3AiBy7a3Un5nCajVYWM6Dsc0iu9JaCbBFjd+ESOGGB ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/tlsca/b5c282dcf44af80154ba336b2c7919d604a0ec41f0f9938df1f123240a814d50_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/tlsca/b5c282dcf44af80154ba336b2c7919d604a0ec41f0f9938df1f123240a814d50_sk deleted file mode 100644 index dc12fb95b..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/tlsca/b5c282dcf44af80154ba336b2c7919d604a0ec41f0f9938df1f123240a814d50_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgfCnqgxuylekq9nKr -sB0O9HA7d7rtHVDDO5Vif6ukr3KhRANCAAQcmmlg+CthqA27F/XUa/pB5toz9bNi -xF51y9dcLY6jCj1kfirH8g8OG7YLB4WgXcwscNlTrQyKCIUkFZ35HiHe ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem deleted file mode 100644 index 1191c0f92..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/admincerts/Admin@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAcCgAwIBAgIRAP48omMbKvcj2zJ7R44eyeswCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABCDYP9gCWMyekhl3fNWvDjqiDNDjHRLm -sMjGEWVKpAg94XQy8hsNCra/MerOZtv4O3nVTsLlSQRlcTqNmyR3CDCjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIL9Wwj/JF8cY -00YbLJ3lTnXDZXXog+gICR4l5NZFIMT5MAoGCCqGSM49BAMCA0cAMEQCIAx73JJJ -7lfNr/7TBWZ5PTd7IgGnLEq0hQvKIo6ok2VuAiAnc6Mw53he5ufUaxo6Z+TxUook -BhS+2eAvmEbQi4UdlQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem deleted file mode 100644 index 1da64a4c9..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQdiTLw+4kUHeZPmDG9fO58DAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -m3FOONpAWun2bHtwCeb+TmlIjyNqBcWB11DBhRcYrVypm+CfFyjR1v8GqmcthU2a -hbCDNwH6N0Fx3ClHhBUh0KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgv1bCP8kXxxjTRhssneVO -dcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhAIaewfXE64r32hDR -vTrX15Gqc3t0jM3lHSfcyvsI8C7zAiBB1DOc5JiUssekkJREYzhL18xMJH5j6SvV -G9a2TQoqww== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/febc59257fd86c4e1020727d6915f6af9c5b698abdb1133cc7b2c8105961d96d_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/febc59257fd86c4e1020727d6915f6af9c5b698abdb1133cc7b2c8105961d96d_sk deleted file mode 100644 index 941ccb175..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/keystore/febc59257fd86c4e1020727d6915f6af9c5b698abdb1133cc7b2c8105961d96d_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgGuD3WWMBlu+yUf6P -h189tMPyciHWHsKIoMncVzlgOdShRANCAAQg2D/YAljMnpIZd3zVrw46ogzQ4x0S -5rDIxhFlSqQIPeF0MvIbDQq2vzHqzmbb+Dt51U7C5UkEZXE6jZskdwgw ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem deleted file mode 100644 index 1191c0f92..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/signcerts/Admin@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAcCgAwIBAgIRAP48omMbKvcj2zJ7R44eyeswCgYIKoZIzj0EAwIwczEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh -Lm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEyODEw -WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN -U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWQWRtaW5Ab3JnMi5leGFtcGxlLmNvbTBZ -MBMGByqGSM49AgEGCCqGSM49AwEHA0IABCDYP9gCWMyekhl3fNWvDjqiDNDjHRLm -sMjGEWVKpAg94XQy8hsNCra/MerOZtv4O3nVTsLlSQRlcTqNmyR3CDCjTTBLMA4G -A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIL9Wwj/JF8cY -00YbLJ3lTnXDZXXog+gICR4l5NZFIMT5MAoGCCqGSM49BAMCA0cAMEQCIAx73JJJ -7lfNr/7TBWZ5PTd7IgGnLEq0hQvKIo6ok2VuAiAnc6Mw53he5ufUaxo6Z+TxUook -BhS+2eAvmEbQi4UdlQ== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/server.crt deleted file mode 100644 index 64308f4b3..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/server.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICOjCCAeGgAwIBAgIQTl3kL/FjE0v+KLPxD2PLrzAKBggqhkjOPQQDAjB2MQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz -Y2Eub3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4 -MTBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH -Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcyLmV4YW1wbGUuY29t -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErL6Vx3temIpQmY8/807zqUSqAH/e -zK3SlTmjBHy9VQCv9pso0LDeGzqTJ3+3MpjbyrG5On1r5owbWum2IyaPvKNsMGow -DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM -BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAILXCgtz0SvgBVLozayx5GdYEoOxB8PmT -jfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIDXAO5guHANuJQna+ZazdJifvpxf -ABvjqgB3nW0SvFqhAiAy9R0d2dR0UNbqFv2NYwo32HQ3M17jvUHSxk9czniCcw== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/server.key deleted file mode 100644 index f8d4ac901..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/Admin@org2.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1stAqWzPRL+z0UC5 -xw5aJJZAH0hIDbJgj+PPpqkBpLKhRANCAASsvpXHe16YilCZjz/zTvOpRKoAf97M -rdKVOaMEfL1VAK/2myjQsN4bOpMnf7cymNvKsbk6fWvmjBta6bYjJo+8 ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/admincerts/User1@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/admincerts/User1@org2.example.com-cert.pem deleted file mode 100644 index 7752edd32..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/admincerts/User1@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAb+gAwIBAgIQb8ew5nTfZWnJ5TYOx2ZvaDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcyLmV4YW1wbGUuY29tMFkw -EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZXWRNxBqA/W0XF8bvpzVuIG43cpkW5us -UeL8DWutZF5Fs671qTvis4xk3x5KhPRS5Y8Dajmp+fzsvfhKQjzQyKNNMEswDgYD -VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgv1bCP8kXxxjT -RhssneVOdcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhALO8m5nt -MGSQi5uy51GEQN+0xAao75WRe5vLm7ADcKU7AiAiMB4Um40hgG1m+d++ySSdvr/I -dHhorcsrXv4OSMIlSw== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem deleted file mode 100644 index 1da64a4c9..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/cacerts/ca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICQzCCAemgAwIBAgIQdiTLw+4kUHeZPmDG9fO58DAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD -ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE -m3FOONpAWun2bHtwCeb+TmlIjyNqBcWB11DBhRcYrVypm+CfFyjR1v8GqmcthU2a -hbCDNwH6N0Fx3ClHhBUh0KNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG -BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgv1bCP8kXxxjTRhssneVO -dcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhAIaewfXE64r32hDR -vTrX15Gqc3t0jM3lHSfcyvsI8C7zAiBB1DOc5JiUssekkJREYzhL18xMJH5j6SvV -G9a2TQoqww== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/ff3381273256aa3d4ad48cdc59bafc683a3fbb817cf4ddb9154790b86ae91172_sk b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/ff3381273256aa3d4ad48cdc59bafc683a3fbb817cf4ddb9154790b86ae91172_sk deleted file mode 100644 index 498d78d58..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/keystore/ff3381273256aa3d4ad48cdc59bafc683a3fbb817cf4ddb9154790b86ae91172_sk +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghisKUj8fYPwm10na -l9T5HRNkWHaWOgthx6M1ZVvPAe2hRANCAARldZE3EGoD9bRcXxu+nNW4gbjdymRb -m6xR4vwNa61kXkWzrvWpO+KzjGTfHkqE9FLljwNqOan5/Oy9+EpCPNDI ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem deleted file mode 100644 index 7752edd32..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/signcerts/User1@org2.example.com-cert.pem +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICGTCCAb+gAwIBAgIQb8ew5nTfZWnJ5TYOx2ZvaDAKBggqhkjOPQQDAjBzMQsw -CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy -YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu -b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA3MjEwMTI4MTBaFw0yNzA3MTkwMTI4MTBa -MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T -YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcyLmV4YW1wbGUuY29tMFkw -EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZXWRNxBqA/W0XF8bvpzVuIG43cpkW5us -UeL8DWutZF5Fs671qTvis4xk3x5KhPRS5Y8Dajmp+fzsvfhKQjzQyKNNMEswDgYD -VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgv1bCP8kXxxjT -RhssneVOdcNldeiD6AgJHiXk1kUgxPkwCgYIKoZIzj0EAwIDSAAwRQIhALO8m5nt -MGSQi5uy51GEQN+0xAao75WRe5vLm7ADcKU7AiAiMB4Um40hgG1m+d++ySSdvr/I -dHhorcsrXv4OSMIlSw== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/msp/tlscacerts/tlsca.org2.example.com-cert.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt deleted file mode 100644 index 3f111821a..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/ca.crt +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICSTCCAfCgAwIBAgIRAOYQyLd1Mrp4+BwfWzx2N2swCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEfMB0G -A1UEAxMWdGxzY2Eub3JnMi5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49 -AwEHA0IABByaaWD4K2GoDbsX9dRr+kHm2jP1s2LEXnXL11wtjqMKPWR+KsfyDw4b -tgsHhaBdzCxw2VOtDIoIhSQVnfkeId6jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV -HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILXCgtz0SvgB -VLozayx5GdYEoOxB8PmTjfHxIyQKgU1QMAoGCCqGSM49BAMCA0cAMEQCIChbGcCq -1Gz3qc0Jr+qZIv5LnZRi5Bi8F2PkfkWTF8b1AiAWKgkl9uEFVcFWpR1jiMgww4Eg -qqEJb5G2/A1YbyBa5w== ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/server.crt b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/server.crt deleted file mode 100644 index 6ac55717e..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/server.crt +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICOzCCAeKgAwIBAgIRANVk9D53s8dCyerSITON2howCgYIKoZIzj0EAwIwdjEL -MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG -cmFuY2lzY28xGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs -c2NhLm9yZzIuZXhhbXBsZS5jb20wHhcNMTcwNzIxMDEyODEwWhcNMjcwNzE5MDEy -ODEwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE -BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMi5leGFtcGxlLmNv -bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIAVyac4b9K3RULuov70ciYb6FcD -lm6dcS4erLTELfmFmJXit5P6JfmT1QP6mtGB3YFKYEzyfKR6JhbW6R+YHQujbDBq -MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw -DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCC1woLc9Er4AVS6M2sseRnWBKDsQfD5 -k43x8SMkCoFNUDAKBggqhkjOPQQDAgNHADBEAiBkXTHBOJMeK8iMqouhwtTTKbpZ -jb9GokA+hjmwH647dgIgRefmerYmSPEmCs/1ej6/yq5yj3k2LvHFUmjTPvbXNUo= ------END CERTIFICATE----- diff --git a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/server.key b/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/server.key deleted file mode 100644 index 47e261ebc..000000000 --- a/network/fabric/simplenetwork/crypto-config/peerOrganizations/org2.example.com/users/User1@org2.example.com/tls/server.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgUBFyJRMBHzTBGNSm -tzPPldevxSnW3adn1yxUux+ZfoKhRANCAASAFcmnOG/St0VC7qL+9HImG+hXA5Zu -nXEuHqy0xC35hZiV4reT+iX5k9UD+prRgd2BSmBM8nykeiYW1ukfmB0L ------END PRIVATE KEY----- diff --git a/network/fabric/simplenetwork/docker-compose.yaml b/network/fabric/simplenetwork/docker-compose.yaml deleted file mode 100644 index f8db957d8..000000000 --- a/network/fabric/simplenetwork/docker-compose.yaml +++ /dev/null @@ -1,153 +0,0 @@ -# -# Copyright IBM Corp. All Rights Reserved. -# -# SPDX-License-Identifier: Apache-2.0 -# -version: '2' - -services: - ca: - image: hyperledger/fabric-ca:x86_64-1.1.0 - environment: - - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server - - FABRIC_CA_SERVER_CA_NAME=ca-org1 - - FABRIC_CA_SERVER_TLS_ENABLED=true - - GODEBUG=netdns=go - command: sh -c 'fabric-ca-server start -b admin:adminpw -d' - - ca0: - extends: ca - environment: - - FABRIC_CA_SERVER_CA_NAME=ca-org1 - - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem - - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/2fbb10374113397e45316b7487a605f800a1a4883e769b3ade3c65b903ae48fc_sk - - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem - - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/2fbb10374113397e45316b7487a605f800a1a4883e769b3ade3c65b903ae48fc_sk - ports: - - "7054:7054" - volumes: - - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config - container_name: ca_peerOrg1 - - ca1: - extends: ca - environment: - - FABRIC_CA_SERVER_CA_NAME=ca-org2 - - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem - - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/bf56c23fc917c718d3461b2c9de54e75c36575e883e808091e25e4d64520c4f9_sk - - FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem - - FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/bf56c23fc917c718d3461b2c9de54e75c36575e883e808091e25e4d64520c4f9_sk - ports: - - "8054:7054" - volumes: - - ./crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config - container_name: ca_peerOrg2 - - orderer.example.com: - container_name: orderer.example.com - image: hyperledger/fabric-orderer:x86_64-1.1.0 - environment: -# - ORDERER_GENERAL_LOGLEVEL=debug - - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 - - ORDERER_GENERAL_GENESISMETHOD=file - - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/twoorgs.genesis.block - - ORDERER_GENERAL_LOCALMSPID=OrdererMSP - - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/msp/orderer/msp - - ORDERER_GENERAL_TLS_ENABLED=true - - ORDERER_GENERAL_TLS_PRIVATEKEY=/etc/hyperledger/msp/orderer/tls/server.key - - ORDERER_GENERAL_TLS_CERTIFICATE=/etc/hyperledger/msp/orderer/tls/server.crt - - ORDERER_GENERAL_TLS_ROOTCAS=[/etc/hyperledger/msp/orderer/tls/ca.crt, /etc/hyperledger/msp/peerOrg1/tls/ca.crt, /etc/hyperledger/msp/peerOrg2/tls/ca.crt] - - GODEBUG=netdns=go - working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer - command: orderer - ports: - - 7050:7050 - volumes: - - ./:/etc/hyperledger/configtx - - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/:/etc/hyperledger/msp/orderer - - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/msp/peerOrg1 - - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/:/etc/hyperledger/msp/peerOrg2 - - peer: - image: hyperledger/fabric-peer:x86_64-1.1.0 - environment: - - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock -# - CORE_LOGGING_PEER=debug - - CORE_PEER_ENDORSER_ENABLED=true - - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/msp/ - - CORE_PEER_GOSSIP_USELEADERELECTION=true - - CORE_PEER_GOSSIP_ORGLEADER=false - - CORE_PEER_TLS_ENABLED=true - - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/msp/peer/tls/server.key - - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/msp/peer/tls/server.crt - - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/msp/peer/tls/ca.crt - - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=simplenetwork_default - - GODEBUG=netdns=go - working_dir: /opt/gopath/src/github.com/hyperledger/fabric - command: peer node start - volumes: - - /var/run/:/host/var/run/ - - peer0.org1.example.com: - extends: peer - container_name: peer0.org1.example.com - environment: - - CORE_PEER_ID=peer0.org1.example.com - - CORE_PEER_LOCALMSPID=Org1MSP - - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051 - ports: - - 7051:7051 - - 7053:7053 - volumes: - - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/msp/peer - depends_on: - - orderer.example.com - - peer1.org1.example.com: - extends: peer - container_name: peer1.org1.example.com - environment: - - CORE_PEER_ID=peer1.org1.example.com - - CORE_PEER_LOCALMSPID=Org1MSP - - CORE_PEER_ADDRESS=peer1.org1.example.com:7051 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051 - ports: - - 7057:7051 - - 7059:7053 - volumes: - - ./crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/:/etc/hyperledger/msp/peer - depends_on: - - orderer.example.com - - peer0.org2.example.com: - extends: peer - container_name: peer0.org2.example.com - environment: - - CORE_PEER_ID=peer0.org2.example.com - - CORE_PEER_LOCALMSPID=Org2MSP - - CORE_PEER_ADDRESS=peer0.org2.example.com:7051 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051 - ports: - - 8051:7051 - - 8053:7053 - volumes: - - ./crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/:/etc/hyperledger/msp/peer - depends_on: - - orderer.example.com - - peer1.org2.example.com: - extends: peer - container_name: peer1.org2.example.com - environment: - - CORE_PEER_ID=peer1.org2.example.com - - CORE_PEER_LOCALMSPID=Org2MSP - - CORE_PEER_ADDRESS=peer1.org2.example.com:7051 - - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051 - ports: - - 8057:7051 - - 8059:7053 - volumes: - - ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/:/etc/hyperledger/msp/peer - depends_on: - - orderer.example.com diff --git a/network/fabric/simplenetwork/generate.sh b/network/fabric/simplenetwork/generate.sh deleted file mode 100644 index 9289d8877..000000000 --- a/network/fabric/simplenetwork/generate.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -~/go/src/github.com/hyperledger/fabric/build/bin/cryptogen generate --config=./crypto-config.yaml -~/go/src/github.com/hyperledger/fabric/build/bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock twoorgs.genesis.block -~/go/src/github.com/hyperledger/fabric/build/bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx mychannel.tx -channelID mychannel \ No newline at end of file diff --git a/network/fabric/simplenetwork/mychannel.tx b/network/fabric/simplenetwork/mychannel.tx deleted file mode 100644 index cfd2b073b..000000000 Binary files a/network/fabric/simplenetwork/mychannel.tx and /dev/null differ diff --git a/network/fabric/simplenetwork/twoorgs.genesis.block b/network/fabric/simplenetwork/twoorgs.genesis.block deleted file mode 100644 index 930fe3320..000000000 Binary files a/network/fabric/simplenetwork/twoorgs.genesis.block and /dev/null differ diff --git a/benchmark/simple/iroha.json b/network/iroha/simplenetwork/iroha.json similarity index 65% rename from benchmark/simple/iroha.json rename to network/iroha/simplenetwork/iroha.json index 0debf4c34..2ee4985dc 100644 --- a/benchmark/simple/iroha.json +++ b/network/iroha/simplenetwork/iroha.json @@ -1,4 +1,11 @@ { + "caliper": { + "blockchain": "iroha", + "command" : { + "start": "docker-compose -f network/iroha/simplenetwork/docker-compose.yml up -d", + "end" : "docker logs iroha_node0; docker logs iroha_node1; docker-compose -f network/iroha/simplenetwork/docker-compose.yml down" + } + }, "iroha": { "admin" :{ "account":"admin", diff --git a/network/sawtooth/simplenetwork/sawtooth.json b/network/sawtooth/simplenetwork/sawtooth.json new file mode 100644 index 000000000..71dfbfd47 --- /dev/null +++ b/network/sawtooth/simplenetwork/sawtooth.json @@ -0,0 +1,24 @@ +{ + "caliper":{ + "blockchain": "sawtooth", + "command" : { + "start": "docker-compose -f network/sawtooth/simplenetwork/sawtooth-simple.yaml up -d", + "end" : "docker-compose -f network/sawtooth/simplenetwork/sawtooth-simple.yaml down;docker rm $(docker ps -aq)" + } + }, + "sawtooth": { + "batchBuilders": { + "simple": { + "1.0": "src/sawtooth/Application/SimpleBatchBuilder.js" + } + }, + "network": { + "restapi": { + "urls": ["http://127.0.0.1:8008"] + }, + "validator": { + "url": "tcp://127.0.0.1:4004" + } + } + } +} diff --git a/network/sawtooth/smallbank/sawtooth.json b/network/sawtooth/smallbank/sawtooth.json new file mode 100644 index 000000000..a8d388f0e --- /dev/null +++ b/network/sawtooth/smallbank/sawtooth.json @@ -0,0 +1,24 @@ +{ + "caliper": { + "blockchain": "sawtooth", + "command" : { + "start": "docker-compose -f network/sawtooth/smallbank/sawtooth-smallbank-go.yaml up -d", + "end" : "docker-compose -f network/sawtooth/smallbank/sawtooth-smallbank-go.yaml down;docker rm $(docker ps -aq)" + } + }, + "sawtooth": { + "batchBuilders": { + "smallbank": { + "1.0": "src/sawtooth/Application/SmallBankBatchBuilder.js" + } + }, + "network": { + "restapi": { + "urls": ["http://127.0.0.1:8008"] + }, + "validator": { + "url": "tcp://127.0.0.1:4004" + } + } + } +} diff --git a/package.json b/package.json index 6e94b7e45..0a527cb02 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,11 @@ "e2e": "node ./scripts/test.js", "lint": "npx eslint .", "list": "node ./scripts/list.js", - "startclient": "node ./src/comm/client/zoo-client.js" + "startclient": "node ./src/comm/client/zoo-client.js", + "composer-deps": "npm install --no-save composer-admin@0.19.18 composer-client@0.19.18 composer-common@0.19.18 fabric-ca-client@1.2.0 fabric-client@1.2.0", + "fabric-deps": "npm install --no-save grpc@1.10.1 fabric-ca-client@1.1.0 fabric-client@1.1.0", + "iroha-deps": "npm install --no-save iroha-lib@0.1.7", + "sawtooth-deps": "npm install --no-save protocol-buffers sawtooth-sdk" }, "engines": { "node": ">=8.10.0", @@ -19,13 +23,20 @@ }, "engine-strict": true, "engineStrict": true, + "files": [ + "*", + "src/comm/template/report.html" + ], "dependencies": { "cbor": "^3.0.3", "commander": "^2.11.0", "dockerode": "^2.5.0", "fs-extra": "^4.0.2", "jsrsasign": "^8.0.4", + "moment": "^2.22.2", "mustache": "^2.3.0", + "nconf": "^0.10.0", + "nconf-yaml": "^1.0.2", "node-zookeeper-client": "^0.2.2", "ora": "^1.2.0", "pidusage": "^1.1.6", @@ -34,8 +45,8 @@ "request-promise": "^4.2.1", "systeminformation": "^3.23.7", "table": "^4.0.1", - "tape": "^4.8.0", - "tape-promise": "^1.1.0" + "winston": "^2.4.4", + "winston-daily-rotate-file": "^3.5.1" }, "devDependencies": { "chai": "^3.5.0", @@ -56,15 +67,11 @@ "coverage/**", "src/comm/*.js", "src/comm/client/**", - "src/comm/rate-control/pidRate.js", - "src/comm/rate-control/rateControl.js", - "src/comm/rate-control/rateInterface.js", "src/composer/**", "src/contract/**", "src/fabric/**", "src/gui/**", "src/iroha/**", - "src/sawtooth/**", "scripts/**", "test/**" ], diff --git a/src/adapters/README.md b/src/adapters/README.md new file mode 100644 index 000000000..5720e7031 --- /dev/null +++ b/src/adapters/README.md @@ -0,0 +1,6 @@ +# Adapters + +This folder contains various adapters which will connect the blockchain platform to be tested to Caliper. To enable the test, the below codes also need to be added: +1. Add a new blockchain type in the constructor function of blockchain.js file(src/comm/blockchain.js). +2. The network configuration file's subsection 'blockchain' should be change to your defined blockchain type. +3. Write your own callback which will be claimed in the configuration file and own smart contract. \ No newline at end of file diff --git a/src/comm/Config.js b/src/comm/Config.js new file mode 100644 index 000000000..770e1de35 --- /dev/null +++ b/src/comm/Config.js @@ -0,0 +1,137 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +//const commUtils = require('./util'); +const path = require('path'); +const nconf = require('nconf'); +nconf.formats.yaml = require('nconf-yaml'); + +// +// The class representing the hierarchy of configuration settings. +// +const Config = class { + /** + * Constructor + */ + constructor() { + nconf.use('memory'); + nconf.use('mapenv', {type:'memory'}); + this.mapSettings(nconf.stores.mapenv, process.env); + this._fileStores = []; + nconf.argv(); + nconf.env(); + // reference to configuration settings + this._config = nconf; + const rootDir = path.join('..','..'); + const defaultConfig = path.join(__dirname, rootDir, 'config/default.yaml'); + //const defaultConfig = commUtils.resolvePath('config/default.yaml'); + this.file(defaultConfig); + } + + /** + * utility method to map (convert) the environment(upper case and underscores) style + * names to configuration (lower case and dashes) style names + * @param {Object} store store of the settings + * @param {Object} settings settings of the configuration + */ + mapSettings(store, settings) { + for(let key in settings) { + const value = settings[key]; + key = key.toLowerCase(); + key = key.replace(/_/g, '-'); + store.set(key,value); + } + } + + /** + * utility method to reload the file based stores so + * the last one added is on the top of the files hierarchy + * unless the bottom flag indicates to add otherwise + * @param {String} path path of the file + * @param {Boolean} bottom indicate of the files hierarchy + */ + reorderFileStores(path, bottom) { + // first remove all the file stores + for(const x in this._fileStores) { + this._config.remove(this._fileStores[x]); + } + + if(bottom) { + // add to the bottom of the list + this._fileStores.push(path); + } else { + // add this new file to the front of the list + this._fileStores.unshift(path); + } + + // now load all the file stores + for(const x in this._fileStores) { + const name = this._fileStores[x]; + //this._config.file(name, name); + this._config.file({file: name, format: nconf.formats.yaml}); + } + } + + /** + * Add an additional file + * @param {String} path path of the file + */ + file(path) { + if(typeof path !== 'string') { + throw new Error('The "path" parameter must be a string'); + } + // just reuse the path name as the store name...will be unique + this.reorderFileStores(path); + } + + /** + * Get the config setting with name. + * If the setting is not found returns the default value provided. + * @param {String} name of the setting + * @param {any} default_value default value of the setting + * @return {any} value of the setting + */ + get(name, default_value) { + let return_value = null; + + try { + return_value = this._config.get(name); + } + catch(err) { + return_value = default_value; + } + + if(return_value === null || return_value === undefined) { + return_value = default_value; + } + + return return_value; + } + + /** + * Set a value into the 'memory' store of config settings. + * This will override all other settings. + * @param {String} name name of the setting + * @param {String} value value of the setting + */ + set(name, value) { + this._config.set(name,value); + } + +}; + +module.exports = Config; + diff --git a/src/comm/bench-flow.js b/src/comm/bench-flow.js index 8acf99072..4e790b389 100644 --- a/src/comm/bench-flow.js +++ b/src/comm/bench-flow.js @@ -13,23 +13,22 @@ const childProcess = require('child_process'); const exec = childProcess.exec; const path = require('path'); -const tape = require('tape'); -const _test = require('tape-promise'); -const test = _test(tape); const table = require('table'); const Blockchain = require('./blockchain.js'); -const Monitor = require('./monitor.js'); +const Monitor = require('./monitor/monitor.js'); const Report = require('./report.js'); const Client = require('./client/client.js'); const Util = require('./util.js'); -const log = Util.log; +const logger = Util.getLogger('bench-flow.js'); let blockchain, monitor, report, client; +let success = 0, failure = 0; let resultsbyround = []; // results table for each test round let round = 0; // test round let demo = require('../gui/src/demo.js'); let absConfigFile, absNetworkFile; let absCaliperDir = path.join(__dirname, '..', '..'); + /** * Generate mustache template for test report */ @@ -78,7 +77,7 @@ function createReport() { */ function printTable(value) { let t = table.table(value, {border: table.getBorderCharacters('ramac')}); - log(t); + logger.info('\n' + t); } /** @@ -96,12 +95,13 @@ function getResultTitle() { * @return {Array} rows of the default result table */ function getResultValue(r) { + let row = []; try { row.push(r.label); row.push(r.succ); row.push(r.fail); - (r.create.max === r.create.min) ? row.push((r.succ + r.fail) + ' tps') : row.push(((r.succ + r.fail) / (r.create.max - r.create.min)).toFixed(0) + ' tps'); + (r.create.max === r.create.min) ? row.push((r.succ + r.fail) + ' tps') : row.push(((r.succ + r.fail) / (r.create.max - r.create.min)).toFixed(1) + ' tps'); row.push(r.delay.max.toFixed(2) + ' s'); row.push(r.delay.min.toFixed(2) + ' s'); row.push((r.delay.sum / r.succ).toFixed(2) + ' s'); @@ -134,7 +134,7 @@ function printResultsByRound() { for(let i = 1 ; i < resultsbyround.length ; i++) { resultsbyround[i].unshift(i.toFixed(0)); } - log('###all test results:###'); + logger.info('###all test results:###'); printTable(resultsbyround); report.setSummaryTable(resultsbyround); @@ -175,20 +175,20 @@ function processResult(results, label){ if(resultTable.length > 1) { resultsbyround.push(resultTable[1].slice(0)); } - log('###test result:###'); + logger.info('###test result:###'); printTable(resultTable); let idx = report.addBenchmarkRound(label); report.setRoundPerformance(idx, resultTable); let resourceTable = monitor.getDefaultStats(); if(resourceTable.length > 0) { - log('### resource stats ###'); + logger.info('### resource stats ###'); printTable(resourceTable); report.setRoundResource(idx, resourceTable); } return Promise.resolve(); } catch(err) { - log(err); + logger.error(err); return Promise.reject(err); } } @@ -198,72 +198,86 @@ function processResult(results, label){ * @param {JSON} args testing arguments * @param {Array} clientArgs arguments for clients * @param {Boolean} final =true, the last test round; otherwise, =false - * @return {Promise} promise object + * @async */ -function defaultTest(args, clientArgs, final) { - return new Promise( function(resolve, reject) { - const t = global.tapeObj; - t.comment('\n\n###### testing \'' + args.label + '\' ######'); - let testLabel = args.label; - let testRounds = args.txDuration ? args.txDuration : args.txNumber; - let tests = []; // array of all test rounds - let configPath = path.relative(absCaliperDir, absNetworkFile); - for(let i = 0 ; i < testRounds.length ; i++) { - let msg = { - type: 'test', - label : args.label, - rateControl: args.rateControl[i] ? args.rateControl[i] : {type:'fixed-rate', 'opts' : {'tps': 1}}, - trim: args.trim ? args.trim : 0, - args: args.arguments, - cb : args.callback, - config: configPath - }; - // condition for time based or number based test driving - if (args.txNumber) { - msg.numb = testRounds[i]; - } else if (args.txDuration) { - msg.txDuration = testRounds[i]; - } else { - return reject(new Error('Unspecified test driving mode')); - } +async function defaultTest(args, clientArgs, final) { + logger.info(`###### Testing '${args.label}' ######`); + let testLabel = args.label; + let testRounds = args.txDuration ? args.txDuration : args.txNumber; + let tests = []; // array of all test rounds + let configPath = path.relative(absCaliperDir, absNetworkFile); - tests.push(msg); + for(let i = 0 ; i < testRounds.length ; i++) { + let msg = { + type: 'test', + label : args.label, + rateControl: args.rateControl[i] ? args.rateControl[i] : {type:'fixed-rate', 'opts' : {'tps': 1}}, + trim: args.trim ? args.trim : 0, + args: args.arguments, + cb : args.callback, + config: configPath + }; + // condition for time based or number based test driving + if (args.txNumber) { + msg.numb = testRounds[i]; + } else if (args.txDuration) { + msg.txDuration = testRounds[i]; + } else { + throw new Error('Unspecified test driving mode'); } - let testIdx = 0; - return tests.reduce( function(prev, item) { - return prev.then( () => { - log('----test round ' + round + '----'); - round++; - testIdx++; - item.roundIdx = round; // propagate round ID to clients - demo.startWatch(client); - - return client.startTest(item, clientArgs, processResult, testLabel).then( () => { - demo.pauseWatch(); - t.pass('passed \'' + testLabel + '\' testing'); - return Promise.resolve(); - }).then( () => { - if(final && testIdx === tests.length) { - return Promise.resolve(); - } - else { - log('wait 5 seconds for next round...'); - return Util.sleep(5000).then( () => { - return monitor.restart(); - }); - } - }).catch( (err) => { - demo.pauseWatch(); - t.fail('failed \'' + testLabel + '\' testing, ' + (err.stack ? err.stack : err)); - return Promise.resolve(); // continue with next round ? - }); - }); - }, Promise.resolve()).then( () => { + tests.push(msg); + } + + let testIdx = 0; + + for (let test of tests) { + logger.info(`------ Test round ${round + 1} ------`); + round++; + testIdx++; + + test.roundIdx = round; // propagate round ID to clients + demo.startWatch(client); + try { + await client.startTest(test, clientArgs, processResult, testLabel); + + demo.pauseWatch(); + success++; + logger.info(`------ Passed '${testLabel}' testing ------`); + + // prepare for the next round + if(!final || testIdx !== tests.length) { + logger.info('Waiting 5 seconds for the next round...'); + await Util.sleep(5000); + await monitor.restart(); + } + } catch (err) { + demo.pauseWatch(); + failure++; + logger.error(`------ Failed '${testLabel}' testing with the following error ------ +${err.stack ? err.stack : err}`); + // continue with next round + } + } +} + +/** + * Executes the given command asynchronously. + * @param {string} command The command to execute through a newly spawn shell. + * @return {Promise} The return promise is resolved upon the successful execution of the command, or rejected with an Error instance. + * @async + */ +function execAsync(command) { + return new Promise((resolve, reject) => { + logger.info(`Executing command: ${command}`); + let child = exec(command, {cwd: absCaliperDir}, (err, stdout, stderr) => { + if (err) { + logger.error(`Unsuccessful command execution. Error code: ${err.code}. Terminating signal: ${err.signal}`); + return reject(err); + } return resolve(); - }).catch( (err) => { - t.fail(err.stack ? err.stack : err); - return reject(new Error('defaultTest failed')); }); + child.stdout.pipe(process.stdout); + child.stderr.pipe(process.stderr); }); } @@ -272,91 +286,82 @@ function defaultTest(args, clientArgs, final) { * @param {String} configFile path of the test configuration file * @param {String} networkFile path of the blockchain configuration file */ -module.exports.run = function(configFile, networkFile) { - test('#######Caliper Test######', (t) => { - global.tapeObj = t; - absConfigFile = Util.resolvePath(configFile); - absNetworkFile = Util.resolvePath(networkFile); - blockchain = new Blockchain(absNetworkFile); - monitor = new Monitor(absConfigFile); - client = new Client(absConfigFile); - createReport(); - demo.init(); - let startPromise = new Promise((resolve, reject) => { - let config = require(absConfigFile); - if (config.hasOwnProperty('command') && config.command.hasOwnProperty('start')){ - log(config.command.start); - let child = exec(config.command.start, {cwd: absCaliperDir}, (err, stdout, stderr) => { - if (err) { - return reject(err); - } - return resolve(); - }); - child.stdout.pipe(process.stdout); - child.stderr.pipe(process.stderr); - } - else { - resolve(); - } - }); +module.exports.run = async function(configFile, networkFile) { + logger.info('####### Caliper Test ######'); + absConfigFile = Util.resolvePath(configFile); + absNetworkFile = Util.resolvePath(networkFile); + blockchain = new Blockchain(absNetworkFile); + monitor = new Monitor(absConfigFile); + client = new Client(absConfigFile); + createReport(); + demo.init(); - startPromise.then(() => { - return blockchain.init(); - }).then( () => { - return blockchain.installSmartContract(); - }).then( () => { - return client.init().then((number)=>{ - return blockchain.prepareClients(number); - }); - }).then( (clientArgs) => { - monitor.start().then(()=>{ - log('started monitor successfully'); - }).catch( (err) => { - log('could not start monitor, ' + (err.stack ? err.stack : err)); - }); + let configObject = require(absConfigFile); + let networkObject = require(absNetworkFile); - let allTests = require(absConfigFile).test.rounds; - let testIdx = 0; - let testNum = allTests.length; - return allTests.reduce( (prev, item) => { - return prev.then( () => { - ++testIdx; - return defaultTest(item, clientArgs, (testIdx === testNum)); - }); - }, Promise.resolve()); - }).then( () => { - log('----------finished test----------\n'); - printResultsByRound(); - monitor.printMaxStats(); - monitor.stop(); - let date = new Date().toISOString().replace(/-/g,'').replace(/:/g,'').substr(0,15); - let output = path.join(process.cwd(), 'report'+date+'.html' ); - return report.generate(output).then(()=>{ - demo.stopWatch(output); - log('Generated report at ' + output); - return Promise.resolve(); - }); - }).then( () => { - client.stop(); - let config = require(absConfigFile); - if (config.hasOwnProperty('command') && config.command.hasOwnProperty('end')){ - log(config.command.end); - let end = exec(config.command.end, {cwd: absCaliperDir}); - end.stdout.pipe(process.stdout); - end.stderr.pipe(process.stderr); + try { + if (networkObject.hasOwnProperty('caliper') && networkObject.caliper.hasOwnProperty('command') && networkObject.caliper.command.hasOwnProperty('start')) { + if (!networkObject.caliper.command.start.trim()) { + throw new Error('Start command is specified but it is empty'); } - t.end(); - }).catch( (err) => { - demo.stopWatch(); - log('unexpected error, ' + (err.stack ? err.stack : err)); - let config = require(absConfigFile); - if (config.hasOwnProperty('command') && config.command.hasOwnProperty('end')){ - log(config.command.end); - let end = exec(config.command.end, {cwd: absCaliperDir}); - end.stdout.pipe(process.stdout); - end.stderr.pipe(process.stderr); + + await execAsync(networkObject.caliper.command.start); + } + + await blockchain.init(); + await blockchain.installSmartContract(); + let numberOfClients = await client.init(); + let clientArgs = await blockchain.prepareClients(numberOfClients); + + try { + await monitor.start(); + logger.info('Started monitor successfully'); + } catch (err) { + logger.error('Could not start monitor, ' + (err.stack ? err.stack : err)); + } + + let allTests = configObject.test.rounds; + let testIdx = 0; + let testNum = allTests.length; + + for (let test of allTests) { + ++testIdx; + await defaultTest(test, clientArgs, (testIdx === testNum)); + } + + logger.info('---------- Finished Test ----------\n'); + printResultsByRound(); + monitor.printMaxStats(); + await monitor.stop(); + + let date = new Date().toISOString().replace(/-/g,'').replace(/:/g,'').substr(0,15); + let output = path.join(process.cwd(), `report-${date}.html`); + await report.generate(output); + logger.info(`Generated report at ${output}`); + + client.stop(); + + } catch (err) { + logger.error(`Error: ${err.stack ? err.stack : err}`); + }finally { + demo.stopWatch(); + + if (networkObject.hasOwnProperty('caliper') && networkObject.caliper.hasOwnProperty('command') && networkObject.caliper.command.hasOwnProperty('end')) { + if (!networkObject.caliper.command.end.trim()) { + logger.error('End command is specified but it is empty'); + } else { + + await execAsync(networkObject.caliper.command.end); } - t.end(); - }); - }); -}; \ No newline at end of file + } + + // NOTE: keep the below multi-line formatting intact, otherwise the indents will interfere with the template literal + let testSummary = `# Test summary: ${success} succeeded, ${failure} failed #`; + logger.info(` + +${'#'.repeat(testSummary.length)} +${testSummary} +${'#'.repeat(testSummary.length)} +`); + } +}; diff --git a/src/comm/blockchain-interface.js b/src/comm/blockchain-interface.js index 367789bcb..49467446a 100644 --- a/src/comm/blockchain-interface.js +++ b/src/comm/blockchain-interface.js @@ -22,7 +22,7 @@ class BlockchainInterface { /** * Initialise test environment */ - init() { + async init() { throw new Error('init is not implemented for this blockchain system'); } @@ -32,7 +32,7 @@ class BlockchainInterface { /** * Install smart contract(s) */ - installSmartContract() { + async installSmartContract() { throw new Error('installSmartContract is not implemented for this blockchain system'); } @@ -41,12 +41,12 @@ class BlockchainInterface { * @param {Number} number count of test clients * @return {Promise} obtained material for test clients */ - prepareClients (number) { + async prepareClients (number) { let result = []; for(let i = 0 ; i< number ; i++) { result[i] = {}; // as default, return an empty object for each client } - return Promise.resolve(result); + return result; } /** @@ -58,7 +58,7 @@ class BlockchainInterface { * @param {String} name name of the context * @param {Object} args adapter specific arguments */ - getContext(name, args) { + async getContext(name, args) { throw new Error('getContext is not implemented for this blockchain system'); } @@ -66,7 +66,7 @@ class BlockchainInterface { * Release a context as well as related resources * @param {Object} context adapter specific object */ - releaseContext(context) { + async releaseContext(context) { throw new Error('releaseContext is not implemented for this blockchain system'); } @@ -78,7 +78,7 @@ class BlockchainInterface { * @param {Array} args array of JSON formatted arguments for multiple transactions * @param {Number} timeout request timeout, in second */ - invokeSmartContract(context, contractID, contractVer, args, timeout) { + async invokeSmartContract(context, contractID, contractVer, args, timeout) { throw new Error('invokeSmartContract is not implemented for this blockchain system'); } @@ -88,8 +88,9 @@ class BlockchainInterface { * @param {String} contractID identiy of the contract * @param {String} contractVer version of the contract * @param {String} key lookup key + * @param {String=} [fcn] The chaincode query function name */ - queryState(context, contractID, contractVer, key) { + async queryState(context, contractID, contractVer, key, fcn) { throw new Error('queryState is not implemented for this blockchain system'); } diff --git a/src/comm/blockchain.js b/src/comm/blockchain.js index 6e9e3554f..4bc7a4dd4 100644 --- a/src/comm/blockchain.js +++ b/src/comm/blockchain.js @@ -17,28 +17,33 @@ class Blockchain { */ constructor(configPath) { let config = require(configPath); - - if(config.hasOwnProperty('fabric')) { - let fabric = require('../fabric/fabric.js'); - this.bcType = 'fabric'; - this.bcObj = new fabric(configPath); - } - else if(config.hasOwnProperty('sawtooth')) { - let sawtooth = require('../sawtooth/sawtooth.js'); - this.bcType = 'sawtooth'; - this.bcObj = new sawtooth(configPath); - } - else if(config.hasOwnProperty('iroha')) { - let iroha = require('../iroha/iroha.js'); - this.bcType = 'iroha'; - this.bcObj = new iroha(configPath); - } - else if(config.hasOwnProperty('composer')) { - let composer = require('../composer/composer.js'); - this.bcType = 'composer'; - this.bcObj = new composer(configPath); + if(config.hasOwnProperty('caliper') && config.caliper.hasOwnProperty('blockchain')){ + if(config.caliper.blockchain === 'fabric') { + let fabric = require('../fabric/fabric.js'); + this.bcType = 'fabric'; + this.bcObj = new fabric(configPath); + } + else if(config.caliper.blockchain ==='sawtooth') { + let sawtooth = require('../sawtooth/sawtooth.js'); + this.bcType = 'sawtooth'; + this.bcObj = new sawtooth(configPath); + } + else if(config.caliper.blockchain ==='iroha') { + let iroha = require('../iroha/iroha.js'); + this.bcType = 'iroha'; + this.bcObj = new iroha(configPath); + } + else if(config.caliper.blockchain === 'composer') { + let composer = require('../composer/composer.js'); + this.bcType = 'composer'; + this.bcObj = new composer(configPath); + } + else { + this.bcType = 'unknown'; + throw new Error('Unknown blockchain type: ' + config.caliper.blockchain); + } } - else { + else{ this.bcType = 'unknown'; throw new Error('Unknown blockchain config file ' + configPath); } @@ -54,27 +59,28 @@ class Blockchain { /** * Initialise test environment, e.g. create a fabric channel for the test - * @return {Promise} promise object + * @async */ - init() { - return this.bcObj.init(); + async init() { + await this.bcObj.init(); } /** * Perform required preparation for test clients, e.g. enroll clients and obtain key pairs * @param {Number} number count of test clients * @return {Promise} array of obtained material for test clients + * @async */ - prepareClients (number) { - return this.bcObj.prepareClients(number); + async prepareClients (number) { + return await this.bcObj.prepareClients(number); } /** * Install smart contract(s), detail informations are defined in the blockchain configuration file - * @return {Promise} promise object + * @async */ - installSmartContract() { - return this.bcObj.installSmartContract(); + async installSmartContract() { + await this.bcObj.installSmartContract(); } /** @@ -82,9 +88,10 @@ class Blockchain { * @param {String} name name of the context * @param {Object} args adapter specific arguments * @return {Promise} obtained context object + * @async */ - getContext(name, args) { - return this.bcObj.getContext(name, args); + async getContext(name, args) { + return await this.bcObj.getContext(name, args); } /** @@ -92,8 +99,8 @@ class Blockchain { * @param {Object} context adapter specific object * @return {Promise} promise object */ - releaseContext(context) { - return this.bcObj.releaseContext(context); + async releaseContext(context) { + return await this.bcObj.releaseContext(context); } /** @@ -105,7 +112,7 @@ class Blockchain { * @param {Number} timeout request timeout, in second * @return {Promise} txStatus object or an array of txStatus objects */ - invokeSmartContract(context, contractID, contractVer, args, timeout) { + async invokeSmartContract(context, contractID, contractVer, args, timeout) { let arg, time; // compatible with old version if(Array.isArray(args)) { arg = args; @@ -114,7 +121,7 @@ class Blockchain { arg = [args]; } else { - return Promise.reject(new Error('Invalid args for invokeSmartContract()')); + throw new Error('Invalid args for invokeSmartContract()'); } if(typeof timeout !== 'number' || timeout < 0) { @@ -124,7 +131,7 @@ class Blockchain { time = timeout; } - return this.bcObj.invokeSmartContract(context, contractID, contractVer, arg, time); + return await this.bcObj.invokeSmartContract(context, contractID, contractVer, arg, time); } /** @@ -133,10 +140,11 @@ class Blockchain { * @param {String} contractID identiy of the contract * @param {String} contractVer version of the contract * @param {String} key lookup key + * @param {String=} [fcn] query function name * @return {Promise} as invokeSmateContract() */ - queryState(context, contractID, contractVer, key) { - return this.bcObj.queryState(context, contractID, contractVer, key); + async queryState(context, contractID, contractVer, key, fcn) { + return await this.bcObj.queryState(context, contractID, contractVer, key, fcn); } /** diff --git a/src/comm/client/client-util.js b/src/comm/client/client-util.js index 5c8c0bddb..a178dad9a 100644 --- a/src/comm/client/client-util.js +++ b/src/comm/client/client-util.js @@ -7,7 +7,7 @@ 'use strict'; -const log = require('../util.js').log; +const logger = require('../util.js').getLogger('client-util.js'); let processes = {}; // {pid:{obj, promise}} /** @@ -81,9 +81,9 @@ function launchClient(updates, results) { setPromise(pid, false, new Error('Client encountered unexpected error')); }); - child.on('exit', function(){ - log('Client exited'); - setPromise(pid, true, null); + child.on('exit', function(code, signal){ + logger.info('Client exited '); + setPromise(pid, false, new Error('Client already exited')); }); } @@ -94,78 +94,72 @@ function launchClient(updates, results) { * @param {Array} clientArgs each element contains specific arguments for a client * @param {Array} updates array to save txUpdate results * @param {Array} results array to save the test results - * @return {Promise} promise object + * @async */ -function startTest(number, message, clientArgs, updates, results) { +async function startTest(number, message, clientArgs, updates, results) { let count = 0; for(let i in processes) { i; // avoid eslint error count++; } - if(count === number) { // already launched clients - let txPerClient; - if (message.numb) { - // Run specified number of transactions - txPerClient = Math.floor(message.numb / number); - - // trim should be based on client number if specified with txNumber - if (message.trim) { - message.trim = Math.floor(message.trim / number); - } - - if(txPerClient < 1) { - txPerClient = 1; - } - message.numb = txPerClient; - } else if (message.txDuration) { - // Run for time specified txDuration based on clients - // Do nothing, we run for the time specified within message.txDuration - } else { - return Promise.reject(new Error('Unconditioned transaction rate driving mode')); - } - message.clients = number; - - let promises = []; - let idx = 0; - for(let id in processes) { - let client = processes[id]; - let p = new Promise((resolve, reject) => { - client.promise = { - resolve: resolve, - reject: reject - }; - }); - promises.push(p); - client.results = results; - client.updates = updates; - message.clientargs = clientArgs[idx]; - message.clientIdx = idx; - idx++; - - client.obj.send(message); + if (count !== number) { + // launch clients + processes = {}; + for(let i = 0 ; i < number ; i++) { + launchClient(updates, results); } + } - return Promise.all(promises).then(()=>{ - // clear promises - for(let client in processes) { - delete client.promise; - } - return Promise.resolve(); - }).catch((err)=>{ - return Promise.reject(err); - }); + let txPerClient; + if (message.numb) { + // Run specified number of transactions + txPerClient = Math.floor(message.numb / number); + + // trim should be based on client number if specified with txNumber + if (message.trim) { + message.trim = Math.floor(message.trim / number); + } + if(txPerClient < 1) { + txPerClient = 1; + } + message.numb = txPerClient; + } else if (message.txDuration) { + // Run for time specified txDuration based on clients + // Do nothing, we run for the time specified within message.txDuration + } else { + throw new Error('Unconditioned transaction rate driving mode'); + //return Promise.reject(new Error('Unconditioned transaction rate driving mode')); } - // launch clients - processes = {}; - for(let i = 0 ; i < number ; i++) { - launchClient(updates, results); + message.clients = number; + + let promises = []; + let idx = 0; + for(let id in processes) { + let client = processes[id]; + let p = new Promise((resolve, reject) => { + client.promise = { + resolve: resolve, + reject: reject + }; + }); + promises.push(p); + client.results = results; + client.updates = updates; + message.clientargs = clientArgs[idx]; + message.clientIdx = idx; + idx++; + + client.obj.send(message); } - // start test - return startTest(number, message, clientArgs, updates, results); + await Promise.all(promises); + // clear promises + for(let client in processes) { + delete client.promise; + } } module.exports.startTest = startTest; @@ -191,4 +185,4 @@ function stop() { } processes = {}; } -module.exports.stop = stop; \ No newline at end of file +module.exports.stop = stop; diff --git a/src/comm/client/client.js b/src/comm/client/client.js index 49b848bd3..0e66502f2 100644 --- a/src/comm/client/client.js +++ b/src/comm/client/client.js @@ -14,7 +14,10 @@ const CLIENT_ZOO = 'zookeeper'; const zkUtil = require('./zoo-util.js'); const ZooKeeper = require('node-zookeeper-client'); const clientUtil = require('./client-util.js'); -const log = require('../util').log; + +const util = require('../util'); +const logger = util.getLogger('client.js'); + /** * Callback function to handle messages received from zookeeper clients @@ -32,7 +35,7 @@ function zooMessageCallback(data, updates, results) { stop = true; // stop watching break; case 'error': - log('Client encountered error, ' + msg.data); + logger.error('Client encountered error, ' + msg.data); stop = true; // stop watching break; case 'txUpdated': @@ -40,7 +43,7 @@ function zooMessageCallback(data, updates, results) { stop = false; break; default: - log('Unknown message type: ' + msg.type); + logger.warn('Unknown message type: ' + msg.type); stop = false; break; } @@ -64,8 +67,7 @@ function zooStartWatch(zoo, updates, results) { path, (data)=>{ return zooMessageCallback(data, updates, results).catch((err) => { - log('Exception encountered when watching message from zookeeper, due to:'); - log(err); + logger.error('Exception encountered when watching message from zookeeper, due to:' + err); return Promise.resolve(true); }); }, @@ -95,7 +97,7 @@ class Client{ * Initialise client object * @return {Promise} promise object */ - init() { + async init() { if(this.config.hasOwnProperty('type')) { switch(this.config.type) { case CLIENT_LOCAL: @@ -106,15 +108,15 @@ class Client{ else { this.number = 1; } - return Promise.resolve(this.number); + return this.number; case CLIENT_ZOO: - return this._initZoo(); + return await this._initZoo(); default: - return Promise.reject(new Error('Unknown client type, should be local or zookeeper')); + throw new Error('Unknown client type, should be local or zookeeper'); } } else { - return Promise.reject(new Error('Failed to find client type in config file')); + throw new Error('Failed to find client type in config file'); } } @@ -132,51 +134,27 @@ class Client{ * }; * @param {JSON} message start message * @param {Array} clientArgs each element of the array contains arguments that should be passed to corresponding test client - * @param {Object} finishCB callback after the test finished + * @param {function} finishCB callback after the test finished * @param {any} finishArgs arguments that should be passed to finishCB, the callback is invoke as finishCB(this.results, finshArgs) - * @return {Promise} promise object + * @async */ - startTest(message, clientArgs, finishCB, finishArgs) { - let p; + async startTest(message, clientArgs, finishCB, finishArgs) { this.results = []; this.updates.data = []; this.updates.id++; + switch(this.type) { case CLIENT_LOCAL: - p = this._startLocalTest(message, clientArgs); + await this._startLocalTest(message, clientArgs); break; case CLIENT_ZOO: - p = this._startZooTest(message, clientArgs); + await this._startZooTest(message, clientArgs); break; default: - return Promise.reject(new Error('Unknown client type: ' + this.type)); + throw new Error(`Unknown client type: ${this.type}`); } - return p.then(()=>{ - return finishCB(this.results, finishArgs); - }).then(()=>{ - return Promise.resolve(); - }).catch((err)=>{ - return Promise.reject(err); - }); - } - /** - * Send message to actual clients - * @param {JSON} message JSON message - * @return {Number} actual number of sent messages - */ - sendMessage(message) { - switch(this.type) { - case CLIENT_LOCAL: - return this._sendLocalMessage(message); - case CLIENT_ZOO: - return this._sendZooMessage(message).catch((err) => { - return 0; - }); - default: - log('Unknown client type: ' + this.type); - return 0; - } + await finishCB(this.results, finishArgs); } /** @@ -203,11 +181,6 @@ class Client{ return this.updates; } - - /** - * pseudo private functions - */ - /** * functions for CLIENT_LOCAL */ @@ -217,19 +190,11 @@ class Client{ * @param {JSON} message start messages * @param {Array} clientArgs arguments for the test clients * @return {Promise} promise object + * @async */ - _startLocalTest(message, clientArgs) { + async _startLocalTest(message, clientArgs) { message.totalClients = this.number; - return clientUtil.startTest(this.number, message, clientArgs, this.updates.data, this.results); - } - - /** - * Send message to local clients - * @param {JSON} message JSON message - * @return {Number} number of sent messages - */ - _sendLocalMessage(message) { - return clientUtil.sendMessage(message); + return await clientUtil.startTest(this.number, message, clientArgs, this.updates.data, this.results); } /** @@ -285,12 +250,12 @@ class Client{ this.zoo.zk = zk; let zoo = this.zoo; let connectHandle = setTimeout(()=>{ - log('Could not connect to ZooKeeper'); + logger.error('Could not connect to ZooKeeper'); Promise.reject('Could not connect to ZooKeeper'); }, TIMEOUT+100); let p = new Promise((resolve, reject) => { zk.once('connected', () => { - log('Connected to ZooKeeper'); + logger.info('Connected to ZooKeeper'); clearTimeout(connectHandle); zkUtil.existsP(zk, zkUtil.NODE_CLIENT, 'Failed to find clients due to').then((found)=>{ if(!found) { @@ -305,7 +270,7 @@ class Client{ 'Failed to list clients due to'); }).then((clients) => { // TODO: not support add/remove zookeeper clients now - log('get zookeeper clients:' + clients); + logger.info('get zookeeper clients:' + clients); for (let i = 0 ; i < clients.length ; i++) { let clientID = clients[i]; zoo.hosts.push({ @@ -321,7 +286,7 @@ class Client{ }); }); }); - log('Connecting to ZooKeeper......'); + logger.info('Connecting to ZooKeeper......'); zk.connect(); return p; } @@ -361,7 +326,7 @@ class Client{ return Promise.reject(new Error('Failed to start the remote test')); } }).catch((err)=>{ - log('Failed to start the remote test'); + logger.error('Failed to start the remote test'); return Promise.reject(err); }); } @@ -422,4 +387,4 @@ class Client{ } } -module.exports = Client; \ No newline at end of file +module.exports = Client; diff --git a/src/comm/client/local-client.js b/src/comm/client/local-client.js index d527c2ac3..859618581 100644 --- a/src/comm/client/local-client.js +++ b/src/comm/client/local-client.js @@ -8,17 +8,18 @@ 'use strict'; // global variables +const cfUtil = require('../config-util.js'); +const Util = require('../util.js'); +let logger = Util.getLogger('local-client.js'); const bc = require('../blockchain.js'); const RateControl = require('../rate-control/rateControl.js'); -const Util = require('../util.js'); -const log = Util.log; let blockchain; let results = []; let txNum = 0; let txLastNum = 0; let resultStats = []; -let txUpdateTime = 1000; +//let txUpdateTime = 1000; let trimType = 0; let trim = 0; let startTime = 0; @@ -127,9 +128,9 @@ function submitCallback(count) { * @return {Promise} promise object */ async function runFixedNumber(msg, cb, context) { - log('Info: client ' + process.pid + ' start test runFixedNumber()' + (cb.info ? (':' + cb.info) : '')); + logger.debug('Info: client ' + process.pid + ' start test runFixedNumber()' + (cb.info ? (':' + cb.info) : '')); let rateControl = new RateControl(msg.rateControl, blockchain); - rateControl.init(msg); + await rateControl.init(msg); await cb.init(blockchain, context, msg.args); startTime = Date.now(); @@ -140,7 +141,7 @@ async function runFixedNumber(msg, cb, context) { addResult(result); return Promise.resolve(); })); - await rateControl.applyRateControl(startTime, txNum, results); + await rateControl.applyRateControl(startTime, txNum, results, resultStats); } await Promise.all(promises); @@ -156,9 +157,9 @@ async function runFixedNumber(msg, cb, context) { * @return {Promise} promise object */ async function runDuration(msg, cb, context) { - log('Info: client ' + process.pid + ' start test runDuration()' + (cb.info ? (':' + cb.info) : '')); + logger.debug('Info: client ' + process.pid + ' start test runDuration()' + (cb.info ? (':' + cb.info) : '')); let rateControl = new RateControl(msg.rateControl, blockchain); - rateControl.init(msg); + await rateControl.init(msg); const duration = msg.txDuration; // duration in seconds await cb.init(blockchain, context, msg.args); @@ -170,7 +171,7 @@ async function runDuration(msg, cb, context) { addResult(result); return Promise.resolve(); })); - await rateControl.applyRateControl(startTime, txNum, results); + await rateControl.applyRateControl(startTime, txNum, results, resultStats); } await Promise.all(promises); @@ -183,13 +184,15 @@ async function runDuration(msg, cb, context) { * @param {JSON} msg start test message * @return {Promise} promise object */ -function doTest(msg) { - log('doTest() with:', msg); +async function doTest(msg) { + logger.debug('doTest() with:', msg); let cb = require(Util.resolvePath(msg.cb)); blockchain = new bc(Util.resolvePath(msg.config)); beforeTest(msg); // start an interval to report results repeatedly + let txUpdateTime = cfUtil.getConfigSetting('core:tx-update-time', 1000); + logger.debug('txUpdateTime: ' + txUpdateTime); let txUpdateInter = setInterval(txUpdate, txUpdateTime); /** * Clear the update interval @@ -203,7 +206,8 @@ function doTest(msg) { } }; - return blockchain.getContext(msg.label, msg.clientargs).then((context) => { + try { + let context = await blockchain.getContext(msg.label, msg.clientargs); if(typeof context === 'undefined') { context = { engine : { @@ -216,55 +220,52 @@ function doTest(msg) { submitCallback : submitCallback }; } + if (msg.txDuration) { - return runDuration(msg, cb, context); + await runDuration(msg, cb, context); } else { - return runFixedNumber(msg, cb, context); + await runFixedNumber(msg, cb, context); } - }).then(() => { + clearUpdateInter(); - return cb.end(); - }).then(() => { + await cb.end(); + if (resultStats.length > 0) { - return Promise.resolve(resultStats[0]); + return resultStats[0]; } else { - return Promise.resolve(bc.createNullDefaultTxStats()); + return bc.createNullDefaultTxStats(); } - }).catch((err) => { + } catch (err) { clearUpdateInter(); - log('Client ' + process.pid + ': error ' + (err.stack ? err.stack : err)); - return Promise.reject(err); - }); + logger.error(`Client[${process.pid}] encountered an error: ${(err.stack ? err.stack : err)}`); + throw err; + } } /** * Message handler */ -process.on('message', function(message) { - if(message.hasOwnProperty('type')) { - try { - switch(message.type) { - case 'test': { - let result; - doTest(message).then((output) => { - result = output; - return Util.sleep(200); - }).then(() => { - process.send({type: 'testResult', data: result}); - }); - break; - } - default: { - process.send({type: 'error', data: 'unknown message type'}); - } - } +process.on('message', async (message) => { + if (!message.hasOwnProperty('type')) { + process.send({type: 'error', data: 'unknown message type'}); + return; + } + + try { + switch (message.type) { + case 'test': { + let result = await doTest(message); + await Util.sleep(200); + process.send({type: 'testResult', data: result}); + break; + } + default: { + process.send({type: 'error', data: 'unknown message type'}); } - catch(err) { - process.send({type: 'error', data: err.toString()}); } } - else { - process.send({type: 'error', data: 'unknown message type'}); + catch (err) { + process.send({type: 'error', data: err.toString()}); } -}); \ No newline at end of file +}); diff --git a/src/comm/client/zoo-client.js b/src/comm/client/zoo-client.js index 324a69ff8..49efdf215 100644 --- a/src/comm/client/zoo-client.js +++ b/src/comm/client/zoo-client.js @@ -7,16 +7,16 @@ 'use strict'; +const Util = require('../util.js'); +const logger = Util.getLogger('zoo-client.js'); const Blockchain = require('../blockchain.js'); const ZooKeeper = require('node-zookeeper-client'); const zkUtil = require('./zoo-util.js'); const clientUtil = require('./client-util.js'); const path = require('path'); -const Util = require('../util.js'); -const log = Util.log; if (process.argv.length < 3) { - log('Missed zookeeper address'); + logger.error('Missed zookeeper address'); process.exit(0); } @@ -74,7 +74,7 @@ function close() { promises.push(zkUtil.removeP(zk, outNode, -1, 'Failed to remove inNode due to')); } }).then(()=>{ - log('Node ' + inNode + ' ' + outNode + ' is deleted'); + logger.info('Node ' + inNode + ' ' + outNode + ' is deleted'); inNode = ''; outNode = ''; zk.close(); @@ -155,7 +155,7 @@ function afterTest() { let buf = new Buffer(JSON.stringify(message)); return write(buf); }).catch((err) => { - log(err); + logger.error(err); return Promise.resolve(); }); } @@ -167,7 +167,7 @@ function afterTest() { */ function zooMessageCallback(data) { let msg = JSON.parse(data.toString()); - log('Receive message, type='+msg.type); + logger.info('Receive message, type='+msg.type); switch(msg.type) { case 'test': { @@ -177,7 +177,7 @@ function zooMessageCallback(data) { }).then(() => { return afterTest(); }).catch((err)=>{ - log('==Exception while testing, ' + err); + logger.error('==Exception while testing, ' + err); return afterTest(); }); break; @@ -204,14 +204,13 @@ function watch() { inNode, (data) => { return zooMessageCallback(data).catch((err) => { - log('Exception encountered when watching message from zookeeper, due to:'); - log(err); + logger.error('Exception encountered when watching message from zookeeper, due to:' + err); return Promise.resolve(true); }); }, 'Failed to watch children nodes in zookeeper' ).catch((err) => { - log(err); + logger.error(err); return Promise.resolve(); }); } @@ -220,7 +219,7 @@ function watch() { * Callback when connecting to zk */ zk.once('connected', function() { - log('Connected to ZooKeeper'); + logger.info('Connected to ZooKeeper'); zkUtil.existsP(zk, zkUtil.NODE_ROOT, 'Failed to find NODE_ROOT due to').then((found)=>{ if(found) { return Promise.resolve(); @@ -242,20 +241,20 @@ zk.once('connected', function() { let clientPath = zkUtil.NODE_CLIENT + '/client_'+random+'_'; return zkUtil.createP(zk, clientPath, null, ZooKeeper.CreateMode.EPHEMERAL_SEQUENTIAL, 'Failed to create client node due to'); }).then((clientPath)=>{ - log('Created client node:'+clientPath); + logger.info('Created client node:'+clientPath); clientID = path.basename(clientPath); inNode = zkUtil.getInNode(clientID); outNode = zkUtil.getOutNode(clientID); return zkUtil.createP(zk, inNode, null, ZooKeeper.CreateMode.PERSISTENT, 'Failed to create receiving queue due to'); }).then((inPath)=>{ - log('Created receiving queue at:'+inPath); + logger.info('Created receiving queue at:'+inPath); return zkUtil.createP(zk, outNode, null, ZooKeeper.CreateMode.PERSISTENT, 'Failed to create sending queue due to'); }).then((outPath)=>{ - log('Created sending queue at:'+outPath); - log('Waiting for messages at:'+inNode+'......'); + logger.info('Created sending queue at:'+outPath); + logger.info('Waiting for messages at:'+inNode+'......'); watch(); }).catch((err)=> { - log(err.stack ? err.stack : err); + logger.error(err.stack ? err.stack : err); close(); }); }); diff --git a/src/comm/client/zoo-util.js b/src/comm/client/zoo-util.js index e6f0980b3..0ef486768 100644 --- a/src/comm/client/zoo-util.js +++ b/src/comm/client/zoo-util.js @@ -11,7 +11,7 @@ module.exports.NODE_ROOT = '/caliper'; module.exports.NODE_CLIENT = '/caliper/clients'; const ZooKeeper = require('node-zookeeper-client'); -const log = require('../util.js').log; +const logger = require('../util.js').getLogger('zoo-util.js'); /** * Check if specified znode exists * @param {Object} zookeeper zk object @@ -23,7 +23,7 @@ function exists(zookeeper, path, errLog) { return new Promise((resolve, reject) => { zookeeper.exists(path, (err, stat) => { if(err) { - log(errLog); + logger.error(errLog); return reject(err); } if(stat) { @@ -50,7 +50,7 @@ function create(zookeeper, path, data, mode, errLog) { return new Promise((resolve, reject) => { zookeeper.create(path, data, ZooKeeper.ACL.OPEN_ACL_UNSAFE, mode, (err, path) => { if(err) { - log(errLog); + logger.error(errLog); return reject(err); } else { @@ -73,7 +73,7 @@ function remove(zookeeper, path, version, errLog) { return new Promise((resolve, reject)=>{ zookeeper.remove(path, version, (err)=>{ if(err) { - log(errLog); + logger.error(errLog); return reject(err); } return resolve(); @@ -94,7 +94,7 @@ function getData(zookeeper, path,watcher, errLog) { return new Promise((resolve, reject) => { zookeeper.getData(path, watcher, (err, data, stat) => { if(err) { - log(errLog); + logger.error(errLog); return reject(err); } else { @@ -117,7 +117,7 @@ function getChildren(zookeeper, path, watcher, errLog) { return new Promise((resolve, reject) => { zookeeper.getChildren(path, watcher, (err, children, stat)=>{ if (err) { - log(errLog); + logger.error(errLog); return reject(err); } else { @@ -144,8 +144,8 @@ function removeChildren(zookeeper, path, errLog) { }); return Promise.all(promises); }).catch((err)=>{ - log(errLog); - log(err); + logger.error(errLog); + logger.error(err); return Promise.resolve(); }); } @@ -176,7 +176,7 @@ function watchMsgQueue(zookeeper, path, callback, errLog) { whilst(resolve, reject); } else { - log('Stopped watching at '+path); + logger.info('Stopped watching at '+path); } }, errLog @@ -209,7 +209,7 @@ function watchMsgQueue(zookeeper, path, callback, errLog) { }).then((data)=>{ zookeeper.remove(path+'/'+item, -1, (err)=>{ if(err) { - log(err.stack); + logger.error(err.stack); } }); @@ -225,7 +225,7 @@ function watchMsgQueue(zookeeper, path, callback, errLog) { }); }, Promise.resolve()); }).catch((err)=>{ - log(errLog); + logger.error(errLog); cont = false; resolve(); }); diff --git a/src/comm/config-util.js b/src/comm/config-util.js new file mode 100644 index 000000000..bb126c8c0 --- /dev/null +++ b/src/comm/config-util.js @@ -0,0 +1,56 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + +'use strict'; + + +const Config = require('./Config.js'); + +// +//Internal method to add additional configuration file to override default file configuration settings +// +module.exports.addConfigFile = (path) => { + const config = exports.getConfig(); + config.file(path); +}; + +// +//Internal method to set an override setting to the configuration settings +// +module.exports.setConfigSetting = (name, value) => { + const config = exports.getConfig(); + config.set(name, value); +}; + +// +//Internal method to get an override setting to the configuration settings +// +exports.getConfigSetting = (name, default_value) => { + const config = exports.getConfig(); + return config.get(name, default_value); +}; + +// +// Internal method to get the configuration settings singleton +// +exports.getConfig = () => { + if (global.config) { + return global.config; + } + const config = new Config(); + global.config = config; + return config; +}; diff --git a/src/comm/monitor-docker.js b/src/comm/monitor/monitor-docker.js similarity index 86% rename from src/comm/monitor-docker.js rename to src/comm/monitor/monitor-docker.js index 421d14b56..51fffe3fe 100644 --- a/src/comm/monitor-docker.js +++ b/src/comm/monitor/monitor-docker.js @@ -8,8 +8,8 @@ 'use strict'; -const Util = require('./util.js'); -const log = Util.log; +const Util = require('../util.js'); +const logger = Util.getLogger('monitor-docker.js'); const MonitorInterface = require('./monitor-interface'); /** @@ -41,7 +41,7 @@ function findContainers() { if(name.indexOf('http://') === 0) { let remote = url.parse(name, true); if(remote.hostname === null || remote.port === null || remote.pathname === '/') { - log('monitor-docker: unrecognized host, ' + name); + logger.warn('monitor-docker: unrecognized host, ' + name); } else if(filterName.remote.hasOwnProperty(remote.hostname)) { filterName.remote[remote.hostname].containers.push(remote.pathname); @@ -63,7 +63,7 @@ function findContainers() { let p = this.si.dockerContainers('active').then((containers) => { let size = containers.length; if(size === 0) { - log('monitor-docker: could not find active local container'); + logger.error('monitor-docker: could not find active local container'); return Promise.resolve(); } if(filterName.local.indexOf('all') !== -1) { @@ -83,7 +83,7 @@ function findContainers() { return Promise.resolve(); }).catch((err) => { - log('Error(monitor-docker):' + err); + logger.error('Error(monitor-docker):' + err); return Promise.resolve(); }); promises.push(p); @@ -98,7 +98,7 @@ function findContainers() { let p = docker.listContainers().then((containers) => { let size = containers.length; if(size === 0) { - log('monitor-docker: could not find remote container at ' + h); + logger.error('monitor-docker: could not find remote container at ' + h); return Promise.resolve(); } @@ -120,7 +120,7 @@ function findContainers() { } return Promise.resolve(); }).catch((err) => { - log('Error(monitor-docker):' + err); + logger.error('Error(monitor-docker):' + err); return Promise.resolve(); }); promises.push(p); @@ -150,7 +150,7 @@ class MonitorDocker extends MonitorInterface { /* this.stats : record statistics of each container { 'time' : [] // time slot - 'container_id" : { // refer to https://www.npmjs.com/package/systeminformatioin + 'container_id" : { // refer to https://www.npmjs.com/package/systeminformation 'mem_usage' : [], 'mem_percent' : [], 'cpu_percent' : [], @@ -195,7 +195,7 @@ class MonitorDocker extends MonitorInterface { let stat = results[i]; let id = stat.id; if(id !== self.containers[i].id) { - log('monitor-docker: inconsistent id'); + logger.warn('monitor-docker: inconsistent id'); continue; } if(self.containers[i].remote === null) { // local @@ -215,7 +215,8 @@ class MonitorDocker extends MonitorInterface { let sysDelta = stat.cpu_stats.system_cpu_usage - stat.precpu_stats.system_cpu_usage; if(cpuDelta > 0 && sysDelta > 0) { if(stat.cpu_stats.cpu_usage.hasOwnProperty('percpu_usage') && stat.cpu_stats.cpu_usage.percpu_usage !== null) { - self.stats[id].cpu_percent.push(cpuDelta / sysDelta * stat.cpu_stats.cpu_usage.percpu_usage.length * 100.0); + // self.stats[id].cpu_percent.push(cpuDelta / sysDelta * stat.cpu_stats.cpu_usage.percpu_usage.length * 100.0); + self.stats[id].cpu_percent.push(cpuDelta / sysDelta * MonitorDocker.coresInUse(stat.cpu_stats) * 100.0); } else { self.stats[id].cpu_percent.push(cpuDelta / sysDelta * 100.0); @@ -237,6 +238,7 @@ class MonitorDocker extends MonitorInterface { } self.isReading = false; }).catch((err) => { + logger.error(err); self.isReading = false; }); } @@ -335,5 +337,39 @@ class MonitorDocker extends MonitorInterface { getNetworkHistory(key) { return {'in': this.stats[key].netIO_rx, 'out':this.stats[key].netIO_tx}; } + + /** + * Get history of disc usage as {read, wrtie} + * @param {String} key key of the container + * @return {Array} array of disc usage + */ + getDiscHistory(key) { + return {'read': this.stats[key].blockIO_rx, 'write':this.stats[key].blockIO_wx}; + } + + /** + * count the cpu core in real use + * @param {json} cpu_stats the statistics of cpu + * @return {number} the number core in real use + */ + static coresInUse(cpu_stats) { + return cpu_stats.online_cpus || MonitorDocker.findCoresInUse(cpu_stats.cpu_usage.percpu_usage || []); + } + + /** + * count the cpu core in real use + * @param {array} percpu_usage the usage cpu array + * @return {number} the the percpu_usage.length + */ + static findCoresInUse(percpu_usage) { + percpu_usage = percpu_usage.filter((coreUsage) => { + if (coreUsage > 0) { + return (coreUsage); + } + }); + return percpu_usage.length; + } + + } -module.exports = MonitorDocker; \ No newline at end of file +module.exports = MonitorDocker; diff --git a/src/comm/monitor-interface.js b/src/comm/monitor/monitor-interface.js similarity index 84% rename from src/comm/monitor-interface.js rename to src/comm/monitor/monitor-interface.js index b41781db3..6cedd406d 100644 --- a/src/comm/monitor-interface.js +++ b/src/comm/monitor/monitor-interface.js @@ -72,7 +72,15 @@ class MonitorInterface{ * @param {String} key Lookup key */ getNetworkHistory(key) { - throw new Error('getCpuHistory is not implemented for this monitor'); + throw new Error('getNetworkHistory is not implemented for this monitor'); + } + + /** + * Get history of disc usage as {read, wrtie} + * @param {String} key Lookup key + */ + getDiscHistory(key) { + throw new Error('getDiscHistory is not implemented for this monitor'); } } module.exports = MonitorInterface; diff --git a/src/comm/monitor-process.js b/src/comm/monitor/monitor-process.js similarity index 92% rename from src/comm/monitor-process.js rename to src/comm/monitor/monitor-process.js index 8d08a0539..20f4d7e8a 100644 --- a/src/comm/monitor-process.js +++ b/src/comm/monitor/monitor-process.js @@ -11,8 +11,8 @@ const ps = require('ps-node'); const usage = require('pidusage'); const MonitorInterface = require('./monitor-interface'); -const Util = require('./util.js'); -const log = Util.log; +const Util = require('../util.js'); +const logger = Util.getLogger('monitor-process.js'); /** * Initialise a state object @@ -57,7 +57,7 @@ function findProcs(item) { let pids = []; ps.lookup(item, (err, resultList) => { if (err) { - log('failed looking the process up: ' + err); + logger.error('failed looking the process up: ' + err); } else { for(let i = 0 ; i < resultList.length ; i++) { @@ -115,7 +115,7 @@ function getUsage(pids, type) { } resolve(res); }).catch((err) => { - log('Exception encountered when fetching resource usage: ' + err); + logger.error('Exception encountered when fetching resource usage: ' + err); resolve(res); }); }); @@ -200,7 +200,7 @@ class MonitorProcess extends MonitorInterface { Promise.all(promises).then(() => { self.isReading = false; }).catch((err) => { - log('Exception occurred when looking the process up: ' + err); + logger.error('Exception occurred when looking the process up: ' + err); }); } readStats(); @@ -308,5 +308,15 @@ class MonitorProcess extends MonitorInterface { // not supported now return {'in': this.stats[key].netIO_rx, 'out':this.stats[key].netIO_tx}; return {'in': [], 'out': []}; } + + /** + * Get history of disc usage as {read, wrtie} + * @param {String} key key of the container + * @return {Array} array of disc usage + */ + getDiscHistory(key) { + // not supported now return {'in': this.stats[key].netIO_rx, 'out':this.stats[key].netIO_tx}; + return {'read': [], 'write': []}; + } } module.exports = MonitorProcess; \ No newline at end of file diff --git a/src/comm/monitor.js b/src/comm/monitor/monitor.js similarity index 88% rename from src/comm/monitor.js rename to src/comm/monitor/monitor.js index 903d767b2..94d1dafab 100644 --- a/src/comm/monitor.js +++ b/src/comm/monitor/monitor.js @@ -9,8 +9,8 @@ 'use strict'; const table = require('table'); -const Util = require('./util.js'); -const log = Util.log; +const Util = require('../util'); +const logger= Util.getLogger('monitor.js'); /** * Get statistics(maximum, minimum, summation, average) of a number array @@ -109,7 +109,7 @@ class Monitor { } let monitorTypes = m.type; - if(typeof m === 'undefined') { + if(typeof monitorTypes === 'undefined') { return Promise.reject(new Error('Failed to find monitor type in config file')); } if(!Array.isArray(monitorTypes)) { @@ -136,14 +136,14 @@ class Monitor { promise = this._startProcessMonitor(m.process, m.interval); } else { - log('undefined monitor type: ' + type); + logger.error('undefined monitor type: ' + type); return resolve(); } promise.then((monitor)=>{ this.monitors.push(monitor); resolve(); }).catch((err)=>{ - log('start monitor ' + type + ' failed: ' + err); + logger.error('start monitor ' + type + ' failed: ' + err); resolve(); // always return resolve for Promsie.all }); })); @@ -169,7 +169,7 @@ class Monitor { monitor.stop().then(() => { resolve(); }).catch((err) => { - log('stop monitor failed: ' + err); + logger.error('stop monitor failed: ' + err); resolve(); }); })); @@ -180,7 +180,7 @@ class Monitor { this.started = false; return Promise.resolve(); }).catch((err)=>{ - log('stop monitor failed: ' + err); + logger.error('stop monitor failed: ' + err); this.monitors = []; this.peers = []; this.started = false; @@ -204,7 +204,7 @@ class Monitor { monitor.restart().then(() => { resolve(); }).catch((err) => { - log('restart monitor failed: ' + err); + logger.error('restart monitor failed: ' + err); resolve(); }); })); @@ -224,8 +224,8 @@ class Monitor { this._readDefaultStats(true); if(this.peers === null || this.peers.length === 0) { - log('Failed to read monitoring data'); - return; + logger.error('Failed to read monitoring data'); + return []; } let defaultTable = []; @@ -251,7 +251,7 @@ class Monitor { return defaultTable; } catch(err) { - log('Failed to read monitoring data, ' + (err.stack ? err.stack : err)); + logger.error('Failed to read monitoring data, ' + (err.stack ? err.stack : err)); return []; } } @@ -264,7 +264,7 @@ class Monitor { this._readDefaultStats(true); if(this.peers === null || this.peers.length === 0) { - log('Failed to read monitoring data'); + logger.error('Failed to read monitoring data'); return; } @@ -289,11 +289,11 @@ class Monitor { } let t = table.table(defaultTable, {border: table.getBorderCharacters('ramac')}); - log('### resource stats (maximum) ###'); - log(t); + logger.info('\n ### resource stats (maximum) ###'); + logger.info('\n' + t); } catch(err) { - log('Failed to read monitoring data, ' + (err.stack ? err.stack : err)); + logger.error('Failed to read monitoring data, ' + (err.stack ? err.stack : err)); } } @@ -318,7 +318,9 @@ class Monitor { 'CPU(max)' : [], 'CPU(avg)' : [], 'Traffic In' : [], - 'Traffic Out' : [] + 'Traffic Out' : [], + 'Disc Read' : [], + 'Disc Write' : [] }; peer.isLastTmp = false; peer.monitor = this.monitors[i]; @@ -332,6 +334,7 @@ class Monitor { let mem = peer.monitor.getMemHistory(key); let cpu = peer.monitor.getCpuHistory(key); let net = peer.monitor.getNetworkHistory(key); + let disc = peer.monitor.getDiscHistory(key); let mem_stat = getStatistics(mem); let cpu_stat = getStatistics(cpu); if(peer.isLastTmp) { @@ -342,6 +345,8 @@ class Monitor { peer.history['CPU(avg)'][lastIdx] = cpu_stat.avg; peer.history['Traffic In'][lastIdx] = net.in[net.in.length-1] - net.in[0]; peer.history['Traffic Out'][lastIdx] = net.out[net.out.length-1] - net.out[0]; + peer.history['Disc Write'][lastIdx] = disc.write[disc.write.length-1] - disc.write[0]; + peer.history['Disc Read'][lastIdx] = disc.read[disc.read.length-1] - disc.read[0]; } else { peer.history['Memory(max)'].push(mem_stat.max); @@ -350,6 +355,8 @@ class Monitor { peer.history['CPU(avg)'].push(cpu_stat.avg); peer.history['Traffic In'].push(net.in[net.in.length-1] - net.in[0]); peer.history['Traffic Out'].push(net.out[net.out.length-1] - net.out[0]); + peer.history['Disc Write'].push(disc.write[disc.write.length-1] - disc.write[0]); + peer.history['Disc Read'].push(disc.read[disc.read.length-1] - disc.read[0]); } peer.isLastTmp = tmp; }); @@ -374,7 +381,7 @@ class Monitor { * @return {Array} array of names */ _getMaxItems() { - return ['Memory(max)', 'CPU(max)', 'Traffic In','Traffic Out']; + return ['Memory(max)', 'CPU(max)', 'Traffic In','Traffic Out', 'Disc Read', 'Disc Write']; } @@ -389,18 +396,18 @@ class Monitor { for(let i = 0 ; i < items.length ; i++) { let key = items[i]; if (!this.peers[idx].history.hasOwnProperty(key)) { - log('could not find history object named ' + key); + logger.warn('could not find history object named ' + key); values.push('-'); continue; } let length = this.peers[idx].history[key].length; if(length === 0) { - log('could not find history data of ' + key); + logger.warn('could not find history data of ' + key); values.push('-'); continue; } let value = this.peers[idx].history[key][length - 1]; - if(key.indexOf('Memory') === 0 || key.indexOf('Traffic') === 0) { + if(key.indexOf('Memory') === 0 || key.indexOf('Traffic') === 0 || key.indexOf('Disc') === 0) { values.push(byteNormalize(value)); } else if(key.indexOf('CPU') === 0) { @@ -425,18 +432,18 @@ class Monitor { for(let i = 0 ; i < items.length ; i++) { let key = items[i]; if (!this.peers[idx].history.hasOwnProperty(key)) { - log('could not find history object named ' + key); + logger.warn('could not find history object named ' + key); values.push('-'); continue; } let length = this.peers[idx].history[key].length; if(length === 0) { - log('could not find history data of ' + key); + logger.warn('could not find history data of ' + key); values.push('-'); continue; } let stats = getStatistics(this.peers[idx].history[key]); - if(key.indexOf('Memory') === 0 || key.indexOf('Traffic') === 0) { + if(key.indexOf('Memory') === 0 || key.indexOf('Traffic') === 0 || key.indexOf('Disc') === 0) { values.push(byteNormalize(stats.max)); } else if(key.indexOf('CPU') === 0) { @@ -490,4 +497,4 @@ class Monitor { } } -module.exports = Monitor; \ No newline at end of file +module.exports = Monitor; diff --git a/src/comm/rate-control/compositeRate.js b/src/comm/rate-control/compositeRate.js index ae63145fa..86233987a 100644 --- a/src/comm/rate-control/compositeRate.js +++ b/src/comm/rate-control/compositeRate.js @@ -16,6 +16,7 @@ const RateInterface = require('./rateInterface.js'); const RateControl = require('./rateControl.js'); const Util = require('../util'); +const logger = Util.getLogger('compositeRate.js'); /** * Encapsulates a controller and its scheduling information. @@ -162,7 +163,7 @@ class CompositeRateController extends RateInterface{ active.firstTxIndex = idx; active.startTimeDifference = Date.now() - start; if (this.logControllerChange) { - Util.log(`[CompositeRateController] Switching controller in Client#${this.clientIdx} at Tx#${idx} after ${active.startTimeDifference}ms.`); + logger.debug(`[CompositeRateController] Switching controller in Client#${this.clientIdx} at Tx#${idx} after ${active.startTimeDifference}ms.`); } } @@ -185,7 +186,7 @@ class CompositeRateController extends RateInterface{ active.firstTxIndex = idx ; active.startTimeDifference = Date.now() - start; if (this.logControllerChange) { - Util.log(`[CompositeRateController] Switching controller in Client#${this.clientIdx} at Tx#${idx} after ${active.startTimeDifference}ms.`); + logger.debug(`[CompositeRateController] Switching controller in Client#${this.clientIdx} at Tx#${idx} after ${active.startTimeDifference}ms.`); } } @@ -243,17 +244,24 @@ class CompositeRateController extends RateInterface{ * and switching controller (if necessary). * @param {number} start The epoch time at the start of the round (ms precision). * @param {number} idx Sequence number of the current transaction. - * @param {object[]} currentResults The list of results of finished transactions. + * @param {object[]} recentResults The list of results of recent transactions. + * @param {Array} resultStats, result status set * @return {Promise} A promise that will resolve after the necessary time to keep the defined Tx rate. */ - async applyRateControl(start, idx, currentResults) { + async applyRateControl(start, idx, recentResults, resultStats) { await this.controllerSwitch(start, idx); const active = this.controllers[this.activeControllerIndex]; + // NOTE: since we don't know much about the transaction indices corresponding to + // the recent results (the list is emptied periodically), pass it as it is + + // if (idx - this.firstTxIndex + 1) >= recentResults.length ==> everything is transparent, the rate controller + // has been running long enough, so every recent result belongs to it + // otherwise ==> some results MUST belong to the previous controller, but we dont't know which result index + // corresponds to active.firstTxIndex, maybe none of them, because this phase hasn't produced results yet + // lie to the controller about the parameters to make this controller transparent - // NOTE: if the shallow copying of slice is too slow for higher TPS rates, - // consider making it configurable, maybe the underlying controllers do not need the results return active.controller.applyRateControl(start + active.startTimeDifference, idx - active.firstTxIndex, - currentResults.slice(active.firstTxIndex)); + recentResults, resultStats); } /** @@ -266,4 +274,4 @@ class CompositeRateController extends RateInterface{ } } -module.exports = CompositeRateController; \ No newline at end of file +module.exports = CompositeRateController; diff --git a/src/comm/rate-control/fixedFeedbackRate.js b/src/comm/rate-control/fixedFeedbackRate.js new file mode 100644 index 000000000..2c6e4c8ed --- /dev/null +++ b/src/comm/rate-control/fixedFeedbackRate.js @@ -0,0 +1,105 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const RateInterface = require('./rateInterface.js'); +const util = require('../util'); + +/** + * This controller will send transactions at a specified fixed interval, + * but when too many transactions are unfinished, it will sleep a period + * of time. + */ +class FixedFeedbackRateController extends RateInterface{ + /** + * Constructor + * @param {Object} blockchain the blockchain under test + * @param {JSON} opts the configuration options + */ + constructor(blockchain, opts) { + super(blockchain, opts); + } + + /** + * Initialise the rate controller with a passed msg object + * - Only require the desired TPS from the standard msg options + * @param {JSON} msg the initialisation message + */ + init(msg) { + const tps = this.options.tps; + const tpsPerClient = msg.totalClients ? (tps / msg.totalClients) : tps; + this.sleepTime = (tpsPerClient > 0) ? 1000/tpsPerClient : 0; + + this.sleep_time = this.options.sleep_time ? this.options.sleep_time : 100; + this.unfinished_per_client = this.options.unfinished_per_client ? this.options.unfinished_per_client : 7000; + this.zero_succ_count = 0; + + this.total_sleep_time = 0; + } + + /** + * Perform the rate control action based on knowledge of the start time, current index, and current results.Sleep a suitable time + * @param {number} start, generation time of the first test transaction + * @param {number} idx, sequence number of the current test transaction + * @param {Array} currentResults, current result set + * @param {Array} resultStats, result status set + * @return {promise} the return promise + */ + async applyRateControl(start, idx, currentResults, resultStats) { + if(this.sleepTime === 0 || idx < this.unfinished_per_client) { + return; + } + + let diff = (this.sleepTime * idx - ((Date.now() - this.total_sleep_time) - start)); + if( diff > 5) { + return await util.sleep(diff); + } + + if(resultStats.length === 0) { + return; + } + + let stats = resultStats[0]; + let unfinished = idx - (stats.succ + stats.fail); + + if(unfinished < this.unfinished_per_client / 2) { + return; + } + // Determines the sleep time for waiting until + // successful transactions occure. + if(resultStats.length > 1 && resultStats[1].succ === 0) { + this.zero_succ_count++; + for(let i = 30; i > 0; --i) { + if(this.zero_succ_count >= i) { + this.total_sleep_time += i * this.sleep_time; + return await util.sleep(i * this.sleep_time); + } + } + } + this.zero_succ_count = 0; + + // Determines the sleep time according to the current number of + // unfinished transactions with the configure one. + for(let i = 10; i > 0; --i) { + if(unfinished >= i * this.unfinished_per_client) { + this.total_sleep_time += i * this.sleep_time; + return await util.sleep(i * this.sleep_time); + } + } + return; + } +} + +module.exports = FixedFeedbackRateController; diff --git a/src/comm/rate-control/linearRate.js b/src/comm/rate-control/linearRate.js index a0704cbe3..411fa0c68 100644 --- a/src/comm/rate-control/linearRate.js +++ b/src/comm/rate-control/linearRate.js @@ -74,10 +74,10 @@ class LinearRateController extends RateInterface{ * Perform the rate control by sleeping through the round. * @param {number} start The epoch time at the start of the round (ms precision). * @param {number} idx Sequence number of the current transaction. - * @param {object[]} currentResults The list of results of finished transactions. + * @param {object[]} recentResults The list of results of recent transactions. * @return {Promise} A promise that will resolve after the necessary time to keep the defined Tx rate. */ - async applyRateControl(start, idx, currentResults) { + async applyRateControl(start, idx, recentResults) { let currentSleepTime = this._interpolate(start, idx); return currentSleepTime > 5 ? util.sleep(currentSleepTime) : Promise.resolve(); } diff --git a/src/comm/rate-control/noRate.js b/src/comm/rate-control/noRate.js index 4cf5431da..70ea32f88 100644 --- a/src/comm/rate-control/noRate.js +++ b/src/comm/rate-control/noRate.js @@ -68,10 +68,10 @@ class NoRateController extends RateInterface{ * Perform the rate control by sleeping through the round. * @param {number} start The epoch time at the start of the round (ms precision). * @param {number} idx Sequence number of the current transaction. - * @param {object[]} currentResults The list of results of finished transactions. + * @param {object[]} recentResults The list of results of recent transactions. * @return {Promise} A promise that will resolve after the necessary time to keep the defined Tx rate. */ - async applyRateControl(start, idx, currentResults) { + async applyRateControl(start, idx, recentResults) { return Util.sleep(this.sleepTime); } } diff --git a/src/comm/rate-control/pidRate.js b/src/comm/rate-control/pidRate.js index bf551d5e8..44ca5d68e 100644 --- a/src/comm/rate-control/pidRate.js +++ b/src/comm/rate-control/pidRate.js @@ -16,7 +16,7 @@ const RateInterface = require('./rateInterface.js'); const Sleep = require('../util').sleep; -const Log = require('../util').log; +const Logger = require('../util').getLogger('pidRate.js'); /** * Basic PID Controller for driving at a target loading (backlog transactions). This controller will aim to maintain a defined backlog @@ -65,20 +65,20 @@ class PidRate extends RateInterface { * - Sleep based on targetting a specific working load through a basic PID controller * @param {Number} start generation time of the first test transaction * @param {Number} idx sequence number of the current test transaction - * @param {Object[]} currentResults current result set + * @param {Object[]} unhandledResults current result set * @return {Promise} the return promise */ - applyRateControl(start, idx, currentResults) { + applyRateControl(start, idx, unhandledResults) { // We steer the load by increasing/decreasing the sleep time to adjust the TPS using a basic PID controller // We will only observe currentResults growth once the txn is complete and a result is available // -at this point the txn will either be in state success/fail // Update current transaction backlog error // error = what you want - what you have - let error = this.targetLoad - (idx - currentResults.length); + let error = this.targetLoad - unhandledResults.length; if (this.showVars) { - Log('Current load error: ', error); + Logger.debug('Current load error: ', error); } // Determine Controller Coeffients @@ -94,10 +94,10 @@ class PidRate extends RateInterface { this.sleep = this.sleep - (P + I + D); if (this.showVars) { - Log('Current P value: ', P); - Log('Current I value: ', I); - Log('Current D value: ', D); - Log('New sleep time: ', this.sleep); + Logger.debug('Current P value: ', P); + Logger.debug('Current I value: ', I); + Logger.debug('Current D value: ', D); + Logger.debug('New sleep time: ', this.sleep); } if (this.sleep > 5) { diff --git a/src/comm/rate-control/rateControl.js b/src/comm/rate-control/rateControl.js index cf82ac9ef..07e608cf3 100644 --- a/src/comm/rate-control/rateControl.js +++ b/src/comm/rate-control/rateControl.js @@ -14,6 +14,7 @@ 'use strict'; const Util = require('../util'); +let logger = Util.getLogger('rateControl.js'); let RateControl = class { @@ -23,7 +24,7 @@ let RateControl = class { * @param {Object} blockchain the blockcahin under test */ constructor(rateControl, blockchain) { - Util.log('*****', rateControl); + logger.debug('*****', rateControl); switch (rateControl.type) { case 'fixed-rate': { let interval = require('./fixedRate.js'); @@ -60,6 +61,11 @@ let RateControl = class { this.controller = new LinearRateController(blockchain, rateControl.opts); break; } + case 'fixed-feedback-rate': { + const FixedFeedbackRateController = require('./fixedFeedbackRate.js'); + this.controller = new FixedFeedbackRateController(blockchain, rateControl.opts); + break; + } default: throw new Error('Unknown rate control type ' + rateControl.type); } @@ -79,10 +85,11 @@ let RateControl = class { * @param {Number} start the start time * @param {Number} idx current transaction index * @param {Object[]} results current array of results + * @param {Array} resultStats, result status set * @return {Promise} the return promise */ - applyRateControl(start, idx, results) { - return this.controller.applyRateControl(start, idx, results); + applyRateControl(start, idx, results, resultStats) { + return this.controller.applyRateControl(start, idx, results, resultStats); } /** @@ -97,4 +104,4 @@ let RateControl = class { } }; -module.exports = RateControl; \ No newline at end of file +module.exports = RateControl; diff --git a/src/comm/rate-control/rateInterface.js b/src/comm/rate-control/rateInterface.js index 47bc6f0fb..c78920f86 100644 --- a/src/comm/rate-control/rateInterface.js +++ b/src/comm/rate-control/rateInterface.js @@ -42,10 +42,11 @@ class RateInterface { * @param {Number} start the start time * @param {Number} idx current transactino index * @param {Object[]} results current array of results + * @param {Array} resultStats, result status set */ - applyRateControl(start, idx, results) { + applyRateControl(start, idx, results, resultStats) { throw new Error('applyRateControl is not implemented for this blockchain system'); } } -module.exports = RateInterface; \ No newline at end of file +module.exports = RateInterface; diff --git a/src/comm/rate-control/recordRate.js b/src/comm/rate-control/recordRate.js index a0a7e6178..9df2fd07c 100644 --- a/src/comm/rate-control/recordRate.js +++ b/src/comm/rate-control/recordRate.js @@ -18,6 +18,7 @@ const RateInterface = require('./rateInterface.js'); const RateControl = require('./rateControl'); const fs = require('fs'); const util = require('../util'); +const logger = util.getLogger('recordRate.js'); const TEXT_FORMAT = 'TEXT'; const BINARY_BE_FORMAT = 'BIN_BE'; @@ -60,12 +61,12 @@ class RecordRateController extends RateInterface{ // check for supported output formats if (typeof opts.outputFormat === 'undefined') { - util.log(`[RecordRateController] Output format is undefined. Defaulting to ${TEXT_FORMAT} format`); + logger.warn(`[RecordRateController] Output format is undefined. Defaulting to ${TEXT_FORMAT} format`); this.outputFormat = TEXT_FORMAT; } else if (supportedFormats.includes(opts.outputFormat.toUpperCase())) { this.outputFormat = opts.outputFormat.toUpperCase(); } else { - util.log(`[RecordRateController] Output format ${opts.outputFormat} is not supported. Defaulting to CSV format`); + logger.warn(`[RecordRateController] Output format ${opts.outputFormat} is not supported. Defaulting to CSV format`); this.outputFormat = TEXT_FORMAT; } @@ -114,10 +115,11 @@ class RecordRateController extends RateInterface{ * Perform the rate control by sleeping through the round. * @param {number} start The epoch time at the start of the round (ms precision). * @param {number} idx Sequence number of the current transaction. - * @param {object[]} currentResults The list of results of finished transactions. + * @param {object[]} recentResults The list of results of recent transactions. + * @param {Array} resultStats, result status set */ - async applyRateControl(start, idx, currentResults) { - await this.rateController.applyRateControl(start, idx, currentResults); + async applyRateControl(start, idx, recentResults, resultStats) { + await this.rateController.applyRateControl(start, idx, recentResults, resultStats); this.records[idx] = Date.now() - start; } @@ -139,15 +141,15 @@ class RecordRateController extends RateInterface{ this.exportToBinaryBigEndian(); break; default: - util.log(`[RecordRateController] Output format ${this.outputFormat} is not supported.`); + logger.error(`[RecordRateController] Output format ${this.outputFormat} is not supported.`); break; } if (this.logEnd) { - util.log(`[RecordRateController] Recorded Tx submission times for Client#${this.clientIdx} in Round#${this.roundIdx} to ${this.pathTemplate}`); + logger.debug(`[RecordRateController] Recorded Tx submission times for Client#${this.clientIdx} in Round#${this.roundIdx} to ${this.pathTemplate}`); } } catch (err) { - util.log(`[RecordRateController] An error occured while writing records to ${this.pathTemplate}: ${err.stack ? err.stack : err}`); + logger.error(`[RecordRateController] An error occured while writing records to ${this.pathTemplate}: ${err.stack ? err.stack : err}`); } } @@ -194,4 +196,4 @@ class RecordRateController extends RateInterface{ } } -module.exports = RecordRateController; \ No newline at end of file +module.exports = RecordRateController; diff --git a/src/comm/rate-control/replayRate.js b/src/comm/rate-control/replayRate.js index f27994af3..6e688fc48 100644 --- a/src/comm/rate-control/replayRate.js +++ b/src/comm/rate-control/replayRate.js @@ -17,6 +17,7 @@ const RateInterface = require('./rateInterface.js'); const fs = require('fs'); const util = require('../util'); +const logger = util.getLogger('replayRate.js'); const TEXT_FORMAT = 'TEXT'; const BINARY_BE_FORMAT = 'BIN_BE'; @@ -58,12 +59,12 @@ class ReplayRateController extends RateInterface{ // check for supported input formats if (typeof opts.inputFormat === 'undefined') { - util.log(`[ReplayRateController] Input format is undefined. Defaulting to ${TEXT_FORMAT} format`); + logger.warn(`[ReplayRateController] Input format is undefined. Defaulting to ${TEXT_FORMAT} format`); this.inputFormat = TEXT_FORMAT; } else if (supportedFormats.includes(opts.inputFormat.toUpperCase())) { this.inputFormat = opts.inputFormat.toUpperCase(); } else { - util.log(`[ReplayRateController] Input format ${opts.inputFormat} is not supported. Defaulting to CSV format`); + logger.warn(`[ReplayRateController] Input format ${opts.inputFormat} is not supported. Defaulting to CSV format`); this.inputFormat = TEXT_FORMAT; } } @@ -119,16 +120,16 @@ class ReplayRateController extends RateInterface{ * Perform the rate control by sleeping through the round. * @param {number} start The epoch time at the start of the round (ms precision). * @param {number} idx Sequence number of the current transaction. - * @param {object[]} currentResults The list of results of finished transactions. + * @param {object[]} recentResults The list of results of recent transactions. * @return {Promise} The return promise. */ - async applyRateControl(start, idx, currentResults) { + async applyRateControl(start, idx, recentResults) { if (idx <= this.records.length - 1) { let sleepTime = this.records[idx] - (Date.now() - start); return sleepTime > 5 ? util.sleep(sleepTime) : Promise.resolve(); } else { if (this.logWarnings) { - util.log(`[ReplayRateController] Using default sleep time of ${this.defaultSleepTime}ms for Tx#${idx}`); + logger.warn(`[ReplayRateController] Using default sleep time of ${this.defaultSleepTime}ms for Tx#${idx}`); } return util.sleep(this.defaultSleepTime); } diff --git a/src/comm/util.js b/src/comm/util.js index 188ac2531..95e2b0c20 100644 --- a/src/comm/util.js +++ b/src/comm/util.js @@ -14,10 +14,100 @@ 'use strict'; const path = require('path'); - +const moment = require('moment'); +const winston = require('winston'); +require('winston-daily-rotate-file'); +const fs = require('fs'); +const cfUtil = require('../../src/comm/config-util.js'); // comm --> src --> root const rootDir = path.join('..', '..'); +const LOGGING_LEVELS = ['debug','info','warn','error']; + + +/** + * Save the logging configurations + * @param {object} logger cutomed winston logger + */ +function saveLogger(logger) { + if (global.caliperLog) { + global.caliperLog.logger = logger; + } else { + global.caliperLog = { + logger: logger + }; + } +} + +/** + * define a log format + * @param {object} options winston's options for log definition + * @returns {string} a formatted string +*/ +function logFormat(options){ + return options.timestamp() + ' - ' + + options.level.toUpperCase() + + ' ' +(options.message ? options.message : '') + + (options.meta && Object.keys(options.meta).length ? '\n\t' + JSON.stringify(options.meta) : ' ') + + '\r\n'; +} + +/** + * If there is no logging configurations, create a new logger, + * it will generater 3 files named 'info.log', 'error.log','warn.log'. + * The debug information is not saved to a file, it will just show to console. + * @return {object} the new winston logger + */ +function newDefaultLogger() { + let filePath = path.join(__dirname, rootDir, 'log/caliper.log'); + let dirName = path.dirname(filePath); + if(!fs.existsSync(dirName)){ + fs.mkdirSync(dirName); + } + let transports =[ + new (winston.transports.Console)({ + level: 'info', + colorize: true + }), + new (winston.transports.DailyRotateFile)({ + timestamp: function (){return moment().format();}, + name: 'caliper-log', + level: 'debug', + filename: filePath, + colorize: true, + json: false, + datePattern: 'YYYY-MM-DD', + maxSize: '5m', + handleExceptions: true, + formatter: logFormat + }) + ]; + return new winston.Logger({ + transports: transports + }); +} + +/** + * According to the logger's name, insert a new log + * @param {object} originalLogger original winston logger + * @param {string} lname logger's name + * @return {object} the logger after inserting a new line + */ +function insertLoggerName(originalLogger, lname) { + const logger = Object.assign({}, originalLogger); + ['debug', 'info', 'warn', 'error'].forEach((method) => { + const func = originalLogger[method]; + logger[method] = (function (context, loggerName, f) { + return function () { + if (arguments.length > 0) { + arguments[0] = '[' + loggerName + ']: ' + arguments[0]; + } + f.apply(context, arguments); + }; + })(originalLogger, lname, func); + }); + return logger; +} /** * Internal Utility class for Caliper @@ -42,6 +132,93 @@ class Util { console.log(...msg); } + /** + * unified logging framework to output to the console and files + * @param {String} name logger's name + * @returns {logger} logger the winston's logger + */ + static getLogger(name) { + + if (global.caliperLog && global.caliperLog.logger) { + return insertLoggerName(global.caliperLog.logger, name); + } + + //see if the config has it set + let config_log_setting = undefined; + config_log_setting = cfUtil.getConfigSetting('core:log-file',undefined); + + let options = {}; + if (config_log_setting) { + try { + let config = null; + if (typeof config_log_setting === 'string') { + config = JSON.parse(config_log_setting); + } + else { + config = config_log_setting; + } + if (typeof config !== 'object') { + throw new Error('logging variable "log-file" must be an object conforming to the format documented.'); + } else { + for (const level in config) { + if (!config.hasOwnProperty(level)) { + continue; + } + + if (LOGGING_LEVELS.indexOf(level) >= 0) { + if (!options.transports) { + options.transports = []; + } + + if (config[level] === 'console') { + options.transports.push(new (winston.transports.Console)({ + name: level + 'console', + level: level, + colorize: true + })); + } else { + let filePath = this.resolvePath(config[level]); + let dirName = path.dirname(filePath); + if(!fs.existsSync(dirName)){ + fs.mkdirSync(dirName); + } + options.transports.push(new (winston.transports.DailyRotateFile)({ + name: level + 'file', + level: level, + filename: filePath, + datePattern: 'YYYY-MM-DD', + colorize: true, + timestamp: function (){return moment().format();}, + json: false, + maxSize: '5m', + handleExceptions: true, + formatter: logFormat + })); + } + } + } + } + + let logger = new winston.Logger(options); + logger.debug('Successfully constructed a winston logger with configurations', config); + saveLogger(logger); + return insertLoggerName(logger, name); + } catch (err) { + // the user's configuration from environment variable failed to parse. + // construct the default logger, log a warning and return it + let logger = newDefaultLogger(); + saveLogger(logger); + logger.log('warn', 'Failed to parse logging variable "log-file". Returned a winston logger with default configurations. Error: %s', err.stack ? err.stack : err); + return insertLoggerName(logger, name); + } + } + + let logger = newDefaultLogger(); + saveLogger(logger); + logger.debug('Returning a new winston logger with default configurations: ' + name); + return insertLoggerName(logger, name); + } + /** * Creates an absolute path from the provided relative path if necessary. * @param {String} relOrAbsPath The relative or absolute path to convert to an absolute path. @@ -61,4 +238,4 @@ class Util { } } -module.exports = Util; \ No newline at end of file +module.exports = Util; diff --git a/src/composer/composer.js b/src/composer/composer.js index 4259270e8..d45ae422a 100755 --- a/src/composer/composer.js +++ b/src/composer/composer.js @@ -19,6 +19,7 @@ // Caliper requires const BlockchainInterface = require('../comm/blockchain-interface.js'); const Util = require('../comm/util'); +const logger = Util.getLogger('composer.js'); const TxStatus = require('../comm/transaction'); // Composer helpers @@ -42,7 +43,7 @@ class Composer extends BlockchainInterface { * @returns {Promise} a completed Promise */ init() { - Util.log('Initializing target platform configuration'); + logger.info('Initializing target platform configuration'); // initialise the target blockchain, create cards let config = require(this.configPath); return this.initialiseFabric(config) @@ -51,7 +52,7 @@ class Composer extends BlockchainInterface { return composer_utils.createAdminBusNetCards(config); }) .catch((err) => { - Util.log('composer.init() failed, ', err); + logger.error('composer.init() failed, ', err); return Promise.reject(err); }); } @@ -70,7 +71,7 @@ class Composer extends BlockchainInterface { return new Promise(resolve => setTimeout(resolve, 2000)); }) .catch((err) => { - Util.log('composer.init() failed at initialiseFabric(), ', err); + logger.error('composer.init() failed at initialiseFabric(), ', err); return Promise.reject(err); }); } @@ -80,7 +81,7 @@ class Composer extends BlockchainInterface { * @returns {Promise} a completed Promise */ installSmartContract() { - Util.log('Deploying Composer'); + logger.info('Deploying Composer'); // Here, this relates to deploying a Composer BusinessNetwork to the Blockchain platform // - runtime install on each participating org // - start from any participating org @@ -112,10 +113,10 @@ class Composer extends BlockchainInterface { }, Promise.resolve()); }) .then(() => { - Util.log('Composer deployment complete'); + logger.info('Composer deployment complete'); }) .catch((err) => { - Util.log('composer.installSmartContract() failed, ', err); + logger.error('composer.installSmartContract() failed, ', err); return Promise.reject(err); }); } @@ -126,7 +127,7 @@ class Composer extends BlockchainInterface { * @returns {BusinessNetworkConnection} an admin connection to the named business network */ getContext(name) { - Util.log('getting context for: ', name); + logger.info('getting context for: ', name); // Return business network connection return composer_utils.getBusNetConnection('PerfNetworkAdmin@' + name); } diff --git a/src/composer/composer_utils.js b/src/composer/composer_utils.js index 416aca135..457299a69 100755 --- a/src/composer/composer_utils.js +++ b/src/composer/composer_utils.js @@ -20,7 +20,7 @@ const BusinessNetworkConnection = require('composer-client').BusinessNetworkConn const IdCard = require('composer-common').IdCard; const Util = require('../comm/util'); - +const logger = Util.getLogger('composer_utils.js'); const fs = require('fs'); const path = require('path'); const childProcess = require('child_process'); @@ -373,7 +373,7 @@ async function runtimeInstall(businessNetwork, installOptions, cardName) { await adminConnection.install(businessNetworkDefinition, installOptions); spinner.succeed(); } catch (error){ - Util.log('Composer runtime install failed, ' + (error.stack ? error.stack : error)); + logger.error('Composer runtime install failed, ' + (error.stack ? error.stack : error)); spinner.fail(); throw new Error(error); } @@ -390,7 +390,7 @@ async function getBusNetConnection(cardName) { await busNetConnection.connect(cardName); return busNetConnection; } catch (error){ - Util.log('composer.getBusNetConnection() failed for cardName [' + cardName + '] with error: ' + (error.stack ? error.stack : error)); + logger.error('composer.getBusNetConnection() failed for cardName [' + cardName + '] with error: ' + (error.stack ? error.stack : error)); throw new Error(error); } } @@ -467,7 +467,7 @@ async function networkStart(businessNetwork, cardName, logLevel) { * @return {Strinrg[]} Array of all valid business network card names */ async function getCardNamesForBusNet(busNet) { - Util.log('getCardsForBusNet()', busNet); + logger.info('getCardsForBusNet()', busNet); const adminConnection = new AdminConnection(); let busNetCards = []; @@ -518,11 +518,11 @@ async function obtainConnectionForParticipant(adminBusNetConnection, businessNet let exists = await adminConnection.hasCard(cardName); if (exists) { - Util.log('Replacing existing business network user card: ', cardName); + logger.info('Replacing existing business network user card: ', cardName); await adminConnection.deleteCard(cardName); await adminConnection.importCard(cardName, card); } else { - Util.log('Importing card business network user card: ', cardName); + logger.info('Importing card business network user card: ', cardName); await adminConnection.importCard(cardName, card); } diff --git a/src/contract/iroha/simple/factory.js b/src/contract/iroha/simple/factory.js index 05673f271..749f4b24f 100644 --- a/src/contract/iroha/simple/factory.js +++ b/src/contract/iroha/simple/factory.js @@ -10,6 +10,7 @@ 'use strict'; const util = require('../../../comm/util.js'); +const logger = util.getLogger('factory.js'); const irohaType = require('../../../iroha/type.js'); const open = function(context, domain, money) { @@ -50,7 +51,7 @@ const simple = function(version, context, args) { } } catch(err){ - util.log(err); + logger.error(err); return []; } }; diff --git a/src/fabric/create-channel.js b/src/fabric/create-channel.js index 34a10a916..f2dff1ce1 100644 --- a/src/fabric/create-channel.js +++ b/src/fabric/create-channel.js @@ -23,143 +23,118 @@ if (global && global.hfc) { require('nconf').reset(); const utils = require('fabric-client/lib/utils.js'); -//const logger = utils.getLogger('E2E create-channel'); - -//const tape = require('tape'); -//const _test = require('tape-promise'); -//const test = _test(tape); - const Client = require('fabric-client'); -//const util = require('util'); const fs = require('fs'); -//const grpc = require('grpc'); const testUtil = require('./util.js'); const commUtils = require('../comm/util'); +const commLogger = commUtils.getLogger('create-channel.js'); /** * Create the channels located in the given configuration file. * @param {string} config_path The path to the Fabric network configuration file. - * @return {Promise} The return promise. + * @async */ -function run(config_path) { +async function run(config_path) { Client.addConfigFile(config_path); const fabric = Client.getConfigSetting('fabric'); const channels = fabric.channel; if(!channels || channels.length === 0) { - return Promise.reject(new Error('No channel information found')); + throw new Error('No channel information found'); } - return new Promise(function(resolve, reject) { - const t = global.tapeObj; - let ORGS = fabric.network; - let caRootsPath = ORGS.orderer.tls_cacerts; - let data = fs.readFileSync(commUtils.resolvePath(caRootsPath)); - let caroots = Buffer.from(data).toString(); - utils.setConfigSetting('key-value-store', 'fabric-client/lib/impl/FileKeyValueStore.js'); - - return channels.reduce((prev, channel)=>{ - return prev.then(()=>{ - if(channel.deployed) { - return Promise.resolve(); - } - t.comment('create ' + channel.name + '......'); - - // Acting as a client in first org when creating the channel - let client = new Client(); - let org = channel.organizations[0]; - let orderer = client.newOrderer( - ORGS.orderer.url, - { - 'pem': caroots, - 'ssl-target-name-override': ORGS.orderer['server-hostname'] - } - ); - - let config = null; - let signatures = []; - - return Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(org)}) - .then((store) => { - client.setStateStore(store); - let cryptoSuite = Client.newCryptoSuite(); - cryptoSuite.setCryptoKeyStore(Client.newCryptoKeyStore({path: testUtil.storePathForOrg(org)})); - client.setCryptoSuite(cryptoSuite); - return testUtil.getOrderAdminSubmitter(client); - }) - .then((admin) =>{ - // use the config update created by the configtx tool - let envelope_bytes = fs.readFileSync(commUtils.resolvePath(channel.config)); - config = client.extractChannelConfig(envelope_bytes); - - // TODO: read from channel config instead of binary tx file - - // sign the config for each org - return channel.organizations.reduce(function(prev, item){ - return prev.then(() => { - client._userContext = null; - return testUtil.getSubmitter(client, true, item).then((orgAdmin) =>{ - // sign the config - let signature = client.signChannelConfig(config); - // TODO: signature counting against policies on the orderer - // at the moment is being investigated, but it requires this - // weird double-signature from each org admin - signatures.push(signature); - signatures.push(signature); - return Promise.resolve(); - }); - }); - }, Promise.resolve()) - .then(()=>{ - client._userContext = null; - return testUtil.getOrderAdminSubmitter(client); - }) - .then((orderAdmin) => { - // sign the config - let signature = client.signChannelConfig(config); - // collect signature from orderer admin - // TODO: signature counting against policies on the orderer - // at the moment is being investigated, but it requires this - // weird double-signature from each org admin - signatures.push(signature); - signatures.push(signature); - // build up the create request - let tx_id = client.newTransactionID(); - let request = { - config: config, - signatures : signatures, - name : channel.name, - orderer : orderer, - txId : tx_id - }; - - // send create request to orderer - return client.createChannel(request); - }) - .then((result) => { - if(result.status && result.status === 'SUCCESS') { - t.pass('created ' + channel.name + ' successfully'); - return Promise.resolve(); - } - else { - throw new Error('create status is ' + result.status); - } - }); - }); - }); - }, Promise.resolve()) - .then(()=>{ - t.comment('Sleep 5s......'); - return commUtils.sleep(5000); - }) - .then(() => { - return resolve(); - }) - .catch((err) => { - t.fail('Failed to create channels ' + (err.stack?err.stack:err)); - return reject(new Error('Fabric: Create channel failed')); - }); - }); + let ORGS = fabric.network; + let caRootsPath = ORGS.orderer.tls_cacerts; + let data = fs.readFileSync(commUtils.resolvePath(caRootsPath)); + let caroots = Buffer.from(data).toString(); + utils.setConfigSetting('key-value-store', 'fabric-client/lib/impl/FileKeyValueStore.js'); + + try { + for (let channel of channels) { + if(channel.deployed) { + continue; + } + + commLogger.info(`Creating ${channel.name}...`); + + // Acting as a client in first org when creating the channel + let client = new Client(); + let org = channel.organizations[0]; + let orderer = client.newOrderer( + ORGS.orderer.url, + { + 'pem': caroots, + 'ssl-target-name-override': ORGS.orderer['server-hostname'] + } + ); + + let config = null; + let signatures = []; + + let store = await Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(org)}); + client.setStateStore(store); + let cryptoSuite = Client.newCryptoSuite(); + cryptoSuite.setCryptoKeyStore(Client.newCryptoKeyStore({path: testUtil.storePathForOrg(org)})); + client.setCryptoSuite(cryptoSuite); + + await testUtil.getOrderAdminSubmitter(client); + + // use the config update created by the configtx tool + let envelope_bytes = fs.readFileSync(commUtils.resolvePath(channel.config)); + config = client.extractChannelConfig(envelope_bytes); + + // TODO: read from channel config instead of binary tx file + + // sign the config for each org + for (let organization of channel.organizations) { + client._userContext = null; + await testUtil.getSubmitter(client, true, organization); + // sign the config + let signature = client.signChannelConfig(config); + // TODO: signature counting against policies on the orderer + // at the moment is being investigated, but it requires this + // weird double-signature from each org admin + signatures.push(signature); + signatures.push(signature); + } + + client._userContext = null; + await testUtil.getOrderAdminSubmitter(client); + + // sign the config + let signature = client.signChannelConfig(config); + // collect signature from orderer admin + // TODO: signature counting against policies on the orderer + // at the moment is being investigated, but it requires this + // weird double-signature from each org admin + signatures.push(signature); + signatures.push(signature); + // build up the create request + let tx_id = client.newTransactionID(); + let request = { + config: config, + signatures : signatures, + name : channel.name, + orderer : orderer, + txId : tx_id + }; + + // send create request to orderer + let result = await client.createChannel(request); + if(result.status && result.status === 'SUCCESS') { + commLogger.info(`Created ${channel.name} successfully`); + } + else { + throw new Error(`Create status for ${channel.name} is ${result.status}`); + } + } + + commLogger.info('Sleeping 5s...'); + await commUtils.sleep(5000); + } catch (err) { + commLogger.error(`Failed to create channels: ${(err.stack ? err.stack : err)}`); + throw err; + } } module.exports.run = run; diff --git a/src/fabric/e2eUtils.js b/src/fabric/e2eUtils.js index 5238ade1b..40fa9c6d8 100644 --- a/src/fabric/e2eUtils.js +++ b/src/fabric/e2eUtils.js @@ -18,14 +18,12 @@ 'use strict'; -const utils = require('fabric-client/lib/utils.js'); -const logger = utils.getLogger('E2E testing'); const commUtils = require('../comm/util'); +const commLogger = commUtils.getLogger('e2eUtils.js'); const TxStatus = require('../comm/transaction'); const path = require('path'); const fs = require('fs'); -const util = require('util'); const Client = require('fabric-client'); const testUtil = require('./util.js'); @@ -49,9 +47,9 @@ module.exports.init = init; * Deploy the given chaincode to the given organization's peers. * @param {string} org The name of the organization. * @param {object} chaincode The chaincode object from the configuration file. - * @return {Promise} The return promise. + * @async */ -function installChaincode(org, chaincode) { +async function installChaincode(org, chaincode) { Client.setConfigSetting('request-timeout', 60000); const channel_name = chaincode.channel; @@ -96,60 +94,70 @@ function installChaincode(org, chaincode) { } } - return Client.newDefaultKeyValueStore({ - path: testUtil.storePathForOrg(orgName) - }).then((store) => { - client.setStateStore(store); + let store = await Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(orgName)}); + client.setStateStore(store); + + // get the peer org's admin required to send install chaincode requests + the_user = await testUtil.getSubmitter(client, true /* get peer org admin */, org); + + //let peers = client.getPeersForOrg(ORGS[org].mspid); + let peers = channel.getPeers(); + let res = await client.queryInstalledChaincodes(peers[0]); + let found = false; + for (let i = 0; i < res.chaincodes.length; i++) { + if (res.chaincodes[i].name === chaincode.id && + res.chaincodes[i].version === chaincode.version && + res.chaincodes[i].path === chaincode.path) { + found = true; + commLogger.debug('installedChaincode: ' + JSON.stringify(res.chaincodes[i])); + break; + } + } + if (found) { + return; + } - // get the peer org's admin required to send install chaincode requests - return testUtil.getSubmitter(client, true /* get peer org admin */, org); - }).then((admin) => { - the_user = admin; + let resolvedPath = chaincode.path; + let metadataPath = chaincode.metadataPath ? commUtils.resolvePath(chaincode.metadataPath) : chaincode.metadataPath; + if (chaincode.language === 'node') { + resolvedPath = commUtils.resolvePath(chaincode.path); + } - let resolvedPath = chaincode.path; - let metadataPath = chaincode.metadataPath ? commUtils.resolvePath(chaincode.metadataPath) : chaincode.metadataPath; - if (chaincode.language === 'node') { - resolvedPath = commUtils.resolvePath(chaincode.path); - } + // send proposal to endorser + const request = { + targets: targets, + chaincodePath: resolvedPath, + metadataPath: metadataPath, + chaincodeId: chaincode.id, + chaincodeType: chaincode.language, + chaincodeVersion: chaincode.version + }; - // send proposal to endorser - const request = { - targets: targets, - chaincodePath: resolvedPath, - metadataPath: metadataPath, - chaincodeId: chaincode.id, - chaincodeType: chaincode.language, - chaincodeVersion: chaincode.version - }; - return client.installChaincode(request); - }, - (err) => { - throw new Error('Failed to enroll user \'admin\'. ' + err); - }).then((results) => { - const proposalResponses = results[0]; + let results = await client.installChaincode(request); + const proposalResponses = results[0]; - let all_good = true; - const errors = []; - for(let i in proposalResponses) { - let one_good = false; - if (proposalResponses && proposalResponses[i].response && proposalResponses[i].response.status === 200) { + let all_good = true; + let errors = []; + for(let i in proposalResponses) { + let one_good = false; + //commLogger.info('installChaincode responses: i=' + i + ' ' + JSON.stringify(proposalResponses[i])); + if (proposalResponses && proposalResponses[i].response && proposalResponses[i].response.status === 200) { + one_good = true; + /*} else if (proposalResponses && proposalResponses[i] && proposalResponses[i].code === 2){ + + if (proposalResponses[i].details && proposalResponses[i].details.indexOf('exists') !== -1) { one_good = true; - } else { - logger.error('install proposal was bad'); - errors.push(proposalResponses[i]); } - all_good = all_good && one_good; - } - if (!all_good) { - throw new Error(util.format('Failed to send install Proposal or receive valid response: %s', errors)); + */ + } else { + commLogger.error('install proposal was bad'); + errors.push(proposalResponses[i]); } - }, - (err) => { - throw new Error('Failed to send install proposal due to error: ' + (err.stack ? err.stack : err)); - }) - .catch((err) => { - return Promise.reject(err); - }); + all_good = all_good && one_good; + } + if (!all_good) { + throw new Error(`Failed to send install Proposal or receive valid response: ${errors}`); + } } module.exports.installChaincode = installChaincode; @@ -205,14 +213,14 @@ function buildChaincodeProposal(client, the_user, chaincode, upgrade, transientM * @param {object} chaincode The chaincode object from the configuration file. * @param {object} endorsement_policy The endorsement policy object from the configuration file. * @param {boolean} upgrade Indicates whether the call is an upgrade or a new instantiation. - * @return {Promise} The return promise. + * @async */ -function instantiateChaincode(chaincode, endorsement_policy, upgrade){ +async function instantiateChaincode(chaincode, endorsement_policy, upgrade){ Client.setConfigSetting('request-timeout', 120000); let channel = testUtil.getChannel(chaincode.channel); if(channel === null) { - return Promise.reject(new Error('could not find channel in config')); + throw new Error('Could not find channel in config'); } const channel_name = channel.name; const userOrg = channel.organizations[0]; @@ -246,152 +254,155 @@ function instantiateChaincode(chaincode, endorsement_policy, upgrade){ targets = []; const transientMap = {'test': 'transientValue'}; - return Client.newDefaultKeyValueStore({ - path: testUtil.storePathForOrg(orgName) - }).then((store) => { + let store = await Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(orgName)}); + client.setStateStore(store); - client.setStateStore(store); - return testUtil.getSubmitter(client, true /* use peer org admin*/, userOrg); - - }).then((admin) => { - the_user = admin; - - let eventPeer = null; - for(let org in ORGS) { - if(ORGS.hasOwnProperty(org) && org.indexOf('org') === 0) { - for (let key in ORGS[org]) { - if(ORGS[org].hasOwnProperty(key) && key.indexOf('peer') === 0) { - let data = fs.readFileSync(commUtils.resolvePath(ORGS[org][key].tls_cacerts)); - let peer = client.newPeer( - ORGS[org][key].requests, - { - pem: Buffer.from(data).toString(), - 'ssl-target-name-override': ORGS[org][key]['server-hostname'] - }); - targets.push(peer); - channel.addPeer(peer); - if(org === userOrg && !eventPeer) { - eventPeer = key; - } + the_user = await testUtil.getSubmitter(client, true /* use peer org admin*/, userOrg); + + let eventPeer = null; + for(let org in ORGS) { + if(ORGS.hasOwnProperty(org) && org.indexOf('org') === 0) { + for (let key in ORGS[org]) { + if(ORGS[org].hasOwnProperty(key) && key.indexOf('peer') === 0) { + let data = fs.readFileSync(commUtils.resolvePath(ORGS[org][key].tls_cacerts)); + let peer = client.newPeer( + ORGS[org][key].requests, + { + pem: Buffer.from(data).toString(), + 'ssl-target-name-override': ORGS[org][key]['server-hostname'] + }); + targets.push(peer); + channel.addPeer(peer); + if(org === userOrg && !eventPeer) { + eventPeer = key; } } } } + } - // an event listener can only register with a peer in its own org - let data = fs.readFileSync(commUtils.resolvePath(ORGS[userOrg][eventPeer].tls_cacerts)); - let eh = client.newEventHub(); - eh.setPeerAddr( - ORGS[userOrg][eventPeer].events, - { - pem: Buffer.from(data).toString(), - 'ssl-target-name-override': ORGS[userOrg][eventPeer]['server-hostname'] - } - ); - eh.connect(); - eventhubs.push(eh); + // an event listener can only register with a peer in its own org + data = fs.readFileSync(commUtils.resolvePath(ORGS[userOrg][eventPeer].tls_cacerts)); + let eh = client.newEventHub(); + eh.setPeerAddr( + ORGS[userOrg][eventPeer].events, + { + pem: Buffer.from(data).toString(), + 'ssl-target-name-override': ORGS[userOrg][eventPeer]['server-hostname'] + } + ); + eh.connect(); + eventhubs.push(eh); + try { // read the config block from the orderer for the channel // and initialize the verify MSPs based on the participating // organizations - return channel.initialize(); - }, (err) => { - throw new Error('Failed to enroll user \'admin\'. ' + err); - - }).then(() => { + await channel.initialize(); + + + let res = await channel.queryInstantiatedChaincodes(); + let found = false; + for (let i = 0; i < res.chaincodes.length; i++) { + if (res.chaincodes[i].name === chaincode.id && + res.chaincodes[i].version === chaincode.version && + res.chaincodes[i].path === chaincode.path) { + found = true; + commLogger.debug('instantiatedChaincode: ' + JSON.stringify(res.chaincodes[i])); + break; + } + } + if (found) { + return; + } + let results; // the v1 chaincode has Init() method that expects a transient map if (upgrade) { let request = buildChaincodeProposal(client, the_user, chaincode, upgrade, transientMap, endorsement_policy); tx_id = request.txId; - return channel.sendUpgradeProposal(request); + results = await channel.sendUpgradeProposal(request); } else { let request = buildChaincodeProposal(client, the_user, chaincode, upgrade, transientMap, endorsement_policy); tx_id = request.txId; - return channel.sendInstantiateProposal(request); + results = await channel.sendInstantiateProposal(request); } - }, (err) => { - throw new Error('Failed to initialize the channel'+ (err.stack ? err.stack : err)); - }).then((results) => { - const proposalResponses = results[0]; const proposal = results[1]; let all_good = true; + let instantiated = false; for(let i in proposalResponses) { + //commLogger.info('instantiateChaincode responses: i=' + i + ' ' + JSON.stringify(proposalResponses[i])); let one_good = false; if (proposalResponses[i].response && proposalResponses[i].response.status === 200) { one_good = true; + /*} else if (proposalResponses && proposalResponses[i] && proposalResponses[i].code === 2){ + if (proposalResponses[i].details && proposalResponses[i].details.indexOf('exists') !== -1) { + one_good = true; + instantiated = true; + }*/ + } all_good = all_good && one_good; } - if (all_good) { - const request = { - proposalResponses: proposalResponses, - proposal: proposal, - }; - - // set the transaction listener and set a timeout of 5 mins - // if the transaction did not get committed within the timeout period, - // fail the test - const deployId = tx_id.getTransactionID(); - - const eventPromises = []; - eventhubs.forEach((eh) => { - let txPromise = new Promise((resolve, reject) => { - let handle = setTimeout(reject, 300000); - - eh.registerTxEvent(deployId.toString(), (tx, code) => { - clearTimeout(handle); - eh.unregisterTxEvent(deployId); - if (code !== 'VALID') { - commUtils.log('The chaincode ' + type + ' transaction was invalid, code = ' + code); - reject(); - } else { - commUtils.log('The chaincode ' + type + ' transaction was valid.'); - resolve(); - } - }); - }); - eventPromises.push(txPromise); - }); + if (!all_good) { + throw new Error('Failed to send ' + type + ' Proposal or receive valid response. Response null or status is not 200.'); + }else if (instantiated) { + return; + } - const sendPromise = channel.sendTransaction(request); - return Promise.all([sendPromise].concat(eventPromises)) - .then((results) => { - return results[0]; // just first results are from orderer, the rest are from the peer events + const request = { + proposalResponses: proposalResponses, + proposal: proposal, + }; + + // set the transaction listener and set a timeout of 5 mins + // if the transaction did not get committed within the timeout period, + // fail the test + const deployId = tx_id.getTransactionID(); - }).catch((err) => { - throw new Error('Failed to send ' + type + ' transaction and get notifications within the timeout period.'); + const eventPromises = []; + eventhubs.forEach((eh) => { + let txPromise = new Promise((resolve, reject) => { + let handle = setTimeout(reject, 300000); + + eh.registerTxEvent(deployId.toString(), (tx, code) => { + clearTimeout(handle); + eh.unregisterTxEvent(deployId); + + if (code !== 'VALID') { + commLogger.warn('The chaincode ' + type + ' transaction was invalid, code = ' + code); + reject(); + } else { + commLogger.info('The chaincode ' + type + ' transaction was valid.'); + resolve(); + } }); + }); + eventPromises.push(txPromise); + }); - } else { - throw new Error('Failed to send ' + type + ' Proposal or receive valid response. Response null or status is not 200. exiting...'); + let response; + try { + const sendPromise = channel.sendTransaction(request); + results = await Promise.all([sendPromise].concat(eventPromises)); + response = results[0]; // just first results are from orderer, the rest are from the peer events + } catch (err) { + commLogger.error('Failed to send ' + type + ' transaction and get notifications within the timeout period.'); + throw err; } - }, (err) => { - throw new Error('Failed to send ' + type + ' proposal due to error: ' + (err.stack ? err.stack : err)); - }).then((response) => { //TODO should look into the event responses - if (!(response instanceof Error) && response.status === 'SUCCESS') { - return Promise.resolve(); - } else { + if ((response instanceof Error) || response.status !== 'SUCCESS') { throw new Error('Failed to order the ' + type + 'transaction. Error code: ' + response.status); } - }, (err) => { - throw new Error('Failed to send instantiate due to error: ' + (err.stack ? err.stack : err)); - }) - .then(()=>{ - disconnect(eventhubs); - return Promise.resolve(); - }) - .catch((err) => { - disconnect(eventhubs); - return Promise.reject(err); - }); + } finally { + disconnect(eventhubs); + } } module.exports.instantiateChaincode = instantiateChaincode; @@ -419,8 +430,9 @@ function getOrgPeers(orgName) { * Create a Fabric context based on the channel configuration. * @param {object} channelConfig The channel object from the configuration file. * @return {Promise} The created Fabric context. + * @async */ -function getcontext(channelConfig) { +async function getcontext(channelConfig) { Client.setConfigSetting('request-timeout', 120000); const channel_name = channelConfig.name; // var userOrg = channelConfig.organizations[0]; @@ -451,81 +463,75 @@ function getcontext(channelConfig) { ); orgName = ORGS[userOrg].name; - return Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(orgName)}) - .then((store) => { - if (store) { - client.setStateStore(store); - } - return testUtil.getSubmitter(client, true, userOrg); - }).then((admin) => { - the_user = admin; - - // set up the channel to use each org's random peer for - // both requests and events - for(let i in channelConfig.organizations) { - let org = channelConfig.organizations[i]; - let peers = getOrgPeers(org); - - if(peers.length === 0) { - throw new Error('could not find peer of ' + org); - } + let store = await Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(orgName)}); + if (store) { + client.setStateStore(store); + } - let peerInfo = peers[Math.floor(Math.random() * peers.length)]; - let data = fs.readFileSync(commUtils.resolvePath(peerInfo.tls_cacerts)); - let peer = client.newPeer( - peerInfo.requests, - { - pem: Buffer.from(data).toString(), - 'ssl-target-name-override': peerInfo['server-hostname'] - } - ); - channel.addPeer(peer); + the_user = await testUtil.getSubmitter(client, true, userOrg); - // an event listener can only register with the peer in its own org - if(org === userOrg) { - let eh = client.newEventHub(); - eh.setPeerAddr( - peerInfo.events, - { - pem: Buffer.from(data).toString(), - 'ssl-target-name-override': peerInfo['server-hostname'], - //'request-timeout': 120000 - 'grpc.keepalive_timeout_ms' : 3000, // time to respond to the ping, 3 seconds - 'grpc.keepalive_time_ms' : 360000 // time to wait for ping response, 6 minutes - // 'grpc.http2.keepalive_time' : 15 - } - ); - eventhubs.push(eh); - } + // set up the channel to use each org's random peer for + // both requests and events + for(let i in channelConfig.organizations) { + let org = channelConfig.organizations[i]; + let peers = getOrgPeers(org); + + if(peers.length === 0) { + throw new Error('could not find peer of ' + org); + } + + let peerInfo = peers[Math.floor(Math.random() * peers.length)]; + let data = fs.readFileSync(commUtils.resolvePath(peerInfo.tls_cacerts)); + let peer = client.newPeer( + peerInfo.requests, + { + pem: Buffer.from(data).toString(), + 'ssl-target-name-override': peerInfo['server-hostname'] } + ); + channel.addPeer(peer); + + // an event listener can only register with the peer in its own org + if(org === userOrg) { + let eh = client.newEventHub(); + eh.setPeerAddr( + peerInfo.events, + { + pem: Buffer.from(data).toString(), + 'ssl-target-name-override': peerInfo['server-hostname'], + //'request-timeout': 120000 + 'grpc.keepalive_timeout_ms' : 3000, // time to respond to the ping, 3 seconds + 'grpc.keepalive_time_ms' : 360000 // time to wait for ping response, 6 minutes + // 'grpc.http2.keepalive_time' : 15 + } + ); + eventhubs.push(eh); + } + } - // register event listener - eventhubs.forEach((eh) => { - eh.connect(); - }); + // register event listener + eventhubs.forEach((eh) => { + eh.connect(); + }); - return channel.initialize(); - }) - .then((nothing) => { - return Promise.resolve({ - org: userOrg, - client: client, - channel: channel, - submitter: the_user, - eventhubs: eventhubs}); - }) - .catch((err) => { - return Promise.reject(err); - }); + await channel.initialize(); + + return { + org: userOrg, + client: client, + channel: channel, + submitter: the_user, + eventhubs: eventhubs + }; } module.exports.getcontext = getcontext; /** * Disconnect the event hubs. * @param {object} context The Fabric context. - * @return {Promise} The return promise. + * @async */ -function releasecontext(context) { +async function releasecontext(context) { if(context.hasOwnProperty('eventhubs')){ for(let key in context.eventhubs) { const eventhub = context.eventhubs[key]; @@ -535,7 +541,6 @@ function releasecontext(context) { } context.eventhubs = []; } - return Promise.resolve(); } module.exports.releasecontext = releasecontext; @@ -643,14 +648,14 @@ async function invokebycontext(context, id, version, args, timeout){ let newTimeout = timeout * 1000 - (Date.now() - startTime); if(newTimeout < 10000) { - commUtils.log('WARNING: timeout is too small, default value is used instead'); + commLogger.warn('WARNING: timeout is too small, default value is used instead'); newTimeout = 10000; } const eventPromises = []; eventHubs.forEach((eh) => { eventPromises.push(new Promise((resolve, reject) => { - let handle = setTimeout(reject, newTimeout); + let handle = setTimeout(() => reject(new Error('Timeout')), newTimeout); eh.registerTxEvent(txId, (tx, code) => { @@ -712,7 +717,7 @@ async function invokebycontext(context, id, version, args, timeout){ // so mark it failed but leave it not verified if (!invokeStatus.IsVerified()) { invokeStatus.SetStatusFail(); - commUtils.log('Failed to complete transaction [' + txId.substring(0, 5) + '...]: every eventhub connection closed'); + commLogger.error('Failed to complete transaction [' + txId.substring(0, 5) + '...]: every eventhub connection closed'); } else { invokeStatus.SetStatusSuccess(); } @@ -720,7 +725,7 @@ async function invokebycontext(context, id, version, args, timeout){ { // at this point the Tx should be verified invokeStatus.SetStatusFail(); - commUtils.log('Failed to complete transaction [' + txId.substring(0, 5) + '...]:' + (err instanceof Error ? err.stack : err)); + commLogger.error('Failed to complete transaction [' + txId.substring(0, 5) + '...]:' + (err instanceof Error ? err.stack : err)); } return invokeStatus; @@ -734,13 +739,12 @@ module.exports.invokebycontext = invokebycontext; * @param {string} id The name of the chaincode. * @param {string} version The version of the chaincode. * @param {string} name The single argument to pass to the chaincode. + * @param {string} fcn The chaincode query function name. * @return {Promise} The result and stats of the transaction invocation. */ -function querybycontext(context, id, version, name) { - //const userOrg = context.org; +async function querybycontext(context, id, version, name, fcn) { const client = context.client; const channel = context.channel; - //const eventhubs = context.eventhubs; const tx_id = client.newTransactionID(); const txStatus = new TxStatus(tx_id.getTransactionID()); @@ -749,7 +753,7 @@ function querybycontext(context, id, version, name) { chaincodeId: id, chaincodeVersion: version, txId: tx_id, - fcn: 'query', + fcn: fcn, args: [name] }; @@ -757,34 +761,27 @@ function querybycontext(context, id, version, name) { context.engine.submitCallback(1); } - return channel.queryByChaincode(request) - .then((responses) => { - if(responses.length > 0) { - const value = responses[0]; - if(value instanceof Error) { - throw value; - } + let responses = await channel.queryByChaincode(request); + if (responses.length === 0) { + throw new Error('No query responses'); + } - for(let i = 1 ; i < responses.length ; i++) { - if(responses[i].length !== value.length || !responses[i].every(function(v,idx){ - return v === value[idx]; })) { - throw new Error('conflicting query responses'); - } - } + const value = responses[0]; + if (value instanceof Error) { + throw value; + } - txStatus.SetStatusSuccess(); - txStatus.SetResult(responses[0]); - return Promise.resolve(txStatus); - } - else { - throw new Error('no query responses'); - } - }) - .catch((err) => { - commUtils.log('Query failed, ' + (err.stack?err.stack:err)); - txStatus.SetStatusFail(); - return Promise.resolve(txStatus); - }); + for (let i = 1; i < responses.length; i++) { + if (responses[i].length !== value.length || !responses[i].every(function (v, idx) { + return v === value[idx]; + })) { + throw new Error('Conflicting query responses'); + } + } + + txStatus.SetStatusSuccess(); + txStatus.SetResult(responses[0]); + return txStatus; } module.exports.querybycontext = querybycontext; diff --git a/src/fabric/fabric.js b/src/fabric/fabric.js index 3eb45a255..bf95ec699 100644 --- a/src/fabric/fabric.js +++ b/src/fabric/fabric.js @@ -16,6 +16,7 @@ const impl_install = require('./install-chaincode.js'); const impl_instantiate = require('./instantiate-chaincode.js'); const BlockchainInterface = require('../comm/blockchain-interface.js'); const commUtils = require('../comm/util'); +const commLogger = commUtils.getLogger('fabric.js'); const TxStatus = require('../comm/transaction'); /** @@ -32,33 +33,33 @@ class Fabric extends BlockchainInterface{ /** * Initialize the {Fabric} object. - * @return {Promise} The return promise. + * @async */ - init() { + async init() { util.init(this.configPath); e2eUtils.init(this.configPath); - return impl_create.run(this.configPath).then(() => { - return impl_join.run(this.configPath); - }) - .catch((err) => { - commUtils.log('fabric.init() failed, ' + (err.stack ? err.stack : err)); - return Promise.reject(err); - }); + try { + await impl_create.run(this.configPath); + await impl_join.run(this.configPath); + } catch (err) { + commLogger.error(`Fabric initialization failed: ${(err.stack ? err.stack : err)}`); + throw err; + } } /** * Deploy the chaincode specified in the network configuration file to all peers. - * @return {Promise} The return promise. + * @async */ - installSmartContract() { + async installSmartContract() { // todo: now all chaincodes are installed and instantiated in all peers, should extend this later - return impl_install.run(this.configPath).then(() => { - return impl_instantiate.run(this.configPath); - }) - .catch((err) => { - commUtils.log('fabric.installSmartContract() failed, ' + (err.stack ? err.stack : err)); - return Promise.reject(err); - }); + try { + await impl_install.run(this.configPath); + await impl_instantiate.run(this.configPath); + } catch (err) { + commLogger.error(`Fabric chaincode install failed: ${(err.stack ? err.stack : err)}`); + throw err; + } } /** @@ -66,8 +67,9 @@ class Fabric extends BlockchainInterface{ * @param {string} name The name of the callback module as defined in the configuration files. * @param {object} args Unused. * @return {object} The assembled Fabric context. + * @async */ - getContext(name, args) { + async getContext(name, args) { util.init(this.configPath); e2eUtils.init(this.configPath); @@ -82,22 +84,20 @@ class Fabric extends BlockchainInterface{ } if(!channel) { - return Promise.reject(new Error('could not find context\'s information in config file')); + throw new Error('Could not find context information in the config file'); } - return e2eUtils.getcontext(channel); - + return await e2eUtils.getcontext(channel); } /** * Release the given Fabric context. * @param {object} context The Fabric context to release. - * @return {Promise} The return promise. + * @async */ - releaseContext(context) { - return e2eUtils.releasecontext(context).then(() => { - return commUtils.sleep(1000); - }); + async releaseContext(context) { + await e2eUtils.releasecontext(context); + await commUtils.sleep(1000); } /** @@ -105,11 +105,11 @@ class Fabric extends BlockchainInterface{ * @param {object} context The Fabric context returned by {getContext}. * @param {string} contractID The name of the chaincode. * @param {string} contractVer The version of the chaincode. - * @param {Array} args Array of JSON formatted arguments for transaction(s). Each element containts arguments (including the function name) passing to the chaincode. JSON attribute named transaction_type is used by default to specify the function name. If the attribute does not exist, the first attribute will be used as the function name. + * @param {Array} args Array of JSON formatted arguments for transaction(s). Each element contains arguments (including the function name) passing to the chaincode. JSON attribute named transaction_type is used by default to specify the function name. If the attribute does not exist, the first attribute will be used as the function name. * @param {number} timeout The timeout to set for the execution in seconds. * @return {Promise} The promise for the result of the execution. */ - invokeSmartContract(context, contractID, contractVer, args, timeout) { + async invokeSmartContract(context, contractID, contractVer, args, timeout) { let promises = []; args.forEach((item, index)=>{ try { @@ -129,13 +129,13 @@ class Fabric extends BlockchainInterface{ promises.push(e2eUtils.invokebycontext(context, contractID, contractVer, simpleArgs, timeout)); } catch(err) { - commUtils.log(err); + commLogger.error(err); let badResult = new TxStatus('artifact'); badResult.SetStatusFail(); promises.push(Promise.resolve(badResult)); } }); - return Promise.all(promises); + return await Promise.all(promises); } /** @@ -144,11 +144,12 @@ class Fabric extends BlockchainInterface{ * @param {string} contractID The name of the chaincode. * @param {string} contractVer The version of the chaincode. * @param {string} key The argument to pass to the chaincode query. + * @param {string} [fcn=query] The chaincode query function name. * @return {Promise} The promise for the result of the execution. */ - queryState(context, contractID, contractVer, key) { + async queryState(context, contractID, contractVer, key, fcn = 'query') { // TODO: change string key to general object - return e2eUtils.querybycontext(context, contractID, contractVer, key.toString()); + return await e2eUtils.querybycontext(context, contractID, contractVer, key.toString(), fcn); } } module.exports = Fabric; diff --git a/src/fabric/install-chaincode.js b/src/fabric/install-chaincode.js index b14be708f..3c63935ae 100644 --- a/src/fabric/install-chaincode.js +++ b/src/fabric/install-chaincode.js @@ -19,51 +19,38 @@ // in a happy-path scenario 'use strict'; -//const utils = require('fabric-client/lib/utils.js'); -//const logger = utils.getLogger('E2E install-chaincode'); - -//const tape = require('tape'); -//const _test = require('tape-promise'); -//const test = _test(tape); - const e2eUtils = require('./e2eUtils.js'); const testUtil = require('./util.js'); const Client = require('fabric-client'); +const commUtils = require('../comm/util'); +const commLogger = commUtils.getLogger('install-chaincode.js'); -module.exports.run = function (config_path) { +module.exports.run = async function (config_path) { Client.addConfigFile(config_path); testUtil.setupChaincodeDeploy(); const fabricSettings = Client.getConfigSetting('fabric'); let chaincodes = fabricSettings.chaincodes; if(typeof chaincodes === 'undefined' || chaincodes.length === 0) { - return Promise.resolve(); + return; } - return new Promise(function(resolve, reject) { - const t = global.tapeObj; - t.comment('install all chaincodes......'); - chaincodes.reduce(function(prev, chaincode){ - return prev.then(() => { - let promises = []; - let channel = testUtil.getChannel(chaincode.channel); - if(channel === null) { - throw new Error('could not find channel in config'); - } - for(let v in channel.organizations) { - promises.push(e2eUtils.installChaincode(channel.organizations[v], chaincode)); - } - return Promise.all(promises).then(() => { - t.pass('Installed chaincode ' + chaincode.id + ' successfully in all peers'); - return Promise.resolve(); - }); - }); - }, Promise.resolve()) - .then(() => { - return resolve(); - }) - .catch((err) => { - t.fail('Failed to install chaincodes, ' + (err.stack?err.stack:err)); - return reject(err); - }); - }); + commLogger.info('Installing chaincodes...'); + try { + for (let chaincode of chaincodes) { + let channel = testUtil.getChannel(chaincode.channel); + if(channel === null) { + throw new Error('could not find channel in config'); + } + + for(let v in channel.organizations) { + // NOTE: changed execution to sequential for easier debugging (this is a one-time task, performance doesn't matter) + await e2eUtils.installChaincode(channel.organizations[v], chaincode); + } + + commLogger.info(`Installed chaincode ${chaincode.id} successfully in all peers`); + } + } catch (err) { + commLogger.error(`Failed to install chaincodes: ${(err.stack ? err.stack : err)}`); + throw err; + } }; diff --git a/src/fabric/instantiate-chaincode.js b/src/fabric/instantiate-chaincode.js index 35b3828a0..dee94acef 100644 --- a/src/fabric/instantiate-chaincode.js +++ b/src/fabric/instantiate-chaincode.js @@ -19,46 +19,32 @@ // in a happy-path scenario 'use strict'; -//const utils = require('fabric-client/lib/utils.js'); -//const logger = utils.getLogger('E2E instantiate-chaincode'); - -//const tape = require('tape'); -//const _test = require('tape-promise'); -//const test = _test(tape); - const e2eUtils = require('./e2eUtils.js'); const commUtils = require('../comm/util'); +const commLogger = commUtils.getLogger('instantiate-chaincode.js'); const Client = require('fabric-client'); -module.exports.run = function (config_path) { +module.exports.run = async function (config_path) { Client.addConfigFile(config_path); const fabricSettings = Client.getConfigSetting('fabric'); const policy = fabricSettings['endorsement-policy']; // TODO: support mulitple policies let chaincodes = fabricSettings.chaincodes; if(typeof chaincodes === 'undefined' || chaincodes.length === 0) { - return Promise.resolve(); + return; } - return new Promise(function(resolve, reject) { - // test('\n\n***** instantiate chaincode *****\n\n', (t) => { - const t = global.tapeObj; - t.comment('Instantiate chaincode......'); - chaincodes.reduce(function(prev, chaincode){ - return prev.then(() => { - return e2eUtils.instantiateChaincode(chaincode, policy, false).then(() => { - t.pass('Instantiated chaincode ' + chaincode.id + ' successfully '); - t.comment('Sleep 5s...'); - return commUtils.sleep(5000); - }); - }); - }, Promise.resolve()) - .then(() => { - return resolve(); - }) - .catch((err) => { - t.fail('Failed to instantiate chaincodes, ' + (err.stack?err.stack:err)); - return reject(new Error('Fabric: instantiate chaincodes failed')); - }); - }); + try { + commLogger.info('Instantiating chaincodes...'); + for (let chaincode of chaincodes) { + await e2eUtils.instantiateChaincode(chaincode, policy, false); + commLogger.info(`Instantiated chaincode ${chaincode.id} successfully`); + } + + commLogger.info('Sleeping 5s...'); + await commUtils.sleep(5000); + } catch (err) { + commLogger.error(`Failed to instantiate chaincodes: ${(err.stack ? err.stack : err)}`); + throw err; + } }; diff --git a/src/fabric/join-channel.js b/src/fabric/join-channel.js index 0c5941f76..849bf2118 100644 --- a/src/fabric/join-channel.js +++ b/src/fabric/join-channel.js @@ -17,14 +17,6 @@ 'use strict'; -//const utils = require('fabric-client/lib/utils.js'); -//const logger = utils.getLogger('E2E join-channel'); - -//const tape = require('tape'); -//const _test = require('tape-promise'); -//const test = _test(tape); - -//const util = require('util'); const fs = require('fs'); const Client = require('fabric-client'); @@ -32,6 +24,7 @@ const EventHub = require('fabric-client/lib/EventHub.js'); const testUtil = require('./util.js'); const commUtils = require('../comm/util'); +const commlogger = commUtils.getLogger('join-channel.js'); //let the_user = null; let tx_id = null; @@ -55,9 +48,9 @@ function disconnect(ehs) { * Join the peers of the given organization to the given channel. * @param {string} org The name of the organization. * @param {string} channelName The name of the channel. - * @return {Promise} The return promise. + * @async */ -function joinChannel(org, channelName) { +async function joinChannel(org, channelName) { const client = new Client(); const channel = client.newChannel(channelName); @@ -68,7 +61,6 @@ function joinChannel(org, channelName) { const caRootsPath = ORGS.orderer.tls_cacerts; let data = fs.readFileSync(commUtils.resolvePath(caRootsPath)); let caroots = Buffer.from(data).toString(); - let genesis_block = null; channel.addOrderer( client.newOrderer( @@ -80,55 +72,47 @@ function joinChannel(org, channelName) { ) ); - return Client.newDefaultKeyValueStore({ - path: testUtil.storePathForOrg(orgName) - }).then((store) => { + try { + let store = await Client.newDefaultKeyValueStore({path: testUtil.storePathForOrg(orgName)}); client.setStateStore(store); - - return testUtil.getOrderAdminSubmitter(client); - }).then((admin) => { + await testUtil.getOrderAdminSubmitter(client); tx_id = client.newTransactionID(); let request = { txId : tx_id }; - return channel.getGenesisBlock(request); - }).then((block) =>{ - genesis_block = block; - + let genesis_block = await channel.getGenesisBlock(request); // get the peer org's admin required to send join channel requests client._userContext = null; + await testUtil.getSubmitter(client, true /* get peer org admin */, org); - return testUtil.getSubmitter(client, true /* get peer org admin */, org); - }).then((admin) => { //the_user = admin; for (let key in ORGS[org]) { - if (ORGS[org].hasOwnProperty(key)) { - if(key.indexOf('peer') === 0) { - data = fs.readFileSync(commUtils.resolvePath(ORGS[org][key].tls_cacerts)); - targets.push( - client.newPeer( - ORGS[org][key].requests, - { - pem: Buffer.from(data).toString(), - 'ssl-target-name-override': ORGS[org][key]['server-hostname'] - } - ) - ); - - let eh = new EventHub(client); //client.newEventHub(); - eh.setPeerAddr( - ORGS[org][key].events, - { - pem: Buffer.from(data).toString(), - 'ssl-target-name-override': ORGS[org][key]['server-hostname'] - } - ); - eh.connect(); - eventhubs.push(eh); - allEventhubs.push(eh); - } + if (!ORGS[org].hasOwnProperty(key) || key.indexOf('peer') !== 0) { + continue; } + + data = fs.readFileSync(commUtils.resolvePath(ORGS[org][key].tls_cacerts)); + targets.push( + client.newPeer( + ORGS[org][key].requests, + { + pem: Buffer.from(data).toString(), + 'ssl-target-name-override': ORGS[org][key]['server-hostname'] + } + ) + ); + let eh = new EventHub(client); + eh.setPeerAddr( + ORGS[org][key].events, + { + pem: Buffer.from(data).toString(), + 'ssl-target-name-override': ORGS[org][key]['server-hostname'] + } + ); + eh.connect(); + eventhubs.push(eh); + allEventhubs.push(eh); } const eventPromises = []; @@ -156,65 +140,57 @@ function joinChannel(org, channelName) { eventPromises.push(txPromise); }); + tx_id = client.newTransactionID(); - let request = { + request = { targets : targets, block : genesis_block, txId : tx_id }; + let sendPromise = channel.joinChannel(request); - return Promise.all([sendPromise].concat(eventPromises)); - }) - .then((results) => { - disconnect(eventhubs); - if(results[0] && results[0][0] && results[0][0].response && results[0][0].response.status === 200) { - // t.pass(util.format('Successfully joined peers in organization %s to join the channel', orgName)); - } else { - throw new Error('Unexpected join channel response'); - } - }) - .catch((err)=>{ - disconnect(eventhubs); - return Promise.reject(err); - }); + let results = await Promise.all([sendPromise].concat(eventPromises)); + + disconnect(eventhubs); + if(results[0] && results[0][0] && results[0][0].response && results[0][0].response.status === 200) { + commlogger.info(`Successfully joined ${orgName}'s peers to ${channelName}`); + } else { + throw new Error('Unexpected join channel response'); + } + } catch (err) { + disconnect(eventhubs); + commlogger.error(`Couldn't join ${orgName}'s peers to ${channelName}: ${err.stack ? err.stack : err}`); + throw err; + } } -module.exports.run = function (config_path) { +module.exports.run = async function (config_path) { Client.addConfigFile(config_path); const fabric = Client.getConfigSetting('fabric'); let channels = fabric.channel; if(!channels || channels.length === 0) { - return Promise.resolve(); + return; } ORGS = Client.getConfigSetting('fabric').network; - return new Promise(function(resolve, reject) { - const t = global.tapeObj; - t.comment('Join channel......'); - - return channels.reduce((prev, channel)=>{ - return prev.then(() => { - if(channel.deployed) { - return Promise.resolve(); - } + commlogger.info('Joining channels...'); - t.comment('join ' + channel.name); - let promises = []; - channel.organizations.forEach((org, index) => { - promises.push(joinChannel(org, channel.name)); - }); - return Promise.all(promises).then(()=>{ - t.pass('Successfully joined ' + channel.name); - return Promise.resolve(); - }); - }); - }, Promise.resolve()) - .then(() => { - return resolve(); - }) - .catch((err)=>{ - t.fail('Failed to join peers, ' + (err.stack?err.stack:err)); - return reject(new Error('Fabric: Join channel failed')); - }); - }); + try { + for (let channel of channels) { + if(channel.deployed) { + continue; + } + + commlogger.info(`Joining ${channel.name}...`); + for (let org of channel.organizations) { + // NOTE: made the execution sequential for easier debugging + await joinChannel(org, channel.name); + } + + commlogger.info(`Successfully joined ${channel.name}`); + } + } catch (err) { + commlogger.error(`Failed to join peers: ${(err.stack ? err.stack : err)}`); + throw err; + } }; diff --git a/src/fabric/util.js b/src/fabric/util.js index 165df07cb..a6f49108b 100644 --- a/src/fabric/util.js +++ b/src/fabric/util.js @@ -19,22 +19,15 @@ const path = require('path'); const fs = require('fs-extra'); -//const os = require('os'); const util = require('util'); -//const jsrsa = require('jsrsasign'); -//const KEYUTIL = jsrsa.KEYUTIL; - const Client = require('fabric-client'); const copService = require('fabric-ca-client/lib/FabricCAClientImpl.js'); const User = require('fabric-client/lib/User.js'); -//const CryptoSuite = require('fabric-client/lib/impl/CryptoSuite_ECDSA_AES.js'); -//const KeyStore = require('fabric-client/lib/impl/CryptoKeyStore.js'); -//const ecdsaKey = require('fabric-client/lib/impl/ecdsa/key.js'); + const Constants = require('./constant.js'); const commUtils = require('../comm/util'); - -//const logger = require('fabric-client/lib/utils.js').getLogger('TestUtil'); +const commLogger = commUtils.getLogger('util.js'); let channels = []; let cryptodir; @@ -162,49 +155,45 @@ const tlsOptions = { * @param {string} userOrg The name of the user's organization. * @return {Promise} The retrieved and enrolled user object. */ -function getMember(username, password, client, userOrg) { +async function getMember(username, password, client, userOrg) { const caUrl = ORGS[userOrg].ca.url; + let user = await client.getUserContext(username, true); + if (user && user.isEnrolled()) { + return user; + } + + const member = new User(username); + let cryptoSuite = client.getCryptoSuite(); + if (!cryptoSuite) { + cryptoSuite = Client.newCryptoSuite(); + if (userOrg) { + cryptoSuite.setCryptoKeyStore(Client.newCryptoKeyStore({path: module.exports.storePathForOrg(ORGS[userOrg].name)})); + client.setCryptoSuite(cryptoSuite); + } + } + member.setCryptoSuite(cryptoSuite); + + // need to enroll it with CA server + const cop = new copService(caUrl, tlsOptions, ORGS[userOrg].ca.name, cryptoSuite); - return client.getUserContext(username, true) - .then((user) => { - return new Promise((resolve, reject) => { - if (user && user.isEnrolled()) { - return resolve(user); - } - - const member = new User(username); - let cryptoSuite = client.getCryptoSuite(); - if (!cryptoSuite) { - cryptoSuite = Client.newCryptoSuite(); - if (userOrg) { - cryptoSuite.setCryptoKeyStore(Client.newCryptoKeyStore({path: module.exports.storePathForOrg(ORGS[userOrg].name)})); - client.setCryptoSuite(cryptoSuite); - } - } - member.setCryptoSuite(cryptoSuite); - - // need to enroll it with CA server - const cop = new copService(caUrl, tlsOptions, ORGS[userOrg].ca.name, cryptoSuite); - - return cop.enroll({ - enrollmentID: username, - enrollmentSecret: password - }).then((enrollment) => { - return member.setEnrollment(enrollment.key, enrollment.certificate, ORGS[userOrg].mspid); - }).then(() => { - let skipPersistence = false; - if (!client.getStateStore()) { - skipPersistence = true; - } - return client.setUserContext(member, skipPersistence); - }).then(() => { - return resolve(member); - }).catch((err) => { - // TODO: will remove t argument later - commUtils.log('Failed to enroll and persist user. Error: ' + (err.stack ? err.stack : err)); - }); - }); + try { + let enrollment = await cop.enroll({ + enrollmentID: username, + enrollmentSecret: password }); + + await member.setEnrollment(enrollment.key, enrollment.certificate, ORGS[userOrg].mspid); + let skipPersistence = false; + if (!client.getStateStore()) { + skipPersistence = true; + } + + await client.setUserContext(member, skipPersistence); + return member; + } catch (err) { + commLogger.error(`Failed to enroll and persist user: ${(err.stack ? err.stack : err)}`); + throw err; + } } /** @@ -213,7 +202,7 @@ function getMember(username, password, client, userOrg) { * @param {string} userOrg The name of the user's organization. * @return {User} The admin user identity. */ -function getAdmin(client, userOrg) { +async function getAdmin(client, userOrg) { try { if(!ORGS.hasOwnProperty(userOrg)) { throw new Error('Could not found ' + userOrg + ' in configuration'); @@ -246,17 +235,18 @@ function getAdmin(client, userOrg) { cryptoSuite.setCryptoKeyStore(Client.newCryptoKeyStore({path: module.exports.storePathForOrg(ORGS[userOrg].name)})); client.setCryptoSuite(cryptoSuite); - return Promise.resolve(client.createUser({ + return await client.createUser({ username: 'peer'+userOrg+'Admin', mspid: org.mspid, cryptoContent: { privateKeyPEM: keyPEM.toString(), signedCertPEM: certPEM.toString() } - })); + }); } catch(err) { - return Promise.reject(err); + commLogger.error(`Couldn't retrieve admin of ${userOrg}: ${err.stack ? err.stack : err}`); + throw err; } } @@ -265,7 +255,7 @@ function getAdmin(client, userOrg) { * @param {Client} client The Fabric client object. * @return {User} The retrieved orderer admin identity. */ -function getOrdererAdmin(client) { +async function getOrdererAdmin(client) { try { if(!ORGS.orderer) { throw new Error('Could not found orderer in configuration'); @@ -294,17 +284,18 @@ function getOrdererAdmin(client) { certPEM = readAllFiles(certPath)[0]; } - return Promise.resolve(client.createUser({ + return await client.createUser({ username: 'ordererAdmin', mspid: orderer.mspid, cryptoContent: { privateKeyPEM: keyPEM.toString(), signedCertPEM: certPEM.toString() } - })); + }); } catch(err) { - return Promise.reject(err); + commLogger.error(`Couldn't retrieve admin of orderer org: ${err.stack ? err.stack : err}`); + throw err; } } @@ -314,7 +305,7 @@ module.exports.getOrderAdminSubmitter = function(client) { return getOrdererAdmin(client); }; -module.exports.getSubmitter = function(client, peerOrgAdmin, org) { +module.exports.getSubmitter = async function(client, peerOrgAdmin, org) { if (arguments.length < 2) {throw new Error('"client" and "test" are both required parameters');} let peerAdmin, userOrg; @@ -336,8 +327,8 @@ module.exports.getSubmitter = function(client, peerOrgAdmin, org) { } if (peerAdmin) { - return getAdmin(client, userOrg); + return await getAdmin(client, userOrg); } else { - return getMember('admin', 'adminpw', client, userOrg); + return await getMember('admin', 'adminpw', client, userOrg); } }; diff --git a/src/gui/src/demo.js b/src/gui/src/demo.js index 89c1aa7ec..d7be91ceb 100644 --- a/src/gui/src/demo.js +++ b/src/gui/src/demo.js @@ -10,6 +10,7 @@ 'use strict' /* global variables */ +var logger = require('../../comm/util.js').getLogger('demo.js'); var path = require('path'); var demoFile = path.join(__dirname, '../output/demo.json'); var demoInterval = 1; // interval length(s) @@ -122,7 +123,7 @@ function demoRefreshData(updates) { } // if(started) { - console.log('[Transaction Info] - Submitted: ' + demoData.summary.txSub + logger.info('[Transaction Info] - Submitted: ' + demoData.summary.txSub + ' Succ: ' + demoData.summary.txSucc + ' Fail:' + demoData.summary.txFail + ' Unfinished:' + (demoData.summary.txSub - demoData.summary.txSucc - demoData.summary.txFail)); diff --git a/src/gui/www/index.html b/src/gui/www/index.html index 164fe7bd5..e34b4eba4 100644 --- a/src/gui/www/index.html +++ b/src/gui/www/index.html @@ -107,6 +107,7 @@ config: "config.json" }, sawtooth: { + batchBuilders: {}, config: "config-sawtooth.json" } }; diff --git a/src/iroha/iroha.js b/src/iroha/iroha.js index 791476f55..dd6302fec 100644 --- a/src/iroha/iroha.js +++ b/src/iroha/iroha.js @@ -24,6 +24,7 @@ const pbTransaction = require('iroha-lib/pb/block_pb.js').Transaction; const pbQuery = require('iroha-lib/pb/queries_pb.js').Query; const endpointGrpc = require('iroha-lib/pb/endpoint_grpc_pb.js'); const util = require('../comm/util.js'); +const logger = util.getLogger('iroha.js'); const BlockchainInterface = require('../comm/blockchain-interface.js'); const irohaType = require('./type.js'); const TxStatus = require('../comm/transaction'); @@ -96,12 +97,12 @@ function irohaCommand(client, account, time, keys, commands) { return Promise.resolve(txHash); }) .catch((err)=>{ - util.log(err); + logger.error(err); return Promise.reject('Failed to submit Iroha transaction'); }); } catch(err) { - util.log(err); + logger.error(err); return Promise.reject('Failed to submit Iroha transaction'); } } @@ -144,7 +145,7 @@ function irohaQuery(client, account, time, counter, keys, commands, callback) { } else { if(response.getResponseCase() === responseType.ERROR_RESPONSE) { // error response - util.log('Query: ', JSON.stringify(queryCommand)); + logger.info('Query: ', JSON.stringify(queryCommand)); reject(new Error('Query error, error code : ' + response.getErrorResponse().getReason())); } else { @@ -156,7 +157,7 @@ function irohaQuery(client, account, time, counter, keys, commands, callback) { }); } catch(err) { - util.log(err); + logger.error(err); return Promise.reject('Failed to submit iroha query'); } } @@ -184,7 +185,7 @@ class Iroha extends BlockchainInterface { prepareClients(number) { try{ - util.log('Creating new account for test clients......'); + logger.info('Creating new account for test clients......'); // get admin info let config = require(this.configPath); @@ -198,8 +199,8 @@ class Iroha extends BlockchainInterface { let adminKeys = crypto.convertFromExisting(adminPub, adminPriv); // test - util.log(`Admin's private key: ${adminPriv}`); - util.log(`Admin's public key: ${adminPub}`); + logger.info(`Admin's private key: ${adminPriv}`); + logger.info(`Admin's public key: ${adminPub}`); // create account for each client let result = []; @@ -248,18 +249,18 @@ class Iroha extends BlockchainInterface { tx: irohaType.txType.APPEND_ROLE, args: [id, 'moneyad'] },]; - util.log('Create account for ' + id); + logger.info('Create account for ' + id); let p = irohaCommand(grpcCommandClient, adminAccount, Date.now(), adminKeys, commands); promises.push(p); } let queryCounter = 1; return Promise.all(promises) .then(()=>{ - util.log('Submitted create account transactions.'); + logger.info('Submitted create account transactions.'); return util.sleep(5000); }) .then(()=>{ - util.log('Query accounts to see if they already exist ......'); + logger.info('Query accounts to see if they already exist ......'); let promises = []; for(let i = 0 ; i < result.length ; i++) { let acc = result[i]; @@ -275,12 +276,12 @@ class Iroha extends BlockchainInterface { }], (response) => { let accountResp = response.getAccountResponse(); - util.log('Got account successfully: ' + accountResp.getAccount().getAccountId()); + logger.info('Got account successfully: ' + accountResp.getAccount().getAccountId()); resolve(); } ) .catch((err)=>{ - util.log(err); + logger.error(err); reject(new Error('Failed to query account')); }); }); @@ -290,7 +291,7 @@ class Iroha extends BlockchainInterface { return Promise.all(promises); }) .then(()=>{ - util.log('Finished create accounts, save key pairs for later use'); + logger.info('Finished create accounts, save key pairs for later use'); return Promise.resolve(result); }) .catch(()=>{ @@ -298,7 +299,7 @@ class Iroha extends BlockchainInterface { }); } catch (err) { - util.log(err); + logger.error(err); return Promise.reject(new Error('Could not create accounts for Iroha clients')); } } @@ -339,7 +340,7 @@ class Iroha extends BlockchainInterface { } else { if(fakeContracts.hasOwnProperty(id)) { - util.log('WARNING: multiple callbacks for ' + id + ' have been found'); + logger.warn('WARNING: multiple callbacks for ' + id + ' have been found'); } else { fakeContracts[id] = factory.contracts[id]; @@ -364,7 +365,7 @@ class Iroha extends BlockchainInterface { let status = item.status; let timeElapse = Date.now() - status.GetTimeCreate(); if(timeElapse > status.Get('timeout')) { - util.log('Timeout when querying transaction\'s status'); + logger.warn('Timeout when querying transaction\'s status'); status.SetStatusFail(); item.resolve(status); delete self.statusWaiting[id]; @@ -378,7 +379,7 @@ class Iroha extends BlockchainInterface { item.isquery = false; let final = false; if(err) { - util.log(err); + logger.error(err); status.SetStatusFail(); final = true; } @@ -415,7 +416,7 @@ class Iroha extends BlockchainInterface { return Promise.resolve(contexts[args.id]); } catch (err) { - util.log(err); + logger.error(err); return Promise.reject(new Error('Failed when finding access point or user key')); } } @@ -477,7 +478,7 @@ class Iroha extends BlockchainInterface { } ) .catch((err)=>{ - util.log(err); + logger.error(err); status.SetStatusFail(); resolve(status); }); @@ -487,18 +488,18 @@ class Iroha extends BlockchainInterface { return p; } catch(err) { - util.log(err); + logger.error(err); return Promise.reject(); } } - queryState(context, contractID, contractVer, key) { + queryState(context, contractID, contractVer, key, fcn = 'query') { try { if(!context.contract.hasOwnProperty(contractID)) { throw new Error('Could not find contract named ' + contractID); } - let commands = context.contract[contractID](contractVer, context, {verb: 'query', key: key}); + let commands = context.contract[contractID](contractVer, context, {verb: fcn, key: key}); if(commands.length === 0) { throw new Error('Empty output of contract ' + contractID); } @@ -516,14 +517,14 @@ class Iroha extends BlockchainInterface { } ) .catch((err)=>{ - util.log(err); + logger.error(err); status.SetStatusFail(); resolve(status); }); }); } catch(err) { - util.log(err); + logger.error(err); return Promise.reject(); } } diff --git a/src/sawtooth/Application/BatchBuilderFactory.js b/src/sawtooth/Application/BatchBuilderFactory.js index 7708ced2f..c96776eef 100644 --- a/src/sawtooth/Application/BatchBuilderFactory.js +++ b/src/sawtooth/Application/BatchBuilderFactory.js @@ -8,8 +8,7 @@ 'use strict'; -let SimpleBatchBuilder = require('./SimpleBatchBuilder.js'); -let SmallBankBatchBuilder = require('./SmallBankBatchBuilder.js'); +const Util = require('../../comm/util.js'); /** * @abstract class has static method getBatchBuilder() @@ -17,27 +16,34 @@ let SmallBankBatchBuilder = require('./SmallBankBatchBuilder.js'); */ class BatchBuilderFactory { -/** - * static factory method which will return batch builder instance based on family name and - * family version - * @param {string} familyName transaction family name - * @param {string} familyVersion transaction family version - * @returns {object} with specific builder instance. - */ - static getBatchBuilder(familyName, familyVersion) { - let sawtoothContractVersion = '1.0'; + /** + * static factory method which will return batch builder instance based on family name and + * family version. This is dependent upon your configuration. + * @param {string} familyName transaction family name + * @param {string} familyVersion transaction family version + * @param {object} config the configuration + * @returns {object} with specific builder instance. + */ + static getBatchBuilder(familyName, familyVersion, config) { if (familyVersion === 'v0') { - sawtoothContractVersion = '1.0'; + familyVersion = '1.0'; } - - if(familyName === 'simple') { - return new SimpleBatchBuilder(familyName, sawtoothContractVersion); + if (!config.sawtooth.batchBuilders) { + throw new Error('There are no batch builders defined in the configuration'); + } + if (!config.sawtooth.batchBuilders[familyName]) { + throw new Error('There is no batch builder for ' + familyName); } - else if(familyName === 'smallbank') { - return new SmallBankBatchBuilder(familyName, sawtoothContractVersion); + if (!config.sawtooth.batchBuilders[familyName][familyVersion]) { + throw new Error('There is no batch builder for ' + familyName + '[' + familyVersion + ']'); } - else { - throw new Error('There is no batch builder for '+ familyName +' and '+ familyVersion); + const handlerPath = config.sawtooth.batchBuilders[familyName][familyVersion]; + try { + const handler = require(Util.resolvePath(handlerPath)); + return new handler(familyName, familyVersion); + } catch (err) { + throw new Error('Unable to load batch builder for ' + familyName + '[' + familyVersion + + '] at ' + handlerPath + '::' + err.message); } } } diff --git a/src/sawtooth/Application/SmallBankBatchBuilder.js b/src/sawtooth/Application/SmallBankBatchBuilder.js index ab66f3e40..b34407c04 100644 --- a/src/sawtooth/Application/SmallBankBatchBuilder.js +++ b/src/sawtooth/Application/SmallBankBatchBuilder.js @@ -9,7 +9,7 @@ 'use strict'; -const log = require('../../../src/comm/util.js').log; +const logger = require('../../../src/comm/util.js').getLogger('SmallBankBatchBuilder.js'); let BatchBuilder = require('./BatchBuilder.js'); /** @@ -33,7 +33,7 @@ function getCustomerIds(args) { cust_ids.push(args.dest_customer_id); break; default: - log('Error: Unknown payload type' + args.payload_type); + logger.error('Error: Unknown payload type' + args.payload_type); break; } return cust_ids; diff --git a/src/sawtooth/sawtooth.js b/src/sawtooth/sawtooth.js index d8b3673ed..93ae2649a 100644 --- a/src/sawtooth/sawtooth.js +++ b/src/sawtooth/sawtooth.js @@ -10,10 +10,173 @@ const BlockchainInterface = require('../comm/blockchain-interface.js'); const BatchBuilderFactory = require('./Application/BatchBuilderFactory.js'); -const log = require('../comm/util.js').log; +const commUtils = require('../comm/util'); +const logger = require('../comm/util.js').getLogger('sawtooth.js'); let configPath; const request = require('request-promise'); const TxStatus = require('../comm/transaction'); +const _ = require('lodash'); +const { Stream } = require('sawtooth-sdk/messaging/stream'); +const { + Message, + EventList, + EventSubscription, + ClientEventsSubscribeRequest, + ClientEventsSubscribeResponse, + ClientEventsUnsubscribeRequest, + ClientEventsUnsubscribeResponse +} = require('sawtooth-sdk/protobuf'); + +let lastKnownBlockId=null; +let blockCommitSatus = new Map(); +let currentBlockNum=0; +let currentEndpoint= 0; + +/** +* Get the current rest end point +* @return {String} rest endpoint url +*/ +function getRESTUrl() { + let config = require(configPath); + let restApiUrls = config.sawtooth.network.restapi.urls; + currentEndpoint++; + if(currentEndpoint >= restApiUrls.length) { + currentEndpoint = currentEndpoint % restApiUrls.length; + } + return restApiUrls[currentEndpoint]; +} + +/** +* Get the last recent block id for the block chain +* @return {Promise} last recent block id +*/ +async function getCurrentBlockId() { + const request = require('request-promise'); + let restAPIUrl = getRESTUrl(); + const blocks = restAPIUrl + '/blocks?limit=1'; + let options = { + uri: blocks + }; + return request(options) + .then(function(body) { + let data = (JSON.parse(body)).data; + if (data.length > 0) { + currentBlockNum = parseInt(data[0].header.block_num); + lastKnownBlockId = data[0].header_signature.toString(); + return currentBlockNum; + } + }); +} + +/** + * Get block data from event message + * @param {Object} events message + * @return {Promise} The promise for the result of event message + */ +async function getBlock(events) { + const block = _.chain(events) + .find(e => e.eventType === 'sawtooth/block-commit') + .get('attributes') + .map(a => [a.key, a.value]) + .fromPairs() + .value(); + return { + blockNum: parseInt(block.block_num), + blockId: block.block_id.toString(), + stateRootHash: block.state_root_hash + }; +} + +/** + * Handle event message to updated lastKnownBlockId for next event subscription + * @param {Object} msg event message + * @return {void} + */ +async function handleEvent(msg) { + if (msg.messageType === Message.MessageType.CLIENT_EVENTS) { + const events = EventList.decode(msg.content).events; + getBlock(events).then(result => { + lastKnownBlockId = result.blockId.toString(); + let blockNum=result.blockNum; + //On receiving event with block, update the status of the block to success + blockCommitSatus.set(blockNum, 'success'); + }); + } else { + logger.warn('Warn: Received message of unknown type:', msg.messageType); + } +} + +/** + * Subscribe to block-commit delta events + * @param {Object} stream object to send event subscribe message + * @return {void} + */ +async function subscribe(stream) { + //Subscribe to block-commit delta event + const blockSub = EventSubscription.create({ + eventType: 'sawtooth/block-commit' + }); + + if(lastKnownBlockId === null) { + await getCurrentBlockId().then(() => { + }); + } + stream.send( + Message.MessageType.CLIENT_EVENTS_SUBSCRIBE_REQUEST, + ClientEventsSubscribeRequest.encode({ + subscriptions: [blockSub], + lastKnownBlockIds: [lastKnownBlockId] + }).finish() + ) + .then(response => ClientEventsSubscribeResponse.decode(response)) + .then(decoded => { + const status = _.findKey(ClientEventsSubscribeResponse.Status, + val => val === decoded.status); + if (status !== 'OK') { + throw new Error(`Validator responded with status "${status}"`); + } + }); +} + +/** + * Unsubscribe to block-commit delta events + * @param {Object} stream1 object to send event unsubscribe message + * @return {void} + */ +function unsubscribe(stream1) { + stream1.send( + Message.MessageType.CLIENT_EVENTS_UNSUBSCRIBE_REQUEST, + ClientEventsUnsubscribeRequest.encode({ + }).finish() + ) + .then(response => ClientEventsUnsubscribeResponse.decode(response)) + .then(decoded => { + const status = _.findKey(ClientEventsUnsubscribeResponse.Status, + val => val === decoded.status); + if (status !== 'OK') { + throw new Error(`Validator responded with status "${status}"`); + } + stream1.close(); + return commUtils.sleep(1000); + }); +} +/** + * Get batch commit event message on block commit + * @param {Number} block_num of next block + * @param {Number} batchStats Batch status object to update commit status + * @return {Promise} returns batch commit status + */ +function getBatchEventResponse(block_num, batchStats) { + return new Promise(resolve => { + while(blockCommitSatus.get(block_num) !== 'pending') { + /* empty */ + } + //remove the block number from map because we are done with this block + blockCommitSatus.delete(block_num); + batchStats.SetStatusSuccess(); + return resolve(batchStats); + }); +} /** * Get state according from given address @@ -22,8 +185,7 @@ const TxStatus = require('../comm/transaction'); */ function getState(address) { let txStatus = new TxStatus(0); - let config = require(configPath); - let restApiUrl = config.sawtooth.network.restapi.url; + let restApiUrl = getRESTUrl(); const stateLink = restApiUrl + '/state?address=' + address; let options = { uri: stateLink @@ -46,7 +208,7 @@ function getState(address) { } }) .catch(function (err) { - log('Query failed, ' + (err.stack?err.stack:err)); + logger.error('Query failed, ' + (err.stack?err.stack:err)); return Promise.resolve(txStatus); }); } @@ -60,7 +222,8 @@ function getState(address) { * @return {Promise} The promise for the result of the execution. */ function querybycontext(context, contractID, contractVer, address) { - const builder = BatchBuilderFactory.getBatchBuilder(contractID, contractVer); + let config = require(configPath); + const builder = BatchBuilderFactory.getBatchBuilder(contractID, contractVer, config); const addr = builder.calculateAddress(address); if(context.engine) { context.engine.submitCallback(1); @@ -68,93 +231,15 @@ function querybycontext(context, contractID, contractVer, address) { return getState(addr); } -/** - * Send a request to Sawtooth network to get status of given batch - * @param {Object} resolve promise resolve object - * @param {String} statusLink request uri - * @param {Object} invoke_status execution result object - * @param {Object} intervalID object for the request interval - * @param {Object} timeoutID object for the request timeout - * @return {Promise} The promise for the result of the execution. - */ -function getBatchStatusByRequest(resolve, statusLink, invoke_status, intervalID, timeoutID) { - let options = { - uri: statusLink - }; - return request(options) - .then(function(body) { - let batchStatuses = JSON.parse(body).data; - let hasPending = false; - for (let index in batchStatuses){ - let batchStatus = batchStatuses[index].status; - if (batchStatus === 'PENDING'){ - hasPending = true; - break; - } - } - if (hasPending !== true){ - invoke_status.SetStatusSuccess(); - clearInterval(intervalID); - clearTimeout(timeoutID); - return resolve(invoke_status); - } - }) - .catch(function (err) { - log(err); - return resolve(invoke_status); - }); -} - -/** - * Get status of given batch - * @param {String} link request uri - * @param {Object} invoke_status execution result - * @return {Promise} The promise for the result of the execution. - */ -function getBatchStatus(link, invoke_status) { - let statusLink = link; - let intervalID = 0; - let timeoutID = 0; - - let repeat = (ms, invoke_status) => { - return new Promise((resolve) => { - intervalID = setInterval(function(){ - return getBatchStatusByRequest(resolve, statusLink, invoke_status, intervalID, timeoutID); - }, ms); - - }); - }; - - let timeout = (ms, invoke_status) => { - return new Promise((resolve) => { - timeoutID = setTimeout(function(){ - clearInterval(intervalID ); - return resolve(invoke_status); - }, ms); - }); - }; - - - return Promise.race([repeat(500, invoke_status), timeout(30000, invoke_status)]) - .then(function () { - return Promise.resolve(invoke_status); - }) - .catch(function(error) { - log('getBatchStatus error: ' + error); - return Promise.resolve(invoke_status); - }); -} - - /** * Submit a batch of transactions + * @param {Number} block_num of batches * @param {Object} batchBytes batch bytes * @return {Promise} The promise for the result of the execution. */ -function submitBatches(batchBytes) { +async function submitBatches(block_num, batchBytes) { let txStatus = new TxStatus(0); - let config = require(configPath); - let restApiUrl = config.sawtooth.network.restapi.url; + let restApiUrl = getRESTUrl(); const request = require('request-promise'); let options = { method: 'POST', @@ -164,15 +249,16 @@ function submitBatches(batchBytes) { }; return request(options) .then(function (body) { - let link = JSON.parse(body).link; - return getBatchStatus(link, txStatus); + let txnStatus = getBatchEventResponse(block_num, txStatus); + return Promise.resolve(txnStatus); }) .catch(function (err) { - log('Submit batches failed, ' + (err.stack?err.stack:err)); + logger.error('Submit batches failed, ' + (err.stack?err.stack:err)); return Promise.resolve(txStatus); }); } + /** * Sawtooth class, which implements the caliper's NBI for hyperledger sawtooth lake */ @@ -184,7 +270,6 @@ class Sawtooth extends BlockchainInterface { constructor(config_path) { super(config_path); configPath = config_path; - this.batchBuilder; } /** @@ -215,7 +300,22 @@ class Sawtooth extends BlockchainInterface { * @return {Promise} The return promise. */ getContext(name, args) { - return Promise.resolve(); + let config = require(this.configPath); + let context = config.sawtooth.context; + if(typeof context === 'undefined') { + //let config = require(configPath); + let validatorUrl = config.sawtooth.network.validator.url; + if(validatorUrl === null) { + logger.error('Error: Validator url is missing!!!'); + } + let stream = new Stream(validatorUrl); + stream.connect(() => { + subscribe(stream); + stream.onReceive(handleEvent); + }); + context = {stream: stream}; + } + return Promise.resolve(context); } @@ -225,8 +325,7 @@ class Sawtooth extends BlockchainInterface { * @return {Promise} The return promise. */ releaseContext(context) { - // todo: - return Promise.resolve(); + return unsubscribe(context.stream); } /** @@ -238,13 +337,24 @@ class Sawtooth extends BlockchainInterface { * @param {number} timeout The timeout to set for the execution in seconds. * @return {Promise} The promise for the result of the execution. */ - invokeSmartContract(context, contractID, contractVer, args, timeout) { - let builder = BatchBuilderFactory.getBatchBuilder(contractID, contractVer); + async invokeSmartContract(context, contractID, contractVer, args, timeout) { + let config = require(configPath); + let builder = BatchBuilderFactory.getBatchBuilder(contractID, contractVer, config); const batchBytes = builder.buildBatch(args); if(context.engine) { context.engine.submitCallback(args.length); } - return submitBatches(batchBytes).then((batchStats)=>{ + //Get the next block number and status of block to pending + if(currentBlockNum === 0) { + await getCurrentBlockId().then(block_num => { + currentBlockNum = block_num+1; + }); + } + else { + currentBlockNum = currentBlockNum +1; + } + blockCommitSatus.set(currentBlockNum,'pending'); + return submitBatches(currentBlockNum, batchBytes).then((batchStats)=>{ // use batchStats for all transactions in this batch let txStats = []; for(let i = 0 ; i < args.length ; i++) { @@ -277,6 +387,7 @@ class Sawtooth extends BlockchainInterface { getDefaultTxStats(stats, results) { // nothing to do now } + } module.exports = Sawtooth; diff --git a/test/comm/rate-control/pidRate.js b/test/comm/rate-control/pidRate.js index c5d76f2b6..4943d9503 100644 --- a/test/comm/rate-control/pidRate.js +++ b/test/comm/rate-control/pidRate.js @@ -78,7 +78,7 @@ describe('pidRate controller implementation', () => { describe('logging actions', () => { let logStub = sinon.stub(); - PidRate.__set__('Log', logStub); + PidRate.__set__('Logger.debug', logStub); beforeEach(() => { logStub.resetHistory(); @@ -135,7 +135,7 @@ describe('pidRate controller implementation', () => { // Initial sleep time let initialSleep = controller.sleep; - controller.applyRateControl(Date.now(), 10, []); + controller.applyRateControl(Date.now(), 10, new Array(10)); // Sleep time after control application let finalSleep = controller.sleep; @@ -157,7 +157,7 @@ describe('pidRate controller implementation', () => { // Initial sleep time let initialSleep = controller.sleep; - controller.applyRateControl(Date.now(), 11, []); + controller.applyRateControl(Date.now(), 0, new Array(11)); // Sleep time after control application let finalSleep = controller.sleep; @@ -204,7 +204,7 @@ describe('pidRate controller implementation', () => { // Initial sleep time let initialSleep = controller.sleep; - controller.applyRateControl(Date.now(), 10, []); + controller.applyRateControl(Date.now(), 10, new Array(10)); // Sleep time after control application let finalSleep = controller.sleep; @@ -229,7 +229,7 @@ describe('pidRate controller implementation', () => { // Initial sleep time let initialSleep = controller.sleep; - controller.applyRateControl(Date.now(), 11, []); + controller.applyRateControl(Date.now(), 11, new Array(11)); // Sleep time after control application let finalSleep = controller.sleep; @@ -279,7 +279,7 @@ describe('pidRate controller implementation', () => { // Initial sleep time let initialSleep = controller.sleep; - controller.applyRateControl(Date.now(), 10, []); + controller.applyRateControl(Date.now(), 10, new Array(10)); // Sleep time after control application let finalSleep = controller.sleep; @@ -304,7 +304,7 @@ describe('pidRate controller implementation', () => { // Initial sleep time let initialSleep = controller.sleep; - controller.applyRateControl(Date.now(), 11, []); + controller.applyRateControl(Date.now(), 11, new Array(11)); // Sleep time after control application let finalSleep = controller.sleep; diff --git a/test/sawtooth/Application/BatchBuilderFactory.js b/test/sawtooth/Application/BatchBuilderFactory.js new file mode 100644 index 000000000..cf6c8ac2b --- /dev/null +++ b/test/sawtooth/Application/BatchBuilderFactory.js @@ -0,0 +1,130 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +'use strict'; + +const rewire = require('rewire'); +const BatchBuilderFactory = rewire('../../../src/sawtooth/Application/BatchBuilderFactory'); +const Util = require('../../../src/comm/util.js'); + +const chai = require('chai'); +chai.should(); +const assert = chai.assert; + +describe('BatchBuilderFactory implementation', () => { + describe('#getBatchBuilder', () => { + it('should error with no batch builders defined', () => { + try { + BatchBuilderFactory.getBatchBuilder('test', '1.0', { + sawtooth: {} + }); + assert.fail(null, null, 'Exception expected'); + } catch (err) { + if (err.constructor.name === 'AssertionError') { + throw err; + } + err.message.should.equal('There are no batch builders defined in the configuration'); + } + }); + + it('should error if there is no matching family', () => { + try { + BatchBuilderFactory.getBatchBuilder('test', '1.0', { + sawtooth: { + batchBuilders: { + other: { '2.0': 'some/other/path' } + } + } + }); + assert.fail(null, null, 'Exception expected'); + } catch (err) { + if (err.constructor.name === 'AssertionError') { + throw err; + } + err.message.should.equal('There is no batch builder for test'); + } + }); + + it('should error if there is no matching family+version', () => { + try { + BatchBuilderFactory.getBatchBuilder('test', '1.0', { + sawtooth: { + batchBuilders: { + test: { '0.1': 'some/path' }, + other: { '2.0': 'some/other/path' } + } + } + }); + assert.fail(null, null, 'Exception expected'); + } catch (err) { + if (err.constructor.name === 'AssertionError') { + throw err; + } + err.message.should.equal('There is no batch builder for test[1.0]'); + } + }); + + it('should alter version v0 to 1.0', () => { + try { + BatchBuilderFactory.getBatchBuilder('test', 'v0', { + sawtooth: { + batchBuilders: { + test: { '0.1': 'some/path' }, + other: { '2.0': 'some/other/path' } + } + } + }); + assert.fail(null, null, 'Exception expected'); + } catch (err) { + if (err.constructor.name === 'AssertionError') { + throw err; + } + err.message.should.equal('There is no batch builder for test[1.0]'); + } + }); + + it('should error if unable to import the file', () => { + try { + BatchBuilderFactory.getBatchBuilder('test', '1.0', { + sawtooth: { + batchBuilders: { + test: { '1.0': 'some/path' }, + other: { '2.0': 'some/other/path' } + } + } + }); + assert.fail(null, null, 'Exception expected'); + } catch (err) { + if (err.constructor.name === 'AssertionError') { + throw err; + } + err.message.should.equal('Unable to load batch builder for test[1.0] at some/path::'+ + 'Cannot find module \''+Util.resolvePath('some/path')+'\''); + } + }); + + it('should be able to return a batch builder', () => { + const batchBuilder = BatchBuilderFactory.getBatchBuilder('test', '1.0', { + sawtooth: { + batchBuilders: { + test: { '1.0': 'src/sawtooth/Application/SimpleBatchBuilder' }, + other: { '2.0': 'some/other/path' } + } + } + }); + batchBuilder.constructor.name.should.equal('SimpleBatchBuilder'); + }); + }); + +}); \ No newline at end of file