From 38ef43511cea11281c1dbf5c38855ba848ea86d2 Mon Sep 17 00:00:00 2001 From: Gabor Hosszu Date: Mon, 19 Sep 2016 15:15:15 +0200 Subject: [PATCH 01/18] Add rocksdb config parameters to core.yaml [FAB-349] Change-Id: I93ac3badea5ff6a3abf4c32af26468f6006f70cc Signed-off-by: Gabor Hosszu --- core/db/db.go | 26 ++++++++++++++++++++++++++ peer/core.yaml | 6 +++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/core/db/db.go b/core/db/db.go index a570341cdc2..bdcf45f8bd0 100644 --- a/core/db/db.go +++ b/core/db/db.go @@ -29,6 +29,12 @@ import ( ) var dbLogger = logging.MustGetLogger("db") +var rocksDBLogLevelMap = map[string]gorocksdb.InfoLogLevel{ + "debug": gorocksdb.DebugInfoLogLevel, + "info": gorocksdb.InfoInfoLogLevel, + "warn": gorocksdb.WarnInfoLogLevel, + "error": gorocksdb.ErrorInfoLogLevel, + "fatal": gorocksdb.FatalInfoLogLevel} const blockchainCF = "blockchainCF" const stateCF = "stateCF" @@ -159,6 +165,26 @@ func (openchainDB *OpenchainDB) open() { opts := gorocksdb.NewDefaultOptions() defer opts.Destroy() + maxLogFileSize := viper.GetInt("peer.db.maxLogFileSize") + if maxLogFileSize > 0 { + dbLogger.Infof("Setting rocksdb maxLogFileSize to %d", maxLogFileSize) + opts.SetMaxLogFileSize(maxLogFileSize) + } + + keepLogFileNum := viper.GetInt("peer.db.keepLogFileNum") + if keepLogFileNum > 0 { + dbLogger.Infof("Setting rocksdb keepLogFileNum to %d", keepLogFileNum) + opts.SetKeepLogFileNum(keepLogFileNum) + } + + logLevelStr := viper.GetString("peer.db.loglevel") + logLevel, ok := rocksDBLogLevelMap[logLevelStr] + + if ok { + dbLogger.Infof("Setting rocks db InfoLogLevel to %d", logLevel) + opts.SetInfoLogLevel(logLevel) + } + opts.SetCreateIfMissing(missing) opts.SetCreateIfMissingColumnFamilies(true) diff --git a/peer/core.yaml b/peer/core.yaml index 034fd04f9b9..97be3f27841 100644 --- a/peer/core.yaml +++ b/peer/core.yaml @@ -213,7 +213,11 @@ peer: # Path on the file system where peer will store data fileSystemPath: /var/hyperledger/production - + # rocksdb configurations + db: + maxLogFileSize: 10485760 + keepLogFileNum: 10 + logLevel: "warn" profile: enabled: false From cc31c238461ebbe4abef2cfe314f7e24561263d1 Mon Sep 17 00:00:00 2001 From: Patrick Mullaney Date: Tue, 20 Sep 2016 19:45:09 -0400 Subject: [PATCH 02/18] node-SDK: add multi-callback registrations This patch allows the sdk to handle multiple registrations on the same event criteria. It also enables registrations for all events for a particular chaincode. Change-Id: I2caa60e0080a8b41e9a8bf5d61ae671eaf09814a Signed-off-by: Patrick Mullaney --- sdk/node/src/hfc.ts | 64 ++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/sdk/node/src/hfc.ts b/sdk/node/src/hfc.ts index 00e1f97447e..440b865f5ab 100644 --- a/sdk/node/src/hfc.ts +++ b/sdk/node/src/hfc.ts @@ -2842,15 +2842,16 @@ export function newFileKeyValStore(dir:string):KeyValStore { /** * The ChainCodeCBE is used internal to the EventHub to hold chaincode event registration callbacks. */ -class ChainCodeCBE { +export class ChainCodeCBE { + // chaincode id ccid: string; - eventname: string; - payload: Uint8Array; + // event name regex filter + eventNameFilter: RegExp; + // callback function to invoke on successful filter match cb: Function; - constructor(ccid: string,eventname: string,payload: Uint8Array, cb: Function) { + constructor(ccid: string, eventNameFilter: string, cb: Function) { this.ccid = ccid; - this.eventname = eventname; - this.payload = payload; + this.eventNameFilter = new RegExp(eventNameFilter); this.cb = cb; } } @@ -2879,7 +2880,7 @@ export class EventHub { this.chaincodeRegistrants = new HashTable(); this.blockRegistrants = new Set(); this.txRegistrants = new HashTable(); - this.peeraddr = "localhost:7053"; + this.peeraddr = null; this.connected = false; } @@ -2893,6 +2894,7 @@ export class EventHub { public connect() { if (this.connected) return; + if (!this.peeraddr) throw Error("Must set peer address before connecting."); this.events = grpc.load(__dirname + "/protos/events.proto" ).protos; this.client = new this.events.Events(this.peeraddr,grpc.credentials.createInsecure()); this.call = this.client.chat(); @@ -2902,11 +2904,15 @@ export class EventHub { let eh = this; // for callback context this.call.on('data', function(event) { if ( event.Event == "chaincodeEvent" ) { - var cbe = eh.chaincodeRegistrants.get(event.chaincodeEvent.chaincodeID + "/" + event.chaincodeEvent.eventName); - if ( cbe ) { - cbe.payload = event.chaincodeEvent.payload; - cbe.cb(cbe); - } + var cbtable = eh.chaincodeRegistrants.get(event.chaincodeEvent.chaincodeID); + if( !cbtable ) { + return; + } + cbtable.forEach(function (cbe) { + if ( cbe.eventNameFilter.test(event.chaincodeEvent.eventName)) { + cbe.cb(event.chaincodeEvent); + } + }); } else if ( event.Event == "block") { eh.blockRegistrants.forEach(function(cb){ cb(event.block); @@ -2928,19 +2934,35 @@ export class EventHub { this.connected = false; } - public registerChaincodeEvent(ccid: string, eventname: string, callback: Function){ + public registerChaincodeEvent(ccid: string, eventname: string, callback: Function): ChainCodeCBE { if (!this.connected) return; - let cb = new ChainCodeCBE(ccid, eventname, null, callback); - let register = { register: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid , eventName: eventname }} ] }}; - this.chaincodeRegistrants.put(ccid + "/" + eventname, cb); - this.call.write(register); + let cb = new ChainCodeCBE(ccid, eventname, callback); + let cbtable = this.chaincodeRegistrants.get(ccid); + if ( !cbtable ) { + cbtable = new Set(); + this.chaincodeRegistrants.put(ccid, cbtable); + cbtable.add(cb); + let register = { register: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid , eventName: "" }} ] }}; + this.call.write(register); + } else { + cbtable.add(cb); + } + return cb; } - public unregisterChaincodeEvent(ccid: string, eventname: string){ + public unregisterChaincodeEvent(cbe: ChainCodeCBE){ if (!this.connected) return; - var unregister = { unregister: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid, eventName: eventname }} ] }}; - this.chaincodeRegistrants.remove(ccid + "/" + eventname); - this.call.write(unregister); + let cbtable = this.chaincodeRegistrants.get(cbe.ccid); + if ( !cbtable ) { + debug("No event registration for ccid %s ", cbe.ccid); + return; + } + cbtable.delete(cbe); + if( cbtable.size <= 0 ) { + var unregister = { unregister: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: cbe.ccid, eventName: "" }} ] }}; + this.chaincodeRegistrants.remove(cbe.ccid); + this.call.write(unregister); + } } public registerBlockEvent(callback:Function){ From c974285bc1617d62609651f965053cd3ab5a92c0 Mon Sep 17 00:00:00 2001 From: Patrick Mullaney Date: Wed, 21 Sep 2016 14:30:37 -0400 Subject: [PATCH 03/18] node-SDK: add unit tests for chaincode events This patch adds a series of chaincode event unit tests and addresses FAB-391 Change-Id: I7b77bbbfe8d4c12146cd4cc0e306eafe4491be58 Signed-off-by: Patrick Mullaney --- sdk/node/bin/run-unit-tests.sh | 13 + sdk/node/test/unit/event-tests.js | 516 ++++++++++++++++++++++++++++++ 2 files changed, 529 insertions(+) create mode 100644 sdk/node/test/unit/event-tests.js diff --git a/sdk/node/bin/run-unit-tests.sh b/sdk/node/bin/run-unit-tests.sh index a892f5cad85..9e6f332903c 100755 --- a/sdk/node/bin/run-unit-tests.sh +++ b/sdk/node/bin/run-unit-tests.sh @@ -82,6 +82,7 @@ runTests() { runAssetMgmtTests runAssetMgmtWithRolesTests runAssetMgmtWithDynamicRolesTests + runEventTests echo "End running tests in network mode" } @@ -227,6 +228,18 @@ runAssetMgmtWithDynamicRolesTests() { echo "END running asset management with dynamic roles tests" } +runEventTests() { + echo "BEGIN running event-tests ..." + preExample eventsender mycc5 + node $UNITTEST/event-tests.js + if [ $? -ne 0 ]; then + echo "ERROR running event-tests!" + NODE_ERR_CODE=1 + fi + postExample eventsender + echo "END running event-tests" +} + # start process # $1 is executable path with any args # $2 is the log file diff --git a/sdk/node/test/unit/event-tests.js b/sdk/node/test/unit/event-tests.js new file mode 100644 index 00000000000..ad045b57ebf --- /dev/null +++ b/sdk/node/test/unit/event-tests.js @@ -0,0 +1,516 @@ +/** + * Copyright London Stock Exchange 2016 All Rights Reserved. + * + * 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. + */ + +var hfc = require('../..'); +var test = require('tape'); +var util = require('util'); +var fs = require('fs'); + +// +// Create a test chain +// + +var chain = hfc.newChain("testChain"); + +// +// Configure the test chain +// +// Set the directory for the local file-based key value store, point to the +// address of the membership service, and add an associated peer node. +// +// If the "tlsca.cert" file exists then the client-sdk will +// try to connect to the member services using TLS. +// The "tlsca.cert" is supposed to contain the root certificate (in PEM format) +// to be used to authenticate the member services certificate. +// + +chain.setKeyValStore(hfc.newFileKeyValStore('/tmp/keyValStore')); +if (fs.existsSync("tlsca.cert")) { + chain.setMemberServicesUrl("grpcs://localhost:7054", fs.readFileSync('tlsca.cert')); +} else { + chain.setMemberServicesUrl("grpc://localhost:7054"); +} +chain.addPeer("grpc://localhost:7051"); +chain.eventHubConnect("localhost:7053"); + +process.on('exit', function (){ + chain.eventHubDisconnect(); +}); + +// +// Set the chaincode deployment mode to either developent mode (user runs chaincode) +// or network mode (code package built and sent to the peer). +// + +var mode = process.env['DEPLOY_MODE']; +console.log("$DEPLOY_MODE: " + mode); +if (mode === 'dev') { + chain.setDevMode(true); +} else { + chain.setDevMode(false); +} + +// +// Configure test users +// +// Set the values required to register a user with the certificate authority. +// + +test_user1 = { + name: "WebApp_user1", + role: 1, // Client + affiliation: "bank_a" +}; + +// +// Declare variables to store the test user Member objects returned after +// registration and enrollment as they will be used across multiple tests. +// + +var test_user_Member1; + +// +// Declare test variables that will be used to store chaincode values used +// across multiple tests. +// + +// Path to the local directory containing the chaincode project under $GOPATH +var testChaincodePath = "github.com/eventsender/"; + +// Chaincode hash that will be filled in by the deployment operation or +// chaincode name that will be referenced in development mode. +var testChaincodeName = "mycc5"; + +// testChaincodeID will store the chaincode ID value after deployment. +var testChaincodeID; + +function getUser(name, cb) { + chain.getUser(name, function (err, user) { + if (err) return cb(err); + if (user.isEnrolled()) return cb(null, user); + // User is not enrolled yet, so perform both registration and enrollment + // The chain registrar is already set inside 'Set chain registrar' test + var registrationRequest = { + enrollmentID: name, + affiliation: "bank_a" + }; + user.registerAndEnroll(registrationRequest, function (err) { + if (err) cb(err, null) + cb(null, user) + }); + }); +} + +// +// Enroll the WebAppAdmin member and set as registrar then register +// and enroll new user with certificate authority +// This test is a prerequisite to further tests +// + +test('Set up chain prerequisites', function (t) { + t.plan(5); + + // Get the WebAppAdmin member + chain.getMember("WebAppAdmin", function (err, WebAppAdmin) { + if (err) { + t.fail("Failed to get WebAppAdmin member " + " ---> " + err); + t.end(err); + process.exit(1); + } else { + t.pass("Successfully got WebAppAdmin member" /*+ " ---> " + JSON.stringify(crypto)*/); + + // Enroll the WebAppAdmin member with the certificate authority using + // the one time password hard coded inside the membersrvc.yaml. + pw = "DJY27pEnl16d"; + WebAppAdmin.enroll(pw, function (err, crypto) { + if (err) { + t.fail("Failed to enroll WebAppAdmin member " + " ---> " + err); + t.end(err); + process.exit(1); + } else { + t.pass("Successfully enrolled WebAppAdmin member" /*+ " ---> " + JSON.stringify(crypto)*/); + + // Confirm that the WebAppAdmin token has been created in the key value store + path = chain.getKeyValStore().dir + "/member." + WebAppAdmin.getName(); + + fs.exists(path, function (exists) { + if (exists) { + t.pass("Successfully stored client token" /*+ " ---> " + WebAppAdmin.getName()*/); + } else { + t.fail("Failed to store client token for " + WebAppAdmin.getName() + " ---> " + err); + t.end(err); + // Exit the test script after a failure + process.exit(1); + } + chain.setRegistrar(WebAppAdmin); + // Register and enroll test_user + getUser(test_user1.name, function (err, user) { + if (err) { + t.fail("Failed to get " + test_user1.name + " ---> ", err); + t.end(err); + // Exit the test script after a failure + process.exit(1); + } else { + test_user_Member1 = user; + + t.pass("Successfully registered and enrolled " + test_user_Member1.getName()); + + // Confirm that the user token has been created in the key value store + path = chain.getKeyValStore().dir + "/member." + test_user1.name; + fs.exists(path, function (exists) { + if (exists) { + t.pass("Successfully stored client token" /*+ " ---> " + test_user1.name*/); + } else { + t.fail("Failed to store client token for " + test_user1.name + " ---> " + err); + t.end(err); + // Exit the test script after a failure + process.exit(1); + } + }); + } + }); + }); + } + }); + } + }); +}); + +// +// Create and issue a chaincode deploy request by the test user, who was +// registered and enrolled in the UT above. Deploy a testing chaincode from +// a local directory in the user's $GOPATH. +// + +test('Deploy a chaincode by enrolled user', function (t) { + t.plan(1); + + // Construct the deploy request + var deployRequest = { + // Function to trigger + fcn: "init", + // Arguments to the initializing function + args: [] + }; + + if (mode === 'dev') { + // Name required for deploy in development mode + deployRequest.chaincodeName = testChaincodeName; + } else { + // Path (under $GOPATH) required for deploy in network mode + deployRequest.chaincodePath = testChaincodePath; + } + + // Trigger the deploy transaction + var deployTx = test_user_Member1.deploy(deployRequest); + + // the deploy complete is triggered as a result of a fabric deploy + // complete event automatically when a event source is connected + deployTx.on('complete', function (results) { + // Deploy request completed successfully + console.log(util.format("deploy results: %j", results)); + // Set the testChaincodeID for subsequent tests + testChaincodeID = results.chaincodeID; + console.log("testChaincodeID:" + testChaincodeID); + t.pass(util.format("Successfully deployed chaincode: request=%j, response=%j", deployRequest, results)); + }); + deployTx.on('error', function (err) { + // Deploy request failed + t.fail(util.format("Failed to deploy chaincode: request=%j, error=%j", deployRequest, err)); + // Exit the test script after a failure + process.exit(1); + }); +}); + +// +// Issue a chaincode invoke to generate event and listen for the event +// by registering with chaincode id and event name +// + +test('Invoke chaincode and have it generate an event', function (t) { + t.plan(2); + + var evtstring = "event-test"; + // Construct the invoke request + var invokeRequest = { + // Name (hash) required for invoke + chaincodeID: testChaincodeID, + // Function to trigger + fcn: "invoke", + // Parameters for the invoke function + args: [evtstring] + }; + var eh = chain.getEventHub(); + var duration = chain.getInvokeWaitTime() * 1000; + var timedout = true; + var timeoutId = null; + + // register for chaincode event + var regid = eh.registerChaincodeEvent(testChaincodeID, "^evtsender$", function(event) { + timedout = false; + if (timeoutId) { + clearTimeout(timeoutId); + } + t.equal(event.payload.toString(), "Event 0," + evtstring, "Successfully received expected chaincode event payload"); + eh.unregisterChaincodeEvent(regid); + }); + // Trigger the invoke transaction + var invokeTx = test_user_Member1.invoke(invokeRequest); + // set timout on event sent by chaincode invoke + timeoutId = setTimeout(function() { + if(timedout) { + eh.unregisterChaincodeEvent(regid); + t.fail("Failed to receive chaincode event"); + process.exit(1); + } + }, + duration); + + // Print the invoke results + invokeTx.on('complete', function (results) { + // Invoke transaction submitted successfully + t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); + }); + invokeTx.on('error', function (err) { + // Invoke transaction submission failed + t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); + // Exit the test script after a failure + process.exit(1); + }); +}); +// +// Issue a chaincode invoke to generate event and listen for the event +// on 2 registrations +// + +test('Invoke chaincode, have it generate an event, and receive event on 2 registrations', function (t) { + t.plan(3); + + var evtstring = "event-test"; + // Construct the invoke request + var invokeRequest = { + // Name (hash) required for invoke + chaincodeID: testChaincodeID, + // Function to trigger + fcn: "invoke", + // Parameters for the invoke function + args: [evtstring] + }; + var eh = chain.getEventHub(); + var duration = chain.getInvokeWaitTime() * 1000; + var timedout = true; + var timeoutId = null; + var eventcount = 0; + + // register for chaincode event + var regid1 = eh.registerChaincodeEvent(testChaincodeID, "^evtsender$", function(event) { + eventcount++; + if (eventcount > 1) { + if (timeoutId) { + clearTimeout(timeoutId); + } + } + t.equal(event.payload.toString(), "Event 1," + evtstring, "Successfully received expected chaincode event payload"); + eh.unregisterChaincodeEvent(regid1); + }); + // register for chaincode event + var regid2 = eh.registerChaincodeEvent(testChaincodeID, "^evtsender$", function(event) { + eventcount++; + if (eventcount > 1) { + if (timeoutId) { + clearTimeout(timeoutId); + } + } + t.equal(event.payload.toString(), "Event 1," + evtstring, "Successfully received expected chaincode event payload"); + eh.unregisterChaincodeEvent(regid2); + }); + // Trigger the invoke transaction + var invokeTx = test_user_Member1.invoke(invokeRequest); + // set timout on event sent by chaincode invoke + timeoutId = setTimeout(function() { + if(eventcount > 1) { + eh.unregisterChaincodeEvent(regid1); + eh.unregisterChaincodeEvent(regid2); + t.fail("Failed to receive chaincode event"); + process.exit(1); + } + }, + duration); + + // Print the invoke results + invokeTx.on('complete', function (results) { + // Invoke transaction submitted successfully + t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); + }); + invokeTx.on('error', function (err) { + // Invoke transaction submission failed + t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); + // Exit the test script after a failure + process.exit(1); + }); +}); + +// +// Issue a chaincode invoke to generate event and listen for the event +// by registering with chaincode id and wildcarded event name +// + +test('Generate chaincode event and receive it with wildcard', function (t) { + t.plan(2); + + var evtstring = "event-test"; + // Construct the invoke request + var invokeRequest = { + // Name (hash) required for invoke + chaincodeID: testChaincodeID, + // Function to trigger + fcn: "invoke", + // Parameters for the invoke function + args: [evtstring] + }; + var eh = chain.getEventHub(); + var duration = chain.getInvokeWaitTime() * 1000; + var timedout = true; + var timeoutId = null; + + // register for chaincode event with wildcard event name + var regid = eh.registerChaincodeEvent(testChaincodeID, ".*", function(event) { + timedout = false; + if (timeoutId) { + clearTimeout(timeoutId); + } + t.equal(event.payload.toString(), "Event 2," + evtstring, "Successfully received expected chaincode event payload"); + eh.unregisterChaincodeEvent(regid); + }); + // Trigger the invoke transaction + var invokeTx = test_user_Member1.invoke(invokeRequest); + // set timout on event sent by chaincode invoke + timeoutId = setTimeout(function() { + if(timedout) { + eh.unregisterChaincodeEvent(regid); + t.fail("Failed to receive chaincode event"); + process.exit(1); + } + }, + duration); + + // Print the invoke results + invokeTx.on('complete', function (results) { + // Invoke transaction submitted successfully + t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); + }); + invokeTx.on('error', function (err) { + // Invoke transaction submission failed + t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); + // Exit the test script after a failure + process.exit(1); + }); +}); + +// +// Issue a chaincode invoke to generate event and listen for the event +// by registering with chaincode id and a bogus event name +// + +test('Generate an event that fails to be received', function (t) { + t.plan(2); + + var evtstring = "event-test"; + // Construct the invoke request + var invokeRequest = { + // Name (hash) required for invoke + chaincodeID: testChaincodeID, + // Function to trigger + fcn: "invoke", + // Parameters for the invoke function + args: [evtstring] + }; + var eh = chain.getEventHub(); + var duration = chain.getInvokeWaitTime() * 1000; + var timedout = true; + var timeoutId = null; + + // register for chaincode event with bogus event name + var regid = eh.registerChaincodeEvent(testChaincodeID, "bogus", function(event) { + timedout = false; + if (timeoutId) { + clearTimeout(timeoutId); + } + t.fail("Received chaincode event from bogus registration"); + eh.unregisterChaincodeEvent(regid); + process.exit(1); + }); + // Trigger the invoke transaction + var invokeTx = test_user_Member1.invoke(invokeRequest); + // set timout on event sent by chaincode invoke + timeoutId = setTimeout(function() { + if(timedout) { + eh.unregisterChaincodeEvent(regid); + t.pass("Failed to receive chaincode event"); + } + }, + duration); + + // Print the invoke results + invokeTx.on('complete', function (results) { + // Invoke transaction submitted successfully + t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); + }); + invokeTx.on('error', function (err) { + // Invoke transaction submission failed + t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); + // Exit the test script after a failure + process.exit(1); + }); +}); + +// +// +// Create and issue a chaincode query request by the test user, who was +// registered and enrolled in the UT above. Query a chaincode for +// number of events generated. +// + +test('Query chaincode state for number of events sent', function (t) { + t.plan(1); + + // Construct the query request + var queryRequest = { + // Name (hash) required for query + chaincodeID: testChaincodeID, + // Function to trigger + fcn: "query", + // Existing state variable to retrieve + args: [""] + }; + + // Trigger the query transaction + var queryTx = test_user_Member1.query(queryRequest); + + // Print the query results + queryTx.on('complete', function (results) { + var result = JSON.parse(results.result.toString()); + var count = parseInt(result.NoEvents); + t.equal(count, 4, "Successfully queried correct number of events generated."); + chain.eventHubDisconnect(); + }); + queryTx.on('error', function (err) { + // Query failed + t.fail(util.format("Failed to query chaincode state: request=%j, error=%j", queryRequest, err)); + t.end(err); + }); +}); + From 4a78b412ed26cae8757bf34d7f12325a6485e9ef Mon Sep 17 00:00:00 2001 From: Satheesh Kathamuthu Date: Wed, 28 Sep 2016 18:30:21 +0530 Subject: [PATCH 04/18] Java shim build update in DEV mode Modify build instruction for Java shim to reflect publishing shim-client.jar to local Maven repo FIX FAB-439 https://jira.hyperledger.org/browse/FAB-439 Change-Id: I2a2e87cad0fb7bc386f107e75389ffceafe3977c Signed-off-by: Satheesh Kathamuthu --- docs/Setup/JAVAChaincode.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/Setup/JAVAChaincode.md b/docs/Setup/JAVAChaincode.md index b62857b6140..519420126e7 100644 --- a/docs/Setup/JAVAChaincode.md +++ b/docs/Setup/JAVAChaincode.md @@ -74,15 +74,20 @@ Note: This guide generally assumes you have followed the Chaincode development e make peer peer node start --peer-chaincodedev ``` -3. Open the second Vagrant terminal, and change to Java shim root folder and run gradle build, +3. Open the second Vagrant terminal and build the Java shim layer and publish it to Local Maven Repo +``` +cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java +gradle -b build.gradle clean +gradle -b build.gradle build +``` +4. Change to examples folder to build and run, ``` cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/java/SimpleSample gradle -b build.gradle build ``` -4. Run the SimpleSample chaincode using the `gradle -b build.gradle run` - -5. Open the third Vagrant terminal to run init and invoke on the chaincode +5. Run the SimpleSample chaincode using the `gradle -b build.gradle run` +6. Open the third Vagrant terminal to run init and invoke on the chaincode peer chaincode deploy -l java -n SimpleSample -c '{"Args": ["init", "a","100", "b", "200"]}' ``` From a96b9edc80e862065cc9bf3404b3bb5e1301f094 Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Sat, 1 Oct 2016 14:45:16 +0200 Subject: [PATCH 05/18] Fix FAB-578 Fix FAB-578 incorrect chaincode signature in REST API fix rest_api.json Change-Id: If2258b09d89a79cdfa73e6897af737a5286ec436 Signed-off-by: Christopher Ferris --- core/rest/rest_api.json | 12 +++--------- docs/API/CoreAPI.md | 18 ++++++------------ 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/core/rest/rest_api.json b/core/rest/rest_api.json index 7bcd6e2bb1c..75ee953a86f 100644 --- a/core/rest/rest_api.json +++ b/core/rest/rest_api.json @@ -451,15 +451,9 @@ "type": "object", "properties": { "type": { - "type": "string", - "default": "GOLANG", - "example": "GOLANG", - "enum":[ - "UNDEFINED", - "GOLANG", - "NODE", - "JAVA" - ], + "type": "integer", + "default": 1, + "example": 1, "description": "Chaincode specification language." }, "chaincodeID": { diff --git a/docs/API/CoreAPI.md b/docs/API/CoreAPI.md index ab6eb9d8ae7..4b622437003 100644 --- a/docs/API/CoreAPI.md +++ b/docs/API/CoreAPI.md @@ -242,8 +242,7 @@ POST host:port/chaincode "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" }, "ctorMsg": { - "function":"init", - "args":["a", "1000", "b", "2000"] + "args":["init", "a", "1000", "b", "2000"] } }, "id": 1 @@ -266,8 +265,7 @@ POST host:port/chaincode "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" }, "ctorMsg": { - "function":"init", - "args":["a", "1000", "b", "2000"] + "args":["init", "a", "1000", "b", "2000"] }, "secureContext": "lukas" }, @@ -304,8 +302,7 @@ Chaincode Invocation Request without security enabled: "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"invoke", - "args":["a", "b", "100"] + "args":["invoke", "a", "b", "100"] } }, "id": 3 @@ -326,8 +323,7 @@ Chaincode Invocation Request with security enabled (add `secureContext` element) "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"invoke", - "args":["a", "b", "100"] + "args":["invoke", "a", "b", "100"] }, "secureContext": "lukas" }, @@ -364,8 +360,7 @@ Chaincode Query Request without security enabled: "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"query", - "args":["a"] + "args":["query", "a"] } }, "id": 5 @@ -386,8 +381,7 @@ Chaincode Query Request with security enabled (add `secureContext` element): "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"query", - "args":["a"] + "args":["query", "a"] }, "secureContext": "lukas" }, From 0370ada68a5707207c3c30e4205062bcc07af4a0 Mon Sep 17 00:00:00 2001 From: Gregory Haskins Date: Mon, 3 Oct 2016 15:28:09 -0400 Subject: [PATCH 06/18] Revert "Merge "Fix FAB-578" into v0.6" This reverts commit 562a35fde501d07706cba4b54a1d29068c51f65e, reversing changes made to 4a78b412ed26cae8757bf34d7f12325a6485e9ef. This was done because we inadvertently merged a good chunk of master when patch a96b9edc80e862 was submitted to the v0.6 branch. We will cherry-pick a96b9edc80e862 in a later patch to restore the fix in the proper way. Change-Id: Ib16c0220e65697a68a5140960b82780c175d9fa2 Signed-off-by: Greg Haskins --- .baseimage-release | 1 - .gitignore | 5 - Makefile | 42 +- core/chaincode/chaincode_support.go | 23 - core/chaincode/chaincodetest.yaml | 18 +- core/chaincode/exectransaction_test.go | 79 +- core/chaincode/handler.go | 52 +- core/chaincode/shim/chaincode.go | 30 +- core/chaincode/shim/mockstub_test.go | 16 - core/ledger/genesis/genesis_test.yaml | 14 +- core/rest/rest_api.json | 12 +- core/rest/rest_test.yaml | 9 +- devenv/Vagrantfile | 2 +- devenv/compile_protos.sh | 2 +- devenv/setup.sh | 26 +- docs/API/AttributesUsage.md | 21 - docs/API/CoreAPI.md | 59 +- docs/CONTRIBUTING.md | 14 +- docs/Setup/Chaincode-setup.md | 2 +- .../noop.md} | 0 docs/abstract_v1.md | 28 - docs/custom_theme/searchbox.html | 5 - docs/images/standalone-app-developer.png | Bin 52033 -> 0 bytes docs/images/web-app-developer.png | Bin 52033 -> 0 bytes docs/index.md | 155 +- .../images/standalone-app-developer.png | Bin 52033 -> 0 bytes docs/nodeSDK/images/web-app-developer.png | Bin 52033 -> 0 bytes docs/nodeSDK/node-sdk-self-contained.md | 99 ++ docs/releases.md | 62 - docs/starter/fabric-starter-kit.md | 171 -- examples/chaincode/go/utxo/Dockerfile | 3 +- examples/sdk/node/docker-compose.yml | 7 +- images/base/.gitignore | 1 + images/base/Dockerfile.in | 5 + images/base/Makefile | 50 + images/base/README.md | 53 + images/base/http/preseed.cfg | 34 + .../images/packer-overview.graffle/data.plist | 1383 +++++++++++++++++ .../images/packer-overview.graffle/image2.png | Bin 0 -> 5818 bytes .../images/packer-overview.graffle/image3.png | Bin 0 -> 6967 bytes .../images/packer-overview.graffle/image4.png | Bin 0 -> 13322 bytes .../images/packer-overview.graffle/image5.png | Bin 0 -> 4149 bytes .../images/packer-overview.graffle/image6.png | Bin 0 -> 9120 bytes images/base/images/packer-overview.png | Bin 0 -> 771664 bytes images/base/packer.json | 105 ++ images/base/release | 1 + .../common/golang_crossCompileSetup.sh | 28 + images/base/scripts/common/init.sh | 5 + images/base/scripts/common/setup.sh | 160 ++ images/base/scripts/docker/init.sh | 4 + images/base/scripts/vagrant/cleanup.sh | 15 + images/base/scripts/vagrant/init.sh | 27 + images/base/scripts/vagrant/vagrant.sh | 13 + images/base/scripts/vagrant/virtualbox.sh | 5 + images/base/scripts/vagrant/zerodisk.sh | 10 + images/src/Dockerfile.in | 2 +- membersrvc/Dockerfile | 9 + membersrvc/ca/ca_test.yaml | 6 +- mkdocs.yml | 20 +- peer/core.yaml | 9 +- protos/devops.proto | 5 +- scripts/provision/common.sh | 8 + scripts/provision/docker.sh | 118 ++ scripts/provision/host.sh | 58 + sdk/node/Makefile | 2 +- sdk/node/bin/run-unit-tests.sh | 13 - sdk/node/src/crypto.ts | 27 +- sdk/node/src/hfc.ts | 72 +- sdk/node/test/unit/event-tests.js | 516 ------ tools/busywork/bin/busy | 109 +- tools/busywork/bin/pprofClient | 89 +- tools/busywork/bin/userModeNetwork | 8 - tools/busywork/counters/driver | 68 +- tools/busywork/tcl/fabric.tcl | 188 ++- tools/busywork/tcl/os.tcl | 102 +- 75 files changed, 2641 insertions(+), 1644 deletions(-) delete mode 100644 .baseimage-release rename docs/{SystemChaincode-noop.md => SystemChaincodes/noop.md} (100%) delete mode 100644 docs/abstract_v1.md delete mode 100644 docs/custom_theme/searchbox.html delete mode 100644 docs/images/standalone-app-developer.png delete mode 100644 docs/images/web-app-developer.png mode change 100644 => 100755 docs/index.md delete mode 100644 docs/nodeSDK/images/standalone-app-developer.png delete mode 100644 docs/nodeSDK/images/web-app-developer.png create mode 100755 docs/nodeSDK/node-sdk-self-contained.md delete mode 100644 docs/releases.md delete mode 100755 docs/starter/fabric-starter-kit.md create mode 100644 images/base/.gitignore create mode 100644 images/base/Dockerfile.in create mode 100644 images/base/Makefile create mode 100644 images/base/README.md create mode 100644 images/base/http/preseed.cfg create mode 100644 images/base/images/packer-overview.graffle/data.plist create mode 100644 images/base/images/packer-overview.graffle/image2.png create mode 100644 images/base/images/packer-overview.graffle/image3.png create mode 100644 images/base/images/packer-overview.graffle/image4.png create mode 100644 images/base/images/packer-overview.graffle/image5.png create mode 100644 images/base/images/packer-overview.graffle/image6.png create mode 100644 images/base/images/packer-overview.png create mode 100644 images/base/packer.json create mode 100644 images/base/release create mode 100755 images/base/scripts/common/golang_crossCompileSetup.sh create mode 100755 images/base/scripts/common/init.sh create mode 100755 images/base/scripts/common/setup.sh create mode 100755 images/base/scripts/docker/init.sh create mode 100644 images/base/scripts/vagrant/cleanup.sh create mode 100755 images/base/scripts/vagrant/init.sh create mode 100755 images/base/scripts/vagrant/vagrant.sh create mode 100755 images/base/scripts/vagrant/virtualbox.sh create mode 100644 images/base/scripts/vagrant/zerodisk.sh create mode 100644 membersrvc/Dockerfile create mode 100755 scripts/provision/common.sh create mode 100755 scripts/provision/docker.sh create mode 100755 scripts/provision/host.sh delete mode 100644 sdk/node/test/unit/event-tests.js diff --git a/.baseimage-release b/.baseimage-release deleted file mode 100644 index 6e8bf73aa55..00000000000 --- a/.baseimage-release +++ /dev/null @@ -1 +0,0 @@ -0.1.0 diff --git a/.gitignore b/.gitignore index 7a9e3f87b43..23147526e14 100755 --- a/.gitignore +++ b/.gitignore @@ -26,8 +26,3 @@ go-carpet-coverage* # make node-sdk copied files sdk/node/lib/protos/* report.xml -.settings -.project -.gradle -build/ -bin/ diff --git a/Makefile b/Makefile index 93dee3c6d5f..1bdf1ec7ced 100644 --- a/Makefile +++ b/Makefile @@ -37,7 +37,7 @@ # - dist-clean - superset of 'clean' that also removes persistent state PROJECT_NAME = hyperledger/fabric -BASE_VERSION = 0.7.0 +BASE_VERSION = 0.6.1-preview IS_RELEASE = false ifneq ($(IS_RELEASE),true) @@ -47,16 +47,13 @@ else PROJECT_VERSION=$(BASE_VERSION) endif +DOCKER_TAG=$(shell uname -m)-$(PROJECT_VERSION) + PKGNAME = github.com/$(PROJECT_NAME) GO_LDFLAGS = -X github.com/hyperledger/fabric/metadata.Version=$(PROJECT_VERSION) CGO_FLAGS = CGO_CFLAGS=" " CGO_LDFLAGS="-lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy" UID = $(shell id -u) -ARCH=$(shell uname -m) CHAINTOOL_RELEASE=v0.9.1 -BASEIMAGE_RELEASE=$(shell cat ./.baseimage-release) - -DOCKER_TAG=$(ARCH)-$(PROJECT_VERSION) -BASE_DOCKER_TAG=$(ARCH)-$(BASEIMAGE_RELEASE) EXECUTABLES = go docker git curl K := $(foreach exec,$(EXECUTABLES),\ @@ -66,9 +63,13 @@ K := $(foreach exec,$(EXECUTABLES),\ SUBDIRS = gotools sdk/node SUBDIRS:=$(strip $(SUBDIRS)) +# Make our baseimage depend on any changes to images/base or scripts/provision +BASEIMAGE_RELEASE = $(shell cat ./images/base/release) +BASEIMAGE_DEPS = $(shell git ls-files images/base scripts/provision) + JAVASHIM_DEPS = $(shell git ls-files core/chaincode/shim/java) PROJECT_FILES = $(shell git ls-files) -IMAGES = src ccenv peer membersrvc javaenv +IMAGES = base src ccenv peer membersrvc javaenv all: peer membersrvc checks @@ -121,14 +122,14 @@ linter: gotools # we may later inject the binary into a different docker environment # This is necessary since we cannot guarantee that binaries built # on the host natively will be compatible with the docker env. -%/bin/protoc-gen-go: Makefile +%/bin/protoc-gen-go: build/image/base/.dummy Makefile @echo "Building $@" @mkdir -p $(@D) @docker run -i \ --user=$(UID) \ -v $(abspath vendor/github.com/golang/protobuf):/opt/gopath/src/github.com/golang/protobuf \ -v $(abspath $(@D)):/opt/gopath/bin \ - hyperledger/fabric-baseimage:$(BASE_DOCKER_TAG) go install github.com/golang/protobuf/protoc-gen-go + hyperledger/fabric-baseimage go install github.com/golang/protobuf/protoc-gen-go build/bin/chaintool: Makefile @echo "Installing chaintool" @@ -171,19 +172,25 @@ build/bin/block-listener: @echo "Binary available as $@" @touch $@ -build/bin/%: $(PROJECT_FILES) +build/bin/%: build/image/base/.dummy $(PROJECT_FILES) @mkdir -p $(@D) @echo "$@" $(CGO_FLAGS) GOBIN=$(abspath $(@D)) go install -ldflags "$(GO_LDFLAGS)" $(PKGNAME)/$(@F) @echo "Binary available as $@" @touch $@ +# Special override for base-image. +build/image/base/.dummy: $(BASEIMAGE_DEPS) + @echo "Building docker base-image" + @mkdir -p $(@D) + @./scripts/provision/docker.sh $(BASEIMAGE_RELEASE) + @touch $@ + # Special override for src-image -build/image/src/.dummy: $(PROJECT_FILES) +build/image/src/.dummy: build/image/base/.dummy $(PROJECT_FILES) @echo "Building docker src-image" @mkdir -p $(@D) @cat images/src/Dockerfile.in \ - | sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \ | sed -e 's/_TAG_/$(DOCKER_TAG)/g' \ > $(@D)/Dockerfile @git ls-files | tar -jcT - > $(@D)/gopath.tar.bz2 @@ -195,7 +202,6 @@ build/image/src/.dummy: $(PROJECT_FILES) build/image/ccenv/.dummy: build/image/src/.dummy build/image/ccenv/bin/protoc-gen-go build/image/ccenv/bin/chaintool Makefile @echo "Building docker ccenv-image" @cat images/ccenv/Dockerfile.in \ - | sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \ | sed -e 's/_TAG_/$(DOCKER_TAG)/g' \ > $(@D)/Dockerfile docker build -t $(PROJECT_NAME)-ccenv $(@D) @@ -210,10 +216,7 @@ build/image/ccenv/.dummy: build/image/src/.dummy build/image/ccenv/bin/protoc-ge build/image/javaenv/.dummy: Makefile $(JAVASHIM_DEPS) @echo "Building docker javaenv-image" @mkdir -p $(@D) - @cat images/javaenv/Dockerfile.in \ - | sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \ - | sed -e 's/_TAG_/$(DOCKER_TAG)/g' \ - > $(@D)/Dockerfile + @cat images/javaenv/Dockerfile.in > $(@D)/Dockerfile @git ls-files core/chaincode/shim/java | tar -jcT - > $(@D)/javashimsrc.tar.bz2 @git ls-files protos core/chaincode/shim/table.proto settings.gradle | tar -jcT - > $(@D)/protos.tar.bz2 docker build -t $(PROJECT_NAME)-javaenv $(@D) @@ -226,7 +229,6 @@ build/image/%/.dummy: build/image/src/.dummy build/docker/bin/% @echo "Building docker $(TARGET)-image" @mkdir -p $(@D)/bin @cat images/app/Dockerfile.in \ - | sed -e 's/_BASE_TAG_/$(BASE_DOCKER_TAG)/g' \ | sed -e 's/_TAG_/$(DOCKER_TAG)/g' \ > $(@D)/Dockerfile cp build/docker/bin/$(TARGET) $(@D)/bin @@ -238,6 +240,10 @@ build/image/%/.dummy: build/image/src/.dummy build/docker/bin/% protos: gotools ./devenv/compile_protos.sh +base-image-clean: + -docker rmi -f $(PROJECT_NAME)-baseimage + -@rm -rf build/image/base ||: + src-image-clean: ccenv-image-clean peer-image-clean membersrvc-image-clean %-image-clean: diff --git a/core/chaincode/chaincode_support.go b/core/chaincode/chaincode_support.go index fd21dfc5304..4a23327313b 100644 --- a/core/chaincode/chaincode_support.go +++ b/core/chaincode/chaincode_support.go @@ -25,7 +25,6 @@ import ( "time" "github.com/golang/protobuf/proto" - logging "github.com/op/go-logging" "github.com/spf13/viper" "golang.org/x/net/context" @@ -35,7 +34,6 @@ import ( "github.com/hyperledger/fabric/core/container/ccintf" "github.com/hyperledger/fabric/core/crypto" "github.com/hyperledger/fabric/core/ledger" - "github.com/hyperledger/fabric/flogging" pb "github.com/hyperledger/fabric/protos" ) @@ -149,21 +147,6 @@ func NewChaincodeSupport(chainname ChainName, getPeerEndpoint func() (*pb.PeerEn s.keepalive = time.Duration(t) * time.Second } - viper.SetEnvPrefix("CORE") - viper.AutomaticEnv() - replacer := strings.NewReplacer(".", "_") - viper.SetEnvKeyReplacer(replacer) - - chaincodeLogLevelString := viper.GetString("logging.chaincode") - chaincodeLogLevel, err := logging.LogLevel(chaincodeLogLevelString) - - if err == nil { - s.chaincodeLogLevel = chaincodeLogLevel.String() - } else { - chaincodeLogger.Infof("chaincode logging level %s is invalid. defaulting to %s\n", chaincodeLogLevelString, flogging.DefaultLoggingLevel().String()) - s.chaincodeLogLevel = flogging.DefaultLoggingLevel().String() - } - return s } @@ -189,7 +172,6 @@ type ChaincodeSupport struct { peerTLSKeyFile string peerTLSSvrHostOrd string keepalive time.Duration - chaincodeLogLevel string } // DuplicateChaincodeHandlerError returned if attempt to register same chaincodeID while a stream already exists. @@ -308,11 +290,6 @@ func (chaincodeSupport *ChaincodeSupport) getArgsAndEnv(cID *pb.ChaincodeID, cLa } else { envs = append(envs, "CORE_PEER_TLS_ENABLED=false") } - - if chaincodeSupport.chaincodeLogLevel != "" { - envs = append(envs, "CORE_LOGGING_CHAINCODE="+chaincodeSupport.chaincodeLogLevel) - } - switch cLang { case pb.ChaincodeSpec_GOLANG, pb.ChaincodeSpec_CAR: //chaincode executable will be same as the name of the chaincode diff --git a/core/chaincode/chaincodetest.yaml b/core/chaincode/chaincodetest.yaml index 18e7483632e..63b7983de97 100644 --- a/core/chaincode/chaincodetest.yaml +++ b/core/chaincode/chaincodetest.yaml @@ -165,6 +165,15 @@ peer: # networkId: test networkId: dev + Dockerfile: | + from hyperledger/fabric-baseimage:latest + # Copy GOPATH src and install Peer + COPY src $GOPATH/src + RUN mkdir -p /var/hyperledger/db + WORKDIR $GOPATH/src/github.com/hyperledger/fabric/peer/ + RUN CGO_CFLAGS=" " CGO_LDFLAGS="-lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy" go install && cp $GOPATH/src/github.com/hyperledger/fabric/peer/core.yaml $GOPATH/bin + + # The Address this Peer will listen on listenAddress: 0.0.0.0:21212 # The Address this Peer will bind to for providing services @@ -354,16 +363,17 @@ chaincode: # This is the basis for the Golang Dockerfile. Additional commands will # be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) - COPY src $GOPATH/src - WORKDIR $GOPATH + from hyperledger/fabric-baseimage + #from utxo:0.1.0 + COPY src $GOPATH/src + WORKDIR $GOPATH car: # This is the basis for the CAR Dockerfile. Additional commands will # be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) + FROM hyperledger/fabric-baseimage # timeout in millisecs for starting up a container and waiting for Register # to come through. 1sec should be plenty for chaincode unit tests diff --git a/core/chaincode/exectransaction_test.go b/core/chaincode/exectransaction_test.go index 0bca0bc93f7..a1d10fcd052 100644 --- a/core/chaincode/exectransaction_test.go +++ b/core/chaincode/exectransaction_test.go @@ -827,18 +827,6 @@ func TestChaincodeInvokeChaincode(t *testing.T) { go grpcServer.Serve(lis) - err = chaincodeInvokeChaincode(t, "") - if err != nil { - t.Fail() - t.Logf("Failed chaincode invoke chaincode : %s", err) - closeListenerAndSleep(lis) - return - } - - closeListenerAndSleep(lis) -} - -func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { var ctxt = context.Background() // Deploy first chaincode @@ -848,7 +836,7 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { f := "init" args := util.ToChaincodeArgs(f, "a", "100", "b", "200") - spec1 := &pb.ChaincodeSpec{Type: 1, ChaincodeID: cID1, CtorMsg: &pb.ChaincodeInput{Args: args}, SecureContext: user} + spec1 := &pb.ChaincodeSpec{Type: 1, ChaincodeID: cID1, CtorMsg: &pb.ChaincodeInput{Args: args}} _, err = deploy(ctxt, spec1) chaincodeID1 := spec1.ChaincodeID.Name @@ -856,6 +844,7 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { t.Fail() t.Logf("Error initializing chaincode %s(%s)", chaincodeID1, err) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec1}) + closeListenerAndSleep(lis) return } @@ -870,7 +859,7 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { f = "init" args = util.ToChaincodeArgs(f, "e", "0") - spec2 := &pb.ChaincodeSpec{Type: 1, ChaincodeID: cID2, CtorMsg: &pb.ChaincodeInput{Args: args}, SecureContext: user} + spec2 := &pb.ChaincodeSpec{Type: 1, ChaincodeID: cID2, CtorMsg: &pb.ChaincodeInput{Args: args}} _, err = deploy(ctxt, spec2) chaincodeID2 := spec2.ChaincodeID.Name @@ -879,6 +868,7 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { t.Logf("Error initializing chaincode %s(%s)", chaincodeID2, err) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec1}) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec2}) + closeListenerAndSleep(lis) return } @@ -888,7 +878,7 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { f = "invoke" args = util.ToChaincodeArgs(f, "e", "1") - spec2 = &pb.ChaincodeSpec{Type: 1, ChaincodeID: cID2, CtorMsg: &pb.ChaincodeInput{Args: args}, SecureContext: user} + spec2 = &pb.ChaincodeSpec{Type: 1, ChaincodeID: cID2, CtorMsg: &pb.ChaincodeInput{Args: args}} // Invoke chaincode var uuid string _, uuid, _, err = invoke(ctxt, spec2, pb.Transaction_CHAINCODE_INVOKE) @@ -898,6 +888,7 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { t.Logf("Error invoking <%s>: %s", chaincodeID2, err) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec1}) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec2}) + closeListenerAndSleep(lis) return } @@ -908,67 +899,13 @@ func chaincodeInvokeChaincode(t *testing.T, user string) (err error) { t.Logf("Incorrect final state after transaction for <%s>: %s", chaincodeID1, err) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec1}) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec2}) + closeListenerAndSleep(lis) return } GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec1}) GetChain(DefaultChain).Stop(ctxt, &pb.ChaincodeDeploymentSpec{ChaincodeSpec: spec2}) - - return -} - -func TestChaincodeInvokeChaincodeWithSec(t *testing.T) { - testDBWrapper.CleanDB(t) - viper.Set("security.enabled", "true") - - //Initialize crypto - if err := crypto.Init(); err != nil { - panic(fmt.Errorf("Failed initializing the crypto layer [%s]", err)) - } - - //set paths for memberservice to pick up - viper.Set("peer.fileSystemPath", filepath.Join(os.TempDir(), "hyperledger", "production")) - viper.Set("server.rootpath", filepath.Join(os.TempDir(), "ca")) - - var err error - var memSrvcLis net.Listener - if memSrvcLis, err = initMemSrvc(); err != nil { - t.Fail() - t.Logf("Error registering user %s", err) - return - } - - time.Sleep(2 * time.Second) - - var peerLis net.Listener - if peerLis, err = initPeer(); err != nil { - finitMemSrvc(memSrvcLis) - t.Fail() - t.Logf("Error registering user %s", err) - return - } - - if err = crypto.RegisterClient("jim", nil, "jim", "6avZQLwcUe9b"); err != nil { - finitMemSrvc(memSrvcLis) - finitPeer(peerLis) - t.Fail() - t.Logf("Error registering user %s", err) - return - } - - //login as jim and test chaincode-chaincode interaction with security - if err = chaincodeInvokeChaincode(t, "jim"); err != nil { - finitMemSrvc(memSrvcLis) - finitPeer(peerLis) - t.Fail() - t.Logf("Error executing test %s", err) - return - } - - //cleanup - finitMemSrvc(memSrvcLis) - finitPeer(peerLis) - + closeListenerAndSleep(lis) } // Test the execution of a chaincode that invokes another chaincode with wrong parameters. Should receive error from diff --git a/core/chaincode/handler.go b/core/chaincode/handler.go index b045a442def..52c66deeef1 100644 --- a/core/chaincode/handler.go +++ b/core/chaincode/handler.go @@ -161,9 +161,9 @@ func (handler *Handler) deleteRangeQueryIterator(txContext *transactionContext, delete(txContext.rangeQueryIteratorMap, txid) } -//THIS CAN BE REMOVED ONCE WE FULL SUPPORT (Invoke and Query) CONFIDENTIALITY WITH CC-CALLING-CC -//Only invocation are allowed, not queries -func (handler *Handler) canCallChaincode(txid string, isQuery bool) *pb.ChaincodeMessage { +//THIS CAN BE REMOVED ONCE WE SUPPORT CONFIDENTIALITY WITH CC-CALLING-CC +//we dissallow chaincode-chaincode interactions till confidentiality implications are understood +func (handler *Handler) canCallChaincode(txid string) *pb.ChaincodeMessage { secHelper := handler.chaincodeSupport.getSecHelper() if secHelper == nil { return nil @@ -176,9 +176,7 @@ func (handler *Handler) canCallChaincode(txid string, isQuery bool) *pb.Chaincod } else if txctx.transactionSecContext == nil { errMsg = fmt.Sprintf("[%s]Error transaction context is nil while checking for confidentiality. Sending %s", shorttxid(txid), pb.ChaincodeMessage_ERROR) } else if txctx.transactionSecContext.ConfidentialityLevel != pb.ConfidentialityLevel_PUBLIC { - if isQuery { - errMsg = fmt.Sprintf("[%s]Error chaincode-chaincode interactions not supported for with privacy enabled. Sending %s", shorttxid(txid), pb.ChaincodeMessage_ERROR) - } + errMsg = fmt.Sprintf("[%s]Error chaincode-chaincode interactions not supported for with privacy enabled. Sending %s", shorttxid(txid), pb.ChaincodeMessage_ERROR) } if errMsg != "" { @@ -211,12 +209,10 @@ func (handler *Handler) encryptOrDecrypt(encrypt bool, txid string, payload []by var err error if txctx.transactionSecContext.Type == pb.Transaction_CHAINCODE_DEPLOY { if enc, err = secHelper.GetStateEncryptor(handler.deployTXSecContext, handler.deployTXSecContext); err != nil { - chaincodeLogger.Errorf("error getting crypto encryptor for deploy tx :%s", err) return nil, fmt.Errorf("error getting crypto encryptor for deploy tx :%s", err) } } else if txctx.transactionSecContext.Type == pb.Transaction_CHAINCODE_INVOKE || txctx.transactionSecContext.Type == pb.Transaction_CHAINCODE_QUERY { if enc, err = secHelper.GetStateEncryptor(handler.deployTXSecContext, txctx.transactionSecContext); err != nil { - chaincodeLogger.Errorf("error getting crypto encryptor %s", err) return nil, fmt.Errorf("error getting crypto encryptor %s", err) } } else { @@ -1050,9 +1046,7 @@ func (handler *Handler) enterBusyState(e *fsm.Event, state string) { err = ledgerObj.DeleteState(chaincodeID, key) } else if msg.Type.String() == pb.ChaincodeMessage_INVOKE_CHAINCODE.String() { //check and prohibit C-call-C for CONFIDENTIAL txs - chaincodeLogger.Debugf("[%s] C-call-C", shorttxid(msg.Txid)) - - if triggerNextStateMsg = handler.canCallChaincode(msg.Txid, false); triggerNextStateMsg != nil { + if triggerNextStateMsg = handler.canCallChaincode(msg.Txid); triggerNextStateMsg != nil { return } chaincodeSpec := &pb.ChaincodeSpec{} @@ -1066,21 +1060,12 @@ func (handler *Handler) enterBusyState(e *fsm.Event, state string) { // Get the chaincodeID to invoke newChaincodeID := chaincodeSpec.ChaincodeID.Name - chaincodeLogger.Debugf("[%s] C-call-C %s", shorttxid(msg.Txid), newChaincodeID) // Create the transaction object chaincodeInvocationSpec := &pb.ChaincodeInvocationSpec{ChaincodeSpec: chaincodeSpec} transaction, _ := pb.NewChaincodeExecute(chaincodeInvocationSpec, msg.Txid, pb.Transaction_CHAINCODE_INVOKE) - tsc := handler.getTxContext(msg.Txid).transactionSecContext - - transaction.Nonce = tsc.Nonce - transaction.ConfidentialityLevel = tsc.ConfidentialityLevel - transaction.ConfidentialityProtocolVersion = tsc.ConfidentialityProtocolVersion - transaction.Metadata = tsc.Metadata - transaction.Cert = tsc.Cert - - // cd the new chaincode if not already running + // Launch the new chaincode if not already running _, chaincodeInput, launchErr := handler.chaincodeSupport.Launch(context.Background(), transaction) if launchErr != nil { payload := []byte(launchErr.Error()) @@ -1232,7 +1217,7 @@ func (handler *Handler) initializeSecContext(tx, depTx *pb.Transaction) error { return nil } -func (handler *Handler) setChaincodeSecurityContext(tx, depTx *pb.Transaction, msg *pb.ChaincodeMessage) error { +func (handler *Handler) setChaincodeSecurityContext(tx *pb.Transaction, msg *pb.ChaincodeMessage) error { chaincodeLogger.Debug("setting chaincode security context...") if msg.SecurityContext == nil { msg.SecurityContext = &pb.ChaincodeSecurityContext{} @@ -1263,13 +1248,6 @@ func (handler *Handler) setChaincodeSecurityContext(tx, depTx *pb.Transaction, m return err } - msg.SecurityContext.Payload = ctorMsgRaw - // TODO: add deploy metadata - if depTx != nil { - msg.SecurityContext.ParentMetadata = depTx.Metadata - } else { - msg.SecurityContext.ParentMetadata = handler.deployTXSecContext.Metadata - } msg.SecurityContext.Payload = ctorMsgRaw msg.SecurityContext.TxTimestamp = tx.Timestamp } @@ -1311,7 +1289,7 @@ func (handler *Handler) initOrReady(txid string, initArgs [][]byte, tx *pb.Trans } //if security is disabled the context elements will just be nil - if err := handler.setChaincodeSecurityContext(tx, depTx, ccMsg); err != nil { + if err := handler.setChaincodeSecurityContext(tx, ccMsg); err != nil { return nil, err } @@ -1339,7 +1317,7 @@ func (handler *Handler) handleQueryChaincode(msg *pb.ChaincodeMessage) { }() //check and prohibit C-call-C for CONFIDENTIAL txs - if serialSendMsg = handler.canCallChaincode(msg.Txid, true); serialSendMsg != nil { + if serialSendMsg = handler.canCallChaincode(msg.Txid); serialSendMsg != nil { return } @@ -1359,16 +1337,6 @@ func (handler *Handler) handleQueryChaincode(msg *pb.ChaincodeMessage) { chaincodeInvocationSpec := &pb.ChaincodeInvocationSpec{ChaincodeSpec: chaincodeSpec} transaction, _ := pb.NewChaincodeExecute(chaincodeInvocationSpec, msg.Txid, pb.Transaction_CHAINCODE_QUERY) - tsc := handler.getTxContext(msg.Txid).transactionSecContext - - transaction.Nonce = tsc.Nonce - transaction.ConfidentialityLevel = tsc.ConfidentialityLevel - transaction.ConfidentialityProtocolVersion = tsc.ConfidentialityProtocolVersion - transaction.Metadata = tsc.Metadata - transaction.Cert = tsc.Cert - - chaincodeLogger.Debugf("[%s]Invoking another chaincode", shorttxid(msg.Txid)) - // Launch the new chaincode if not already running _, chaincodeInput, launchErr := handler.chaincodeSupport.Launch(context.Background(), transaction) if launchErr != nil { @@ -1498,7 +1466,7 @@ func (handler *Handler) sendExecuteMessage(msg *pb.ChaincodeMessage, tx *pb.Tran } //if security is disabled the context elements will just be nil - if err := handler.setChaincodeSecurityContext(tx, nil, msg); err != nil { + if err := handler.setChaincodeSecurityContext(tx, msg); err != nil { return nil, err } diff --git a/core/chaincode/shim/chaincode.go b/core/chaincode/shim/chaincode.go index 003bcb602ad..9fc215659ed 100644 --- a/core/chaincode/shim/chaincode.go +++ b/core/chaincode/shim/chaincode.go @@ -68,7 +68,10 @@ func Start(cc Chaincode) error { backendFormatter := logging.NewBackendFormatter(backend, format) logging.SetBackend(backendFormatter).SetLevel(logging.Level(shimLoggingLevel), "shim") - SetChaincodeLoggingLevel() + viper.SetEnvPrefix("CORE") + viper.AutomaticEnv() + replacer := strings.NewReplacer(".", "_") + viper.SetEnvKeyReplacer(replacer) flag.StringVar(&peerAddress, "peer.address", "", "peer address") @@ -102,31 +105,6 @@ func Start(cc Chaincode) error { return err } -// IsEnabledForLogLevel checks to see if the chaincodeLogger is enabled for a specific logging level -// used primarily for testing -func IsEnabledForLogLevel(logLevel string) bool { - lvl, _ := logging.LogLevel(logLevel) - return chaincodeLogger.IsEnabledFor(lvl) -} - -// SetChaincodeLoggingLevel sets the chaincode logging level to the value -// of CORE_LOGGING_CHAINCODE set from core.yaml by chaincode_support.go -func SetChaincodeLoggingLevel() { - viper.SetEnvPrefix("CORE") - viper.AutomaticEnv() - replacer := strings.NewReplacer(".", "_") - viper.SetEnvKeyReplacer(replacer) - - chaincodeLogLevelString := viper.GetString("logging.chaincode") - chaincodeLogLevel, err := LogLevel(chaincodeLogLevelString) - - if err == nil { - SetLoggingLevel(chaincodeLogLevel) - } else { - chaincodeLogger.Infof("error with chaincode log level: %s level= %s\n", err, chaincodeLogLevelString) - } -} - // StartInProc is an entry point for system chaincodes bootstrap. It is not an // API for chaincodes. func StartInProc(env []string, args []string, cc Chaincode, recv <-chan *pb.ChaincodeMessage, send chan<- *pb.ChaincodeMessage) error { diff --git a/core/chaincode/shim/mockstub_test.go b/core/chaincode/shim/mockstub_test.go index 0a5d417a9d1..39611c65780 100644 --- a/core/chaincode/shim/mockstub_test.go +++ b/core/chaincode/shim/mockstub_test.go @@ -19,8 +19,6 @@ package shim import ( "fmt" "testing" - - "github.com/spf13/viper" ) func TestMockStateRangeQueryIterator(t *testing.T) { @@ -52,17 +50,3 @@ func TestMockStateRangeQueryIterator(t *testing.T) { } } } - -// TestSetChaincodeLoggingLevel uses the utlity function defined in chaincode.go to -// set the chaincodeLogger's logging level -func TestSetChaincodeLoggingLevel(t *testing.T) { - // set log level to a non-default level - testLogLevelString := "debug" - viper.Set("logging.chaincode", testLogLevelString) - - SetChaincodeLoggingLevel() - - if !IsEnabledForLogLevel(testLogLevelString) { - t.FailNow() - } -} diff --git a/core/ledger/genesis/genesis_test.yaml b/core/ledger/genesis/genesis_test.yaml index b78bbcc77fd..7a1010a7680 100644 --- a/core/ledger/genesis/genesis_test.yaml +++ b/core/ledger/genesis/genesis_test.yaml @@ -45,6 +45,14 @@ peer: # networkId: test networkId: dev + Dockerfile: | + from hyperledger/fabric-baseimage + # Copy GOPATH src and install Peer + COPY src $GOPATH/src + RUN mkdir -p /var/hyperledger/db + WORKDIR $GOPATH/src/github.com/hyperledger/fabric/peer/ + RUN CGO_CFLAGS=" " CGO_LDFLAGS="-lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy" go install && cp $GOPATH/src/github.com/hyperledger/fabric/peer/core.yaml $GOPATH/bin + # The Address this Peer will bind to for providing services address: 0.0.0.0:7051 # Whether the Peer should programmatically determine the address to bind to. This case is useful for docker containers. @@ -178,9 +186,9 @@ chaincode: # This is the basis for the Golang Dockerfile. Additional commands will be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) - COPY src $GOPATH/src - WORKDIR $GOPATH + from hyperledger/fabric-baseimage + COPY src $GOPATH/src + WORKDIR $GOPATH #timeout for starting up a container and waiting for Register to come through startuptimeout: 20000 diff --git a/core/rest/rest_api.json b/core/rest/rest_api.json index 75ee953a86f..7bcd6e2bb1c 100644 --- a/core/rest/rest_api.json +++ b/core/rest/rest_api.json @@ -451,9 +451,15 @@ "type": "object", "properties": { "type": { - "type": "integer", - "default": 1, - "example": 1, + "type": "string", + "default": "GOLANG", + "example": "GOLANG", + "enum":[ + "UNDEFINED", + "GOLANG", + "NODE", + "JAVA" + ], "description": "Chaincode specification language." }, "chaincodeID": { diff --git a/core/rest/rest_test.yaml b/core/rest/rest_test.yaml index 6746cc73c74..8393e7332ff 100644 --- a/core/rest/rest_test.yaml +++ b/core/rest/rest_test.yaml @@ -296,16 +296,17 @@ chaincode: # This is the basis for the Golang Dockerfile. Additional commands will # be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) - COPY src $GOPATH/src - WORKDIR $GOPATH + from hyperledger/fabric-baseimage + #from utxo:0.1.0 + COPY src $GOPATH/src + WORKDIR $GOPATH car: # This is the basis for the CAR Dockerfile. Additional commands will # be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) + FROM hyperledger/fabric-ccenv # timeout in millisecs for starting up a container and waiting for Register # to come through. 1sec should be plenty for chaincode unit tests diff --git a/devenv/Vagrantfile b/devenv/Vagrantfile index 54af341894a..8d9d6999daf 100644 --- a/devenv/Vagrantfile +++ b/devenv/Vagrantfile @@ -27,7 +27,7 @@ cd #{SRCMOUNT}/devenv SCRIPT -baseimage_release = File.read '../.baseimage-release' +baseimage_release = File.read '../images/base/release' Vagrant.require_version ">= 1.7.4" Vagrant.configure('2') do |config| diff --git a/devenv/compile_protos.sh b/devenv/compile_protos.sh index cdee9780e41..ad833ecd8d0 100755 --- a/devenv/compile_protos.sh +++ b/devenv/compile_protos.sh @@ -5,7 +5,7 @@ set -eux # Compile protos ALL_PROTO_FILES="$(find . -name "*.proto" -exec readlink -f {} \;)" PROTO_DIRS="$(dirname $ALL_PROTO_FILES | sort | uniq)" -PROTO_DIRS_WITHOUT_JAVA_AND_SDK="$(printf '%s\n' $PROTO_DIRS | grep -v "shim/java" | grep -v "/sdk" | grep -v "/vendor")" +PROTO_DIRS_WITHOUT_JAVA_AND_SDK="$(printf '%s\n' $PROTO_DIRS | grep -v "shim/java" | grep -v "/sdk")" for dir in $PROTO_DIRS_WITHOUT_JAVA_AND_SDK; do cd "$dir" protoc --proto_path="$dir" --go_out=plugins=grpc:. "$dir"/*.proto diff --git a/devenv/setup.sh b/devenv/setup.sh index 591a01c4830..08dac37e90c 100755 --- a/devenv/setup.sh +++ b/devenv/setup.sh @@ -40,6 +40,19 @@ DEVENV_REVISION=`(cd /hyperledger/devenv; git rev-parse --short HEAD)` SCRIPT_DIR="$(readlink -f "$(dirname "$0")")" cat "$SCRIPT_DIR/failure-motd.in" >> /etc/motd +# Update system +apt-get update -qq + +# Prep apt-get for docker install +apt-get install -y apt-transport-https ca-certificates +apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D + +# Add docker repository +echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list + +# Update system +apt-get update -qq + # Storage backend logic case "${DOCKER_STORAGE_BACKEND}" in aufs|AUFS|"") @@ -59,6 +72,9 @@ case "${DOCKER_STORAGE_BACKEND}" in exit 1;; esac +# Install docker +apt-get install -y linux-image-extra-$(uname -r) apparmor docker-engine + # Configure docker DOCKER_OPTS="-s=${DOCKER_STORAGE_BACKEND_STRING} -r=true --api-cors-header='*' -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ${DOCKER_OPTS}" sed -i.bak '/^DOCKER_OPTS=/{h;s|=.*|=\"'"${DOCKER_OPTS}"'\"|};${x;/^$/{s||DOCKER_OPTS=\"'"${DOCKER_OPTS}"'\"|;H};x}' /etc/default/docker @@ -69,6 +85,9 @@ usermod -a -G docker vagrant # Add vagrant user to the docker group # Test docker docker run --rm busybox echo All good +# Run our common setup +/hyperledger/scripts/provision/host.sh + # Set Go environment variables needed by other scripts export GOPATH="/opt/gopath" export GOROOT="/opt/go/" @@ -78,12 +97,9 @@ PATH=$GOROOT/bin:$GOPATH/bin:$PATH sudo mkdir -p /var/hyperledger sudo chown -R vagrant:vagrant /var/hyperledger -# clean any previous builds as they may have image/.dummy files without -# the backing docker images (since we are, by definition, rebuilding the -# filesystem) and then ensure we have a fresh set of our go-tools. -# NOTE: This must be done before the chown below +# Build the actual hyperledger peer (must be done before chown below) cd $GOPATH/src/github.com/hyperledger/fabric -make clean gotools +make clean peer gotools # Ensure permissions are set for GOPATH sudo chown -R vagrant:vagrant $GOPATH diff --git a/docs/API/AttributesUsage.md b/docs/API/AttributesUsage.md index b5774c618a8..fa3bd401dcc 100644 --- a/docs/API/AttributesUsage.md +++ b/docs/API/AttributesUsage.md @@ -93,13 +93,6 @@ To deploy a chaincode with attributes "company" and "position" it should be writ ``` -Or: - -``` -./peer chaincode deploy -u userName -n mycc -c '{"Args": ["init"]}' -a '["position", "company"]' - -``` - #### REST ``` @@ -152,13 +145,6 @@ To invoke "autorizable counter" with attributes "company" and "position" it shou ``` -Or: - -``` -./peer chaincode invoke -u userName -n mycc -c '{"Args": ["increment"]}' -a '["position", "company"]' - -``` - #### REST ``` @@ -216,13 +202,6 @@ To query "autorizable counter" with attributes "company" and "position" it shoul ``` -Or: - -``` -./peer chaincode query -u userName -n mycc -c '{"Args": ["read"]}' -a '["position", "company"]' - -``` - #### REST ``` diff --git a/docs/API/CoreAPI.md b/docs/API/CoreAPI.md index 4b622437003..5981096b057 100644 --- a/docs/API/CoreAPI.md +++ b/docs/API/CoreAPI.md @@ -7,9 +7,9 @@ This document covers the available APIs for interacting with a peer node. Three 1. [CLI](#cli) 2. [REST API](#rest-api) 3. [Node.js Application](#nodejs-application) - * [Using Swagger JS Plugin](#using-swagger-js-plugin) - * [Marbles Demo Application](#marbles-demo-application) - * [Commercial Paper Demo Application](#commercial-paper-demo-application) + * [Using Swagger JS Plugin](#using-swagger-js-plugin) + * [Marbles Demo Application](#marbles-demo-application) + * [Commercial Paper Demo Application](#commercial-paper-demo-application) **Note:** If you are working with APIs with security enabled, please review the [security setup instructions](https://github.com/hyperledger/fabric/blob/master/docs/Setup/Chaincode-setup.md#security-setup-optional) before proceeding. @@ -68,28 +68,13 @@ Command | **stdout** result in the event of success Deploy creates the docker image for the chaincode and subsequently deploys the package to the validating peer. An example is below. -``` -peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}' -``` -Or: - -``` -peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args": ["init", "a","100", "b", "200"]}' -``` +`peer chaincode deploy -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'` The response to the chaincode deploy command will contain the chaincode identifier (hash) which will be required on subsequent `chaincode invoke` and `chaincode query` commands in order to identify the deployed chaincode. With security enabled, modify the command to include the -u parameter passing the username of a logged in user as follows: -``` -peer chaincode deploy -u jim -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}' -``` - -Or: - -``` -peer chaincode deploy -u jim -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args": ["init", "a","100", "b", "200"]}' -``` +`peer chaincode deploy -u jim -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Function":"init", "Args": ["a","100", "b", "200"]}'` **Note:** If your GOPATH environment variable contains more than one element, the chaincode must be found in the first one or deployment will fail. @@ -172,19 +157,19 @@ You can work with the REST API through any tool of your choice. For example, the To learn about the REST API through Swagger, please take a look at the Swagger document [here](https://github.com/hyperledger/fabric/blob/master/core/rest/rest_api.json). You can upload the service description file to the Swagger service directly or, if you prefer, you can set up Swagger locally by following the instructions [here](#to-set-up-swagger-ui). * [Block](#block) - * GET /chain/blocks/{Block} + * GET /chain/blocks/{Block} * [Blockchain](#blockchain) - * GET /chain + * GET /chain * [Chaincode](#chaincode) * POST /chaincode * [Network](#network) - * GET /network/peers + * GET /network/peers * [Registrar](#registrar) - * POST /registrar - * DELETE /registrar/{enrollmentID} - * GET /registrar/{enrollmentID} - * GET /registrar/{enrollmentID}/ecert - * GET /registrar/{enrollmentID}/tcert + * POST /registrar + * DELETE /registrar/{enrollmentID} + * GET /registrar/{enrollmentID} + * GET /registrar/{enrollmentID}/ecert + * GET /registrar/{enrollmentID}/tcert * [Transactions](#transactions) * GET /transactions/{UUID} @@ -242,7 +227,8 @@ POST host:port/chaincode "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" }, "ctorMsg": { - "args":["init", "a", "1000", "b", "2000"] + "function":"init", + "args":["a", "1000", "b", "2000"] } }, "id": 1 @@ -265,7 +251,8 @@ POST host:port/chaincode "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" }, "ctorMsg": { - "args":["init", "a", "1000", "b", "2000"] + "function":"init", + "args":["a", "1000", "b", "2000"] }, "secureContext": "lukas" }, @@ -302,7 +289,8 @@ Chaincode Invocation Request without security enabled: "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "args":["invoke", "a", "b", "100"] + "function":"invoke", + "args":["a", "b", "100"] } }, "id": 3 @@ -323,7 +311,8 @@ Chaincode Invocation Request with security enabled (add `secureContext` element) "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "args":["invoke", "a", "b", "100"] + "function":"invoke", + "args":["a", "b", "100"] }, "secureContext": "lukas" }, @@ -360,7 +349,8 @@ Chaincode Query Request without security enabled: "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "args":["query", "a"] + "function":"query", + "args":["a"] } }, "id": 5 @@ -381,7 +371,8 @@ Chaincode Query Request with security enabled (add `secureContext` element): "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "args":["query", "a"] + "function":"query", + "args":["a"] }, "secureContext": "lukas" }, diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 2bfad6ca9b1..92102988acd 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -10,18 +10,8 @@ before participating. It is important that we keep things civil. ## Getting a Linux Foundation account In order to participate in the development of the Hyperledger Fabric project, -you will need an [LF account](Gerrit/lf-account.md). You will need to use -your LF ID to grant you access to all the Hyperledger community tools, including -[Gerrit](https://gerrit.hyperledger.org) and [Jira](https://jira.hyperledger.org). - -### Setting up your SSH key - -For Gerrit, you will want to register your public SSH key. Login to -[Gerrit](https://gerrit.hyperledger.org) -with your LF account, and click on your name in the upper right-hand corner -and then click 'Settings'. In the left-hand margin, you should see a link for -'SSH Public Keys'. Copy-n-paste your [public SSH key](https://help.github.com/articles/generating-an-ssh-key/) -into the window and press 'Add'. +you will need an [LF account](Gerrit/lf-account.md). This will give you single +sign-on to all the community tools, including Gerrit and Jira (coming soon!). ## Getting help diff --git a/docs/Setup/Chaincode-setup.md b/docs/Setup/Chaincode-setup.md index 2acd25c2022..8c4dac74e6b 100644 --- a/docs/Setup/Chaincode-setup.md +++ b/docs/Setup/Chaincode-setup.md @@ -4,7 +4,7 @@ Chaincode developers need a way to test and debug their chaincode without having The following instructions apply to _developing_ chaincode in Go or Java. They do not apply to running in a production environment. However, if _developing_ chaincode in Java, please see the [Java chaincode setup](https://github.com/hyperledger/fabric/blob/master/docs/Setup/JAVAChaincode.md) instructions first, to be sure your environment is properly configured. -**Note:** We have added support for [System chaincode](https://github.com/hyperledger/fabric/blob/master/docs/SystemChaincode-noop.md). +**Note:** We have added support for [System chaincode](https://github.com/hyperledger/fabric/blob/master/docs/SystemChaincodes/noop.md). ## Choices diff --git a/docs/SystemChaincode-noop.md b/docs/SystemChaincodes/noop.md similarity index 100% rename from docs/SystemChaincode-noop.md rename to docs/SystemChaincodes/noop.md diff --git a/docs/abstract_v1.md b/docs/abstract_v1.md deleted file mode 100644 index 859b1c7fc60..00000000000 --- a/docs/abstract_v1.md +++ /dev/null @@ -1,28 +0,0 @@ -# HYPERLEDGER FABRIC v1.0 - -They Hyperledger Fabric is a platform that enables the delivery of a secure, robust, permissioned blockchain for the enterprise that incorporates a byzantine fault tolerant consensus. We have learned much as we progressed throuh the v0.6-preview release. In particular, that in order to provide for the scalability and confidentiality needs of many use cases, a refactoring of the architecture was needed. The v0.6-preview release will be the final (barring any bug fixes) release based upon the original architecture. - -The Hyperledger Fabric v1.0 architecture has been designed to address two vital enterprise-grade requirements – **security** and **scalability**. Businesses can leverage this new architecture to execute confidential transactions on networks with shared or common assets – e.g. supply chain, FOREX market, healthcare, etc. The progression to V1 will be incremental, with myriad windows for community members to contribute code and start curating the fabric to fit specific business needs. - -## WHERE WE ARE: - -The current implementation involves every validating peer shouldering the responsibility for the full gauntlet of network functionality. They execute transactions, perform consensus, and maintain the shared ledger. Not only does this configuration lay a huge computational burden on each peer, hindering scalability, but it also constricts important facets of privacy and confidentiality. Namely, there is no mechanism to “channel” or “silo” confidential transactions. Every peer can see the logic for every transaction. - -## WHERE WE'RE GOING - -The new architecture introduces a clear functional separation of peer roles, and allows a transaction to pass through the network in a structured and modularized fashion. The peers are diverged into two distinct roles – Endorser & Committer. As an endorser, the peer will simulate the transaction and ensure that the outcome is deterministic or stable. As a committer, the peer will validate the integrity of a transaction and then append to the ledger. Now confidential transactions can be sent to specific endorsers and their correlating committers, without the network being made cognizant of the transaction. Additionally, policies can be set to determine what levels of “endorsement” and “validation” are acceptable for a specific class of transactions. A failure to meet these thresholds would simply result in a transaction being thrown out, rather than imploding or stagnating the entire network. This new model also introduces the possibility for more elaborate networks, such as a foreign exchange market. Entities may need to only participate as endorsers for their transactions, while leaving consensus and commitment (i.e. settlement) to a trusted third party such as a clearing house. - -The consensus process (i.e. algorithmic computation) is entirely abstracted from the peer. This modularity not only provides a powerful security layer – the consenting nodes are agnostic to the transaction logic – but it also generates a framework where consensus can become pluggable and scalability can truly occur. There is no longer a parallel relationship between the number of peers in a network and the number of consenters. Now networks can grow dynamically (i.e. add endorsers and committers) without having to add corresponding consenters, and exist in a modular infrastructure designed to support high transaction throughput. Moreover, networks now have the capability to completely liberate themselves from the computational and legal burden of consensus by tapping into a pre-existing consensus cloud. - -As V1 manifests, we will see the foundation for interoperable blockchain networks that have the ability to scale and transact in a manner adherent with regulatory and industry standards. The following is a high-level overview of the upcoming additions to the fabric codebase that will spawn the capabilities in V1: - -## HOW TO CONTRIBUTE - -1. Familiarize yourself with the [guidelines for code contributions](CONTRIBUTING.md) to this project. **Note**: In order to participate in the development of the Hyperledger Fabric project, you will need an [LF account](Gerrit/lf-account.md). This will give you single -sign-on to JIRA and Gerritt. -1. Explore the design document for the new [architecture](https://github.com/hyperledger-archives/fabric/wiki/Next-Consensus-Architecture-Proposal) -1. Explore [JIRA](https://jira.hyperledger.org/projects/FAB/issues/) for open Hyperledger Fabric issues. -1. Explore the [JIRA](https://jira.hyperledger.org/projects/FAB/issues/) backlog for upcoming Hyperledger Fabric issues. -1. Explore [JIRA](https://jira.hyperledger.org/issues/?filter=10147) for Hyperledger Fabric issues tagged with "help wanted." -1. Explore the [source code](https://github.com/hyperledger/fabric) -1. Explore the [documentation](http://hyperledger-fabric.readthedocs.io/en/latest/) diff --git a/docs/custom_theme/searchbox.html b/docs/custom_theme/searchbox.html deleted file mode 100644 index 33ed3e2439c..00000000000 --- a/docs/custom_theme/searchbox.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
- -
-
diff --git a/docs/images/standalone-app-developer.png b/docs/images/standalone-app-developer.png deleted file mode 100644 index 1fb8ac8226860dd37c8053783783a705af347c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52033 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�A17`!ujbpqa3T&K)?dqqrOVj$lS?usC>OEsh_Fnya6j|zB?9uFyh z#G_j=DsMDnwdt7>dGW0bp+MlSz~aD3a$stznN@p_V$Hq*>d9QFZAnA$FAmBEKt>g} zE6xF%_ALFhhuAdhEGvPFOFCMcI@p@0(`=ENPrdL;8WjcoNm(#2(D~l?hmy$oK!Y`2 zk6Z7nQ}!1jn~G<{o&qHeM@C(ILc$e7W`B097fGJ2Qq{KcV@`kW8!%$VW@fT$UYqGbf$DwJ`Af)?rcrbvzA#u;P170 z3=d2b?BmVY4rjcQ^W5B7(gGKD2|5~+ZC_CDVqtWcw}Ubq_zh}`q?sSwcc-**budbw zHz?XF76#c@wY1&W&y8;O)Tv7vAn&=Sj@q)$_6vw*y*JnQM7VElZxpNc5?q#Nmn>OZ z$=CeBAkJfL4DqjM1mF9%uPy*vZdSP{iyh20{NoBGAGjtGNWA5!hgWs(>txj=nDV7u z0GVM2Vi}*jXQ>$&PEuYpzXh{`vX_6Ad@RR=hfFv#pQOtN3Ec8txwk!@2V_m(8k~>Z9EZTGIickiI`QA(eHd+Vzt};~iZLV;8KWsv3%4Zh2jy47H>3yiHkso| zJnXMVZJuMliX4n}k5yh@IH^`K;jZ(ExyvmhYk1&;6o8GUP#=t7WGpbgy?kJ5Bkb3x zkDIw6tap0ULRFBkCzMWS3H^B|R@zhEETdU!B1Rm^$0F2hb%33qWa~BN<_CfKUUh1$ zO^pDaaQY(@y$A$8$8NZ}8A`Iuzo7XZz@zW7>Peau%C@&i6rTIt0N-(USnv3t6!{U# z+D()3gJ@ORpc`uaW%H~eLyON#7tH7i;4Y!VjQCHl*@NhjM94xed zmqjWb@w)PAoJ3_eOiA2ovJwkMsVy6Kv;C=)nmDKNV~6J&H_i57&*uXncP0+c71*=% zU5@a;QdtXG%`7m%e)<6yL=QFA-f*WgnQ$LqrChW2FRFD-<|DIqwrsJYjJjRAWN?dEJ$09kQ6CDjrP9+oXK-lv+s5W-X&>oi5$m*Q? z3o3V0_D0nF7)QiycUUNLb=j;;mX}DT9Soc09RI%AzQh`Su*5$H>|gv24Ikjso|l)$ zYNp1+B2kj}zr2heUDv8Iy*snq_kY>jdLYCo{Fn&c`m~{j#=kiySU>hKjs(#ky&gGVj0!wy^|F<>jZ!1iR@&9Q>LkH6~QomyL z|E|G@d~60#ziiDTQCuo8{q)~(06#i_3W^~?5&^^rIn(^Vgx%Bu#ueS)nqp$7&^+j0 zN|P4MG)EriF$noN566TD9SZm31J^UWu=s)&te;p{HYOx{LtMLv$)rW;-zNcJVSa@S zk)aG8(jWx`Gi0xxY_sQIKO7M2$Z{jAz+@vr;xvGXf@+L~)j$13U=lNzZ&~D1m1_@} zvTMRZu!nZrr-es(WF1ezH(b*~jlU@^yY9GV=kJsP(4ais3a>b_aofm|x#K=E`_|Za zQ)yg6%EMxEXdWjFWB=T+tS4=fHVPG#Nt0CsVzyk{y?BneQpZ z@~uKA{aX>B8VEkQ`@FWti*OH)|7>U9AT*AO(bE%wY(C@JpLLenYm7gGb@i~NsJ^X< z|FL;tr?$?EvGx^NLBklu=V$%SA42A1C9K3ws2`r)BmWng$D$V&6`faGa zMyOchUVxruv;Pn~LshwjyzeR~e(gjg;6ArD84b}J>G?X7xjcwp%{m#%Ye-L6Z9E)$ z*gwIs%QKwZJgJWP$Kf>M*kILcN=HjedJm-6Gv|e%sETfi40U%*<7SKRxMhFCYuTS8l-lHkc)6kPhDA6K21%c`x{=cmM9K9hIu#u>#5RTu z4qpf^39?C6`!qu+FL|hJ^|7Bxs`8lUBp{k>Ms7h^>b^%-GE31E(4#$9vIZwN3#a~-C?&l*t7f>CFxS^t~ zEb@qgHBnstoMQa^qL-t`HKaE^P3k!9;TiHZ&Dl4{*P%`c`VYZ9?=@7kOXIv=aN>u% zQmE1m=}oo%9bDoSk2ovRs-QX&8s4UTJ324<6v?DvfQ5g`!65Jxm0ETSm3Tn}5e)@v zXk&i9T*64drD7pPux~X&G^T1uYQ3~)es7ozj3a=RYf;MrY@DFve?S0|(b%I{QYr){ zYfp7QFA6Sbj~;0Nbr?LeJwPevE40<&vwOztzm}?)pTJaF@4?BZ9?s zGGPJ^Pj$4o?00Il&&t!RN@^+sBHO`*71gPArNxE{ApN7DV|S!1=+Hqa*}M`4v)I%` zx!@rL@MNhAe<6Zn75nag9UgxGxg3cZG|eC#M_+B!h1wS-g%iu5usg>7^WU+_Xrldg zpRa~-icROKNhVomK|(PMX<{}nk505eAiGA6`$xd~6(-Ty-S7^gogip9$cA16rpW0|=^Z zz+rn9&j-iG&4@3119auNm@*t4XdF3soo6)I%(!77f5WfKLqY`{NxqjE!y2`Ee53fjnH<>ozpDSHpX@}E+fEL4`_C3eu)g2}@v?2{xfXYdd6qh4SC z5IP`fc|TuM^+%Bj{b1X>nv`Wv(Lj zBK`JEwwpS|`dSpuaeXs$Mu%+$OE8$|v?+p8VJc#} zg~FIc_mP3wVXyX-o^&ozMrucmZnjAihstSx37e={s8n!A&Qd5}Q{GD&pBTUoy}N<) zaV`eC6B?QRpWv@vkWUmuy&w`Jw?_NrTL%k3qdX>P0xOIcNKr6I@BK=a>~}FsIu6Bv8SYJ0;UVMQNqZfy zsy)>7u^e4(J4*@{C+cazV0V+&9S$$0!89nG{CZ@A{JCl|m$z+=rmQ-UyR`X&aT_N= z!Al-*H0=vzN6^sqL9)Q}H^)4r(O)W29Ax&t;w}Z>N2enbu*vO?q&cC0glo%GB*5;1 z92?T{f^lL$Oml?j>89nr+G^B`c0&X~AIYqX@Dr8w`R52@i3@&F9R&qJS)OYwtA*;& zosl$2#R8eU@891wp7#>a@ba#hItJhZI@;NAaYy_SFLv|?k9?>3Mh?W?oX3`NwHuOG zx(isStud>Ru#me|&H}@3&Rz0`@$I9j$Z9dK*U6OTE(U0Ywl36};hE~3MtKbs-NuDh ziM0x4ja4Od{TPI0K(X>Q_P!dlLtSb}A?ch$7TG=j#J?)h`GXm-iP|hH!pJ5{n{LO6 z(_wVFFt_v=U1+NuFq~v1vxK!nApEN*qH`SJ#i0fKUrAo?;NN3o<72o?$%~Hrqw<<| z3QR=xqOp!(dTmi`K``{C#Mnp%%SxY%U6n%oZKvT(gLKj;U`@ zD62~4U^$4QEKh86URhT$6?JXHcA7b@>7o#MH8KS(PQlafaTvGG59cJGTj7p%Co7UEF2~H6E56Wsig2jm&azzy5Y6ucgDu4i zka5yDk5*q_T)y3{2k-Y&XXG-Ea>o$6AALSptSe8tq_Pw43UU;Lfw2j=*F=e0JkS6@ zP~+P90)H%*3GU^3LPv8T2!Wz5Qcv)v*qN6$Ju@-YC`8{r$7Xd(>KLhlwVh z)o&u-Hg8#q>`Ld3y#3S{qyEf_m%ah)RE0l6?d9qnMGz5j+*mADGe-uCU$zvBZMv$l zATG)<+I7XhXPgl4dfy4*t*uRLWMnkn;SW#4$Ct74?T{Xy-I`F#bv=+O9gWp{c4U;h z{SwJ7KA>ok1F9Y4E2tWELH(0hYIRdo?E?ts&v9qhX2qNhim-K^iDqIsyH!Drrpx)6 zxhnoxanrnx%z|=Asuqgk$7dW~z?pk441-6qq~tHKYekQM;IhW8cPTkKkR zPYrkOOmaTOOfhY`+>T%=NJ_-gxwhKqL?@lZ6sT`tV75Pz=eX=NiykELCz9m!gX`Xs z-UsA~e%65iTQ|6}>1t#swlY%}T@)M@7JJ*{TS%`*{M+BjH7*HC2R*04kkxjuBF4~q z&FrMlJgzZozEWF_=ZtjeWXE(hW3}%oJG+epGGQ2`79_&n*g$j`1eXQwD~dZ1v(9PJ z*==NI%L!^p+~fjXiqu*>y}@eFHL#-Neb||DvC4P|I>pB?Ulxb#pnVssOi-^6rU#?g z_xsRsydE_!L>ksqF+E^lOzK^!$KqcMN2sg?x4PqQMXT-exK+WT(;>6iNqp+smYd6w8{vhkA-pf|{j;Vg3CVG0}@=@@~|o)V-=@G^N}^(Xl4E zY-Gtt)s|dgRq;dmI{%^ba%?^8dhP*w33xv)t_}@MgaKRUJ}Kcc>iWz-K<}fA0#b4l zs_Ut-?WPIcV0`$HKq*66!vTdI?=N;vH;BbvGD{eyfXv~}I9QVm#M(XbW`k|ovUoJ& zER)z{JlgyH-$Mq zIT9_cp~M25Rp2c=C32Yb)^pKl&zU(}#=}@xuo`#-LS7V=k`=LiV)EITP{NBC7pRIp zhc1ZhJ-Tc#X(=DB=>^YdtQ7!5Zha3QW_le@wBzFti_%@ne%iQ7!80$pG-kG#E6Js? zZ^-v@XHbO;Sq#oSY+*k1%X$gofNUYbSzFi8lr-XfN?9_vpQ?}Kxw19@NHe-_fyZ^v z&L+|Y4m&%?WHhcj^oZ)YAQ%!Dca+#M6y7vw5=0W_=)tuZ(uk3LA+1RTX|J2dyi*Y& z`U#m^CFoh1_Co_O0w+B{L)(B;<(d&Z;hwcz)~oe`AjPFUo@5~FQi za9(SNWEOrX)_MLe!?}%x&ti%ej?emCLQ<0E!-t+Ib~3Y#Y=d}@_3y|{aC(G96lGKG z%sP>W*!y1>P)=j3%T346$^fBN&#t#oC=2zUsO+0iu_kYx{FUUCBnDeGM0wnPcU5?` z6fs-uoR#%Gl8=6OlM`NO?G20t-|rb9@SbC zk5l4T>4n87l8!iKxs|wve71D18lz==I!X7{ghq)+C;~G3i{H929AwU5nVy1Nv~jCq zaK7kvK;J|!4kvRGPO`EzQGYlWN4-E!WSbE|8h^nyeSQ6vvu^AFM28bql4aP|7T!;Hl|#s|5-43``h zlFT~WNl3JzZjIElN4TJViPNJ65mi2Gvb*d7t#@KR+u=PFctaWJUiK2$jBO|A$nbo- z$^^FFb(VbWVGdZEzX#~Wa7V3-AkMCv%b7%Bti5|YxKPfg#q9mT81rC-)KwEaXB`F?YfE--*MJghJWG%M!w+-HDoQ|9Mt zz?*Ga0r1CmzOxewuDAO`tT9M%PP`+7F8oV2VZ^x3qlp66tc%BPJZr)DXzsVM(8}ub ziHjrHI;EJ1ecMmX!;H7xf~UAWej@Kc{VA`mZgvDVSbN9H7E(36k+{Y(DIsBD%w>G> z(Q>ylGXg7$uP*Ns^+Slu+P+%~0XJl7O_>o3HMan@RdzzYRF zXuQ1-FklsjK*5ZmcLMB$;MLSXg2il>tePxq#6gk{jRlI_qZESF@cMcdi?;M>YY*3l z`y*dYbH{T;Crj&AByLx|`8+R&*&VN^Ra2__WH%_ntpY1T!|J2Wg$EIEsv%1uvI#fI z#-lY(XJ#Z2RtS)b}m4hMW)eCIS>e3u7mbCjW$m$ZpVd}*n$>5=F z=2usRC7mL@HntuY7bmZ;Pu}wS@@V|ZM(7>rX04x_6DOm}CDjl_r!pb@3o$jzt+=p| z@x)!n+hjrS=(GPv-(3rEbwLW5v2IDe9?TX|P*^1Dcsr!Q;s%jus^3rhg=!N%q77J1 zHJ)D;RAlYb5l4rEGw=*+RhOk@AKDo0hd zcO=rm*7(oRcqk&G5=X~9T$_e%>~F_4vwN4LeC)|}>Q%-`Zq^~t6qLwr?KUy&`=8do z<_LV5!vAwhpyICT>4YA23!m5lBzbqyI?x2i6nslaLQ(YWKC#0CTb(efrd8!ceY{>O zDua|69ya4r$uQ7?AP$iGs*#$R4Iex&Qxd_)?XNS+n^5w7 z3s3;wBZG|uq)59UL^pEpOylvqw-2MChP=AS=OuCEp@Yt__vSU$d-Y=ooq@3Xk4IIb zL-MN657#-_+2ju=UrbJBd?2AcxFq&jqKUm4;$`GO#UbOzf#eGFnkg;N7he7F!F;}5 zk3SgEILCX}msjiE+wK$HPQzG@#cD(o97(JQ-+gqeQ`gJkp!i@bzjUYJ1lENqA>?=? zf?Jo|1U|3p%a;{$nA9u>{boFwPCr;jbHO=q?N3Q_^U{#jVvR+DdZO*n=Rae?Bwk`d zK}err&rV6l`^B{<*4H(pDFCh^&J@3|oH5bco2XS*P`*`KC z?>22Y0?pHX6{#ybuIyxim&LVWfA8!Co?5?nFts}4~8?p5o| zd<>-h3}JLB{*J>#8zmjy3^NSHy8q_~$EWi@iYhADL@rBq#x|AB&D;koElp%L6L{G| zn0%my_y`%0Ra`q@u35S|&)2}*R1z)fR#prbJTskh0cgG@SFgy(lSTj9OFK}5$ImXf zm%a|0?cAIPMW*tK_(+0SfeTAnd;voIAq0H{Ap~4`!(VR4g1IRJTFS>h6RiTn6fifWMBzHI!QmdjQlr!1 zkly89qU{_viw!P=NP5~Amm3V$@rjPOYQd){Y@!@z>tXNTSXDa)GfP$As>Q!z1OFP(}zt3oq8u)Vgxvrhg?#nB)gsRY*;Ej9YLjt|2Z zO$Sdr^J~@diekIE@+W+=FfrZ1*zMuvw#^2c?g!DA_zK4LL0}sTj5HSy8nbscI7+u6 zOj;sZCNTgT0hqZcdw1XIL~2FY898z?vRg!)xeP0EwcQJ%{X`FTYB#Lgv8zxFXsXhe z;NvvQ-ON(^57Ps0mR5pVz`f-%)xhqs1Q?Zx>RpRTeuj|^QSMM3v(ivoX-p8xSm{@d`+4Qqhvz|2f$7WBJ3wYG z3_v0puNvi*T&%NUPi7}%L%neRL*$YeA=;NzYJ}Og6obMrVTY{p9MF#7=HH8@$7sq2 z+9WQ)sMoFWvuPD-64LuI5KRV%f%)Nx% zZTda$zz{!*3_);WOg(F}vV1*325C;*1V@~MxTrCcNS7`Nln@(_5n=O-8zi~rWAz7x zf$Oq9D>gn^zt##}!7g_I_joj#?dR(I5Q0w&NDKfrFP*V&qOE&dqWfDWdoh&jfuoIS zYl{@tC+wuIBSi&q)hxCjF)MEcfB+E)qVVN@%Z1-5yz5qiV-1dy(%D&3D~z|t!|bcM zV5z0FKHq3o{knR2JT2%6!%5+^*)u&NQ@(qq-w+GV-738X##9q9a}G$j>`+RS)d$xe zc2ml**xJi3Q~3LMl&p2Zw!xMt#Krxx9X|CxMLvx&i%2gvmfkNoWOG+7{0{ftswf{4 z#&rf<)XL@)xdIMp`}PU*i$PRdkG(5dZtNob8hMs3^{%qXIsfNRj81_|i`g>P;9;Oz zh0hzGY`hqtYtdk9s=|;?L1QDOzNNtIxhZSG@yYs~^?eD+SxRTkr-zgJHvRB&xPiMF;)+yWy55s&gICQwL{vLZm z$o;2rUtKkm>z!lcKd$T+Q1-4hAR~E5>2!~rar~!a8}FPH>&AZ5#W!S|!@~~`Q@JBM zms{20*|hoHmSeH>8_Ed7K|G;s6XKv0CliJnkZHvb?{=!159&hGhoEm`vq;Cd(X2|^ z{U#-{Fd4s&(+e>#xK_qX^;jomj23b$5u<+09FsmAYye=;-yAx%$#pzvp@L`B)NzAW zvQSe3NSm+Z(APZVb~s&(qvdtK{gn=4A_xUm<;j<;h*X8_pbDGZhm9Y8wZ#GBn2w>q z{A8?h;%D=5Hj%e!Gp#8Q_eonf_nDHgO#~^>;DlVpy8T?U#2{~-(^JahgB@HD*Q-wk zMm<-B>05QOFgX;dO`;CP)-l0KrpsnoOZTSL)kB!WzRoL1*!zA^=Pf8)!0E6vHZDpc zjfaPqzbUW_9X0~vH%VplLZm>ck3;K(QIf~QUx~S~Ib2}|dwP?Rnz$xZ{lTj+mQQ2Q z*V#v)Njzna!7C<-n=qmR`OEFN%a^;H@2qyBsC{hvvE6vM9xp|3Bk(9KZ;4vri({1!qs0UK8F$% z-PPo3Pm*{FlnQtbDK^G+u=nNRXlQ@vR9js{uGCMX-%{16LmR$Glv2)Gba z4?j}VWKN-@k+bsZyCBT zK#;$WAV_-rGZr@XM2xprJX|D4c;zE%CJQg9m3`EPj*c$p>dKKBgg@G4w^E8y?+@uK z1W&F3eFsLUr1gF(acvn@mB*LHQ2c7H=Aavc-!z|+gTHwH*;p_G-qaK|SoZg^4FeaL zVpg%l2%m0F5!$AIYzeRQ77&zfuTM#rgmy_xlQna_|H^7NvIsR~PE&!I|N1v)39x|S zUkYgMmryia>CJFpC{=%^*YZA0bDT$|9^-qxM?Dy#L`h~_^sDaoU{9%^Pm@xE#zGGS zhmq|Ja43<5QQ*8@m}l-y{H}HO$b42Yy>xtkklE3MvTzjBp%$Fv)HF2F1c`%QwRxl* zKiIi$JH0p0bP??W!!lANba1o=M}uAMXgNMHQOrMxM3SO6Rm4bYE9ho4pMeG;C|6)H zJ}OEVK=_pHSrse^8Thjf&7F*Y0?AEiGvq*eASA_-JHjFBRS4a;R}93it>=-r%VoWw z$iHg2(m`2_}{^UN~@ZOwf9i<>~M1qqKoNm2aW7qwTkIUCqEJ zz03e$`MOa#p;&Zai@d!Ap&`PFJR}>8k_*XC;ewGesrD=ku zwbk*o6X<9d!K);^xxxetlX#W)ImISlf87&pmTdTS>R0^&MM(O83SsNYNciO&R{M4K zffi~#!l%@(N}O<~Y1wr%JitF)G=fkZN6X{0)~omJ7}*L565S%Ww#k3L!QZEMn3ye2 zMo?U{z70>~#r7+|7|7FUZ?qs+iKr~!QzUQaXo@+4K(IgYvafe0c{YJ}qVxCsZ}TmX5) zO*jnr(v%@L%wf#{K^)_0eJhC`z3d6v>|Z;kDjLZQLu;XH8}CB9PSGdvgbCnrNYwoA zj;3M*IB0jDUwE~uLTO!P=)7*TL&J1U50s=?ZJkKRA;A0tAOb_0sTWYMx9bdee2XJX z0$YUXR7x2CXoVB7kEG_FUFRPwsX2#WZ0MV*Ib-*@1xX7m9C6x6ED09YT!!_vSb~*i zbxS|h*Sf{UmjV*P^z7RHmA6m%e5fNg47GCSvhrK_9HY?Mos5(c1!jbeN$Q)@snmn{ zp*5GB!dIOOZ4Zi|EnIb@qzb{@T%#78v5fd0 z7PkL%Ia=`Lq~2fK^IBQx)rfu00&#&Gc73=)u_;hUCfuSa5uZDw0{m(znB-!Mn%)DCKx1@W+dO1sd91n2k{ z&P0$O!Aak-3caqqQ0jEXOD$s0EBS|0?^laH0$t1wZ56u^*avIotOgxp9PRow$rZ!A zqMvng-{uGUJx{p`_~)UEy2Ack$eF!EHM&@n6RqW$>~|uFsnwIgx*Z})@2q1XqTY32 zTXuO;?N5R4mvav2Ue7@!u_3j$6*#cf5OSVnQG6-~2Y5Cnm?%g{nMpB)!E$`oP-L5u z4VKgN&&+=VfouZ&FlA`$NP%VAEelBDx)dwRO)isllAe`KutXZ8Z zv_DD>3~4b%B;{(DdZ@lYL7jfh6c*J*qsqYkSZem!saB~4C?g`#GI9T5+Z zsR_qEqiJmW-Od=nvSPT-9I61YrGTHHqC{!40vWhRUv0ts+KSsLc6E=INGBkW4#Ni* zWCZAd=#$CO_5lDpX38J)I7|NUs1tYRn`Vo(R#(%iI^%oeIm3i?pAC9(IRXL%DmE<$ zPT+{Y($JRY-qqvcPgJF-cfje9nC8)J6eFO+ux)>V#bb*FaUwg4LOT?8b*3%|f~9A_ zmn2Yzz|-$UmQk9dBysih6&PCL>GL263wht-SJ5%Y1noswcij`OWh~#7O#fx5E+zL)_c|N_h(~X!V{a7mPqGgx{wGF!khlsXkmiPzF9-9QvG96rEB<|D-u{*uWU%FSeq&aE4;sf)`gR>M z&TLu?Mq#-L?@~gFeaq$gnJ*v-Gx}>CdT5{Vv;++lS+I}vlJH@z+of?;Facocw(ZqZ zLR>s+B<%}sX{lf62E=G|{!ie?-m4gu)czgA= zpg1938Hq1fFTX zv5-aBACG*Owt3574`;u2DgDJvM-Rbj{h1X0>SUcl))Eh6z{%2l-Vsn!Bxc6_wp*B> z$mQ1kDtv8;IBb1RnofBKhKKX4mm9|eakRzwp4L%Y-29s7@!0_;Wcu0SLWWza3Mw*( zu7hZakUWiY+@t;iAUus|$7rew=|GD8)iG-stCM^k`M*73v5Tg6Xs2E*^!4t+{5Li zwIKDjqKIhQk)Ei*Bz%~oqKM)zbBE*lJ$u#ve|>fI zes;pKM!gu=jDD6tLJobl7!309@JaP)_F1anqv~qfsmZg6gDcyV+@0CU$ZBS1|zxwAwl{hTE6i)+=3YCAbyPEig8~ z9K{Y;TCi#w9;1mE-%n27ib=>7j>hS?%D3ffdbBPmL%0MIXu8G0zaNho6$|=NVH9Cwt>@TNsQ|8Z zu1UaFMmLp(36Sduv<+x-I#g*qu3bbT>w*f@d3~6DQ*YzVf`znvpxpe{zzw2VRcMNq z=y(XPK1)>VL{BwiYl9XZ;{dh57%S~w@8P5_^*Jh5ctNf=)W;2V_ zTULMsQgeo%A%qR(Lf=NOD4HaSLa5RmzX5h0W5gbsNny8L zeqxN!-xuIQhV1-l;qUz2WO5ltzTgAo<4fqv?F)*Q53q&poMHzdmT$iWdDqAwpgv&d zBBz|`E7QP`blOP`gG2A80c)JQsRnF2ur$yDn4QK=_0+k@eg$L(d^n?;ZJwygm$UY8 zr}se=RcA;a@t1{`AV^lb7TrWox1XD%{aVwi z)^oadR%>O}*y|JF55Q}cB3mNe(&f8bgXTIY%rQNfD%yG2NwLW{8jMfMQqa_Wh+zkH zu?06nYQ+krN2X1=?2s^K-X6y92%&v=?FHy<)h5oo$@U4|hZ}94lq9aXI^#(oCZBd7?i6CvU-C=Pn@SYtRX$J;Ib=OTQ6B3SR6D*tNIp&(!xCT6R=p8x7;L? zS%N`Q*$1Vbo}K0iy{;fUeYlQ~f)mc@D@x%h$SebTm|`CEv$kr+yM_`nA-CqMXP+MN zoQV(KN}cvZ+FuF-QhlgUDxof*?O`suXF3B93 z#i~G|0Xgz0<`n+^8q+S@WekdKpPf^Fd4ywzkGUvMB5A`5>{~RH=%Yc(e}9e5PYUzQ zB*OUb{{kQ-AsrPq=3j*4{Hdd4zV&WPa`tLL9x7VP_u^d-qv@Jo)4Q6+*d@W0pz9B_ zxt8|VJrA~2VqZ{xKK3YY8LzB)8N;4JvZRBw+^mtj?Fs*}WaSTQ2Axa`6Vl(ua+nGtF^;cBap=I?=<9GIY3VvDH%Mwdh%PEOe0 z!BJkhqQ9nq#p@lePW=3H2=GUpY?sMIxA$!bl{ZXkT|MDjRo4TqB1BU~?@S$Lk1MFGCF!1J~7X9{_&E#MEu|FYg24Z0NC6`YGXV!f$zbtHTI55}WT*d{Fc~@~ z!6R#EOn_BD7uksAUfQKz8;>Hli)YGnjU?#%9gT=f*g2_3qsy7)w*_!-N3e^rz!~WR zDBCmGvfOcUPsiXV1xEzOj&}b5NXd}X%z>{QHMwAE|6qOa`biZb({AxIEf+0;h{4UL zwYT}5L2-0#n{SVmUe3UF#nxOqWJ?5#tA=l!4Eh)FZQUe_q-PVC>s7-mgZ*Y@dL1g0 zYE_hR`v5C0)A~I8Ow{dS`&}Cx`4v3hW8}T>u{)BX8LpPklY+mz%X5!8=3B^=qI93( zZksq@BvuovF=<*KjynDp#aKPxo&Ia5&V?f5j05j1;(Vvgu+mRwP+DFkDo&Gkp=o=i$q^lYcN)k?f7$@v+I zXO*HBFiCQxVD=gL-G}plQ%dbB@#nc20AFRu$iU#qiXZU-a&T))wBDN~IB$5hU9PGV z)^LDv%qNQjt9)g`*_Hp|^&If%B0x^iE7_s=?Uyz+Pr?DXvmZ3gTVQ9eO_+$7zenj< zvo_2gC0(lZ-29!G?LuorwOI`$*35-5kH+0fp6)%%a5R7>(@& zf=d7})UNRwz+_pw)M=NqM?RNx8ItjyH~iQ!a(cUHK@Ci6Af2P!V28Y}tAN^W8ii6wFzd z=UMDZc=by3tOTos67>ya!`a`c0ExTejrq=3EnOx-j||R$jlRV$xs}zwGucWIf)Ic` zhu7`~sf$9SytDov{mMsJr(g{gj-r8r&xleX7LT>3;xQfHi|NQeLXK3|jjN`j{DScdSxv~{--Tg;Y?4s-)4psn zG7HiXA^?WBB>SydHI~R(-QU8=#wL;Z9XdsJ8ea+wjCj5NRR)^Sox)-B_PD8AF4`~( zM|RRZp!))c9d9Q&&|qsFIQD`vT>!8rMI9-oM`_c$(R4DYKwz%sQ?JTF%go z@1%_AVg&W}6Zvq4BIctz54-CYzB_hXTTDnUaSK!UP)4%U#oC z``_Pw2%(xjLy8>7grU>n2jXM$SGkdoyU3aq06RR`yr|)~G?w8$*6E(}f_|7HCkYHV z&eBKbX=1ByRFk|vv~B>0Ju?E`9;ctE(pe8r7iB4#lVXZ-Qywl_l((iB)~YZ5;L&m5 z7HG~HwqwE(mu^T^-)_ay#*{VA*c$ z9vabU?`nV{TWKA!@3rcHR&H+9S;pWTX6A!aQQn3W2-k~57#!2Np8x%bL8rrugGIYO zl(qZCMW@Z>lfLT&4{Z(0vXqs0WG~wi_Am`npJ*!1w?;?Z`xDE)!!lOiqu?q)TA@ZN z+P>QVsuEYsz;(=E+JBJ)X1xxY!?ke%=z4*a10jkZ5VdjEDZfA@o=rSNyGql|LS)#_*3b4sktA067nN}S< zeH3J)O~`r*qk$c*TqSlMu36h9@J5V>QTg7%;NGTpBBlV`+SOYd9Pie-V!6tRo;}@u zP#x7U*TGcR*!4lW!yQ6v0odchKs#Sr5su9ahHehenQ5cAy0J(t+U~jUnxJjuUyxvX zc9m-LWgs9P9R4aVCf_AQ(vZ>hd?xe+fq3j29TG&IetHsoiOf#qMPf$A+4E&qa9 zlgyxliA*xpnf0E}C42l!qax(}g%!{xl+uO~=sIaMb zfCes<&2LzYlQYIs`4Ny@u=9y?Q!379*IQIjvWnjZ3T9_>>WIG9TAI*C3)Ui%%C;4q zQ$z7SiD$SWv(>N*>TPmF_yo*jllgxx8us#pJy8^gx; z<7&6PIKEj3f~iDd2jR-O-K|(YWAY(!A~9g{=Jb%t^_pjp(l}_oiT@JRQyO_GToPdD z6|x*;H8kSp{sOsPd<+W5s@o?O`5^vZjU?~Y&I&B>7dGwGP^KtIq)m;xxe}+Rw*8G@ zCip1Q9nzBb^8kwgJ!}L#h$;7ZHV(O#x{;_n^^{vj=Z~|Hp3LW<2*MffIO7G9hnP%NjKEcQC4}(`` z2a~4BnUhn8HY)&ws!MLRH!rrHQ3Ft$OF5n8=JTn`(2c~}RoPeuDp(){f?JRI0Gx#< zsh~GLZ1(i;vX4}mHz~R9t{%=Cvcd3P1`VMFTR{XcLxY9a$4j;4(lL01;%-le<#Vmh zd%i%T&Y9)c=|l%AZQHfMc*DXz zQr9E7FwCPR$ijJ3Z&4~X#_r($SmMmmn$V%Q>x$W{kk{_N-J$)(!SqF7)+ylwuyTE; z%|+-3d;`G+w5nj>zHbJfN=ZVJ> z2PMJ>0qO>uf`--N3JIidF(P|e!+hFxSKdyr__^l~U6ZfUfS1Rp27+EV(Dn2UszG2~ z_(n36_LqjmbMJ`Iwwfa{3YcL2_l9Sodlzq>V^$O&1ACo@Wh!UgRuf;;A6`YEIokdzsvYoSwbv-PrSzy@it{$#{%UhHm5TU7R)Xh8W^g4B`OTXPV_k%0?H{p=3XVs3c<@GO!KiFhi zFWh|lYDPphn_1n-pwTa%5!WiCL7PZXuAim)V zSBBDO5~#Nr}zSSck3S4#^Gml!qVbI>8mIEq7L=eq~gcSxAvDDHvLrHV% zgdn1WnUgBBK68kWH}5;PW5&)5wjYCJ7-?=Jp}*_I4?7TPh98r|!jwh{Dyes2UyP}MiY$(-SA0ZA+oY*4*y*)11}03y`uK`r7|{T$y~wE6ye9-u-k8_&(8h;;{HZO-Bw`Wgd?;o_0#X8uGm?NGQ# zfLBp;+LgZ&z-*p(q(Jy_zx-@#Wo8Z-VblTxArv?i#5P!10XXlE=sNsX+j`8OVVMTA zrxQsHgKeq^!!@(iki%71hOS5&Y4X`1^x+`X-7mk*!xcHml7qfhr|Icg9TLeC({~T` zIeoJf2uFVOKJ>qCJ!!0F3Gqf>LV4;lv#?j^dnRPLL}~s!CL5-j9D&qKQ~NXvx>DuG z%Z&vo`8pmC4(D9fafNr_5U^EoHvgA_R!0o|1S-8Gfk?d&dod-i?w2bCA|VfENT1lp zZRAtNbffj$Ux>hg=RT}8$_cwVN3TCD468-B5(PTyYk34ZY0Wf zQV>vw6Bk#&3=yORmx!7)3Ik7whuMo`(?NeEyGPHRd)LaP^O| z3t@o!YKAfa=bU6ixIwHSC`}-$9t4=(nXS+$Cwe|@*}}ea?iU_M#+e1P`8u%}2O_^g z9&QMM)Q5%hcjjt*OVHpdkThBg^%7JEHOERJD?>?A%&g3pSpqDE9@HbwYD|FZB7YW< z3otRLfUB{#um1h7R|^FvQ&sJ(+xeYGDIc(6wZhuE4I>E7G#xjAr{uvTtD{n+Az_VO zcTAB$;J|4=O9Ln-vGtdCWYHecemlY)D6(4oH>3MVVv~{ML2GgQ)9Iavv3kM2eT^TJ zv?*n`-O%+?yE}DWsl%Zltv+7ggBZ{+dVNr)j`iC?UlJO;-BmdjcKQ3|0=J&DI*7u8kjGSu) z@maBHGiMk*tYuo?bHiL&<6)mI zzLcwGl3!wRWVNwL4lU&rAemxB$?t_^l2CqMUd+cWxi z=Y}*W_U1tEyZP$F~mxWyX0) z2U4Jg!c`^mI``+bB9mQ7>q002qv&7N={AplyA~A(;gC=j*8Hp``u8|{IH|?RlOPmt zxHh;)IDxPk3?K{8bpV5~-y9hQ=Dt%UT(u?SZP+LbHC88)g0haSI&+h>N#t`|i+%Hh zbAL}7xzM^SnRlqgRKAiz25TuaECRuMMR~qFA>kyJIVKXXF-`yt7GJM)9W-mb7bOp6 z{xNx1e_z?m?LPz3P!^cPUf!S(K(HPoJp-2u<0pn0ra8%|fkI|u4n*Y<-Q_o4ov#;8 z)}Akkp}Asv;Ywbf=bK8I2kALE3W(?=Kb8!9CXj;UQfLV$a*)un4#H~zSqBgjfU^nyJJVsSm+4h3`SLN=sbR!2464Qy=nwaxTagbeLobTU0{ILPF7tA+K4FAhwo4 zszK_9E!{7R)~|ZqqH23fTFloWm!?pMJPIAe&J3C@6Mjbi_dGq|Z`I@}W9ea6^uZttXkr8UFawt$kJ9Z4{ zkr7kNt7DDeTT&0w{?U{&l}RTKQK-1>Nmh^AvJ)UdrH6^5q;SzP!%{X6^bO7p?&u@2 zNHUJwcP}|B1{iaMelLNVIiQC@qYNaE^^FT^>@~@}$#tD9{B1fsTVCLAbLZ5*Nb&x> z^-fPo*{iS)@>NGoiQb}h#-vD+-wdpX)2Ezb36e9WWVpraB^)8hls^{zw~_?lC_L>5 zLv4X{1VE;w=S0&&6U8jaQg$75X^Jmcbt8!WKnjQD(EG~TE>1Xyfk-Twx%7+-%gE7- zo&HWD-b8Mnd`KH=hBu1%m%C$(3$!S4e+VR}r4I1dPRAmUtimWvNJ8rH;1I}ZPmw@T zVDzEd_)C&`FN65Ci?lXG5eXRQ_V`F?l!8v_Fx_g*ln9}5Ohe=-wvu26h%yIq$u6B4 z5Jv)HG61ugl>^BodYdDOS!CeIotPOb*%yZ7*?M8MBIEEB8}t7qGa@9&wqW8!zCtcb z+{Xo_1M8;ge`|dBF{BGaR#5V=<9!&h4-_1Q8%tF$=yu>{UchjVZ{> zb1u?CbapB1SRb4yX^KW3wnq%(1|_z!_t5Zyl^S=jmCgefzhWV|!`WRS1Tc<4f>ueC zuKO1;6c{G2?}jD$voSQicmu1hyACw`0bi#D(jwciLv#73UDwJ#Z?;)ruKSdH7=iHbatio;jvHCoGQ5Opd7tT%qt_>Zs!N00$n}fdT zA+ef4Opi<*ry@LYlmzpv7E^AA#{**aE{3Ww0AgRh1~gi1jrdHAcutCD=W#m)V;2eF zJLlV7=Neb_Toy5>9+Z9qPe(X|;vE2v8Z*$nO4#2jNDbvMNX1x^GRQl(b=ID5UEZWlusNF**bjI4oWfM!>MiNY|ju9 zz~u@$KKmKD#&}#eKKz1byRb*$_z*Oi#TD`R0PD8yJe-AFO5w!*M#T3#j6Q1-Fc^kS z_8&#pZXB(Ys!3Nn9Q8=ye#3nO%iF(X&!6TufC_DKG{VZK1zSwzO11w|)Lx_7;$U|9 z9OAoFoJhMc5J!{zMeAQ@LW6#8?Jf`M={F5Skffq0}{hVjG1M4aMkPX`gnxwNrco%=|q3`q{+W zOsC3SW#-O-)IV8p);aY%FPQh{xvzxelT#e!-+=dK*(kitWAfDt_e1f;aZ)g;UKaPK zPkfjedzr24%oWz_g1^xQ_H|1i}Oyz6N{qI23uOER;xWW1{1Xf+l1Dt14X9 zwKyVg{*&_Ugj9V2E6GsBSXgQei<%N^?Y9I}5mxD%aU+aw=JMOwulcV*e{ZiNS?z)^ zM)%vCr&MTlOoeHDsAlE~r38el#O`Xor~m!EH6Kp7d9g9+Zem||xz9rV{nCVNv8k`2 z9CO1BU(G|4X?kmn<}^X?Zl6TtSZR@lGmH5t`fsh`k=7c>l$LECKME$pZ*TbokxJ<{AxDx!vZQIp-PK5ob1=c`DZ! zIM$UJWztHF$)_k7HmE&N84y2g>5~B zxE?0&TDTAZ(yjl`5j^NZ3Sy(Cu~r?uV06GagYAlFyL-fiTea}C(LcG7H0Qm4U{JJX zK$G1PZ52y5V_J2)i>2_(w>R#(>?K*cO_6r(W5d3bEmDTiL;W2~ysBP^7N&rv<-A?0+kni()3lS-i1->xQb|$Mh_Htzb=QEeS28Y2CQ56| zn~H7`moQi&Qo_{eOc={9dd(E}6qZHCIQ6uy8~o}2>bn12|0v8bk&4L#&Dg24`7@An zBQ5}!bc?C(w=86j0=BD1T(-^F zXtzunKUzt>C)e$0Bd31fCCD1biFYO6gEYM;`w4^8!@p%F@^RUXmQ?5RL|WlYemyfh>vi4rB@u4B^Qb zEQfu{iNlj8bM^XuFta zqr=CEc?+B*5v_Esv^4$o-WhOE6BvQ(jpWXSfm{o&?>J8K#BW+I^y4OO!BzGc${OrLtVW$ zNL;-5KS~xbWz=JWz3!&1aB)7N7WBD|Z5yl760isD`nL?UX@dDX+~)Tl!w*I;JNOcc zrjS98Zmte=jN_m-xBDg1KWWT%o*TXfTD>%GA8l7zjg{7rXv?T+uhn$*hJ3X8f$I~P z%0f!?584*qQN+(1RmR1*dI7YyHL+eUrd}W6s(&W`WFpVp9HVt4+YNuNV<&x>TAi9e zo_{xhbIM(}9g9r%GvGh)Fk$Q-e!+6Nf?IsLdM++=M*>~{`fDx(>;#_gIhq-|XVModeI?3Qu}p+X3zVM zxSwrVmCPirX>amiXPIGABD|x;%l+3DyY-#6vif+C&#qb#1S0GR1#rB((>k7CTpQIq zb?%uYv?Peo%5P`fDK0iX<{bH<%Z=@S&+Q9tFPC-I1nzT#CPc-B44<+1irx39+6tc2 zkJ}>jGEgZ5yUE-9y#Z~>gibL(2v3P|cxv&`?*T7pWD9?IrknYdS(md*WqOJwC<<=dLs*u*4oDr8p2WX;=28Q=%Oda@VKA)_-qdo7@2*FnsBk-a@`_L~aV{yg)^`O;U zCNq0l6m`24jG8;cFz zKbt+d!c9**)@ILD*1cGBe3YPP-afeGjp_zncu*{-X8du6=a^y%8_Dr(otK=qi-QPf z&-%Sc4kX?YWqLY(c07Qsiy9IvrP)#BIHb2OP4bUP3m+M69c4M82?=1%V^i7m*5lTg zuZGTV`~*Np!>xP$Y_*Aexo@e+B+pwf$?McZ$+lj(8V%`XTou}`oo=KH-+u+L53k7tz)rF+^%iB4;@bBOo;6@ z@f!-QbAr&lcp0iUv2wBhFcF%mN#4ulOCiZU7W$Nha`;OJ2<=kfbbk+E{osEdL?+sv z>-Hr)B|(Z{A+G=ZhWA=Xb_4K>I^YkIGYMCoOy`qOfxVRPMWSNxY4$?N_;zb8$8}I0 z*15&mG?{_)S$7Q`-}xz+C|S7%QH63zt}2UtAZ`s!32}CD#uP0`l0cWO%`^axh>sm5 z{BQ(RO&8zSpK?A*cTf8M^$IM01r+=* zpT!K_osCJBrbBLzL|%++qdvJUK$AhZ@obFTPOUtqg8-f}dLX0LvCu;N?kyi3E3cn) zK5j(k$XZ{>nWB;~r2m|wGUt#xg;lfxo;fV&Axmy8iq5mY$AmM zbT_5eObXgUyeoYEcWvBzX#QkZx zPGjfha<2*i+4reFaRnJFuKvd(j++MAmj~~~0+(I4d15}t;=kfT3XQL|8t6kta&k1& z76H#JZ5W)!#}j#LNcrcy`4Ki6r_zdD;5+sxnkvR@)u6w3ff`WkI}I|(fjNu%G8UbXB`A1q zh(#(~gPry$=l+LuwZyM=n)OxQuhr?p6Z$>%$ll|Y0zim})L>%nqsTfY#Z)@{ZyHq% za+ol-*AV}8zWB**XQIKWOy$z^4kgiiZUNugtv9+?uK^CXw;V_Hmvz~nZjV9}zouL{ z1gZpH)cl;9lpfw4&y}E#t441w`Rr3@^=E07@O83h)qgZsHP>rPGfO~=M~L!IlcT$f z9U^^z-3_K7g@%V8RFl;vK?yPc=&ov}rVaNCDLoHC=TDhWj)Qdyty0GOb?&*(x$r%h zw(TAa2D6@9cjun_Z)q2}PWt4Z3$OV%3u5zQVz@=G!-V!1%{Py%>4KoZ&CWHt1!F&` z$|>dcK73i_F5HjI@d@-q{2MOXnB&G~^48cSE!x7#L(ZzPGeE=Li-B9#n89YqI+o6o zlHh++97yq}mUQb@?>oiIh3L=)u;n-;0scN$wu{A=1Y}Q!L{LL~#P06)W&0Cu%R{2O z@jAH|+MCJW^}V>aocJ@YnVE;yb9m=7*bZFN4cWTl2h)5u6y#HooH}P0P7=VmdUv%yvBH|RF4d3xLKAKw^xo4LT1NLwvE=y=y!WZ z5h*rW@3$^&u9s8I6V4UEc<;jxn0lBZVEUEFuZfxj0((ixwNrztOfp@$a)YP&J!8JU zPETbWeeVm^&mtRF`rG;M*W+XR6B%1+*($j#Qw}R^bek{bfLFh8!1J2pNE8#^SWfp_ z)4cB!%GF7Ha_aT9s!9qU60~gnG-30JL-LZLx6GaB3mI7NG$XlTC@Pox!}Z3+r#TrD z#1y6FLGBxSxc!x(<8=h`kUkToxy%X!ZnDEoBjA;4!s3mtdy2Co z#s`rNAm0(I^Ix&xw#15|g}*xXO`o171fm*LVF)$%cL>df#alwuGiOxJ=abTQ+A`-g zS}XzHxAxjC72*%E_AH5@f&D5lR^2=WY=*%gCZlL7z9BrcUL@&9H*p#vuAo zppNHQP7$nqB>r*J;w2iI?tYsl{>a+cH)%7pt+qq?7mP*jDXJ3*a%qGUR6OeEd)om{RbEruu~+;?Ecn zmuBdWcsDYcw`MjXgu-$7G2t!rcfJ$+WTci#6jIg`$db${i)RX;S`GH zkcvfXwbaAy&sCgNQvD;=w@!b*A+2-028}WqRn=GV&BT6%xx0vT zYbv9hD64N{m%q2NvaYo|2B&*dw$SzTF9;$X_-9g8ymI%`{)YH-tAMh)jc<^5KAkRR zC^T@SM%VGnJ4t|n#1ebG85Vye#71)djJ0oRynh7+sT9@})qk4@rZ~%*m1dIsoke`jJ=+D-CEn|k8ZlyzNolVA_xyL+0Yf*>>5ugHQlLH z9K(dN|HaSHle335G$14bH5Gr$fQtC?_ij!aaSQO5l5QSxGa`>T%1-UYWLUA|Bfl4! zJAOxw+qm)788Lz1A+k3QY5kEevl+n%25qAN4@LlCF*o^8DTa|K2ipr)jv*xXG+HyL zTwbV8A68?vD(^7-$SD0;_0`&c#}W;p`K*pX62bSS01Px8mOMQP|D1%BEVMK-ixwtj zwdXugaQw4>%Qx?Di!1r_Sq5DIsd7jd)Mc~ifn*cw5$%j)*POx@9kI->x4-#B6b2;z zTHXG_c-SGRVHOwLy;oUNzB1pcHkdvIeNZ+mbubLv8Fk&nfNtTtXiwmk`n*5AT&FH@ zWxt%G*8M$H_eSof#^DpULrPJ%{`yRT+=erM3ehG%&SI+-Y2Wi-E_V{|A`F1gW%~w! z4hy*!t5CDJf;b&1)c`FRa;ntEjSDk4yCoH#3X_l>t^}GKTHl?fg5y!%b2W7b&Ej+Fe47czs7Mz=UH0RYmh7Er*C#nw;%^5Ic6RCEWn!xL z=S!OCHDt`DPP3yS_ci@>>i8xevreJ$3m|uQ{szz3)L0AR&qhalMzyVi_eCIGt`f*r ze^Ye}wmMP6piXpXD?Mh@*pCzJ_P<5&eh=lS_qhJ1-QJ|;(E@)>7lB5fl9Yz4zFG@0 zCX}b1Q;jt9U5ko7xj@ImhjO+-Do;;MPamazzy6u>Ub9g~U0H%%&XHK=4{mRcXk&MwOD>}7vsrvIO3lCVl{a!zFwJQdm?jIJZnauq-9{#Rv+6Vr-wW| z%%BLUg5~7z@`}gvF;k9tc)FtcP`IK!mQWX`Ss+>_O*|-WNZXD0CHC?7zMg|k@GDrDZER1#|Lvj58rc^Fv~99q;`nx+8*1pO;)x9oblg~dXsai}4=EL9VFNZaYI zHuiFazuq*Ff#(|_drUvv+rb78)YA8MPExx)2uzqsB#?@fbc;>iOB0@W-ZqIg*H;i~ z(Jq8AmOw!IzXO=Ty?p1B{niTIgVB#ud#xjf46S*G5woWE@O?V!JrR}Q{BH8F;NZ&%ZY!wCF4TVR zy<(N6SE5QakqFYi2c{|nA3uX2_iYirqZ-*Wv4KrLT@btKo7rcr*STd!@PU@nwU?bu z8MPr7n8MJscuGi!O?j#r0CrRSoKQIq*gQVcCg>8+Y+271!-2)V1Z7C)>qkc&qBxZ- zHE3~Q;mdI2Mx8Hbk@aN7`f2en;7ZuT$&vW~5uHTu+;gT?^!D~%?Jbe)n!QY+4?-Qb zPGS$0FB+Q2D|eoRM-9kGOKTfLD-fIohh)$XpaK;3fh}LwUAV^G(5~ZS44)nvJu~Z4 zW(rTggt)`8lKipYr&be?MHATmoU^N}B=PZn(&T4iGBK@5h(TkHU~a4vU3fd2AVGHP zMR5@{vF6tM{Wc8(oQBJ%Mg(QrlH=Nj#^v_>|4YlR1I?0;#J+I#2FHl!PV=wEX_?u9 zPlg7YTh>#{WV4h`^1HzplSbkh)Go$rrw**x&k@OcZa0?hT3>E2=%j~!YzZ2>Y&Y(B z+f9F0auP*{Q&xA*;cr$HHD}WXfJ<|n-&XE%4m>G8BrauL7lG`~YkE$9p#^RH`BaB* z+*(XG(Y5fIE^?}mf#2>etOj|V3N>Malg~MtzczA-B(XvxRneGLNjR^#o|c;;2(VUv zwY+APfwZRj?KVSP{e*BldhjC(ue$Z0Wum$HE@ls_mx=ER>uLP=;=bsf zh~9LqDufAsE9}TGp1Lz{yJOKrz+?L$d3qGlD zM4qWV%ii=Kc3;kF3pIfQPpp*VwNJ}R8w0oUOFa@SxBm`VJQUVR`^*5xM-#*ymxWK_L3tlWM@c` zNf~H!1bk<_YGnAX{0oH;mkZp%kJ(<$B>naV`^7*JT=m`syqA%hih(VVx7!_AyZ_Oa zo40JOsj||pP9cWW8lOhQzm!r+i~1*;_N`N8d-ia8uYd1cF>LOuR%`@FoGngsMCyX4 z3T8oWS8C++Aq)HVOG%i}6&mPdczSt}+Ugw0mvx=Dj9XdJ`c>Nc{UdgNe5m_pAzZf) zC!vuk2Bel5}1Iy=-5oT=$GwvC5@dP z?QHC`lgRwXG9J!j)k!dN=oxs}BYks8f8+dDmi+abld{dm-i+qlkAYSK&9u>+FY5?W z_^ymaJLV6{8fiO5t}Lw!^c2jbWffts)yF1HI>jn5J5Xb7-Y#Mu4v*xRf~`?}JmldX z=$f+Omc=|_{eb0~;<1smQoH3gC?WSpWR?*bXDA?YHky#GMJs&*XOR67-~(54kmRaq;;;Xlh8g4IGaz_e?mHUPjM{C&&5!7Jf&DimES1h zG@KHJYw?i6H=yEL)3ErulZFtJYP#8TXM@zQrU~<|#~$cUJ^!zSiMv8KN0u~NE9@}q zT;lEdPCkGCGY?%1H9}?$3%{Y%On#|3_T{Uui^)USORj_l{Dq;*3gBmod1S>Rn8**LJ@}rN}fZF2_sqikJ8i zsatDx2m5@}pH4z7>|2rN2%tFN6O~P6cO=C;VyCfYk^LuINY=E=JeoWvp$h%BRcdT| zFgRI7y*|gf=HlB)cO>*j-ty1epASo$_slSd>AHX3X2;QvxsKbL$-6gg^`}C|XX<7Z zEuJ>z#aDkN-{eQH(S#^2Xgg!Jno~$~r*N>@c9b7}$d`FnexV}Zs)-*r@Wq|0y8oPF zr}9R^bNjA=$;i{xx`U}944l;zt9KZB@aaGnMcO5A-|8>qakB^l9*EMo94-}#3t^>U z;?59$y!5t)NQ?~$$@9=)_%I3^|0EU#AOznGCbg*aY=j-iy2*GmhQNlAea?J3XKi%R!ph@Z;M%X~E~HLa9%S zClq42_<9f1tak|uwem7}@)I0aJIQ_prZ&4D3=8zIS&YKfY}0k<+);+5K1TY89E9R5 z{1S-@i>jnoZdp8mzPl%2!(q`3e21NxEgXx&M<9m#l>-C^c_livYLbTE%@d2miT^57 zN$|Vm4tG1}C+_d0mde*9cxJ6I^bz#9mEyPi#p=*6uf-J}NNI#b00a3+#D$ACMfzIk z>&F2u$t&sRv@QS6tAom+pdkr9_~C&7p5FP>2wkaiER}8of7C$03BF*SP*E8sM{UT5 ziPN7&xONic$`A=JTrC&F7XNsBU{bUGo1o^@EJ@bVctuFE2a_ER6&mvM86BE=lo1`K zJiCU~xYxHiBY#*sMAlfX_kmSkf$`wy?fi-rgvBq!KCTmItdW2DExyebN4&^uqC?q? z`s%t<1wrcUF++pe>6n8?LBmJ!8F?Wiup>`~)0YI#J+MbOPS+un-y4}1O@?Uvzmfen zK(Q%`K=}4S@oic^R49|k-)BU*Wsr-|3@P*ZuK+lo!Cth9mLGqjXOiI)Oy9~};&l+! zhC(wSn7JYZ?$@Yt_d4qRjM>J-K77Um)Ff>*XK84k%uqm#+$pGQqg1kgndSn6CsdVa zIfroY^F?@^p2;;$&o)A4CIUjr@0R{=?Cfxykzxg?;c4ySaRAEf=7J6K&V;tL__!B| zD_X6OszUT&`(5(w?ui}Z{Nissc+XYd_zC$>GY9OcZS24ASqsolg6)C;q#rn?T}7`J zKCU-Ew|l!^{JeX(%WjPSe55e_%a~>{i;ymYFTZK3{a{mw&$M+hYq;>Tea*+Z<^P*) zYdA;-LjJsfW{6U^H`M6qkDuL&rp8PxR(F<*X;uGlGa7If%wM6I2*@v%>EG$kNWI){ zfxJ^ok3G)8I?XekL_Fpu5nEo=3%Rq-gBuwhlU}@%=T13%cAHtY@Ef1 zMt6=fEZw5Ob)L|rAzc1|Tk9mmx}uvJ)#ssV&16FCyvSBdB@79=A(b)(9aC&8(f=07 ze`|#T8b*~8H!3UmdQ#*v7Kzq!klpOV3A>VmBcIjp zGu7nBgl){Q_;4W==tGhy`qK_mZzrUq3@8c^O zXH%mSYi1HEaA|(qw1!y<;!Dvag~AbG?PVR+ip|bHeD1y^%Dd@19L?~b0Jse`=?f^m z2~SaObP54%F%hLSEyOhDn}wrX=aW^6PWn}?h{Gkkzu8zP>*>zbVGLWOeKq2M{ub&X z^`ib+zB$jP|8<{mg)n-8?SC{2;EDWziqs}0h9G_G3ZpUaaUJXewW?0ZEn$XLn zBfmZ=qyr&-2Qg;2Hbv3Hr@TEeoHm?(yhKsDzd%fL)>9wn0@Yg_w zhWvnIVe6GS+Bw?zG-FAoypE!AMi!R1T*NioAL93md+Z%;JXZN^wiQv9pabugAqk^CIM8P63z?e8jH-c} z!y{*Gx6c}Tr_A>E_K(c|l0SN|RI$q?oSZ&y6Xobo5%GVZ{$Db`p@m76{Qlp+4u{J} z>o*mPhb9_n+8Wh5GxNT}?Fu!K7`k;Uq_H5+_3f6@caFioD{KkuuiM5uSZH!;8k?B{CDDr(PF9Y%3LkN zwMjinLEvIswth}R$3Mp6nwf@h%J&EgeEpBRD&25Bo1h8Jf|QV9Qp&Fj)FHJ{$UtJI zR66BB#Z`{az4sKA}7 z!PxL6d|y6Zp$GoT1brP`DC7#?K&FDolxVZLIM0^kx#_Q#@4pMJeFHXh?l?5CV!YdN zuR9HPUE5O_jJSogu$&riq-RtfvDDv4;4Vx7qn*PeSffyZ&A8_a(X|aKoSabge7@ zt#WNRUl>_$ssGK@M9yeUzLNA&A#sobX~W6G1-H$o2(&a2!yLv>b54=IOyR2Jdd!Gj z?}9@Gb@D@40yd{^e|dyP8njS@zF?~Emi1#cRwBUn|3nk=7{Y9oC?HDw-~e8PtoiSF z(4)i!J!)h#sv?h9@=F|1?g6g~ydu4$Z(f=x) zr1k%ibPf)6{r?~TgoULWwrtz>axL4-yw%MuFR$Hf+qP{ln>Q`jvVM2J?_Y4vJ?Gr_ zi_gc?BX(q}DPTm33p76>71SUok;4l$u0%4%))w~65zH&9Z5?D@(XDIze#c8AA)1M_!J>$QWtqrO*d4{U)v+3k=)DUg_i&;AN>}jvx)(AcXA&;2b)K0? z{Dnv6TO}YZKSgvXyAde5H2&t;#Z(9T3B=0fR0JL$oMj&4I%W%2-VHTL6$xWpXS4Ne zNV3`fS@&J12raOJG6w?YC`P`P2~(y|_TewAV?04VrT9YWWcc6wN%e+lXiSePb}_U8 z^aA$q)N+=tOfc}R7(uEy)sK|hX=X`)i>^Wn)o?2;v)%hHtezBLDwVUrX4~zjMqDMm z0kGZqimhGI*nbT~GRJ_Sc1+;yp!2t;i+&PkDMg5KuR_aakeA-Zi7;r|YXp(oxR^&t zM&UMs8iNX_-7b>jFrwYP2Z$feI9A>(LnsK-;1n}#_w2V?3|P*7D5d+2{#jxUqqXfb znZMO{mkd>Xl(HZCmk|bLNd`EF;vy66V@zI>>ll1!Es!W?sQ=DEd>jmn#G4hb^jU@Ry+HNg8`S@sVO|S*iKeCSQ$vf8=ilj z5DW!sc7YG6)>Kvu*xN2FhirsIi3=OJe5=eAj>S#p!=xF;YRn;PzNF{+M#iFyd_l6JV0-F=c zp@2(9^2X0VAn+VI+KjHhKi^<{W?g3Wf9NNL6s0@F5j*mX)aY-;wx72t{6nSkPF+Ob z9`0&Ohvw9Mb4G%~$)7?LyfqfSL7U#cCnap8UM)HcoF?}lY5CzxsRyBtRt z4A$-RvYU{R%CeY@v-@|LMFpT|)=lSkPli2!?Re`V@(x|t^C#Pi<9ZO04OLZ zK(`;MouM`XYH#D+FOe@$l74c2lz==G3AW$h@{hJ_Xi+C_&*msUpjtQIzya|GBPa6BGRoHw7 z{aj8F<9w{yw#6eqhvo5=0MEPoQ0$D;-tc9zU5% z-A4Z)wK9M45MHhEq)hft@m_+YT&h|Z$lyo0O8vYK=std@wZmii(IO1>mXppdJ1u&*6P(itg$l{5F}9&& zeLs%zU_QzlF$j&b&x=y5tC>HxO-3yr`+WLn%=s80Mjp?bG_rfIwQtpnqgqBUs*!XV z6nh;KdL8O4V-Yh}kP(L9vJL&lZweFqU=s&wcmH&1DXo@8?6o`k-K0CO+7yp!cRy)* zLHF=CV8fvDthMW7W&c%7u~&v%(KcQ)Bv)LR%6JAon|eQDA$z2x+lz$THTMw{zU&#& z)ta^?!+Gzech>2iQMM13Z;#P)ADLuAQi-XZs2qjv6aIG}!^sj1>CObmb3Oa6SLRG0 zJ$zkpHzT6M{$p6g)l({djB}{=%!8l>>K@U??>s+IY23Xz2{s!n{@MQ-o|$ z@uM=eO#|XzR%{ZQPEta}>dS*Z)&Fid%>F-RWI!r8o!L{>{OY$?bW=Ieb*aSib2|8suZEHF!jT>pKVhGroehKZy zyj;blGl3&Rgxa|bOc^@|_LqaWw#O>_UB^dtWV+7E)j_eGtxy&Ycd1O(uxhmC!&edhwwNrBPuGo{q!`18X7FE)31v8BC}e=^DePtt|F=W`;OBuW z{0pzN{(p4I^!J0WHV6J+UY?Fn=0N@B1_uv~9ra!w5R_FUgSX_?{T{%`XV?VXGT(e6 z)ic8VNLEMBY-RYUM-DWDCRP=hAn{lDQci5CPjmBZp^g+Z&@l*qHa zN0Y6(x_WzJ8GnkRf*J`~j$5p8-xIeGp3It4$g&?&8Fe|YWP=kAA}7Yj`8aDN$bYa@ z{QtXNu28N)u8%6LOlrI`1Uw^4 zfVE`ws_3XVJ(X?b+~=%ZZrdMeTrxTdUvpbBq;>4PP4fAhPnrldWEJna3}J0yC0@v~ z##@o^9*loSvd%Oio@G7wSOFl6Fq~a7bJ_AZ;T=H^a#~NiZ~Q81`4JEpD$RfSLco7{ z`Db}Tk&u?!YDs>y0H${OR=e$O{yo2X^zHFz!r!k!wpD~nkQ7tpx~MMrI>-_l&Kn8lOj0*jxAm1=GZS~%DhL5BPT!$b>b&#b2w%jfg-NGIOiAR?ym`! z<5^#j_@J57Yx{Zw#l+XCl@7)rDiU|)-3MFU>TNLe$k(_go_5=LrPKx$K#JmX(VkQO zdI6R)hZQ2uQ=bP;oWH5s;RLw8wgT=Vg*0iOFLVgdrq8dTL83?1NX21BB}yd=BIspi z^c4=8GE+$g5Yw}s$-0STusG+qM}Y$*N}`4DQZhh8__NE)M+YN@K39WvCU63JYrHJv zO?NeB@K~69i}maa5;Z%PrKb)XlnQ^AWEz}sOgkoUU}4+$d%zb6_@$Xhv+i7>@`z@1 z*l<$5AaGS&oSi5Ibvzs`qJu8BrGTOTWmlCry3hV}-MbY?qS0i;a-S5I0o(N`;rfSj z&~=cr9oYoIY`fy6a1;C&~juZdOQQbGpZMMT?vodVpRW-4odE53T-BlhjXh(^j( z9RHr!Di(EHcY=Xyi?=EVoO(-bllbiIu!@l`IpQBLP91rc)Dc2Xuc-f!Gvav1kjGHc zBxKOwOi-kg@|+8+)ioe?N#LG+yHN}F4Ut$%6Utb1#f&L1WiM3rb_2oie+VM-f4Qmy z?MXk*7mHA98@eUhZ*>V<$}WU<)#-S8;e9&Mr@-RHA#`j5O4Ts;_K8pjBFhs)C13Zt}92_pBIOw^n*5zGW z<2qDH=mPUIwjIa7xyudO5$VuY$s)wg?|*m6zabJ~wtpc@$m@Qp^9c3tBsYHjqn#Og zekl6hy7qDp4S(stxAc9E@x!Bru0fRbE9e>oX;&Wa#WKAe50D)zc{*gB^8R-5ZVqMF*7-a-r}DcL`P`&$B|xd*&HAN!<^VnS zcrmdP{1B#-gvIi=7EvmpT$A5rZnMFe3$4TPHal_uaT{k4iO_W>6rCuWDe#$>vrbOA zL5;vwNmN)=L}pZ=AAXIon(miYQ)nbpn4evuM0&_%B$Sd_<#Tvbz`Adp_MKAX>V`(e z^}Mj=Ex$FM_p{hI`VO(j+#KU6oURVhlD1j2u!ge@T1OURpkB)t#=9kt!sL9{*FxO% z$1!sFgpT7G`hD1axG+U}R*jvWH+c(rbZXJFf)oT6;L$|B-{4WQVqPm~e!>@OSCaHE zpY25?WvcFeYx99nl7b>hT-z}ha#SKshX5+@54k-G$Qg^Ai|zgB1P7tgJismbTS5ZU z10A)L^ic_TzHDatphOf_6VjGXlf6km=poL);*xNJ^Z)^`Y5)7xPDcsOKd!%UKge%u zG(o;^w#jE>wp0P??lUQJ(8Rl)e1I7&PT%q$dk{son+W;eUv4(o7!F4=p|0oW_L@8b z*#o+W>+}$*TaGTjQnCZ3KYKD7f=qwdH0tV0`PIU7{43D+O}JCJgk)U}Gl_JTMu&;+ z{;v8joz%TQ;nw`X8McRR;$V>1Q4Le%05eJ7PbKIO=`gHmepR^BvK)nF+g@rG4TL6S zcmL|yw`$$jC|e=ZAS{-g%Ele`<{@!lcU}WFk1G2=spIq5rwHAzyExn!+a78V%6w{> zv>GejJ-Z#SepOS<_-INJp$<+g1(t9+GNFX3-Ad#vVFQt6i34LLD9gn#Tw7T6(}_GA zSWvy8i!7#%wry`}%DImt;?Or%d!~-A0)1AONFry^8aG3JKd%c^eqpwJp&un0k@1mH z*ge4Jw>?~r5xJ|49>rD`B8O(nPWr!`qSmRC4JguifOWom&N)Ob%*cM76kc6!_o%awH?_46oeC^jF^+%(67jhC7F= zyi3=jsqQ^+v{Pq&EA8dDL4zOqnk9|iAN6V?Y;NS~NTUo$;UIag117?Cul;mUP9B3X ziii{OtxNEU@%9gB=n;$!OFW@SFJ@jTiw|G|d%K1A1ai5PxAtHS%87F~B zte*|dKuLS>YDfoW*A3q+VhI&c&(`MPoA_dMl!%;h7^W*eqSiIdfr?kJVFvHf0L+pB2 zMee}~KA#Trjo5k472DoAzL7=4{{L2h3jz#quFPvMiQN9)M~Pp|tEX!)8S_Iae2+(| z&9-xq-e;pP%R58HWvVya&QN`Jd>F}h+4I&zlE+>QKQbtJIQs<(WdL=zK8Oq2KINLE zSpLL-2GFbWG+6zJ*A`68Iv0=fQ)`DnHe-5PQZLVfbDK_jk%4ROVe75`pPDBLQ?%z2 zuicHs!0dnF@3~WY6e|?( zwcYBg<3TgP)O^|;D|7FlGF`2CX$AQVc_bVAwL%Go-Ld@`q6SGUh73?We%re9ICImZ zqvIz7^r3RMh%aew(jl&*FCwNBPV{F>xHsR@Aeo7FKoJAbt>`_$c(`}CbMe~#}jzX#lcJMiES3>`|RR!vb99`4nvI(8el z8#$tjN1toR==BI?^hjZ{(I1-PO+P4d3tB_T5jTCFNi2JLQkzuhg|);#0l+L$L)#Im zV(B+V=)(|;w89jO=I?t4DJGsD{r@%OW3vApS82RWj!iBEO;D2o<9~sxgHATc2S1Q; zByMu!>oK5=r$N$XkAZ;!VrTrECiJi!#9=vs=LNMP-A_v zsMF_*X<^CCR^!SMA9fS{Fu_S%sx9nEA_ik(4Y!%z78c77_Ho01M~4Bnw^;|CrJbdR zo*5o?mNMlidgavR9jYz1lM@D>7`{YuxC1rpzu8+;fy%)7lUr1tv{{~c&;Z$SGZlYu zVCj+9FZwzsD(CCld6EDe56`O*VVSFtc)^$=IjXvuFbD=UMfT4lw?D+!DOMe`)ePE&xg+|}h0s}c7n(NkghY}w(It_uebNDL zVabcc3kS0Y<_Gu0LIzLCck#rE%a-4+evYV=#lH4c;U=~Bi3d1moN0zBtwgP4tyHaa zy-J}}ZRA7SzA7s!e6kJG$hGu7X{#bzcT~fGqn`t%JpcF)&KI5cZHc9D2&ggtx-jQ- zRnXgz*SoSPBH+&?9S(KObc_1r9vYwjW0e*pkg-ZC=`gk&>tJ<wSYh_{An8dk9!%?`8qXAoL{T!x9?255+Ko+!sJEnU$;9O2`!G(Zi^yLM*C`N&;lLE z{&(r>e-{^`i9FLSUaJA045y6+I7nt{8yOm>YST9jd`5$%a)RcD61NdVgv`~`{%LFm>O{XPRzbh1(UHe!GkOm?3`<3y*i!kb1BoU9mGNr@sF}FIb zXBm*r(9-N@M0u$=1@)Fg3-RH2-X`@XZGtA_raj5C_7pBhy_$iss980xi79^g7gmNi zZfZCCo{qx|UL*CQudz@DyH3}2V)aP&`^%xM$iJBO_%JNWVlZ0fhhLQ1Cn+|bbQ=^3 ztHkPX7dgL-*e?0GX-IQBzD(Yo-+yXNEYDIvyRnbN`;Kmm!Vm4%K3)^D zHi9}_Q+}cOU+oUEv;VWK$t;#@xwudWf-BKcS{Mml?>Az`Zi4`{P31Y z&1f-MgpiJ%95O5FV+xEO$^)jmXLnIMkL;KQc~z4~T>Kuve83C?pB&SD6nOEx9&#VO z8$GnIHY;PKOye~^$7S>~vmoQ4ewcfUFU%>Izp`{Vue=|LE4=kW3(#7EL#*k;DX`!2 zJB4X>thP7kR!i!<59Q)L>uJO`b{2ZoD`=?bo)9`zqp!w;M^ngYbz%Jp!4ORPH+hbQ z@T4g&V!zvErRlLa?bOhZzQ|keEZVQ^bgf6jwc>fqgd>e|DjMJn`?TDQr&+Wktu9!c z@QmRPlQQp~vgolDcd;?T51kLzI zr-q!t<0u*s>lHSU;hz*MAq%*c<2+3z`scBxgwS`*otZ4&s3bG3UI)*_UzHJAj`G(B*nE_Zztz4nE#zICO#wzs z;AOW<6oYuCY?hpqucar6xLv8dsL3Pp1*v`cGbk1G4ltp|cy0Z+h3yVLcM2iV+Y*T& zxqAVRpC*?a@%l(~nA?Cq*SBaX*pW>a_){(!Y~O>^1*MuTzvIGCufM&_HzzHaP3_Vo z*Ido~bjgjK^5VQ+1bKldjVYao_skrfiDBGJ5=I4>g1hV2%t2fbQo zJ#s8Fn_OoOvEp!u(xEezsNTh>zSl((o7LO)bB$#NCpHdkEtw33BgC|+qB3RZwc4S6LG>pZvb#ztJ|(Cn zB~Fy$-rxU6+tlIhwK5J4t=EWvGKakU2biSijxYjVXqc*d)lirIGG$jS*V zN1!j`-=;_p;8HHb@3?#t-3)*}CUOv?s-~*N0G@2$Z(Z6-1nW1g{MP5!!bnK4@ro;{ zonzfWB>XCh8gbK%CA13l3e*p$awOVZOf0gOu~)X&wl}u7vUjxiSVdUixn6YBT>;oG z;iaNL_etp3;2Y+a>>teorXQYDB+&bu{?M#!&Qth%KMV6a_w_m-rKl>Q3{O#SMu%Fs z-vMTvHO}-^Sj1mmYic68AE7hZyRl&Q(nT=OC}Fk5a`wg9zTJ9Oqy%D;*)mSLRgihT zPeQ}*CJu$ViX2;L3LdBPDVp=N@U9y-(r4emV1XjKYgulw7IDo{q8YdMwaqZI!eQzdH$0*Uq3)aOQZzs;Yy-C*CJt zmlaztw=3u7Ej(Uup{2NBnbBx~6oEvZ+^mj+tq(Ts|UI>A(;*gSYX;OrZZZ)q*N_Z%{I#4%%D8%e>Cb$K&J*Z+|CwU@^T|$*WfdS zc_le4GnDf<#AcS*4R>Ft;Pd75xrtFB7VW6c*E!m?+VF2zd`b@Q(n&0vo>#n6*EV2} z>xgYRuCc)ml{faYO10mB`qG&0mTaqhPl|k&z5dKZx6@Q7-!+97s6bLq;l__)eojcS z7uGcWUMJeg*%`JdutL3PBhpk@<(Nip>aDG@=dF!BCeBJS0QnWE2uP*|?jVJ3IF zfz{trJGbk%evH^4+cHW$(yi!FGk15u42NrNpk&G@3v8KNer4pRMPB`UJoytPT;iu zDeL|NKRzE_Aly49mx|)DoG)paMWHg@RR{aJNoO7c?fkP}-}4)ls4TV?5A`Q)hGSdt zb-r9i8bx3@;qV*POI^Tgl*XxM(hxMTX(hKEwmPO@>YBpt!q~UK^dn10X z*f7-p$?qooDzyYdkBn&$w)8mEz%B*1S>MQ@L4(GWWI6%4Q7u$S_E3+Vp1_DV-eNOe zGGIU)yjg$hV`c%Z!&|+n9p~F(JI=)QbsIWJtY#6?Z_tT#$Yp+&g7p8^fT0t?d!HeN zHG=~+tp{>wUG>6o?uYJwA3pMd%t=Jf#!DY!gCJ~J;4bbuqG`7F&@mE}jiXzF@oj19 zbL;N+Wipeg0Qe1U#%q$S=`CncVz~;wrfn<;)SRv?aKEhu|hMn_XdvJ$VU9{1-%0zm#p?UorZ$IpF zn3E9`^z7#RtrWr|M|4JMCo}dZl$cM#E&ZgR>2#TTjz%$NOdJkcANf9T9&*l?Abek# z_+UrgC=&pgB<0xuOpdZ;$g<|n-5z+lda1+IlpZyb?nm_-oH`E(f0dM*tZrp-g=cw; z4d45CBdKK{J$YstgO;Y796^Lox1aurj8oei0$kPYU3>DFzKi)_5;3x;is3vjmO@VUS7X_x^e_+^|zIqYuebpekZc0#tYpI*(Vim*QT@ppCMpIYE)B?hPxtzQH689n^TGB0kSm6rAt=% z0#^A-ax8-(r%9wg8%n(!#lJcj|2X*&OZo%K0tw~)adtAZKA)I}5DDzUF zL_P>X5;L)ZpDOz@jMShRPK2UJfEK38pA0TKW(M$Wz6gfCgbv3=Jki2|@xz|09w-hv zZ}TNkyQ8pLPXo7&{3z-yy*)|wv`t&o!?f%~=zd^oTCs?As1G6B!$o60>c}SbEn%Lh z#gs;b2Ze%Ey^kh@20rwqIFBz)lGRS}D?0hB(9fnP(T+X7UrOW3rU7{;XPye!u9C@`_)7=fMOxm0uFYsb z6&3&*GiM&{vO5@)?bfL2jyl;ty!JosU+h*}NSKT60>dOgJY-8GY3D)_vRFE zroK-&`L5ZFVr0|n{LHg&8(<0P5oc6U)Wl-&O?dsJfP1H$<^G5Sl$=&;49 zHs2&Jtv??)xLNmH`rWz3_I3qn{w8&3nJM=(labj1m8eaQ#3USF1oLod4*xKJEc!bW z0M9beU%4jP!wDB}+BURQCKJm}E7RYyKd|j5a4@L&+%m#mY=Vo;D*A_!#@LhZbYxp` zV;ts+Sv%~?{fE%4lwMJ9=7G&ij;HdSU_Vj`LRcF7!coo5@5oHNu&=Gnn%q%4-yL5+ zuLJ_6jr^=yD+Y;L^Jy2ydM=qXZ}Uwo`AR<%0lpOvjeoWLH)}-sl;)IloUU*}3^MyV z-*mAGRZUGu^PpZ-nWYa=A$_R{lq{T2gx8gWyG&Cq2_PC^M%8O zzS59joDp(abE(To3)Kx;F?QsNyA2;+6+yMc`tf#9<1TWHNOWzvB*LJ!Meq`l zfL^nzxi-S=0xs1Ri*@&T;AcR7;}lzT+O+P>=PaoArIhvHAqp%De>|P?H}AdTe4@|a z(8;d3xaUu)adTSbv0=`feDp_CR;ipny(+A?Mx8XBB|rt+ZByVwVG?eWieJRKdjf1H z1G7xQI34tXD4#%4Yz5mJ8Q+oU$hCH*f!BY)XxEF^3$t~_lQtXZfr~)bg>PY;Ye8{5 zjk<@g-!DEmHg8ChbuFD(IvsS9Ve*~F!vsEWxGZ18@)sbK+}YuY6h6^8&{f|Z0bs3* z-cC^P+^LZ@;I7p|pM6`#az-O*{r^lf?;*#$Pjznvk+QEcX`I32!Vv{h!Eq#1#d5Mu zJCu*`pysk50wTrivwNgCN%@F%G2%YGoZfA@d)dN>BY5STWKEcVg2Cc54$A5F#TrJB z%GBkK`ltsBG@xt%z4w%LXc7`+@Hil8mDz?JVE0v67Hm`QZPPd1Xd-A|K2G`|B)0sv z%sgm>WBgj`w${-3TS^DHa&0GT5qzsBM+jVKyJ}s$ohWYblrUdeCTiJbeuub-VCj+a z#)XHV82=}i%YXZ~$KhW4(A^}9=+I|DOaZ5L`$5|n>+#|u;QkDF$oYy$#(hy4b-Q`( zAjb9R`d=6UXH1pH;fLW!P@~PK29UZ{#LIXPAJ54JxyUaj^~Wz+n-TiJ)g~qucv4zlTYsi&X6sNM&JpL1E$GWVBgv38NB=sWoM)iL6S&X1aM@0GUhDjX6 zA1mY3Aa2-X;f@4sykZz;Vg8J0SXJYat)RP_|~7xn{U4@v9_| z%M$qajm15;7|M4Gyg~cepjcYY&L08T8F&oWat3*$tMe0J0s+|~(;MR~NRJX|G!5-~ zp3!mq4_dm}XMXG96-Io98rj5;>KIluUhoa**Zn_k1mre#ly!}D9d-S6qjj@&t985O zW_M4zs(sbLZr7!3$#RqdKQ~!zh7W35px>!_FB^ku$skcp8hRP}VZ;U(u6N5$S-%`w z@=hB1Jqk(DbdL}0J@KP9FZ~+XFKr1$J~)u@*`OO-DCn7^2DQL$_7Ms3aR+PNjy7O` zqU!qgA!2JPfQe)xcPBmk~ima-NnhXTNHxdQ-aFqRL3+x#&j_ zBB$AIHkq6stfd?l^%uhB+6dwtrZ_Jrv@m$hk*j0zFSO9x+>Gbl;4H7X0s^Y$xtxyw z(_Z!yn+W}iT&J_6*h1>%+)~PFlqtyh8CJ9CHpDnh&Um29;wHcUC+2mi)1eTJGx zCu$XGK{g>dxqVV$Wwch^?9hYhZg^J<<<)6MKycW~*f3bQVKbgs&_fC-+r8jaXVMiM zfW=MS^OJB~a?6ca{;HKsNpDGGZ|M8T)5v#x)Z{zRZQ^axZ8BcHh)avcN%P{PC#<$l zxFzrK^1h0^N;nO5U8HyQAkPUWZ%YfQz~1UQm;jiS!Rkn&&Guqvf z9wP36h16q*Ha)h2RzV_?gU5=9CcrV%8~T>Gw+C&51Io_!l$#FS55A@y{ICplA(UIF z*yPwW_5DU);Mb&)IXcWwwKE*I-DcaJ`2&|Wo3+RVAAJIg*Cy$EsIYtJ3K1=t(pE-6 z%FAiHSy}8_DxLj)(c2uErp;;&KE+Igyk?`>zq;eSz>Emwz3*5ZRX`V}@>0ZlH~drc5I-L7z3ZOitL$%bwN;;? z@dgJu@oaV(g(M~r)v7wHIg>rg2q2t7<=CbtPucsR3a3Aro2c(=pDVB7J{3@IV2+r! zlKB$+qOs!BeBP77+rL35ea!Nm-FN^^s*yhf_u1Ti{J zV)$3W+spww>eGGyq?X@o1nnAxnFj1&4eiG~HS@0T1!#Or{kU3Z z16_Dq5f3m|5aeF%fbOb!$MM;Uws@>#nuQ7ihvfmS#EQ&n&CZpSE@32GU(kg;3lhv) zMgd7Lu##fj z-fu7MuoIT#R&s*8?pg9j4H5-3N^%)k{O)No3sG@E#dZs~e)ML4=x>_U`-zrL8!)1X z8bS2RPGm$NL%x?{u$l8p&VLfLB1WCk+)io^M!@4gOQ&=gEGAdmExK8M=oQ;-!WjVa zho{@F^EHFRrnJ!p=CKj=T|*j`HxpWPH(c0mpGc`sW3zV%{1-{N8$q-; z)8c9D8p@|Wj?i~1O9(>-+PkSi{Rx8|$3w6x0ztdeJ^f?+`m_C8;0S= z<9~vPaFT?@+xYq<-7ICegd~QJSM>!NUf@2M$o*UH?voM|6kITvS)7U^rb5o}uidja z{EovT4_x2)!{rPu%gnN{LOT{6;(l{$Iz+A4kO!?{@(&eWePYQ2@l%RZI)co>yl*Nt zVmT<81Eo#OSuMccJeDbtepvs(eHf(5cILlgP*wWE4K{DG7h!r^VQ7KLC4Ys&s8MV3;UM|vS%S#~-k+BV-+rNWi3o7o=H8R8{=@=}X_x_u>IX{}b=Z=BfDCQG9slW-6zY>NfI9*h0dN zq%Qp+z=Th#u*U_s!U>N>kwZ)YJfpIy-_uYu5Q;S`7DSFD)|1f~4Lxf&?{CVia@lP2 z4C&}J1rz<)S&)!MOAh?hYh*}JMXKF5u-xAv5fH4%N=#F@(aX)wWK4kCVzZ%=cYw{?Wd^n0a-+TYk0B3!4PcA;$$hb2@0}}Z`iY+>Z!iM3 zD>Vum#d4xIwA<{pc%|L=-Y&!Gl0TO7aEEEmr5?9>&>YDV$r`a#GAgsiJxBf^VMLX2 zxV)nRM_&jvv9>>Sq=>lPoH*RT<%Gn`V?jXom)*mRd?_*i*P&l{p|9;vQb>72y+>Y- zG~ECdAmK@PHOMZg$o;H{S*;rsX+JbH6R3nfEV>5?{!Qi}^i-yteRRiDq5Pd5G`H0N zZrRuFWP?pM-cJ-QHT;`R(LAA;vH3w1rnH~?P&ZaRO766XHoM6I`HOL|Sq)VD+W9L0 zi{VVnCcXlCsF79u>51n@~15qv5gaoj-PL8Z_yl4g0>-r+@FoS2L-@u-0!CT1%)yQ z9alp|`8*z?{y&ttz&#>)f~4vs!4vG0B*&Y~MZroGTU?j{uWTvkDPkPVpAzV+kOu*B zG(brXG#uw-R5;#Tm0ofXaU#qR^(shl@vcsZqOcQ-E!2+EkF>#2cBv)5-O0KdE%1~q zCzA$fbgHwW%9yI2p2-@KVdUCBm9`Y@yWk-4Ew0sYS=XOGbj}lvL?ti;Lqhzh%wi-b zFcv)%WbI>XMcYg~Q0JW}`TvU@8G2H!;)_Pz|e zp{-e1-JHwPAnriW<9Hl;#wk~=6B=qa2aM&n=M|L_e5rWdZ+poibiL}V;>WvMi?SyG+lE7ma`?E6-StCAQy-S9xw&ZH=-9F<45mg}&|0)tx?6j3wZ+!v}3yuP=Jr7o``GFR00mmOGKpL>H0mB;DQ4 zg(DRg5lpQ#e7qVPOMZ$F{iQ+7YJ?2NpM1D|zb64NaF^8n%rDa|GLX6(xa?=1ZMb*A zBdP-%*+5_9-6y==C_pRKoGfrpVPx2F2JgZ0+CEmHi(D=JJu^C+xqVs)c9ne2vbdZo zirAY1cG#+{)}&YjX33N3`!;|vOuPBi-kmByQfYL(u+$;K z6nK6H`6N8)bKAd6USA^Tf}JOkzfJk|HgUi8Mlp2!NB z>^b@tTga__^`q?J;DSxwvPelUC9UeiO>3I=mxZWJ08>Bq>K7J#SUB%!-_xDV2EKsEu9#~y+3i0a(FR)h?~W+6dBR)C`B|W8-|(P<7VMoen^giD9WUG zb_xIOCNZDDAMnMU{rUsibwCV+fKu-L209U_&N;9~aAqG6W=eVZa@t#m2jBId#d)w)emvVY$oigObo7zMEAapmJ$|x+V0)525%q4i@%wUb; z!X&%K56N*r#oG1D7i~SQcV5tgtQn|gC;)!9ie-fD?mwPcD}wwkan9#5K{~F=10%irCy_ml9S==()3~-qBWL z)&M21+a8?xt_ox7jGsJW1?e8ddi)Tu{?@Z~a$df)%&}oU!ac|%#H!aHZPIx?V}(y? z$lInAk}30k(bwYDhE$WOk_OXE@)9}lBT|7z(D}gQHgD{+$GOf&E=1iMA~&#a1q+|2js}Ry!O?2Q@qcp+4;%!v)=kg20&IU@S2h;(KFVXCbWTaJLJ}R7NObr%3J`2{MS5+iVi23p?eO__ujUz6tS3|jB?sWbjiT;|)B0*|Pk9|A zc2jWdLog7EJDDLGIPkR}t>8L-M(4M|rA|V})xBg)H>0@E{}6+Nm@O+hWP$fMWwgIS z+<|CFM4>AF_ly7*0H4TKGi;gw;7c05tg;}S+$(|Bz^u>i&T@-#5AHozK`p+d9j{gu zP3F)Ido&A@npR*1kPz3JlreT`jkMR1sv?PjAG!<=RW@bTx&I-K<L*`L zGRNTY-)OUIz8nYx*2pnrXt2$qQOUNyCJx* z;xnC;kKcz)V`aqV|41|=f(IrMn1Vl!t~IpA&}L(ZeB>wIJ;W88$~oJ(?pLu(`nkr2 zZYA#RH%FY}4)ZQZZl=cNeRmpb$war(0Sw~`XaEj2VoR)c9mAcLA?zS=XT+$WwWCTD z+Ts{fo6E27j;6mGjZ>KI=SHv#HUk1Unv5L^N7U3+kmi3#8U~)sBA`m_DtI0%P)z?Q zDFwXIH>#3p7kio??68`3jfMsB(|#PnzUgb1_QhJB6AOP~-MzBf;YZ2{2xo>;3C7z= z;3ra7D8d$k@4G^xOl2OPgRx(5Tf(00jFGa>es-O3fP*BJBoXTX$DXjn6WEtyCiB=+ zaO4^EP~fGtj=L3-D;&&Og>NO19D$%GwOv_AWb>`?Yf>)lwqd z_0;9*f!}bhtSm+Lz^Cs*d@v}S+Oc+J)XaC-ECX5nbvsSa<`R6tQi*fkV10(<+IELDQ1Uvk{9eRJVN&EZBS$t-|@j-GZu(AtN4T}TEJ z^)`U8l7*^I;d<@#_DojjZhi^obBxULNkL4;}exeJO^I`eGD80Hg+8-FFc_;dA^44~NT(dVrrcse>uc z(F|8mRol7{8~1r)Ww(Qw+hRxQ{YmhKCw!I2CnwWc&0xk_TeM$jt@mvY+I+6GUV{5; zh2`+-0P460m5LX9yOD&SVy&RcB5R=n!aXH_Y;>?~nAkO{6ne%aRrTfwy)-7=%3Y3hpFE|V%wizbRpRofp?5lLBph_xo)Pk z*651m;?loiG@@nM!9g(|kSnt-c#yZId2O{XeDBNXyQ#z0snV=zHEQ5rz|2$zvB)T% zpx5e^c@-yCad4EMyc1gAPc0*}KH)$;_KsGRf~e=ovmZ@ScO?EJoSg-TT`WCZK~Tyi zv(PFrTJyGv_NVTTu7m04jnDnyUO^5wMyb%kZTHy%Ygv}_qiKx`5w@%C5lpQ=$@}@q zakY}}LMHiyx5Z7NHttvCJx!@O!we#1Ov9;?|Dm3!Sf_aUEWX}H`XEsu{48;|+ag4}BT( zMH1q!UW0}AC)jYK^h2zy@kkJLzZy^z0v^r57qau#Coa?uPhVfl zGjj`c*}S3x%1OPl5EcAbD4YgtOv(;SSjP5sTy?{8m8}mRxYwXGAh~YBDwU9W`V4(o z6JLQ~w#ojPp-%XFTY@ay$7s8pQvDgf4{2=?wU~=G?<6;pN}|Gd9uut7ul-h(mE^Sr z>AY`(WR4tCkRwWUg*^&)ix!gM_4IHUgtf)sZaqrnvmw9;0<1ieEWk4{DX9%g>HJ6j zxTtcr=bH3xy!C>Dxc^?ngPmg%PYHk$50|?g%>-X_!wqCdt1mHcx3&V;$;cH3fd|ez zW`xnX(e=^IrsWS$cvdVHpVc-gzY(-_u=cG_^gOK0=$MS`7T?5(Sob>gCe8#j_%h6w zWCpMvjp8AYd$gnIHH^;eYVv-GN8CL?m7V7=4!JkfiJuM$x(JH`OvUaA-aAcLVUn(M zp6lm;pd-!(pe(2V+(f`Z#m7wbS)1Us8%s*kn;(XI{$UN%5C73Nh%eRo?&MDaS8e;DN`#3cC1d5QM?o%#F!)82zI|7>q%erXaSf z1|rn`LgINbWsJp1J!Six#^)=o&pI^h4UKWdNI6k|kLLqBx!`A|wi7N)9$$sYB*<9L zP_qmJJVd(}(&s{1j|h{uT|-s^PXv&RsU7FYQZD+`l;Y^D_;_H|(av-!)IVam!^o0N zrsC4#^?~oBTdHN&g@}KImdhk|82)%3mqoHslifq!>htMpol0K2Xa2GoQ&s+ZC&S6} zVTws2#{)|D5HpRH6-<_mESUD0#Js4teab`I;NlIhL!YB!Aq+(G%)RO^`CP6eaXnNS zXiLTmrHl1`rBmv<15bOFB51H{n_5AbgFdMAh+pN)c@Mx&6{ zwGkz}6{D3VPG*00utSw9UDfokjSKQc?=Kn=MT>rj$POp&sO|m-lgWYq0(8gW>N>OA z)OarXzrDYFu4CKQkgBDg8Oht5PyChm)KDBM-mt;am~}D3g*`vD!-5M}D=n|r>f~Jf zO-IOFHLYgNj8$(fw?;cFsIn~B3>+8|N_u8t%i`sDXjRaMS*w1FG`+i&X?bbYq20#E zJ(mkMhBk7{GGzHA!l){pWh||tYNC?sb;sk?u2jE+>>}$!eBb&^*s)frSGviSJMXBL z-IiZ!92%P2FT9Cw{IJgBf&EeUzrR?!C4#=Bo#SoP6Wp+P%dVCaGSCCCjwmlk@yp#8 z9wh$WEPKCp@Q(nmqq*ir4<29cO*pe!@d6*?HQm|F*ZIV%!G~o5m#u3txrGI}p1C8< zbl3R+N6hyR#`l4%*`cz)b=IPcezCxzh|m+dMu?-m3|MxxH}Ebjg*+(=cRNT2y?`IahKVW2R;G;bRd`k%O^2LX{WQd7kS%0Z1+FHHa)G2s}XdJ zQOM7&XMiXBG$;n>aLiy^7vUxKbI$M59Ib3*y>g7e4ac>DQEZ5VqZRo*927hQWVpfUt3|2cUB=f0H?#%?p2%ek z6ye_eT9UiN&wu4(1Ae;(3L8y?$;OAM6nEu5%f`~8!Mu8)XSI>b|0blM@pu-{{A;kk6 z00EX;Zyw}qL{TfqvZJv>a7T|rW+RHYEQ^;H$Q1UhZqT_1a8u4Ge)!LP!S&B#E#DwJ P1|aZs^>bP0l+XkKHf1*1 diff --git a/docs/images/web-app-developer.png b/docs/images/web-app-developer.png deleted file mode 100644 index 1fb8ac8226860dd37c8053783783a705af347c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52033 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�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 P1|aZs^>bP0l+XkKHf1*1 diff --git a/docs/index.md b/docs/index.md old mode 100644 new mode 100755 index d9f5b96041f..6d4d23ba778 --- a/docs/index.md +++ b/docs/index.md @@ -19,25 +19,21 @@ to host any mainstream language for smart contracts development. ## Releases -The fabric releases are documented [here](releases.md). We have just -released our second release under the governance of the Hyperledger Project - -v0.6-preview. - -## Fabric Starter Kit - -If you'd like to dive right in and get an operational experience on your local -server or laptop to begin development, we have just the thing for you. We have -created a standalone Docker-based [starter kit](starter/fabric-starter-kit.md) -that leverages the latest published Docker images that you can run on your -laptop and be up and running in no time. That should get you going with a -sample application and some simple chaincode. From there, you can go deeper -by exploring our [developer guides](#developer-guides). +The fabric releases are documented +[here](https://github.com/hyperledger/fabric/wiki/Fabric-Releases). We have just +released our first release under the governance of the Hyperledger Project - +v0.5-developer-preview. ## Contributing to the project We welcome contributions to the Hyperledger Project in many forms. There's always plenty to do! Full details of how to contribute to this project are -documented in the [Fabric developer's guide](#fabric-developer's-guide) below. +documented in the [Fabric developer's guide](#fabric-developer-guide) below. + +To contribute to this documentation, create an issue for any requests for +clarification or to highlight any errors, or you may clone and update the +[source](https://gerrit.hyperledger.org/r/#/admin/projects/fabric), and submit a +Gerrit review (essentially the same process as for fabric development). ## Maintainers @@ -49,46 +45,42 @@ Project's Technical Steering Committee (TSC). ## Communication We use [Hyperledger Slack](https://slack.hyperledger.org/) for communication and -Google Hangouts™ for screen sharing between developers. Our development -planning and prioritization is done in [JIRA](https://jira.hyperledger.org), -and we take longer running discussions/decisions to the -[mailing list](http://lists.hyperledger.org/mailman/listinfo/hyperledger-fabric). - -## Still Have Questions? -We try to maintain a comprehensive set of documentation (see below) for various audiences. -However, we realize that often there are questions that remain unanswered. For -any technical questions relating to the Hyperledger Fabric project not answered -in this documentation, please use -[StackOverflow](http://stackoverflow.com/questions/tagged/hyperledger). If you -need help finding things, please don't hesitate to send a note to the -[mailing list](http://lists.hyperledger.org/mailman/listinfo/hyperledger-fabric), -or ask on [Slack]((https://slack.hyperledger.org/)). +Google Hangouts™ for screen sharing between developers. # Hyperledger Fabric Documentation -The Hyperledger fabric is an implementation of blockchain technology, that has -been collaboratively developed under the Linux Foundation's -[Hyperledger Project](http://hyperledger.org). It leverages familiar and -proven technologies, and offers a modular architecture +The Hyperledger +[fabric](https://gerrit.hyperledger.org/r/#/admin/projects/fabric) is an +implementation of blockchain technology, that has been collaboratively developed +under the Linux Foundation's [Hyperledger Project](http://hyperledger.org). It +leverages familiar and proven technologies, and offers a modular architecture that allows pluggable implementations of various function including membership services, consensus, and smart contracts (Chaincode) execution. It features powerful container technology to host any mainstream language for smart contracts development. -## Table of Contents +## Still Have Questions? +We try to maintain a comprehensive set of documentation for various audiences. +However, we realize that often there are questions that remain unanswered. For +any technical questions relating to the Hyperledger Fabric project not answered +in this documentation, please use +[StackOverflow](http://stackoverflow.com/questions/tagged/hyperledger). + +## TOC Below, you'll find the following sections: -- [Read All About It](#read-all-about-it) +- [Getting started](#getting-started) +- [Quickstart](#quickstart-documentation) - [Developer guides](#developer-guides) - - [Chaincode developer's guide](#chaincode-developer-guide) - - [Application developer's guide](#application-developer-guide) - [Fabric developer's guide](#fabric-developer-guide) + - [Chaincode developer's guide](#chaincode-developer-guide) + - [API developer's guide](#api-developer-guide) - [Operations guide](#operations-guide) -## Read all about it +# Getting started If you are new to the project, you can begin by reviewing the following links. If you'd prefer to dive right in, see the @@ -104,8 +96,47 @@ where the community is developing use cases and requirements. the Fabric project's documentation. - [Fabric FAQs](https://github.com/hyperledger/fabric/tree/master/docs/FAQ) +# Quickstart documentation + +- [Development environment set-up](dev-setup/devenv.md): if you are considering +helping with development of the Hyperledger Fabric or Fabric-API projects +themselves, this guide will help you install and configure all you'll need. The +development environment is also useful (but, not necessary) for developing +blockchain applications and/or Chaincode. +- [Network setup](Setup/Network-setup.md): This document covers setting up a +network on your local machine for development. +- [Chaincode development environment](Setup/Chaincode-setup.md): Chaincode +developers need a way to test and debug their Chaincode without having to set up +a complete peer network. This document describes how to write, build, and test +Chaincode in a local development environment. +- [APIs](API/CoreAPI.md): This document covers the available APIs for +interacting with a peer node. + # Developer guides +## Fabric developer guide + +When you are ready to start contributing to the Hyperledger fabric project, we +strongly recommend that you read the [protocol specification](protocol-spec.md) +for the technical details so that you have a better understanding of how the +code fits together. + +- [Making code contributions](CONTRIBUTING.md): First, you'll want to familiarize +yourself with the project's contribution guidelines. +- [Setting up the development environment](dev-setup/devenv.md): after that, you +will want to set up your development environment. +- [Building the fabric core](dev-setup/build.md): next, try building the project +in your local development environment to ensure that everything is set up +correctly. +- [Building outside of Vagrant](dev-setup/build.md#building-outside-of-vagrant): +for the adventurous, you might try to build outside of the standard Vagrant +development environment. +- [Logging control](Setup/logging-control.md): describes how to tweak the logging +levels of various components within the fabric. +- [License header](dev-setup/headers.txt): every source file must include this +license header modified to include a copyright statement for the principle +author(s). + ## Chaincode developer guide - [Setting up the development environment](dev-setup/devenv.md): when developing @@ -121,40 +152,22 @@ testing Chaincode. - [Chaincode FAQ](FAQ/chaincode_FAQ.md): a FAQ for all of your burning questions relating to Chaincode. -## Application developer guide -``` - - [APIs - CLI, REST, and Node.js](API/CoreAPI.md) - - [CLI](API/CoreAPI.md#cli): working with the command-line interface. - - [REST](API/CoreAPI.md#rest-api): working with the REST API (*deprecated*). - - [Node.js SDK](nodeSDK/node-sdk-guide.md): working with the Node.js SDK. -``` -## Fabric developer guide -``` - - [Making code contributions](CONTRIBUTING.md): First, you'll want to familiarize - yourself with the project's contribution guidelines. - - [Setting up the development environment](dev-setup/devenv.md): after that, you - will want to set up your development environment. - - [Building the fabric core](dev-setup/build.md): next, try building the project - in your local development environment to ensure that everything is set up - correctly. - - [Building outside of Vagrant](dev-setup/build.md#building-outside-of-vagrant): - for the *adventurous*, you might try to build outside of the standard Vagrant - development environment. - - [Logging control](Setup/logging-control.md): describes how to tweak the logging - levels of various components within the fabric. - - [License header](dev-setup/headers.txt): every source file must include this - license header modified to include a copyright statement for the principle - author(s). -``` +## API developer guide + +- [APIs - CLI, REST, and Node.js](API/CoreAPI.md) + - [CLI](API/CoreAPI.md#cli): working with the command-line interface. + - [REST](API/CoreAPI.md#rest-api): working with the REST API. + - [Node.js SDK](nodeSDK/node-sdk-guide.md): working with the Node.js SDK. + # Operations guide -``` - - [Setting Up a Network](Setup/Network-setup.md): instructions for setting up a - network of fabric peers. - - [Certificate Authority (CA) Setup](Setup/ca-setup.md): setting up a CA to - support identity, security (authentication/authorization), privacy and - confidentiality. - - [Application ACL](tech/application-ACL.md): working with access control lists. -``` -# License + +- [Setting Up a Network](Setup/Network-setup.md): instructions for setting up a +network of fabric peers. +- [Certificate Authority (CA) Setup](Setup/ca-setup.md): setting up a CA to +support identity, security (authentication/authorization), privacy and +confidentiality. +- [Application ACL](tech/application-ACL.md): working with access control lists. + +## License The Hyperledger Project uses the [Apache License Version 2.0](LICENSE) software license. diff --git a/docs/nodeSDK/images/standalone-app-developer.png b/docs/nodeSDK/images/standalone-app-developer.png deleted file mode 100644 index 1fb8ac8226860dd37c8053783783a705af347c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52033 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�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 P1|aZs^>bP0l+XkKHf1*1 diff --git a/docs/nodeSDK/images/web-app-developer.png b/docs/nodeSDK/images/web-app-developer.png deleted file mode 100644 index 1fb8ac8226860dd37c8053783783a705af347c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52033 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�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 P1|aZs^>bP0l+XkKHf1*1 diff --git a/docs/nodeSDK/node-sdk-self-contained.md b/docs/nodeSDK/node-sdk-self-contained.md new file mode 100755 index 00000000000..08c6e4fac48 --- /dev/null +++ b/docs/nodeSDK/node-sdk-self-contained.md @@ -0,0 +1,99 @@ +# Self Contained Node.js Environment + +This section describes how to set up a self contained environment for Node.js application development with the Hyperledger Fabric Node.js SDK. The setup uses **Docker** to provide a controlled environment with all the necessary Hyperledger fabric components to support a Node.js application. There are three **Docker** images that when run will provide a blockchain network environment. There is an image to run a single **Peer**, one to run the **Member Services** and one to run both a Node.js application and the sample chaincode. See [Application Developer's Overview](app-overview.md) on how the components running within the containers will communicate. The sample comes with a sample Node.js application ready to execute and sample chaincode. The sample will be running in developer mode where the chaincode has been built and started prior to the application call to deploy it. The deployment of chaincode in network mode requires that the Hyperledger Fabric Node.js SDK has access to the chaincode source code and all of its dependant code, in order to properly build a deploy request. It also requires that the **peer** have access to **docker** functions to be able to build and deploy the new **docker** image that will run the chaincode. This is a more complicated configuration and not suitable to an introduction to the Hyperledger Fabric Node.js SDK. + +**note:** This sample was prepared using Docker for Mac 1.12.0 + +* Prerequisite software to install: + + * Docker + * docker-compose (may be packaged with Docker) + +* Copy our [docker-compose.yml](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml) file to a local directory: + +``` + curl -o docker-compose.yml https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml +``` +* **Optionally** build your own docker images. + The docker compose environment uses three docker images. If you wish to customize and build your own docker images. The following [Dockerfile](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile) + was used to build the **nodesdk** image and may be used as a starting point to your own customizations. +``` + curl -o Dockerfile https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile + docker build -t hyperledger/fabric-node-sdk:latest . +``` + +* Start the fabric network environment using docker-compose. From a terminal session that has the working directory of where the above *docker-compose.yml* is located, execute one of following **docker-compose** commands. + + * to run as detached containers: + ``` + docker-compose up -d + ``` + **note:** to see the logs for the **peer** container use the `docker logs peer` command + + * to run in the foreground and see the log output in the current terminal session: + ``` + docker-compose up + ``` + + Both commands will start three docker containers, to view the container status try `docker ps` command. The first time this is run the **docker** images will be downloaded. This may take 10 minutes or more depending on the network connections of the system running the command. + ``` + docker ps + ``` + + You should see something like the following: + ``` + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + bb01a2fa96ef hyperledger/fabric-node-sdk "sh -c 'sleep 20; /op" About a minute ago Up 59 seconds nodesdk + ec7572e65f12 hyperledger/fabric-peer "sh -c 'sleep 10; pee" About a minute ago Up About a minute peer + 118ef6da1709 hyperledger/fabric-membersrvc "membersrvc" About a minute ago Up About a minute membersrvc + ``` + +* Start a terminal session in the **nodesdk** container. This is where the Node.js application is located. + + **note:** Be sure to wait 20 seconds after starting the network using the `docker-compose up` command before executing the following command to allow the network to initialize. + +``` + docker exec -it nodesdk /bin/bash +``` + +* From the terminal session in the **nodesdk** container execute the standalone Node.js application. The docker terminal session should be in the working directory of the sample application called **app.js** (*/opt/gopath/src/github.com/hyperledger/fabric/examples/sdk/node*). Execute the following Node.js command to run the application. + +``` + node app +``` + In another terminal session on the host you can view the logs for the peer by executing the following command (not in the docker shell above, in a new terminal session of the real system) +``` + docker logs peer +``` + +* If you wish to run your own Node.js application using the pre build docker images: + * use the directories in the `volumes` tag under **nodesdk** in the `docker-compose.yml` file as a place to store your programs from the host system into the docker container. The first path is the top level system (host system) and the second is created in the docker container. If you wish to use a host location that is not under the `/Users` directory (`~` is under `/Users') then you must add that to the **docker** file sharing under **docker** preferences. + +```yaml + volumes: + - ~/mytest:/user/mytest +``` + * copy or create and edit your application in the `~/mytest` directory as stated in the `docker-compose.yml` `volumes` tag under **nodesdk** container. + * run npm to install Hyperledger Fabric Node.js SDK in the `mytest` directory +``` + npm install /opt/gopath/src/github.com/hyperledger/fabric/sdk/node +``` + * run the application from within the **nodesdk** docker container using the commands +``` + docker exec -it nodesdk /bin/bash +``` + once in the shell, and assuming your Node.js application is called `app.js` +``` + cd /user/mytest + node app +``` +* To shutdown the environment, execute the following **docker-compose** command in the directory where the *docker-compose.yml* is located. Any changes you made to the sample application or deployment of a chaincode will be lost. Only changes made to the shared area defined in the 'volumes' tag of the **nodesdk** container will persist. This will shutdown each of the containers and remove the containers from **docker**: + +``` + docker-compose down +``` + or if you wish to keep your changes and just stop the containers, which will be restarted on the next `up` command + +``` + docker-compose kill +``` diff --git a/docs/releases.md b/docs/releases.md deleted file mode 100644 index 51ba90eadfc..00000000000 --- a/docs/releases.md +++ /dev/null @@ -1,62 +0,0 @@ - - -[v0.6-preview](https://github.com/hyperledger/fabric/tree/v0.6) September 16, 2016 - -A developer preview release of the Hyperledger Fabric intended -to exercise the release logistics and stabilize a set of capabilities for -developers to try out. This will be the last release under the original -architecture. All subsequent releases will deliver on the -[v1.0 architecture](TODO). - -Key enhancements: - -* 8de58ed - NodeSDK doc changes -- FAB-146 -* 62d866d - Add flow control to SYNC_STATE_SNAPSHOT -* 4d97069 - Adding TLS changes to SDK -* e9d3ac2 - Node-SDK: add support for fabric events(block, chaincode, transactional) -* 7ed9533 - Allow deploying Java chaincode from remote git repositories -* 4bf9b93 - Move Docker-Compose files into their own folder -* ce9fcdc - Print ChaincodeName when deploy with CLI -* 4fa1360 - Upgrade go protobuf from 3-beta to 3 -* 4b13232 - Table implementation in java shim with example -* df741bc - Add support for dynamically registering a user with attributes -* 4203ea8 - Check for duplicates when adding peers to the chain -* 518f3c9 - Update docker openjdk image -* 47053cd - Add GetTxID function to Stub interface (FAB-306) -* ac182fa - Remove deprecated devops REST API -* ad4645d - Support hyperledger fabric build on ppc64le platform -* 21a4a8a - SDK now properly adding a peer with an invalid URL -* 1d8114f - Fix setting of watermark on restore from crash -* a98c59a - Upgrade go protobuff from 3-beta to 3 -* 937039c - DEVENV: Provide strong feedback when provisioning fails -* d74b1c5 - Make pbft broadcast timeout configurable -* 97ed71f - Java shim/chaincode project reorg, separate java docker env -* a76dd3d - Start container with HostConfig was deprecated since v1.10 and removed since v1.12 -* 8b63a26 - Add ability to unregister for events -* 3f5b2fa - Add automatic peer command detection -* 6daedfd - Re-enable sending of chaincode events -* b39c93a - Update Cobra and pflag vendor libraries -* dad7a9d - Reassign port numbers to 7050-7060 range - -[v0.5-developer-preview](https://github.com/hyperledger-archives/fabric/tree/v0.5-developer-preview) -June 17, 2016 - -A developer preview release of the Hyperledger Fabric intended -to exercise the release logistics and stabilize a set of capabilities for -developers to try out. - -Key features: - -Permissioned blockchain with immediate finality -Chaincode (aka smart contract) execution environments -Docker container (user chaincode) -In-process with peer (system chaincode) -Pluggable consensus with PBFT, NOOPS (development mode), SIEVE (prototype) -Event framework supports pre-defined and custom events -Client SDK (Node.js), basic REST APIs and CLIs -Known Key Bugs and work in progress - -* 1895 - Client SDK interfaces may crash if wrong parameter specified -* 1901 - Slow response after a few hours of stress testing -* 1911 - Missing peer event listener on the client SDK -* 889 - The attributes in the TCert are not encrypted. This work is still on-going diff --git a/docs/starter/fabric-starter-kit.md b/docs/starter/fabric-starter-kit.md deleted file mode 100755 index 94d0d912ff1..00000000000 --- a/docs/starter/fabric-starter-kit.md +++ /dev/null @@ -1,171 +0,0 @@ -# Fabric Starter Kit - -This section describes how to set up a self contained environment for -application development with the Hyperledger Fabric. The setup -uses **Docker** to provide a controlled environment with all the necessary -Hyperledger fabric components to support a Node.js application built with -the fabric's Node.js SDK, and chaincode written in Go. - -There are three Docker images that, when run, will provide a basic -network environment. There is an image to run a single `peer`, one to run -the `membersrvc` and one to run both your Node.js application and the your -chaincode. See [Application Developer's Overview](../nodeSDK/app-overview.md) on how the -components running within the containers will communicate. - -The starter kit comes with a sample Node.js application ready to execute and -sample chaincode. The starter kit will be running in chaincode developer mode. -In this mode, the chaincode is built and started prior to the application -making a call to deploy it. - -**Note:** The deployment of chaincode in network mode requires that the -Hyperledger Fabric Node.js SDK has access to the chaincode source code and all -of its dependencies, in order to properly build a deploy request. It also -requires that the `peer` have access to the Docker daemon to be able to build -and deploy the new Docker image that will run the chaincode. *This is a more -complicated configuration and not suitable to an introduction to the -Hyperledger fabric.* We recommend first running in chaincode development mode. - -## Further exploration - -If you wish, there are a number of chaincode examples near by. -``` - cd ../../chaincode -``` -## Getting started - -**Note:** This sample was prepared using Docker for Mac 1.12.0 - -* Prerequisite software to install: - - * [Docker](https://www.docker.com/products/overview) - * docker-compose (may be packaged with Docker) - -* Copy our [docker-compose.yml](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml) file to a local directory: - -``` - curl -o docker-compose.yml https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml -``` - The docker compose environment uses three docker images. Two are published to - DockerHub. However, the third, we provide you the source to build your own, - so that you can customize to inject your application code for development, - the following [Dockerfile](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile) - is used to build the base **fabric-starter-kit** image and may be used as - a starting point for your own customizations. - -``` - curl -o Dockerfile https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile - docker build -t hyperledger/fabric-starter-kit:latest . -``` - -* Start the fabric network environment using docker-compose. From a terminal -session that has the working directory of where the above *docker-compose.yml* -is located, execute one of following `docker-compose` commands. - - * to run as detached containers: - -``` - docker-compose up -d -``` - **note:** to see the logs for the `peer` container use the - `docker logs peer` command - - * to run in the foreground and see the log output in the current terminal - session: - -``` - docker-compose up -``` - - Both commands will start three docker containers, to view the container - status try `docker ps` command. The first time this is run the Docker - images will be downloaded. This may take 10 minutes or more depending on the - network connections of the system running the command. - -``` - docker ps -``` - You should see something like the following: - -``` - CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES - bb01a2fa96ef hyperledger/fabric-starter-kit "sh -c 'sleep 20; /op" About a minute ago Up 59 seconds starter - ec7572e65f12 hyperledger/fabric-peer "sh -c 'sleep 10; pee" About a minute ago Up About a minute peer - 118ef6da1709 hyperledger/fabric-membersrvc "membersrvc" About a minute ago Up About a minute membersrvc -``` - -* Start a terminal session in the **starter** container. This is where the -Node.js application is located. - - **note:** Be sure to wait 20 seconds after starting the network using the - `docker-compose up` command before executing the following command to allow - the network to initialize. - -``` - docker exec -it starter /bin/bash -``` - -* From the terminal session in the **starter** container execute the standalone -Node.js application. The docker terminal session should be in the working -directory of the sample application called **app.js** (*/opt/gopath/src/github.com/hyperledger/fabric/examples/sdk/node*). Execute -the following Node.js command to run the application. - -``` - node app -``` - In another terminal session on the host you can view the logs for the peer - by executing the following command (not in the docker shell above, in a new - terminal session of the real system) - -``` - docker logs peer -``` - -* If you wish to run your own Node.js application using the pre build docker -images: - * use the directories in the `volumes` tag under **starter** in the - `docker-compose.yml` file as a place to store your programs from the host - system into the docker container. The first path is the top level system - (host system) and the second is created in the docker container. If you wish - to use a host location that is not under the `/Users` directory (`~` is - under `/Users') then you must add that to the Docker file sharing - under Docker preferences. - -```yaml - volumes: - - ~/mytest:/user/mytest -``` - * copy or create and edit your application in the `~/mytest` directory as - stated in the `docker-compose.yml` `volumes` tag under **starter** container. - * run npm to install Hyperledger Fabric Node.js SDK in the `mytest` directory - -``` - npm install /opt/gopath/src/github.com/hyperledger/fabric/sdk/node -``` - * run the application from within the **starter** Docker container using the - commands - -``` - docker exec -it starter /bin/bash -``` - once in the shell, and assuming your Node.js application is called `app.js` - -``` - cd /user/mytest - node app -``` -* To shutdown the environment, execute the following **docker-compose** command -in the directory where the *docker-compose.yml* is located. Any changes you made -to the sample application or deployment of a chaincode will be lost. Only -changes made to the shared area defined in the 'volumes' tag of the **starter** -container will persist. This will shutdown each of the containers and remove -the containers from Docker: - -``` - docker-compose down -``` - or if you wish to keep your changes and just stop the containers, which will - be restarted on the next `up` command - -``` - docker-compose kill -``` diff --git a/examples/chaincode/go/utxo/Dockerfile b/examples/chaincode/go/utxo/Dockerfile index 807632d9c30..927b746931c 100644 --- a/examples/chaincode/go/utxo/Dockerfile +++ b/examples/chaincode/go/utxo/Dockerfile @@ -1,5 +1,4 @@ -# FIXME: someone from the UTXO team will need to verify or rework this -FROM ubuntu:latest +from hyperledger/fabric-baseimage RUN apt-get update && apt-get install pkg-config autoconf libtool -y RUN cd /tmp && git clone https://github.com/bitcoin/secp256k1.git && cd secp256k1/ diff --git a/examples/sdk/node/docker-compose.yml b/examples/sdk/node/docker-compose.yml index 64302ade722..2000c854798 100644 --- a/examples/sdk/node/docker-compose.yml +++ b/examples/sdk/node/docker-compose.yml @@ -27,11 +27,10 @@ peer: links: - membersrvc -starter: - container_name: starter - image: hyperledger/fabric-starter-kit +nodesdk: + container_name: nodesdk + image: hyperledger/fabric-node-sdk volumes: - # tweak this to map a local developmnt directory tree into the container - ~/mytest:/user/mytest environment: - MEMBERSRVC_ADDRESS=membersrvc:7054 diff --git a/images/base/.gitignore b/images/base/.gitignore new file mode 100644 index 00000000000..94143827ed0 --- /dev/null +++ b/images/base/.gitignore @@ -0,0 +1 @@ +Dockerfile diff --git a/images/base/Dockerfile.in b/images/base/Dockerfile.in new file mode 100644 index 00000000000..3babb952831 --- /dev/null +++ b/images/base/Dockerfile.in @@ -0,0 +1,5 @@ +FROM _DOCKER_BASE_ +COPY scripts /hyperledger/baseimage/scripts +RUN /hyperledger/baseimage/scripts/common/init.sh +RUN /hyperledger/baseimage/scripts/docker/init.sh +RUN /hyperledger/baseimage/scripts/common/setup.sh diff --git a/images/base/Makefile b/images/base/Makefile new file mode 100644 index 00000000000..be148e69668 --- /dev/null +++ b/images/base/Makefile @@ -0,0 +1,50 @@ +NAME=hyperledger/fabric-baseimage +VERSION=$(shell cat ./release) +ARCH=$(shell uname -m) +DOCKER_TAG ?= $(ARCH)-$(VERSION) +VAGRANTIMAGE=packer_virtualbox-iso_virtualbox.box + +DOCKER_BASE_x86_64=ubuntu:trusty +DOCKER_BASE_s390x=s390x/ubuntu:xenial +DOCKER_BASE_ppc64le=ppc64le/ubuntu:xenial + +DOCKER_BASE=$(DOCKER_BASE_$(ARCH)) + +ifeq ($(DOCKER_BASE), ) +$(error "Architecture \"$(ARCH)\" is unsupported") +endif + + +# strips off the post-processors that try to upload artifacts to the cloud +packer-local.json: packer.json + jq 'del(."post-processors"[0][1]) | del(."post-processors"[1][1])' packer.json > $@ + +all: vagrant docker + +$(VAGRANTIMAGE): packer-local.json + BASEIMAGE_RELEASE=$(VERSION) \ + packer build -only virtualbox-iso packer-local.json + +Dockerfile: Dockerfile.in Makefile + @echo "# Generated from Dockerfile.in. DO NOT EDIT!" > $@ + @cat Dockerfile.in | \ + sed -e "s|_DOCKER_BASE_|$(DOCKER_BASE)|" >> $@ + +docker: Dockerfile release + @echo "Generating docker" + @docker build -t $(NAME):$(DOCKER_TAG) . + +vagrant: $(VAGRANTIMAGE) remove release + vagrant box add -name $(NAME) $(VAGRANTIMAGE) + +push: + @echo "You will need your ATLAS_TOKEN set for this to succeed" + packer push -name $(NAME) packer.json + +remove: + -vagrant box remove --box-version 0 $(NAME) + +clean: remove + -rm $(VAGRANTIMAGE) + -rm Dockerfile + -rm packer-local.json diff --git a/images/base/README.md b/images/base/README.md new file mode 100644 index 00000000000..6073455aca5 --- /dev/null +++ b/images/base/README.md @@ -0,0 +1,53 @@ +# Baseimage Introduction +This directory contains the infrastructure for creating a new baseimage used as the basis for various functions within the Hyperledger workflow such as our Vagrant based development environment, chaincode compilation/execution, unit-testing, and even cluster simulation. It is based on ubuntu-14.04 with various opensource projects added such as golang, rocksdb, grpc, and node.js. The actual Hyperledger code is injected just-in-time before deployment. The resulting images are published to public repositories such as [atlas.hashicorp.com](https://atlas.hashicorp.com/hyperledger/boxes/fabric-baseimage) for consumption by Vagrant/developers and [hub.docker.com](https://hub.docker.com/r/hyperledger/fabric-baseimage/) for consumption by docker-based workflows. + +![Baseimage Architectural Overview](./images/packer-overview.png) + +The purpose of this baseimage is to act as a bridge between a raw ubuntu/trusty64 configuration and the customizations required for supporting a hyperledger environment. Some of the FOSS components that need to be added to Ubuntu do not have convenient native packages. Therefore, they are built from source. However, the build process is generally expensive (often taking in excess of 30 minutes) so it is fairly inefficient to JIT assemble these components on demand. + +Therefore, the expensive FOSS components are built into this baseimage once and subsequently cached on the public repositories so that workflows may simply consume the objects without requiring a local build cycle. + +# Intended Audience +This is only intended for release managers curating the base images on atlas and docker-hub. Typical developers may safely ignore this directory completely. + +Anyone wishing to customize their image is encouraged to do so via downstream means, such as the vagrant infrastructure in the root directory of this project or the Dockerfile. + +## Exceptions + +If a component is found to be both broadly applicable and expensive to build JIT, it may be a candidate for inclusion in a future baseimage. + +# Usage + +## Usage Pattern 1 - Local baseimage builds for testing a proposed change + +* "make vagrant" will build just the vagrant image and install it into the local environment as "hyperledger/fabric-baseimage:v0", making it suitable to local testing. + * To utilize the new base image in your local tests, run `vagrant destroy` then `USE_LOCAL_BASEIMAGE=true vagrant up`, also preface `vagrant ssh` as `USE_LOCAL_BASEIMAGE=true vagrant ssh` or simply export that variable, or Vagrant will fail to find the ssh key. +* "make docker" will build just the docker image and commit it to your local environment as "hyperledger/fabric-baseimage" + +## Usage Pattern 2 - Release manager promoting a new base image to the public repositories + +- Step 1: Decide on the version number to be used and update the packer.json template variables:release +- Step 2: Initiate a build + +Note: You will need credentials to the public repositories, as discussed in Uploading Permissions below. If you do not have these credentials, you are probably not an image release manager. Otherwise, discuss it on the Hyperledger slack to see if you should be added. + +### Hosted Build Method + +"make push" will push the build configuration to atlas for cloud-hosted building of the images. You only need to have the ATLAS_TOKEN defined for this to succeed, as the atlas build server will push the artifacts out to the respective hosts once the build completes. Therefore, the repository credentials are already cached on the build server and you only need credentials for the build-server itself. You can check the status of the build [here](https://atlas.hashicorp.com/hyperledger/build-configurations/baseimage/) + +### Local Build Method + +"make [all]" will generate both a vagrant and docker image and push them out to the cloud. This method requires both ATLAS and DOCKERHUB credentials since the artifacts are pushed directly to the hosting providers from your build machine. + +## Uploading Permissions + +The system relies on several environment variables to establish credentials with the hosting repositories: + +* ATLAS_TOKEN - used to push both vagrant images and packer templates to atlas.hashicorp.com +* DOCKERHUB_[EMAIL|USERNAME|PASSWORD] - used to push docker images to hub.docker.com + +Note that if you only plan on pushing the build to the atlas packer build service, you only need the ATLAS_TOKEN set as the dockerhub interaction will occur from the atlas side of the process where the docker credentials are presumably already configured. + +## Versioning + +Vagrant boxes are only versioned when they are submitted to a repository. Vagrant does not support applying a version to a vagrant box via the `vagrant box add` command. Adding the box gives it an implicit version of 0. Setting `USE_LOCAL_BASEIMAGE=true` in the `vagrant up` command causes the Vagrant file in the the parent directory to pick version 0, instead of the default. diff --git a/images/base/http/preseed.cfg b/images/base/http/preseed.cfg new file mode 100644 index 00000000000..d3619ce76f7 --- /dev/null +++ b/images/base/http/preseed.cfg @@ -0,0 +1,34 @@ +debconf debconf/frontend select Noninteractive +choose-mirror-bin mirror/http/proxy string +d-i clock-setup/utc boolean true +d-i clock-setup/utc-auto boolean true +d-i finish-install/reboot_in_progress note +d-i grub-installer/only_debian boolean true +d-i grub-installer/with_other_os boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman-auto/method string regular +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +d-i partman/confirm_write_new_label boolean true + +# Set the kernel +d-i base-installer/kernel/override-image string linux-virtual + +# Default user +d-i passwd/user-fullname string vagrant +d-i passwd/username string vagrant +d-i passwd/user-password password vagrant +d-i passwd/user-password-again password vagrant +d-i passwd/username string vagrant + +# Minimum packages (see postinstall.sh) +d-i pkgsel/include string openssh-server +d-i pkgsel/install-language-support boolean false +d-i pkgsel/update-policy select none +d-i pkgsel/upgrade select none + +d-i time/zone string UTC +d-i user-setup/allow-password-weak boolean true +d-i user-setup/encrypt-home boolean false +tasksel tasksel/first multiselect standard, server diff --git a/images/base/images/packer-overview.graffle/data.plist b/images/base/images/packer-overview.graffle/data.plist new file mode 100644 index 00000000000..c6fc4f1b778 --- /dev/null +++ b/images/base/images/packer-overview.graffle/data.plist @@ -0,0 +1,1383 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {575.99998474121094, 1466}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2016-02-22 22:11:37 +0000 + Creator + Greg Haskins + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Class + LineGraphic + Head + + ID + 22 + + ID + 60 + Points + + {310.14783447722266, 96.412900484504561} + {373.3780487804878, 189} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 57 + + ID + 59 + OrthogonalBarAutomatic + + OrthogonalBarPoint + {0, 0} + OrthogonalBarPosition + 76.855720520019531 + Points + + {245.3613785038917, 96.388558716933716} + {108, 266} + {181, 753} + {314.5000004554858, 752.81861412981596} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 2 + TailArrow + 0 + Width + 2 + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 57 + + ID + 58 + Points + + {364.99937473792534, 505.12549205971999} + {364.99580448417515, 724.24999998950307} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 54 + + + + Bounds + {{315, 724.75}, {100, 56}} + Class + ShapedGraphic + ID + 57 + Shape + FlattenedRectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 custom environment} + VerticalPad + 0 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Class + LineGraphic + Head + + ID + 30 + + ID + 56 + Points + + {388.73435760680411, 486.3256814805485} + {439.2620074228966, 528} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 54 + + + + Class + LineGraphic + Head + + ID + 40 + + ID + 55 + Points + + {342.97352711499752, 487.69524871963358} + {300.58818602417603, 528} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 54 + + + + Bounds + {{317.5, 428.875}, {95, 75.75}} + Class + ShapedGraphic + ID + 54 + Shape + Diamond + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 hyperledger fabric} + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 49 + + ID + 53 + Points + + {464.62462462462463, 569.5} + {464.82882888295114, 603.50000901136877} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 30 + + + + Bounds + {{433, 622}, {100, 56}} + Class + ShapedGraphic + ID + 51 + Shape + FlattenedRectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 docker environment} + VerticalPad + 0 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{424, 613}, {100, 56}} + Class + ShapedGraphic + ID + 50 + Shape + FlattenedRectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 docker environment} + VerticalPad + 0 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Bounds + {{415, 604}, {100, 56}} + Class + ShapedGraphic + ID + 49 + Shape + FlattenedRectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 docker environment} + VerticalPad + 0 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Class + LineGraphic + Head + + ID + 30 + + ID + 48 + Points + + {508.88537781669504, 503.46248035776267} + {484.83665338645471, 528} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 46 + + + + Class + LineGraphic + Head + + ID + 30 + + ID + 47 + Points + + {466.75138277659562, 426.49991523085737} + {464.88213627992633, 528} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 35 + + + + Bounds + {{495, 467.375}, {62, 37.25}} + Class + ShapedGraphic + ID + 46 + Shape + Hexagon + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 Dockerfile} + VerticalPad + 0 + + TextRelativeArea + {{0, 0.10000000000000001}, {1, 0.80000000000000004}} + + + Bounds + {{486, 458.375}, {62, 37.25}} + Class + ShapedGraphic + ID + 45 + Shape + Hexagon + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 Dockerfile} + VerticalPad + 0 + + TextRelativeArea + {{0, 0.10000000000000001}, {1, 0.80000000000000004}} + + + Bounds + {{477, 449.375}, {62, 37.25}} + Class + ShapedGraphic + ID + 44 + Shape + Hexagon + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 Dockerfile} + VerticalPad + 0 + + TextRelativeArea + {{0, 0.10000000000000001}, {1, 0.80000000000000004}} + + + Class + LineGraphic + Head + + ID + 24 + + ID + 43 + Points + + {277.52222222222446, 574} + {279.23335524784636, 612.50049307640984} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 40 + + + + Bounds + {{230.5, 613}, {100, 56}} + Class + ShapedGraphic + ID + 24 + Shape + FlattenedRectangle + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 development environment} + VerticalPad + 0 + + TextRelativeArea + {{0.10000000000000001, 0}, {0.80000000000000004, 1}} + + + Class + LineGraphic + Head + + ID + 40 + + ID + 41 + Points + + {276.50000301611595, 426.5} + {276.50000301611595, 528} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 33 + + + + Bounds + {{202, 528}, {149, 46}} + Class + ShapedGraphic + ID + 40 + ImageID + 6 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{436, 326.75}, {62, 46}} + Class + ShapedGraphic + ID + 38 + ImageID + 5 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Class + LineGraphic + Head + + ID + 35 + + ID + 37 + Points + + {467.00000967504548, 372.75} + {467.00000967504548, 399.5} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 38 + + + + Class + LineGraphic + Head + + ID + 33 + + ID + 36 + Points + + {276.49991756300551, 370.5} + {276.49980234985657, 399.5} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 28 + + + + Bounds + {{411, 400}, {112, 26}} + Class + ShapedGraphic + ID + 35 + Shape + Rectangle + Style + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 docker:hyperledger/fabric-baseimage} + + + + Bounds + {{220.5, 400}, {112, 26}} + Class + ShapedGraphic + ID + 33 + Shape + Rectangle + Style + + stroke + + CornerRadius + 9 + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 vagrant:hyperledger/fabric-baseimage} + + + + Class + LineGraphic + Head + + ID + 38 + + ID + 32 + Points + + {408.21374764707127, 245} + {454.09227872378818, 326.75} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 22 + + + + Class + LineGraphic + Head + + ID + 28 + + ID + 31 + Points + + {368.03295668549907, 245} + {294.63182674199624, 329} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 22 + + + + Bounds + {{390, 528}, {149, 41.5}} + Class + ShapedGraphic + ID + 30 + ImageID + 4 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{199, 329}, {155, 41.5}} + Class + ShapedGraphic + ID + 28 + ImageID + 3 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Class + LineGraphic + Head + + ID + 22 + + ID + 26 + Points + + {435.32867419331808, 159.90087452433639} + {413.63683982367951, 189} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + TailArrow + 0 + Width + 2 + + + Tail + + ID + 20 + + + + Bounds + {{390, 103.5}, {133, 56}} + Class + ShapedGraphic + ID + 20 + Shape + Hexagon + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 hyperledger/\ +fabric-baseimage} + VerticalPad + 0 + + TextRelativeArea + {{0, 0.10000000000000001}, {1, 0.80000000000000004}} + + + Bounds + {{331, 189}, {123, 56}} + Class + ShapedGraphic + ID + 22 + ImageID + 2 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{342, 18}, {73, 59}} + Class + ShapedGraphic + ID + 10 + Shape + Diamond + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 ubuntu} + VerticalPad + 0 + + + + Bounds + {{264, 18}, {73, 59}} + Class + ShapedGraphic + ID + 9 + Shape + Diamond + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 nodejs} + VerticalPad + 0 + + + + Bounds + {{186, 18}, {73, 59}} + Class + ShapedGraphic + ID + 8 + Shape + Diamond + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 grpc} + VerticalPad + 0 + + + + Bounds + {{108, 18}, {73, 59}} + Class + ShapedGraphic + ID + 7 + Shape + Diamond + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 golang} + VerticalPad + 0 + + + + Bounds + {{30, 18}, {73, 59}} + Class + ShapedGraphic + ID + 6 + Shape + Diamond + Style + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc + +\f0\fs22 \cf0 rocksdb} + VerticalPad + 0 + + + + Bounds + {{12, 10}, {537, 86}} + Class + ShapedGraphic + ID + 4 + Shape + Rectangle + Style + + fill + + Draws + NO + + stroke + + CornerRadius + 9 + Pattern + 1 + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf460 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qr + +\f0\fs22 \cf0 Upstream FOSS} + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 7 + ImageLinkBack + + + + + + + + ImageList + + image6.png + image5.png + image4.png + image3.png + image2.png + + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2016-04-08 16:20:56 +0000 + Modifier + Greg Haskins + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {611.99998474121094, 792} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 2 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{69, 50}, {1406, 1115}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-340, 0}, {1257, 960}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff --git a/images/base/images/packer-overview.graffle/image2.png b/images/base/images/packer-overview.graffle/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..7e5bdd51c015c45761f879d6da2d20ca276bdc78 GIT binary patch literal 5818 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 literal 0 HcmV?d00001 diff --git a/images/base/images/packer-overview.graffle/image3.png b/images/base/images/packer-overview.graffle/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..437a535b657a811535d0996cb49c0051b7eee23d GIT binary patch literal 6967 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 U>z9JrKSKjqNhOJLF{6P00kqHoGXMYp literal 0 HcmV?d00001 diff --git a/images/base/images/packer-overview.graffle/image4.png b/images/base/images/packer-overview.graffle/image4.png new file mode 100644 index 0000000000000000000000000000000000000000..045093e2b587d54a5823bf93873c62a04f9075de GIT binary patch literal 13322 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

AWH`%Xrw)L#mJJsn$(# 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 G;Qs+j{C3d* literal 0 HcmV?d00001 diff --git a/images/base/images/packer-overview.graffle/image5.png b/images/base/images/packer-overview.graffle/image5.png new file mode 100644 index 0000000000000000000000000000000000000000..0a367e5d9dce66f3deb108a4e83cfbf1bb9b5713 GIT binary patch literal 4149 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
  • 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 _ye?&>ORA8 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

    JnJY>ZJ+joN zA*du}AAT=s({aV-{-jQ$c{dd-a;p-BVX&3D)EXX&S!?NWgu1Yy(ItEH1V1KUAWKrc0nSF2{EwfcV{(v$SY`CMo-P)ihm(d zBl8N}vFiIv(9-Er`X)G(meVQ6V@&GgJl_p+ib9GI#S`>XeHo|~`by", + "", + "", + "/install/vmlinuz", + " auto", + " console-setup/ask_detect=false", + " console-setup/layoutcode=us", + " console-setup/modelcode=pc105", + " debian-installer=en_US", + " fb=false", + " initrd=/install/initrd.gz", + " kbd-chooser/method=us", + " keyboard-configuration/layout=USA", + " keyboard-configuration/variant=USA", + " locale=en_US", + " netcfg/get_hostname=ubuntu-1404", + " netcfg/get_domain=vagrantup.com", + " noapic", + " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg", + " -- ", + "" + ], + "headless": true, + "boot_wait": "10s", + "disk_size": 40960, + "guest_os_type": "Ubuntu_64", + "http_directory": "http", + "iso_checksum": "ca2531b8cd79ea5b778ede3a524779b9", + "iso_checksum_type": "md5", + "iso_url": "http://old-releases.ubuntu.com/releases/14.04.1/ubuntu-14.04.1-server-amd64.iso", + "ssh_username": "vagrant", + "ssh_password": "vagrant", + "ssh_port": 22, + "ssh_wait_timeout": "10000s", + "shutdown_command": "echo '/sbin/halt -h -p' > shutdown.sh; echo 'vagrant'|sudo -S bash 'shutdown.sh'", + "virtualbox_version_file": ".vbox_version", + "guest_additions_mode": "disable", + "hard_drive_interface": "sata", + "vboxmanage": [ + ["modifyvm", "{{.Name}}", "--vrde", "off"], + ["modifyvm", "{{.Name}}", "--pae", "off"], + ["modifyvm", "{{.Name}}", "--paravirtprovider", "legacy"] + ] + } + ], + "post-processors": [ + [ + { + "type": "vagrant", + "only": [ + "virtualbox-iso" + ], + "keep_input_artifact": false + }, + { + "type": "atlas", + "only": [ + "virtualbox-iso" + ], + "artifact": "hyperledger/{{user `artifact`}}", + "artifact_type": "vagrant.box", + "metadata": { + "provider": "virtualbox", + "version": "{{user `release`}}" + } + } + ] + ] +} diff --git a/images/base/release b/images/base/release new file mode 100644 index 00000000000..2cfabea2f1e --- /dev/null +++ b/images/base/release @@ -0,0 +1 @@ +0.0.11 diff --git a/images/base/scripts/common/golang_crossCompileSetup.sh b/images/base/scripts/common/golang_crossCompileSetup.sh new file mode 100755 index 00000000000..0d7468203d7 --- /dev/null +++ b/images/base/scripts/common/golang_crossCompileSetup.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +helpme() +{ + cat </etc/profile.d/goroot.sh +export GOROOT=$GOROOT +export GOPATH=$GOPATH +export PATH=\$PATH:$GOROOT/bin:$GOPATH/bin +EOF + + +# Install NodeJS + +if [ x$MACHINE = xs390x ] +then + apt-get install --yes nodejs +elif [ x$MACHINE = xppc64le ] +then + apt-get install --yes nodejs +else + NODE_VER=0.12.7 + NODE_PACKAGE=node-v$NODE_VER-linux-x64.tar.gz + TEMP_DIR=/tmp + SRC_PATH=$TEMP_DIR/$NODE_PACKAGE + + # First remove any prior packages downloaded in case of failure + cd $TEMP_DIR + rm -f node*.tar.gz + wget --quiet https://nodejs.org/dist/v$NODE_VER/$NODE_PACKAGE + cd /usr/local && sudo tar --strip-components 1 -xzf $SRC_PATH +fi + +# Install GRPC + +# ---------------------------------------------------------------- +# NOTE: For instructions, see https://github.com/google/protobuf +# +# ---------------------------------------------------------------- + +# First install protoc +cd /tmp +wget --quiet https://github.com/google/protobuf/archive/v3.0.2.tar.gz +tar xpzf v3.0.2.tar.gz +cd protobuf-3.0.2 +apt-get install -y autoconf automake libtool curl make g++ unzip +apt-get install -y build-essential +./autogen.sh +# NOTE: By default, the package will be installed to /usr/local. However, on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH. +# You can add it, but it may be easier to just install to /usr instead. +# +# To do this, invoke configure as follows: +# +# ./configure --prefix=/usr +# +#./configure +./configure --prefix=/usr + +if [ x$MACHINE = xs390x ] +then + echo FIXME: protobufs wont compile on 390, missing atomic call +else + make + make check + make install +fi +export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH +cd ~/ + +# Install rocksdb +apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev +cd /tmp +git clone https://github.com/facebook/rocksdb.git +cd rocksdb +git checkout tags/v4.1 +if [ x$MACHINE = xs390x ] +then + echo There were some bugs in 4.1 for z/p, dev stream has the fix, living dangereously, fixing in place + sed -i -e "s/-march=native/-march=z196/" build_tools/build_detect_platform + sed -i -e "s/-momit-leaf-frame-pointer/-DDUMBDUMMY/" Makefile +elif [ x$MACHINE = xppc64le ] +then + echo There were some bugs in 4.1 for z/p, dev stream has the fix, living dangereously, fixing in place. + echo Below changes are not required for newer releases of rocksdb. + sed -ibak 's/ifneq ($(MACHINE),ppc64)/ifeq (,$(findstring ppc64,$(MACHINE)))/g' Makefile +fi + +PORTABLE=1 make shared_lib +INSTALL_PATH=/usr/local make install-shared +ldconfig +cd ~/ + +# Make our versioning persistent +echo $BASEIMAGE_RELEASE > /etc/hyperledger-baseimage-release + +# clean up our environment +apt-get -y autoremove +apt-get clean +rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/images/base/scripts/docker/init.sh b/images/base/scripts/docker/init.sh new file mode 100755 index 00000000000..4e1e5c95c50 --- /dev/null +++ b/images/base/scripts/docker/init.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +apt-get update +apt-get install -y wget diff --git a/images/base/scripts/vagrant/cleanup.sh b/images/base/scripts/vagrant/cleanup.sh new file mode 100644 index 00000000000..ddbc4b0b493 --- /dev/null +++ b/images/base/scripts/vagrant/cleanup.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Removing leftover leases and persistent rules +echo "cleaning up dhcp leases" +rm /var/lib/dhcp/* + +# Make sure Udev doesn't block our network +echo "cleaning up udev rules" +rm /etc/udev/rules.d/70-persistent-net.rules +mkdir /etc/udev/rules.d/70-persistent-net.rules +rm -rf /dev/.udev/ +rm /lib/udev/rules.d/75-persistent-net-generator.rules + +echo "Adding a 2 sec delay to the interface up, to make the dhclient happy" +echo "pre-up sleep 2" >> /etc/network/interfaces diff --git a/images/base/scripts/vagrant/init.sh b/images/base/scripts/vagrant/init.sh new file mode 100755 index 00000000000..3c10c5a5b39 --- /dev/null +++ b/images/base/scripts/vagrant/init.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -e +set -x + +# Install headers so that we may build the vbox drivers layer +apt-get install -y build-essential zlib1g-dev libssl-dev libreadline-gplv2-dev unzip + +sed -i -e '/Defaults\s\+env_reset/a Defaults\texempt_group=sudo' /etc/sudoers +sed -i -e 's/%sudo ALL=(ALL:ALL) ALL/%sudo ALL=NOPASSWD:ALL/g' /etc/sudoers + +# Tweak sshd to prevent DNS resolution (speed up logins) +echo 'UseDNS no' >> /etc/ssh/sshd_config + +# Remove 5s grub timeout to speed up booting +cat < /etc/default/grub +# If you change this file, run 'update-grub' afterwards to update +# /boot/grub/grub.cfg. + +GRUB_DEFAULT=0 +GRUB_TIMEOUT=0 +GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` +GRUB_CMDLINE_LINUX_DEFAULT="quiet" +GRUB_CMDLINE_LINUX="debian-installer=en_US" +EOF + +update-grub diff --git a/images/base/scripts/vagrant/vagrant.sh b/images/base/scripts/vagrant/vagrant.sh new file mode 100755 index 00000000000..d43ab6351c1 --- /dev/null +++ b/images/base/scripts/vagrant/vagrant.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e +set -x + +# Vagrant specific +date > /etc/vagrant_box_build_time + +# Installing vagrant keys +mkdir -pm 700 /home/vagrant/.ssh +wget --no-check-certificate 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' -O /home/vagrant/.ssh/authorized_keys +chmod 0600 /home/vagrant/.ssh/authorized_keys +chown -R vagrant /home/vagrant/.ssh diff --git a/images/base/scripts/vagrant/virtualbox.sh b/images/base/scripts/vagrant/virtualbox.sh new file mode 100755 index 00000000000..a8b2aeb1531 --- /dev/null +++ b/images/base/scripts/vagrant/virtualbox.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -x + +apt-get install --yes virtualbox-guest-utils diff --git a/images/base/scripts/vagrant/zerodisk.sh b/images/base/scripts/vagrant/zerodisk.sh new file mode 100644 index 00000000000..35370d64a3d --- /dev/null +++ b/images/base/scripts/vagrant/zerodisk.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# Zero out the free space to save space in the final image: +dd if=/dev/zero of=/EMPTY bs=1M +rm -f /EMPTY + +# Sync to ensure that the delete completes before this moves on. +sync +sync +sync diff --git a/images/src/Dockerfile.in b/images/src/Dockerfile.in index 507220741e5..5b94527b6e4 100644 --- a/images/src/Dockerfile.in +++ b/images/src/Dockerfile.in @@ -1,2 +1,2 @@ -FROM hyperledger/fabric-baseimage:_BASE_TAG_ +FROM hyperledger/fabric-baseimage:latest ADD gopath.tar.bz2 $GOPATH/src/github.com/hyperledger/fabric diff --git a/membersrvc/Dockerfile b/membersrvc/Dockerfile new file mode 100644 index 00000000000..f19aab67568 --- /dev/null +++ b/membersrvc/Dockerfile @@ -0,0 +1,9 @@ +from hyperledger/fabric-baseimage:latest +# Copy GOPATH src and install Peer +RUN mkdir -p /var/hyperledger/db +WORKDIR $GOPATH/src/github.com/hyperledger/fabric/ +COPY . . +WORKDIR membersrvc +RUN pwd +RUN CGO_CFLAGS=" " CGO_LDFLAGS="-lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy" go install && cp $GOPATH/src/github.com/hyperledger/fabric/membersrvc/membersrvc.yaml $GOPATH/bin +# RUN CGO_CFLAGS=" " CGO_LDFLAGS="-lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy" go install diff --git a/membersrvc/ca/ca_test.yaml b/membersrvc/ca/ca_test.yaml index 3b3e68a7587..2dcc8bb2637 100644 --- a/membersrvc/ca/ca_test.yaml +++ b/membersrvc/ca/ca_test.yaml @@ -240,9 +240,9 @@ chaincode: # This is the basis for the Golang Dockerfile. Additional commands will be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) - COPY src $GOPATH/src - WORKDIR $GOPATH + from hyperledger/fabric-baseimage + COPY src $GOPATH/src + WORKDIR $GOPATH #timeout in millisecs for starting up a container and waiting for Register to come through. 1sec should be plenty for chaincode unit tests startuptimeout: 1000 diff --git a/mkdocs.yml b/mkdocs.yml index a9586af14fa..b81da566fdc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,15 +3,12 @@ site_url: http://hyperledger-fabric.readthedocs.io theme: readthedocs repo_url: http://gerrit.hyperledger.org/r/fabric site_description: 'Welcome to the Hyperledger fabric documentation' -strict: true -theme_dir: 'docs/custom_theme' pages: - Home: index.md - Glossary: glossary.md - Protocol Spec: protocol-spec.md - Usecases: biz/usecases.md -- System Chaincode: SystemChaincode-noop.md - Installation and setup: - Chaincode or Application Developer Setup: Setup/Chaincode-setup.md @@ -25,9 +22,9 @@ pages: - Chaincode APIs: API/ChaincodeAPI.md - Core API: API/CoreAPI.md - CA API: API/MemberServicesAPI.md + - System Chaincode: SystemChaincodes/noop.md - Fabric Developer: - - v1.0 Preview: abstract_v1.md - Contributing: CONTRIBUTING.md - Getting an Account: Gerrit/lf-account.md - Gerrit: Gerrit/gerrit.md @@ -37,7 +34,7 @@ pages: - Maintainers: MAINTAINERS.md - Reviewing: Gerrit/reviewing.md - Changes: Gerrit/changes.md -- Style guides: + - Style guides: - Golang: Style-guides/go-style.md - FAQ: @@ -52,19 +49,6 @@ pages: - Attributes: tech/attributes.md - Best Practices: tech/best-practices.md -- NodeSDK: - - App-developer-env-setup: nodeSDK/app-developer-env-setup.md - - App-Overview: nodeSDK/app-overview.md - - Node-SDK-guide: nodeSDK/node-sdk-guide.md - - Node-SDK-indepth: nodeSDK/node-sdk-indepth.md - - Sample-Standalone-app: nodeSDK/sample-standalone-app.md - - Sample-web-app: nodeSDK/sample-web-app.md - -- Starter Kit: - - Starter Kit: starter/fabric-starter-kit.md - -- Releases: releases.md - markdown_extensions: - extra - tables diff --git a/peer/core.yaml b/peer/core.yaml index 9bfa797f964..97be3f27841 100644 --- a/peer/core.yaml +++ b/peer/core.yaml @@ -286,9 +286,10 @@ chaincode: # This is the basis for the Golang Dockerfile. Additional commands will # be appended depedendent upon the chaincode specification. Dockerfile: | - FROM hyperledger/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION) - COPY src $GOPATH/src - WORKDIR $GOPATH + from hyperledger/fabric-baseimage + #from utxo:0.1.0 + COPY src $GOPATH/src + WORKDIR $GOPATH car: @@ -419,7 +420,7 @@ security: enabled: false # TCerts pool configuration. Multi-thread pool can also be configured - # by multichannel option switching concurrency in communication with TCA. + # by multichannel option switching concurrency in communication with TCA. multithreading: enabled: false multichannel: false diff --git a/protos/devops.proto b/protos/devops.proto index 9f8cf4b067c..4c578609bb3 100644 --- a/protos/devops.proto +++ b/protos/devops.proto @@ -50,8 +50,10 @@ service Devops { // Execute a transaction with a specific binding rpc EXP_ExecuteWithBinding(ExecuteWithBinding) returns (Response) {} + } + // Secret is a temporary object to establish security with the Devops. // A better solution using certificate will be introduced later message Secret { @@ -67,7 +69,7 @@ message SigmaInput { message ExecuteWithBinding { ChaincodeInvocationSpec chaincodeInvocationSpec = 1; - bytes binding = 2; + bytes binding = 2; } message SigmaOutput { @@ -76,6 +78,7 @@ message SigmaOutput { bytes asn1Encoding = 3; } + message BuildResult { enum StatusCode { diff --git a/scripts/provision/common.sh b/scripts/provision/common.sh new file mode 100755 index 00000000000..0efe7e63570 --- /dev/null +++ b/scripts/provision/common.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Add any logic that is common to both the peer and docker environments here + +apt-get update -qq + +# Used by CHAINTOOL +apt-get install -y default-jre diff --git a/scripts/provision/docker.sh b/scripts/provision/docker.sh new file mode 100755 index 00000000000..8ed21a7ca14 --- /dev/null +++ b/scripts/provision/docker.sh @@ -0,0 +1,118 @@ +#!/bin/bash + +# --------------------------------------------------------------------------- +# Install the hyperledger/fabric-baseimage docker environment +# --------------------------------------------------------------------------- +# +# There are some interesting things to note here: +# +# 1) Note that we take the slightly unorthodox route of _not_ publishing +# a "latest" tag to dockerhub. Rather, we only publish specifically +# versioned images and we build the notion of "latest" here locally +# during provisioning. This is because the notion of always +# pulling the latest/greatest from the net doesn't really apply to us; +# we always want a coupling between the fabric and the docker environment. +# At the same time, requiring each and every Dockerfile to pull a specific +# version adds overhead to the Dockerfile generation logic. Therefore, +# we employ a hybrid solution that capitalizes on how docker treats the +# "latest" tag. That is, untagged references implicitly assume the tag +# "latest" (good for simple Dockerfiles), but will satisfy the tag from +# the local cache before going to the net (good for helping us control +# what "latest" means locally) +# +# A good blog entry covering the mechanism being exploited may be found here: +# +# http://container-solutions.com/docker-latest-confusion +# +# 2) A benefit of (1) is that we now have a convenient vehicle for performing +# JIT customizations of our docker image during provisioning just like we +# do for vagrant. For example, we can install new packages in docker within +# this script. We will capitalize on this in future patches. +# +# 3) Note that we do some funky processing of the environment (see "printenv" +# and "ENV" components below). Whats happening is we are providing a vehicle +# for allowing the baseimage to include environmental definitions using +# standard linux mechanisms (e.g. /etc/profile.d). The problem is that +# docker-run by default runs a non-login/non-interactive /bin/dash shell +# which omits any normal /etc/profile or ~/.bashrc type processing, including +# environment variable definitions. So what we do is we force the execution +# of an interactive shell and extract the defined environment variables +# (via "printenv") and then re-inject them (using Dockerfile::ENV) in a +# manner that will make them visible to a non-interactive DASH shell. +# +# This helps for things like defining things such as the GOPATH. +# +# An alternative would be to bake any Dockerfile::ENV items in during +# baseimage creation, but packer lacks the capability to do so, so this +# is a compromise. +# --------------------------------------------------------------------------- + +NAME=hyperledger/fabric-baseimage +RELEASE=`uname -m`-$1 +DOCKERHUB_NAME=$NAME:$RELEASE + +CURDIR=`dirname $0` + +docker inspect $DOCKERHUB_NAME 2>&1 > /dev/null +if [ "$?" == "0" ]; then + echo "BUILD-CACHE: exists!" + BASENAME=$DOCKERHUB_NAME +else + echo "BUILD-CACHE: Pulling \"$DOCKERHUB_NAME\" from dockerhub.." + docker pull $DOCKERHUB_NAME + docker inspect $DOCKERHUB_NAME 2>&1 > /dev/null + if [ "$?" == "0" ]; then + echo "BUILD-CACHE: Success!" + BASENAME=$DOCKERHUB_NAME + else + echo "BUILD-CACHE: WARNING - Build-cache unavailable, attempting local build" + (cd $CURDIR/../../images/base && make docker DOCKER_TAG=localbuild) + if [ "$?" != "0" ]; then + echo "ERROR: Build-cache could not be compiled locally" + exit -1 + fi + BASENAME=$NAME:localbuild + fi +fi + +# Ensure that we have the baseimage we are expecting +docker inspect $BASENAME 2>&1 > /dev/null +if [ "$?" != "0" ]; then + echo "ERROR: Unable to obtain a baseimage" + exit -1 +fi + +# any further errors should be fatal +set -e + +TMP=`mktemp -d` +DOCKERFILE=$TMP/Dockerfile + +LOCALSCRIPTS=$TMP/scripts +REMOTESCRIPTS=/hyperledger/scripts/provision + +mkdir -p $LOCALSCRIPTS +cp -R $CURDIR/* $LOCALSCRIPTS + +# extract the FQN environment and run our common.sh to create the :latest tag +cat < $DOCKERFILE +FROM $BASENAME +`for i in \`docker run -i $BASENAME /bin/bash -l -c printenv\`; +do + echo ENV $i +done` +COPY scripts $REMOTESCRIPTS +RUN $REMOTESCRIPTS/common.sh +RUN chmod a+rw -R /opt/gopath + +EOF + +[ ! -z "$http_proxy" ] && DOCKER_ARGS_PROXY="$DOCKER_ARGS_PROXY --build-arg http_proxy=$http_proxy" +[ ! -z "$https_proxy" ] && DOCKER_ARGS_PROXY="$DOCKER_ARGS_PROXY --build-arg https_proxy=$https_proxy" +[ ! -z "$HTTP_PROXY" ] && DOCKER_ARGS_PROXY="$DOCKER_ARGS_PROXY --build-arg HTTP_PROXY=$HTTP_PROXY" +[ ! -z "$HTTPS_PROXY" ] && DOCKER_ARGS_PROXY="$DOCKER_ARGS_PROXY --build-arg HTTPS_PROXY=$HTTPS_PROXY" +[ ! -z "$no_proxy" ] && DOCKER_ARGS_PROXY="$DOCKER_ARGS_PROXY --build-arg no_proxy=$no_proxy" +[ ! -z "$NO_PROXY" ] && DOCKER_ARGS_PROXY="$DOCKER_ARGS_PROXY --build-arg NO_PROXY=$NO_PROXY" +docker build $DOCKER_ARGS_PROXY -t $NAME:latest $TMP + +rm -rf $TMP diff --git a/scripts/provision/host.sh b/scripts/provision/host.sh new file mode 100755 index 00000000000..e5a8aa22f48 --- /dev/null +++ b/scripts/provision/host.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +CURDIR=`dirname $0` + +$CURDIR/common.sh + +# Install docker-compose +curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose +chmod +x /usr/local/bin/docker-compose + +# Install Python, pip, behave, nose +# +# install python-dev and libyaml-dev to get compiled speedups +apt-get install --yes python-dev +apt-get install --yes libyaml-dev + +apt-get install --yes python-setuptools +apt-get install --yes python-pip +pip install --upgrade pip +pip install behave +pip install nose + +# updater-server, update-engine, and update-service-common dependencies (for running locally) +pip install -I flask==0.10.1 python-dateutil==2.2 pytz==2014.3 pyyaml==3.10 couchdb==1.0 flask-cors==2.0.1 requests==2.4.3 + +# Python grpc package for behave tests +# Required to update six for grpcio +pip install --ignore-installed six +pip install --upgrade 'grpcio==0.13.1' + +# install ruby and apiaryio +#apt-get install --yes ruby ruby-dev gcc +#gem install apiaryio + +# Install Tcl prerequisites for busywork +apt-get install --yes tcl tclx tcllib + +# Install NPM for the SDK +apt-get install --yes npm + +# Install JDK 1.8 for Java chaincode development +add-apt-repository ppa:openjdk-r/ppa -y +apt-get update && apt-get install openjdk-8-jdk -y + +# Download Gradle and create sym link +wget https://services.gradle.org/distributions/gradle-2.12-bin.zip -P /tmp --quiet +unzip -q /tmp/gradle-2.12-bin.zip -d /opt && rm /tmp/gradle-2.12-bin.zip +ln -s /opt/gradle-2.12/bin/gradle /usr/bin + +# Download maven for supporting maven build in java chaincode +MAVEN_VERSION=3.3.9 +mkdir -p /usr/share/maven /usr/share/maven/ref +curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \ + | tar -xzC /usr/share/maven --strip-components=1 \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +# Set the default JDK to 1.8 +update-java-alternatives -s java-1.8.0-openjdk-amd64 diff --git a/sdk/node/Makefile b/sdk/node/Makefile index 7637d6912ab..4a5cecac0d3 100644 --- a/sdk/node/Makefile +++ b/sdk/node/Makefile @@ -79,4 +79,4 @@ clean: @echo "[CLEAN]" -rm -rf node_modules -rm -rf doc - -find lib -type f | grep -v "protos/google" | grep -v "hash.js" | xargs rm + -find lib | grep -v "protos/google" | grep -v "hash.js" | xargs rm diff --git a/sdk/node/bin/run-unit-tests.sh b/sdk/node/bin/run-unit-tests.sh index 9e6f332903c..a892f5cad85 100755 --- a/sdk/node/bin/run-unit-tests.sh +++ b/sdk/node/bin/run-unit-tests.sh @@ -82,7 +82,6 @@ runTests() { runAssetMgmtTests runAssetMgmtWithRolesTests runAssetMgmtWithDynamicRolesTests - runEventTests echo "End running tests in network mode" } @@ -228,18 +227,6 @@ runAssetMgmtWithDynamicRolesTests() { echo "END running asset management with dynamic roles tests" } -runEventTests() { - echo "BEGIN running event-tests ..." - preExample eventsender mycc5 - node $UNITTEST/event-tests.js - if [ $? -ne 0 ]; then - echo "ERROR running event-tests!" - NODE_ERR_CODE=1 - fi - postExample eventsender - echo "END running event-tests" -} - # start process # $1 is executable path with any args # $2 is the log file diff --git a/sdk/node/src/crypto.ts b/sdk/node/src/crypto.ts index a905687d9a2..5b577d0d281 100644 --- a/sdk/node/src/crypto.ts +++ b/sdk/node/src/crypto.ts @@ -115,13 +115,13 @@ export class Crypto { * @params hashAlgorithm The hash algorithm ('SHA2' or 'SHA3') */ setHashAlgorithm(hashAlgorithm:string):void { - Crypto.checkHashFunction(hashAlgorithm); + this.checkHashFunction(hashAlgorithm); this.hashAlgorithm = hashAlgorithm; this.initialize(); } - static generateNonce() { + generateNonce() { return crypto.randomBytes(NonceSize); } @@ -305,11 +305,11 @@ export class Crypto { return decryptedBytes; } - static aesKeyGen() { + aesKeyGen() { return crypto.randomBytes(AESKeyLength); } - static aesCFBDecrypt(key, encryptedBytes) { + aesCFBDecryt(key, encryptedBytes) { var iv = crypto.randomBytes(IVLength); var aes = new aesjs.ModeOfOperation.cfb(key, iv, IVLength); @@ -336,13 +336,13 @@ export class Crypto { var decryptedBytes, unpaddedBytes; - decryptedBytes = Crypto.CBCDecrypt(key, bytes); - unpaddedBytes = Crypto.PKCS7UnPadding(decryptedBytes); + decryptedBytes = this.CBCDecrypt(key, bytes); + unpaddedBytes = this.PKCS7UnPadding(decryptedBytes); return unpaddedBytes; }; - static aes256GCMDecrypt(key:Buffer, ct:Buffer) { + aes256GCMDecrypt(key:Buffer, ct:Buffer) { let decipher = crypto.createDecipheriv('aes-256-gcm', key, ct.slice(0, GCMStandardNonceSize)); decipher.setAuthTag(ct.slice(ct.length - GCMTagSize)); let dec = decipher.update( @@ -361,7 +361,7 @@ export class Crypto { if (!info) info = ""; - var key = Crypto.hkdf2(bytesToBits(new Buffer(ikm)), keyBitLength, bytesToBits(salt), info, this.hashFunctionKeyDerivation); + var key = this.hkdf2(bytesToBits(new Buffer(ikm)), keyBitLength, bytesToBits(salt), info, this.hashFunctionKeyDerivation); return bitsToBytes(key); @@ -394,7 +394,7 @@ export class Crypto { throw new Error("Illegal level: " + this.securityLevel + " - must be either 256 or 384"); } - private static checkHashFunction(hashAlgorithm: string) { + private checkHashFunction(hashAlgorithm: string) { if (!_isString(hashAlgorithm)) throw new Error("Illegal Hash function family: " + hashAlgorithm + " - must be either SHA2 or SHA3"); @@ -405,7 +405,7 @@ export class Crypto { private initialize() { this.checkSecurityLevel(this.securityLevel); - Crypto.checkHashFunction(this.hashAlgorithm); + this.checkHashFunction(this.hashAlgorithm); this.suite = this.hashAlgorithm.toLowerCase() + '-' + this.securityLevel; if (this.securityLevel == CURVE_P_256_Size) { @@ -454,7 +454,7 @@ export class Crypto { * @param {Object} [Hash=sjcl.hash.sha256] The hash function to use. * @return {bitArray} derived key. */ - private static hkdf2(ikm, keyBitLength, salt, info, Hash) { + private hkdf2(ikm, keyBitLength, salt, info, Hash) { var hmac, key, i, hashLen, loops, curOut, ret = []; // Hash = Hash || sjcl.hash.sha256; @@ -496,7 +496,7 @@ export class Crypto { return sjcl.bitArray.clamp(ret, keyBitLength); } - private static CBCDecrypt(key, bytes) { + private CBCDecrypt(key, bytes) { debug('key length: ', key.length); debug('bytes length: ', bytes.length); var iv = bytes.slice(0, BlockSize); @@ -524,6 +524,7 @@ export class Crypto { start += BlockSize; end += BlockSize; } + ; decryptedBytes = Buffer.concat(decryptedBlocks); } @@ -538,7 +539,7 @@ export class Crypto { }; - private static PKCS7UnPadding(bytes) { + private PKCS7UnPadding(bytes) { //last byte is the number of padded bytes var padding = bytes.readUInt8(bytes.length - 1); diff --git a/sdk/node/src/hfc.ts b/sdk/node/src/hfc.ts index 002fa512e66..00e1f97447e 100644 --- a/sdk/node/src/hfc.ts +++ b/sdk/node/src/hfc.ts @@ -1010,7 +1010,7 @@ export class Member { if (err) return cb(err); self.enrollment = enrollment; // Generate queryStateKey - self.enrollment.queryStateKey = crypto.Crypto.generateNonce() + self.enrollment.queryStateKey = self.chain.cryptoPrimitives.generateNonce(); // Save state self.saveState(function (err) { @@ -1208,7 +1208,7 @@ export class TransactionContext extends events.EventEmitter { this.chain = member.getChain(); this.memberServices = this.chain.getMemberServices(); this.tcert = tcert; - this.nonce = crypto.Crypto.generateNonce(); + this.nonce = this.chain.cryptoPrimitives.generateNonce(); this.complete = false; this.timeoutId = null; } @@ -1526,7 +1526,7 @@ export class TransactionContext extends events.EventEmitter { var stateKey; if (transaction.pb.getType() == _fabricProto.Transaction.Type.CHAINCODE_DEPLOY) { // The request is for a deploy - stateKey = new Buffer(crypto.Crypto.aesKeyGen()); + stateKey = new Buffer(self.chain.cryptoPrimitives.aesKeyGen()); } else if (transaction.pb.getType() == _fabricProto.Transaction.Type.CHAINCODE_INVOKE ) { // The request is for an execute // Empty state key @@ -1603,7 +1603,7 @@ export class TransactionContext extends events.EventEmitter { ); debug('Decrypt Result [%s]', ct.toString('hex')); - return crypto.Crypto.aes256GCMDecrypt(key, ct); + return this.chain.cryptoPrimitives.aes256GCMDecrypt(key, ct); } /** @@ -2842,16 +2842,15 @@ export function newFileKeyValStore(dir:string):KeyValStore { /** * The ChainCodeCBE is used internal to the EventHub to hold chaincode event registration callbacks. */ -export class ChainCodeCBE { - // chaincode id +class ChainCodeCBE { ccid: string; - // event name regex filter - eventNameFilter: RegExp; - // callback function to invoke on successful filter match + eventname: string; + payload: Uint8Array; cb: Function; - constructor(ccid: string, eventNameFilter: string, cb: Function) { + constructor(ccid: string,eventname: string,payload: Uint8Array, cb: Function) { this.ccid = ccid; - this.eventNameFilter = new RegExp(eventNameFilter); + this.eventname = eventname; + this.payload = payload; this.cb = cb; } } @@ -2880,7 +2879,7 @@ export class EventHub { this.chaincodeRegistrants = new HashTable(); this.blockRegistrants = new Set(); this.txRegistrants = new HashTable(); - this.peeraddr = null; + this.peeraddr = "localhost:7053"; this.connected = false; } @@ -2894,7 +2893,6 @@ export class EventHub { public connect() { if (this.connected) return; - if (!this.peeraddr) throw Error("Must set peer address before connecting."); this.events = grpc.load(__dirname + "/protos/events.proto" ).protos; this.client = new this.events.Events(this.peeraddr,grpc.credentials.createInsecure()); this.call = this.client.chat(); @@ -2904,15 +2902,11 @@ export class EventHub { let eh = this; // for callback context this.call.on('data', function(event) { if ( event.Event == "chaincodeEvent" ) { - var cbtable = eh.chaincodeRegistrants.get(event.chaincodeEvent.chaincodeID); - if( !cbtable ) { - return; - } - cbtable.forEach(function (cbe) { - if ( cbe.eventNameFilter.test(event.chaincodeEvent.eventName)) { - cbe.cb(event.chaincodeEvent); - } - }); + var cbe = eh.chaincodeRegistrants.get(event.chaincodeEvent.chaincodeID + "/" + event.chaincodeEvent.eventName); + if ( cbe ) { + cbe.payload = event.chaincodeEvent.payload; + cbe.cb(cbe); + } } else if ( event.Event == "block") { eh.blockRegistrants.forEach(function(cb){ cb(event.block); @@ -2934,35 +2928,19 @@ export class EventHub { this.connected = false; } - public registerChaincodeEvent(ccid: string, eventname: string, callback: Function): ChainCodeCBE { + public registerChaincodeEvent(ccid: string, eventname: string, callback: Function){ if (!this.connected) return; - let cb = new ChainCodeCBE(ccid, eventname, callback); - let cbtable = this.chaincodeRegistrants.get(ccid); - if ( !cbtable ) { - cbtable = new Set(); - this.chaincodeRegistrants.put(ccid, cbtable); - cbtable.add(cb); - let register = { register: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid , eventName: "" }} ] }}; - this.call.write(register); - } else { - cbtable.add(cb); - } - return cb; + let cb = new ChainCodeCBE(ccid, eventname, null, callback); + let register = { register: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid , eventName: eventname }} ] }}; + this.chaincodeRegistrants.put(ccid + "/" + eventname, cb); + this.call.write(register); } - public unregisterChaincodeEvent(cbe: ChainCodeCBE){ + public unregisterChaincodeEvent(ccid: string, eventname: string){ if (!this.connected) return; - let cbtable = this.chaincodeRegistrants.get(cbe.ccid); - if ( !cbtable ) { - debug("No event registration for ccid %s ", cbe.ccid); - return; - } - cbtable.delete(cbe); - if( cbtable.size <= 0 ) { - var unregister = { unregister: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: cbe.ccid, eventName: "" }} ] }}; - this.chaincodeRegistrants.remove(cbe.ccid); - this.call.write(unregister); - } + var unregister = { unregister: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid, eventName: eventname }} ] }}; + this.chaincodeRegistrants.remove(ccid + "/" + eventname); + this.call.write(unregister); } public registerBlockEvent(callback:Function){ diff --git a/sdk/node/test/unit/event-tests.js b/sdk/node/test/unit/event-tests.js deleted file mode 100644 index ad045b57ebf..00000000000 --- a/sdk/node/test/unit/event-tests.js +++ /dev/null @@ -1,516 +0,0 @@ -/** - * Copyright London Stock Exchange 2016 All Rights Reserved. - * - * 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. - */ - -var hfc = require('../..'); -var test = require('tape'); -var util = require('util'); -var fs = require('fs'); - -// -// Create a test chain -// - -var chain = hfc.newChain("testChain"); - -// -// Configure the test chain -// -// Set the directory for the local file-based key value store, point to the -// address of the membership service, and add an associated peer node. -// -// If the "tlsca.cert" file exists then the client-sdk will -// try to connect to the member services using TLS. -// The "tlsca.cert" is supposed to contain the root certificate (in PEM format) -// to be used to authenticate the member services certificate. -// - -chain.setKeyValStore(hfc.newFileKeyValStore('/tmp/keyValStore')); -if (fs.existsSync("tlsca.cert")) { - chain.setMemberServicesUrl("grpcs://localhost:7054", fs.readFileSync('tlsca.cert')); -} else { - chain.setMemberServicesUrl("grpc://localhost:7054"); -} -chain.addPeer("grpc://localhost:7051"); -chain.eventHubConnect("localhost:7053"); - -process.on('exit', function (){ - chain.eventHubDisconnect(); -}); - -// -// Set the chaincode deployment mode to either developent mode (user runs chaincode) -// or network mode (code package built and sent to the peer). -// - -var mode = process.env['DEPLOY_MODE']; -console.log("$DEPLOY_MODE: " + mode); -if (mode === 'dev') { - chain.setDevMode(true); -} else { - chain.setDevMode(false); -} - -// -// Configure test users -// -// Set the values required to register a user with the certificate authority. -// - -test_user1 = { - name: "WebApp_user1", - role: 1, // Client - affiliation: "bank_a" -}; - -// -// Declare variables to store the test user Member objects returned after -// registration and enrollment as they will be used across multiple tests. -// - -var test_user_Member1; - -// -// Declare test variables that will be used to store chaincode values used -// across multiple tests. -// - -// Path to the local directory containing the chaincode project under $GOPATH -var testChaincodePath = "github.com/eventsender/"; - -// Chaincode hash that will be filled in by the deployment operation or -// chaincode name that will be referenced in development mode. -var testChaincodeName = "mycc5"; - -// testChaincodeID will store the chaincode ID value after deployment. -var testChaincodeID; - -function getUser(name, cb) { - chain.getUser(name, function (err, user) { - if (err) return cb(err); - if (user.isEnrolled()) return cb(null, user); - // User is not enrolled yet, so perform both registration and enrollment - // The chain registrar is already set inside 'Set chain registrar' test - var registrationRequest = { - enrollmentID: name, - affiliation: "bank_a" - }; - user.registerAndEnroll(registrationRequest, function (err) { - if (err) cb(err, null) - cb(null, user) - }); - }); -} - -// -// Enroll the WebAppAdmin member and set as registrar then register -// and enroll new user with certificate authority -// This test is a prerequisite to further tests -// - -test('Set up chain prerequisites', function (t) { - t.plan(5); - - // Get the WebAppAdmin member - chain.getMember("WebAppAdmin", function (err, WebAppAdmin) { - if (err) { - t.fail("Failed to get WebAppAdmin member " + " ---> " + err); - t.end(err); - process.exit(1); - } else { - t.pass("Successfully got WebAppAdmin member" /*+ " ---> " + JSON.stringify(crypto)*/); - - // Enroll the WebAppAdmin member with the certificate authority using - // the one time password hard coded inside the membersrvc.yaml. - pw = "DJY27pEnl16d"; - WebAppAdmin.enroll(pw, function (err, crypto) { - if (err) { - t.fail("Failed to enroll WebAppAdmin member " + " ---> " + err); - t.end(err); - process.exit(1); - } else { - t.pass("Successfully enrolled WebAppAdmin member" /*+ " ---> " + JSON.stringify(crypto)*/); - - // Confirm that the WebAppAdmin token has been created in the key value store - path = chain.getKeyValStore().dir + "/member." + WebAppAdmin.getName(); - - fs.exists(path, function (exists) { - if (exists) { - t.pass("Successfully stored client token" /*+ " ---> " + WebAppAdmin.getName()*/); - } else { - t.fail("Failed to store client token for " + WebAppAdmin.getName() + " ---> " + err); - t.end(err); - // Exit the test script after a failure - process.exit(1); - } - chain.setRegistrar(WebAppAdmin); - // Register and enroll test_user - getUser(test_user1.name, function (err, user) { - if (err) { - t.fail("Failed to get " + test_user1.name + " ---> ", err); - t.end(err); - // Exit the test script after a failure - process.exit(1); - } else { - test_user_Member1 = user; - - t.pass("Successfully registered and enrolled " + test_user_Member1.getName()); - - // Confirm that the user token has been created in the key value store - path = chain.getKeyValStore().dir + "/member." + test_user1.name; - fs.exists(path, function (exists) { - if (exists) { - t.pass("Successfully stored client token" /*+ " ---> " + test_user1.name*/); - } else { - t.fail("Failed to store client token for " + test_user1.name + " ---> " + err); - t.end(err); - // Exit the test script after a failure - process.exit(1); - } - }); - } - }); - }); - } - }); - } - }); -}); - -// -// Create and issue a chaincode deploy request by the test user, who was -// registered and enrolled in the UT above. Deploy a testing chaincode from -// a local directory in the user's $GOPATH. -// - -test('Deploy a chaincode by enrolled user', function (t) { - t.plan(1); - - // Construct the deploy request - var deployRequest = { - // Function to trigger - fcn: "init", - // Arguments to the initializing function - args: [] - }; - - if (mode === 'dev') { - // Name required for deploy in development mode - deployRequest.chaincodeName = testChaincodeName; - } else { - // Path (under $GOPATH) required for deploy in network mode - deployRequest.chaincodePath = testChaincodePath; - } - - // Trigger the deploy transaction - var deployTx = test_user_Member1.deploy(deployRequest); - - // the deploy complete is triggered as a result of a fabric deploy - // complete event automatically when a event source is connected - deployTx.on('complete', function (results) { - // Deploy request completed successfully - console.log(util.format("deploy results: %j", results)); - // Set the testChaincodeID for subsequent tests - testChaincodeID = results.chaincodeID; - console.log("testChaincodeID:" + testChaincodeID); - t.pass(util.format("Successfully deployed chaincode: request=%j, response=%j", deployRequest, results)); - }); - deployTx.on('error', function (err) { - // Deploy request failed - t.fail(util.format("Failed to deploy chaincode: request=%j, error=%j", deployRequest, err)); - // Exit the test script after a failure - process.exit(1); - }); -}); - -// -// Issue a chaincode invoke to generate event and listen for the event -// by registering with chaincode id and event name -// - -test('Invoke chaincode and have it generate an event', function (t) { - t.plan(2); - - var evtstring = "event-test"; - // Construct the invoke request - var invokeRequest = { - // Name (hash) required for invoke - chaincodeID: testChaincodeID, - // Function to trigger - fcn: "invoke", - // Parameters for the invoke function - args: [evtstring] - }; - var eh = chain.getEventHub(); - var duration = chain.getInvokeWaitTime() * 1000; - var timedout = true; - var timeoutId = null; - - // register for chaincode event - var regid = eh.registerChaincodeEvent(testChaincodeID, "^evtsender$", function(event) { - timedout = false; - if (timeoutId) { - clearTimeout(timeoutId); - } - t.equal(event.payload.toString(), "Event 0," + evtstring, "Successfully received expected chaincode event payload"); - eh.unregisterChaincodeEvent(regid); - }); - // Trigger the invoke transaction - var invokeTx = test_user_Member1.invoke(invokeRequest); - // set timout on event sent by chaincode invoke - timeoutId = setTimeout(function() { - if(timedout) { - eh.unregisterChaincodeEvent(regid); - t.fail("Failed to receive chaincode event"); - process.exit(1); - } - }, - duration); - - // Print the invoke results - invokeTx.on('complete', function (results) { - // Invoke transaction submitted successfully - t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); - }); - invokeTx.on('error', function (err) { - // Invoke transaction submission failed - t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); - // Exit the test script after a failure - process.exit(1); - }); -}); -// -// Issue a chaincode invoke to generate event and listen for the event -// on 2 registrations -// - -test('Invoke chaincode, have it generate an event, and receive event on 2 registrations', function (t) { - t.plan(3); - - var evtstring = "event-test"; - // Construct the invoke request - var invokeRequest = { - // Name (hash) required for invoke - chaincodeID: testChaincodeID, - // Function to trigger - fcn: "invoke", - // Parameters for the invoke function - args: [evtstring] - }; - var eh = chain.getEventHub(); - var duration = chain.getInvokeWaitTime() * 1000; - var timedout = true; - var timeoutId = null; - var eventcount = 0; - - // register for chaincode event - var regid1 = eh.registerChaincodeEvent(testChaincodeID, "^evtsender$", function(event) { - eventcount++; - if (eventcount > 1) { - if (timeoutId) { - clearTimeout(timeoutId); - } - } - t.equal(event.payload.toString(), "Event 1," + evtstring, "Successfully received expected chaincode event payload"); - eh.unregisterChaincodeEvent(regid1); - }); - // register for chaincode event - var regid2 = eh.registerChaincodeEvent(testChaincodeID, "^evtsender$", function(event) { - eventcount++; - if (eventcount > 1) { - if (timeoutId) { - clearTimeout(timeoutId); - } - } - t.equal(event.payload.toString(), "Event 1," + evtstring, "Successfully received expected chaincode event payload"); - eh.unregisterChaincodeEvent(regid2); - }); - // Trigger the invoke transaction - var invokeTx = test_user_Member1.invoke(invokeRequest); - // set timout on event sent by chaincode invoke - timeoutId = setTimeout(function() { - if(eventcount > 1) { - eh.unregisterChaincodeEvent(regid1); - eh.unregisterChaincodeEvent(regid2); - t.fail("Failed to receive chaincode event"); - process.exit(1); - } - }, - duration); - - // Print the invoke results - invokeTx.on('complete', function (results) { - // Invoke transaction submitted successfully - t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); - }); - invokeTx.on('error', function (err) { - // Invoke transaction submission failed - t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); - // Exit the test script after a failure - process.exit(1); - }); -}); - -// -// Issue a chaincode invoke to generate event and listen for the event -// by registering with chaincode id and wildcarded event name -// - -test('Generate chaincode event and receive it with wildcard', function (t) { - t.plan(2); - - var evtstring = "event-test"; - // Construct the invoke request - var invokeRequest = { - // Name (hash) required for invoke - chaincodeID: testChaincodeID, - // Function to trigger - fcn: "invoke", - // Parameters for the invoke function - args: [evtstring] - }; - var eh = chain.getEventHub(); - var duration = chain.getInvokeWaitTime() * 1000; - var timedout = true; - var timeoutId = null; - - // register for chaincode event with wildcard event name - var regid = eh.registerChaincodeEvent(testChaincodeID, ".*", function(event) { - timedout = false; - if (timeoutId) { - clearTimeout(timeoutId); - } - t.equal(event.payload.toString(), "Event 2," + evtstring, "Successfully received expected chaincode event payload"); - eh.unregisterChaincodeEvent(regid); - }); - // Trigger the invoke transaction - var invokeTx = test_user_Member1.invoke(invokeRequest); - // set timout on event sent by chaincode invoke - timeoutId = setTimeout(function() { - if(timedout) { - eh.unregisterChaincodeEvent(regid); - t.fail("Failed to receive chaincode event"); - process.exit(1); - } - }, - duration); - - // Print the invoke results - invokeTx.on('complete', function (results) { - // Invoke transaction submitted successfully - t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); - }); - invokeTx.on('error', function (err) { - // Invoke transaction submission failed - t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); - // Exit the test script after a failure - process.exit(1); - }); -}); - -// -// Issue a chaincode invoke to generate event and listen for the event -// by registering with chaincode id and a bogus event name -// - -test('Generate an event that fails to be received', function (t) { - t.plan(2); - - var evtstring = "event-test"; - // Construct the invoke request - var invokeRequest = { - // Name (hash) required for invoke - chaincodeID: testChaincodeID, - // Function to trigger - fcn: "invoke", - // Parameters for the invoke function - args: [evtstring] - }; - var eh = chain.getEventHub(); - var duration = chain.getInvokeWaitTime() * 1000; - var timedout = true; - var timeoutId = null; - - // register for chaincode event with bogus event name - var regid = eh.registerChaincodeEvent(testChaincodeID, "bogus", function(event) { - timedout = false; - if (timeoutId) { - clearTimeout(timeoutId); - } - t.fail("Received chaincode event from bogus registration"); - eh.unregisterChaincodeEvent(regid); - process.exit(1); - }); - // Trigger the invoke transaction - var invokeTx = test_user_Member1.invoke(invokeRequest); - // set timout on event sent by chaincode invoke - timeoutId = setTimeout(function() { - if(timedout) { - eh.unregisterChaincodeEvent(regid); - t.pass("Failed to receive chaincode event"); - } - }, - duration); - - // Print the invoke results - invokeTx.on('complete', function (results) { - // Invoke transaction submitted successfully - t.pass(util.format("Successfully completed chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); - }); - invokeTx.on('error', function (err) { - // Invoke transaction submission failed - t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); - // Exit the test script after a failure - process.exit(1); - }); -}); - -// -// -// Create and issue a chaincode query request by the test user, who was -// registered and enrolled in the UT above. Query a chaincode for -// number of events generated. -// - -test('Query chaincode state for number of events sent', function (t) { - t.plan(1); - - // Construct the query request - var queryRequest = { - // Name (hash) required for query - chaincodeID: testChaincodeID, - // Function to trigger - fcn: "query", - // Existing state variable to retrieve - args: [""] - }; - - // Trigger the query transaction - var queryTx = test_user_Member1.query(queryRequest); - - // Print the query results - queryTx.on('complete', function (results) { - var result = JSON.parse(results.result.toString()); - var count = parseInt(result.NoEvents); - t.equal(count, 4, "Successfully queried correct number of events generated."); - chain.eventHubDisconnect(); - }); - queryTx.on('error', function (err) { - // Query failed - t.fail(util.format("Failed to query chaincode state: request=%j, error=%j", queryRequest, err)); - t.end(err); - }); -}); - diff --git a/tools/busywork/bin/busy b/tools/busywork/bin/busy index c7d87091d09..242c639a6c1 100755 --- a/tools/busywork/bin/busy +++ b/tools/busywork/bin/busy @@ -1,13 +1,13 @@ #!/usr/bin/tclsh # Copyright IBM Corp. 2016. All Rights Reserved. -# +# # 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. @@ -19,18 +19,18 @@ set usage { The 'busy' script runs commands on one or more peers in a busywork network, printing the salient portion of the response on stdout. 'busy' can be seen as -an easier-to-use, enhanced version of the Hyperledger fabric -command-line-interface (CLI) in that 'busy' takes care of various kinds of -bookkeeping and boilerplate code behind the scenes. 'busy' is probably best -used as a tool for small scipts, or for issuing a few interactive commands to -a peer network. Alhough complex test scripts could be implemented entirely as -'busy' calls, the performance of a test implemented this way would likely -suffer from the process-creation overhead of each 'busy' invocation. +an easier-to-use version of the Hyperledger fabric command-line-interface +(CLI) in that 'busy' takes care of various kinds of bookkeeping and +boilerplate code behind the scenes. 'busy' is probably best used as a tool for +small scipts, or for issuing a few interactive commands to a peer +network. Alhough complex test scripts could be implemented entirely as 'busy' +calls, the performance of a test implemented this way would likely suffer from +the process-creation overhead of each 'busy' invocation. If the 'busy' command targets a single peer (see below) then the response from -or for that peer is printed. If multiple peers are targeted, then the results -are collected and printed as a JSON object, where each result is keyed by the -peer name, e.g., +that peer is printed. If multiple peers are targeted, then the results are +collected and printed as a JSON object, where each result is keyed by the peer +name, e.g., { "vp0" : , @@ -39,8 +39,8 @@ peer name, e.g., "vp" : response> } -Include the -json option to force results from operations on a single peer to -print as a JSON object. +Use -json to force results from operations on a single peer to print as a JSON +object. 'busy' is only supported for peer networks described by a 'network' file in the BUSYWORK_HOME directory. The to target are named by the peer IDs @@ -76,9 +76,6 @@ The following command and argument forms are supported: ping - pid - ps - The 'network' and 'chaincodes' commands simply print the current 'network' and 'chaincodes' files respectively from the implied $BUSYWORK_HOME. @@ -113,17 +110,6 @@ queries fail. If the ping query succeeds then the output of the ping queries is returned. This function currently assumes that the chaincode implments a 'ping' query function with no parameters. -The 'pid' command simply returns the PID of each of the . - -The 'ps' command is used to obtain 'ps' information from one or more -peers. For each peer implied by the specification, the result returned -is the result from executing 'ps' as follows, where is the PID of each -of the : - - ps -p -ww --noheader -o - -Note that leading/trailing whitespace is removed from the result. - Examples: busy chaincodes @@ -138,9 +124,6 @@ Examples: busy ping "*" cc2 - busy pid vp0 - busy ps vp0 etime,cputime - Optional arguments, with defaults after the colon: -h | -help | --help : N/A @@ -166,12 +149,12 @@ Optional arguments, with defaults after the colon: The -waitFor option is supported for the 'deploy', 'invoke' and 'ping' commands only. The semantics are explained below in the section headed - "Semantics of -waitFor" + "Semantics of -waitFor" -json : See below Select -json to force even single-peer operations to print as a JSON - object, rather than simply as a value. This option is ignored for the + object, rather than simply as a value. This opiton is ignored for the 'chaincodes' and 'network' commands. @@ -208,14 +191,6 @@ proc singletonCommand {cmd} { } -proc fixedArgs {cmd nArgs} { - - if {[llength [parms args]] != $nArgs} { - errorExit "The '$cmd' command expects $nArgs arguments." - } -} - - proc chaincodes {} { singletonCommand chaincodes @@ -319,7 +294,7 @@ proc invoke {} { "Deployed IDs are $a(ids)" } set name $a($ccId.name) - + if {![null [parms waitFor]]} { set heights \ [mapeach address [parms restAddresses] { @@ -347,7 +322,7 @@ proc invoke {} { } } - + proc query {} { waitForNotOK query @@ -369,7 +344,7 @@ proc query {} { errorExit } set name $a($ccId.name) - + parms results \ [mapeach address [parms restAddresses] { return [fabric::query $address [parms user] $name $function $args] @@ -394,7 +369,7 @@ proc ping {} { errorExit } set name $a($ccId.name) - + proc _ping {name} { set results {} foreach address [parms restAddresses] { @@ -420,33 +395,7 @@ proc ping {} { } } - -proc pid {} { - - waitForNotOK pid - fixedArgs pid 0 - - parms results [mapeach peer [parms peers] { - return [parms network.peer.$peer.pid] - }] -} - - -proc ps {} { - - waitForNotOK ps - fixedArgs ps 1 - - parms results [mapeach peer [parms peers] { - set pid [parms network.peer.$peer.pid] - if {[catch {exec ps -p $pid -ww --noheader -o [parms args]} result]} { - errorExit "Exec of 'ps' failed : $result" - } - return [string trim $result]; # Remove leading/trailing whitespace - }] -} - - + ############################################################################ # The script ############################################################################ @@ -461,11 +410,11 @@ setLoggingLevel {} warn set options { {enum {-h -help --help} parms(help) 0 p_help} {key -home parms(home) {}} - {key -user parms(user) {} p_user} + {bool -user parms(user) {} p_user} {key -waitFor parms(waitFor) {}} {bool -json parms(json) 0} } - + mapKeywordArgs $argv $options parms(other) if {$p_help} { @@ -481,7 +430,7 @@ parms command [first [parms other]] switch [parms command] { chaincodes {chaincodes} network {network} -} +} parms peers [busywork::peersFromSpec [second [parms other]]] parms args [restn [parms other] 2] @@ -510,8 +459,6 @@ switch [parms command] { invoke {invoke} query {query} ping {ping} - pid {pid} - ps {ps} default {errorExit "Unrecognized command: [parms command]"} } @@ -542,3 +489,9 @@ if {[parms json] || [expr {[llength [parms results]] > 1}]} { puts [first [parms results]] } + + + + + + diff --git a/tools/busywork/bin/pprofClient b/tools/busywork/bin/pprofClient index 0e8df692184..888c06f6a23 100755 --- a/tools/busywork/bin/pprofClient +++ b/tools/busywork/bin/pprofClient @@ -1,13 +1,13 @@ #!/usr/bin/tclsh # Copyright IBM Corp. 2016. All Rights Reserved. -# +# # 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. @@ -66,7 +66,7 @@ of the profile files - they are named by the host:port of the profiling port, and given sequence numbers to make them unique. When this script is run against busywork networks, the final act of the script is to create symbolic links that substitute the host:port portion of the file names with the peer -names (vp[0,...N]). +names (vp[0,...N]). Optional arguments, with defaults after the colon: @@ -140,7 +140,7 @@ set options { {key -peers parms(peers) {} p_peers} {key -port parms(port) 6060} } - + mapKeywordArgs $argv $options parms(other) if {$p_help} { @@ -153,12 +153,12 @@ if {[parms quiet]} { } else { setLoggingLevel {} note } - + parms home [busywork::home [parms home]] # Handle implicit vs. explict peers. With implicit peers we can give the files # recognizable names. With explicit peers we can only use the host:port as the -# names. +# names. if {$p_peers} { @@ -175,34 +175,34 @@ if {$p_peers} { parms profileAddresses [parms ids] } else { - + # Implicit peers - + if {[catch {busywork::networkToArray ::parms network.} msg]} { errorExit $msg } - + switch [llength [parms other]] { - + 1 { # All peers - + parms service [parms other] parms ids [parms network.peer.ids] parms profileAddresses [parms network.peer.profileAddresses] } 2 { # Subset of peers - + set spec [first [parms other]] parms service [second [parms other]] - + if {[catch {enumerate $spec} result]} { errorExit \ "Error parsing peer specification : $result" } set nPeers [llength [parms network.peer.ids]] - + parms ids \ [mapeach n $result { if {$n > $nPeers} { @@ -214,7 +214,7 @@ if {$p_peers} { [mapeach n $result { return [lindex [parms network.peer.profileAddresses] $n] }] - + } default { puts $usage @@ -283,8 +283,7 @@ if {[waitPIDs $pids]} { # find the profile files that the tool just created and link the names given # by the tool with names based on the peer IDs. The Go pprof tool does not # support providing names for the profile files - it names them based on their -# http addresses using the form 'pprof.[.].'. The form with the [.] was introduced in Go 1.7. +# http addresses using the form 'pprof..'. # The renaming-via-links being done here is not perfect in every case, and can # cause confusion (but NOT lost files) if profiles from multiple runs are @@ -298,41 +297,31 @@ if {!$p_peers} { set idMap($target) $id } foreach file [glob pprof.*] { - set executable "" - if {[regexp {^pprof\.([^:]+:\d+)\.(.*)(\d\d\d)(.*)} \ + if {[regexp {^pprof.([^:]+:\d+)(.*)(\d\d\d)(.*)} \ $file match host a b c]} { - - # We can't disambiguate the . form from a - # generic with a regular expression. So we need to - # check to see if one of the hosts we're interested in is a - # terminal suffix of the 'host' pulled form the regex match. - - foreach target [parms profileAddresses] { - if {[string match *$target $host]} { + if {[info exists idMap($host)]} { + if {$p_tag} { + set b [parms tag] + } + set reName pprof.$host$a$b$c + set newName pprof.$idMap($host)$a$b$c + if {![file exists $newName]} { if {$p_tag} { - set b [parms tag] - } - set reName pprof.$host.$a$b$c - set newName pprof.$idMap($target).$a$b$c - if {![file exists $newName]} { - if {$p_tag} { - if {[catch {exec mv $file $reName} why]} { - errorExit "Can't rename $file to $reName : $why" - } - if {[catch {exec ln -sf $reName $newName} code]} { - errorExit \ - "Error linking $file to $newName : $code" - } - note {} "$newName -> $reName (from $file)" - } else { - if {[catch {exec ln -sf $file $newName} code]} { - errorExit \ - "Error linking $file to $newName : $code" - } - note {} "$newName -> $file" + if {[catch {exec mv $file $reName} why]} { + errorExit "Can't rename $file to $reName : $why" } - } - break + if {[catch {exec ln -sf $reName $newName} code]} { + errorExit \ + "Error linking $file to $newName : $code" + } + note {} "$newName -> $reName (from $file)" + } else { + if {[catch {exec ln -sf $file $newName} code]} { + errorExit \ + "Error linking $file to $newName : $code" + } + note {} "$newName -> $file" + } } } } diff --git a/tools/busywork/bin/userModeNetwork b/tools/busywork/bin/userModeNetwork index 9bdfc8e0a03..bdeab1ce601 100755 --- a/tools/busywork/bin/userModeNetwork +++ b/tools/busywork/bin/userModeNetwork @@ -65,11 +65,6 @@ Optional arguments, with defaults after the colon: the 'membersrvc' server. Peer login credentials are obtained from the fabric/membersrvc.yaml file. --privacy | -noPrivacy : -noPrivacy - - Controls whether privacy is enabled. This option only has effect if - -security is enabled. - -noops | -batch : -batch Use one of these options to select the consensus mode. The default @@ -199,7 +194,6 @@ set options { {key -home parms(home) {}} {key -interface parms(interface) {} p_interface} {bool {-security -noSecurity} parms(security) 0} - {bool {-privacy -noPrivacy} parms(privacy) 0} {enum {-noops -batch} parms(consensus) -batch} {bool {-profile -noProfile} parms(profile) 1} {enum {-pristine -clean -dirty} parms(clean) -pristine} @@ -366,7 +360,6 @@ puts $config " \"host\": \"local\"," puts $config " \"date\": \"[timestamp]\"," puts $config " \"createdBy\": \"userModeNetwork\"," puts $config " \"security\": \"[? [parms security] true false]\"," -puts $config " \"privacy\": \"[? [parms privacy] true false]\"," puts $config " \"consensus\": \"$CONSENSUS_TO_MODE([parms consensus])\"," puts $config " \"peerProfileServer\": \"[? [parms profile] true false]\"," @@ -461,7 +454,6 @@ foreach clause $peerMap { set ::env(CORE_SECURITY_ENROLLID) $user set ::env(CORE_SECURITY_ENROLLSECRET) $password set ::env(CORE_SECURITY_ENABLED) true - set ::env(CORE_SECURITY_PRIVACY) [? [parms privacy] true false] } else { set ::env(CORE_SECURITY_ENABLED) false } diff --git a/tools/busywork/counters/driver b/tools/busywork/counters/driver index 7015cbc7991..23af5a0cb0f 100755 --- a/tools/busywork/counters/driver +++ b/tools/busywork/counters/driver @@ -513,20 +513,6 @@ parms txDelay [durationToMs [parms txDelay]] parms peerDelay [durationToMs [parms peerDelay]] parms netDelay [durationToMs [parms netDelay]] -# We can collect run-time statistics if 1) We are running locally on Linux, -# and 2) if the driver was started from a busywork 'network' file. - -if {[parms remote] || - ![null [parms explicitPeers]] || - [catch {exec uname} os] || - ($os ne "Linux")} { - errorExit "'[parms remote]' '[null [parms explicitPeers]]' '$os'" - parms collectStats 0 -} else { - parms collectStats 1 -} - - ############################################################################ # Setup ############################################################################ @@ -918,15 +904,6 @@ proc clientRoutine {i_logger} { } -# Get peer stats before the client fork - -if {[parms collectStats]} { - foreach peer [parms network.peer.ids] pid [parms network.peer.pids] { - procPIDStat $pid ::parms stat.before.$peer. - } -} - - # Fork clients. The parent continues the script once all clients have exited; # clients run their driver routine and exit. @@ -969,15 +946,14 @@ if {$p_pprofClient} { # event of errors until the final agreement check. note {} "Waiting (indefinitely) for subprocesses to complete" -set startMs [clock milliseconds] -set errors [waitPIDs $pids] -set issueSec [expr ([clock milliseconds] - $startMs) / 1000.0] +set t [time {set errors [waitPIDs $pids]} 1] if {!$errors} { - set rate [format %.2f [expr {[parms totalTransactions] / $issueSec}]] + set seconds [expr {[lindex $t 0] / 1e6}] + set rate [format %.2f [expr {[parms totalTransactions] / $seconds}]] note {} \ - "Issue + interlock TX rate : $rate per second " \ - "([parms totalTransactions] / $issueSec)" + "Transaction rate : $rate per second " \ + "([parms totalTransactions] / $seconds)" } if {$p_pprofClient} { @@ -988,33 +964,6 @@ if {$p_pprofClient} { } } -# Print peer stats - -if {[parms collectStats]} { - if {[catch {exec getconf CLK_TCK} CLK_TCK]} { - error {} "Can't getconf CLK_TCK: $CLK_TCK" - } else { - set CLK_TCK $CLK_TCK.0; # Poor man's float() - note {} "Peer statistics (excluding initialization and deployment)" - note {} " Peer: CPU (sec) = User + System: Utilization: Threads" - note {} " -----------------------------------------------------" - foreach peer [parms network.peer.ids] pid [parms network.peer.pids] { - procPIDStat $pid ::parms stat.after.$peer. - set user \ - [expr {([parms stat.after.$peer.utime] - \ - [parms stat.before.$peer.utime]) / $CLK_TCK}] - set sys \ - [expr {([parms stat.after.$peer.stime] - \ - [parms stat.before.$peer.stime]) / $CLK_TCK}] - set cpu [expr {$user + $sys}] - set util [expr {$cpu * 100.0 / $issueSec}] - set threads [parms stat.after.$peer.num_threads] - note {} [format "%8s %8.2f %8.2f %8.2f %8.0f%% %10d" \ - $peer $cpu $user $sys $util $threads] - } - } -} - if {$errors && ![parms force]} { errorExit "Aborting due to client errors" } @@ -1038,13 +987,6 @@ if {[parms interlock] && ![parms noops]} { set heights [removeDuplicates $originalHeights] if {[llength $heights] != 1} { note {} " Observed block heights: $originalHeights" - } else { - note {} " Consensus block height: $heights" - set finalSec [expr ([clock milliseconds] - $::startMs) / 1000.0] - set rate [format %.2f [expr {[parms totalTransactions] / $finalSec}]] - note {} \ - "Fully committed TX rate : $rate per second " \ - "([parms totalTransactions] / $finalSec)" } return [expr {[llength $heights] == 1}] } diff --git a/tools/busywork/tcl/fabric.tcl b/tools/busywork/tcl/fabric.tcl index 3a9b1e168fa..afe11a8dd6d 100644 --- a/tools/busywork/tcl/fabric.tcl +++ b/tools/busywork/tcl/fabric.tcl @@ -25,7 +25,7 @@ package provide fabric 0.0 namespace eval ::fabric {} ############################################################################ -# chaincode i_peer i_method i_query {i_retry 0} +# devops i_peer i_method i_query {i_retry 0} # Make a REST API 'devops' query. The i_peer is the full host:port # address. The i_method must be 'deploy', 'invoke' or 'query'. @@ -40,12 +40,12 @@ namespace eval ::fabric {} # exits. If the HTTP access fails then the call will exit with Tcl error{} and # the caller will presumably catch{} the error and do whatever is appropriate. -proc ::fabric::chaincode {i_peer i_method i_query {i_retry 0}} { +proc ::fabric::devops {i_peer i_method i_query {i_retry 0}} { for {set retry [math:::max $i_retry 0]} {$retry >= 0} {incr retry -1} { if {[catch { - ::http::geturl http://$i_peer/chaincode -query $i_query + ::http::geturl http://$i_peer/devops/$i_method -query $i_query } token]} { if {$i_retry < 0} { http::cleanup $token @@ -54,7 +54,7 @@ proc ::fabric::chaincode {i_peer i_method i_query {i_retry 0}} { if {$retry > 0} { if {$retry == $i_retry} { warn fabric \ - "fabric::chaincode $i_peer $i_method: " \ + "fabric::devops/$i_method $i_peer : " \ "Retrying after catastrophic HTTP error" } http::cleanup $token @@ -62,13 +62,13 @@ proc ::fabric::chaincode {i_peer i_method i_query {i_retry 0}} { } if {($retry == 0) && ($i_retry != 0)} { err fabric \ - "fabric::chaincode $i_peer $i_method: " \ + "fabric::devops/$i_method $i_peer : " \ "Retry limit ($i_retry) hit after " \ "catastrophic HTTP error : Aborting" } http::cleanup $token errorExit \ - "fabric::chaincode $i_peer $i_method: ::http::geturl failed\n" \ + "fabric::devops/$i_method $i_peer : ::http::geturl failed\n" \ $::errorInfo } @@ -80,12 +80,12 @@ proc ::fabric::chaincode {i_peer i_method i_query {i_retry 0}} { if {$retry > 0} { if {$retry == $i_retry} { warn fabric \ - "fabric::chaincode $i_peer $i_method: " \ + "fabric::devops/$i_method $i_peer : " \ "Retrying after HTTP error return" } if {($retry == 0) && ($i_retry != 0)} { err fabric \ - "fabric::chaincode $i_peer $i_method: " \ + "fabric::devops/$i_method $i_peer : " \ "Retry limit ($i_retry) hit after " \ "HTTP error return : Aborting" } @@ -93,52 +93,48 @@ proc ::fabric::chaincode {i_peer i_method i_query {i_retry 0}} { continue } err fabric \ - "fabric::chaincode '$i_method' transaction to $i_peer failed " \ + "FABRIC '$i_method' transaction to $i_peer failed " \ "with ncode = '[http::ncode $token]'; Aborting\n" httpErrorExit $token } set response [http::data $token] - set fail [catch { + set err [catch { set parse [json::json2dict $response] - set result [dict get $parse result] - set status [dict get $result status] - if {$status ne "OK"} { - error "Status not OK" + set ok [dict get $parse OK] + switch $i_method { + deploy - + invoke { + set result [dict get $parse message] } - set message [dict get $result message] - } err] - - if {$fail} { - - set msg \ - [concat \ - "fabric::chaincode '$i_method' response from $i_peer " \ - "is malformed/unexpected: $err"] - - if {$i_retry < 0} { - http::cleanup $token - error $msg - - } else { - - err fabric $msg - httpErrorExit $token + query { + set result $ok + } + default { + error "Unrecognized method $i_method" } } + }] + + if {$err} { + err fabric \ + "FABRIC '$i_method' response from $i_peer " \ + "is malformed/unexpected" + httpErrorExit $token + } http::cleanup $token if {($i_retry >= 0) && ($retry != $i_retry)} { note fabric \ - "fabric::chaincode $i_peer $i_method: " \ + "fabric::devops/$i_method $i_peer : " \ "Success after [expr {$i_retry - $retry}] HTTP retries" } break } - return $message + return $result } @@ -148,17 +144,17 @@ proc ::fabric::chaincode {i_peer i_method i_query {i_retry 0}} { # Deploy a GOLANG chaincode to the network. The i_peer is the full network # address (host:port) of the REST API port of the peer. If i_user is # non-empty then this will be a secure transaction. The constructor will apply -# i_fn to i_args. +# i_fn to i_args. Note that i_args is a normal Tcl list. This routine will +# convert i_args into a JSON array, wrapping each element of i_args in double +# quotes. i_fn will also be properly quoted. -# See ::fabric::chaincode{} for a discussion of the 'i_retry' parameter. +# See ::fabric::devops{} for a discussion of the 'i_retry' parameter. proc ::fabric::deploy {i_peer i_user i_chaincode i_fn i_args {i_retry 0}} { set template { - "jsonrpc" : "2.0", - "method" : "deploy", - "params" : { - "type": 1, + { + "type" : "GOLANG", "chaincodeID" : { "path" : "$i_chaincode" }, @@ -166,16 +162,15 @@ proc ::fabric::deploy {i_peer i_user i_chaincode i_fn i_args {i_retry 0}} { "args" : [$args] }, "secureContext": "$i_user" - }, - "id": 1 + } } set args [argify $i_fn $i_args] - set query [list [subst -nocommand $template]] + set query [subst -nocommand $template] - return [chaincode $i_peer deploy $query $i_retry] -} + return [devops $i_peer deploy $query $i_retry] +} ############################################################################ # devModeDeploy i_peer i_user i_chaincode i_fn i_args {i_retry 0} @@ -184,15 +179,13 @@ proc ::fabric::deploy {i_peer i_user i_chaincode i_fn i_args {i_retry 0}} { # mode. Here, the i_chaincode is a user-specified name. All of the other # arguments are otherwise the same as for deploy{}. -# See ::fabric::chaincode{} for a discussion of the 'i_retry' parameter. +# See ::fabric::devops{} for a discussion of the 'i_retry' parameter. proc ::fabric::devModeDeploy {i_peer i_user i_chaincode i_fn i_args {i_retry 0}} { set template { - "jsonrpc" : "2.0", - "method" : "deploy", - "params" : { - "type": 1, + { + "type" : "GOLANG", "chaincodeID" : { "name" : "$i_chaincode" }, @@ -200,14 +193,14 @@ proc ::fabric::devModeDeploy {i_peer i_user i_chaincode i_fn i_args {i_retry 0}} "args" : [$args] }, "secureContext": "$i_user" - }, - "id": 1 + } } set args [argify $i_fn $i_args] - set query [list [subst -nocommand $template]] + set query [subst -nocommand $template] return [devops $i_peer deploy $query $i_retry] + } ############################################################################ @@ -216,32 +209,33 @@ proc ::fabric::devModeDeploy {i_peer i_user i_chaincode i_fn i_args {i_retry 0}} # Invoke a GOLANG chaincode on the network. The i_peer is the full network # address (host:port) of the REST API port of the peer. If i_user is non-empty # then this will be a secure transaction. The i_chaincodeName is the hash used -# to identify the chaincode. The invocation will apply i_fn to i_args. +# to identify the chaincode. The invocation will apply i_fn to i_args. Note +# that i_args is a normal Tcl list. This routine will convert i_args into a +# JSON array, wrapping each element of i_args in double quotes. i_fn will also +# be properly quoted. -# See ::fabric::chaincode{} for a discussion of the 'i_retry' parameter. +# See ::fabric::devops{} for a discussion of the 'i_retry' parameter. proc ::fabric::invoke {i_peer i_user i_chaincodeName i_fn i_args {i_retry 0}} { set template { - "jsonrpc" : "2.0", - "method" : "invoke", - "params" : { - "type": 1, - "chaincodeID" : { - "name" : "$i_chaincodeName" - }, - "ctorMsg" : { - "args" : [$args] - }, - "secureContext": "$i_user" - }, - "id": 1 + { + "chaincodeSpec" : {"type" : "GOLANG", + "chaincodeID" : { + "name" : "$i_chaincodeName" + }, + "ctorMsg" : { + "args" : [$args] + }, + "secureContext": "$i_user" + } + } } set args [argify $i_fn $i_args] - set query [list [subst -nocommand $template]] + set query [subst -nocommand $template] - return [chaincode $i_peer invoke $query $i_retry] + return [devops $i_peer invoke $query $i_retry] } @@ -251,32 +245,34 @@ proc ::fabric::invoke {i_peer i_user i_chaincodeName i_fn i_args {i_retry 0}} { # Query a GOLANG chaincode on the network. The i_peer is the full network # address (host:port) of the REST API port of the peer. If i_user is non-empty # then this will be a secure transaction. The i_chaincodeName is the hash used -# to identify the chaincode. The query will apply i_fn to i_args. +# to identify the chaincode. The query will apply i_fn to i_args. Note that +# i_args is a normal Tcl list. This routine will convert i_args into a JSON +# array, wrapping each element of i_args in double quotes. i_fn will also be +# properly quoted. The query result (currently assumed to be a string) is +# returned. -# See ::fabric::chaincode{} for a discussion of the 'i_retry' parameter. +# See ::fabric::devops{} for a discussion of the 'i_retry' parameter. proc ::fabric::query {i_peer i_user i_chaincodeName i_fn i_args {i_retry 0}} { set template { - "jsonrpc" : "2.0", - "method" : "query", - "params" : { - "type": 1, - "chaincodeID" : { - "name" : "$i_chaincodeName" - }, - "ctorMsg" : { - "args" : [$args] - }, - "secureContext": "$i_user" - }, - "id": 1 + { + "chaincodeSpec" : {"type" : "GOLANG", + "chaincodeID" : { + "name" : "$i_chaincodeName" + }, + "ctorMsg" : { + "args" : [$args] + }, + "secureContext": "$i_user" + } + } } set args [argify $i_fn $i_args] - set query [list [subst -nocommand $template]] + set query [subst -nocommand $template] - return [chaincode $i_peer query $query $i_retry] + return [devops $i_peer query $query $i_retry] } @@ -302,11 +298,11 @@ proc ::fabric::height {i_peer {i_retry 0}} { "$i_peer /chain: ::http::geturl failed " \ "with $i_retry retries : $token" } - + if {[http::ncode $token] != 200} { - + # Failure - + if {$retry > 0} { if {$retry == $i_retry} { warn fabric \ @@ -315,12 +311,12 @@ proc ::fabric::height {i_peer {i_retry 0}} { http::cleanup $token continue } - + err fabric \ "$i_peer /chain; REST API call failed with $i_retry retries" httpErrorExit $token } - + if {[catch {json::json2dict [http::data $token]} parse]} { err fabric "$i_peer /chain: JSON response does not parse: $parse" httpErrorExit $token @@ -434,7 +430,7 @@ proc ::fabric::caLogin {i_peer i_user i_secret} { ############################################################################ # argify i_fn i_args -# Convert old-style fn + args pair into a list of quoted arguments with +# Convert old-style fn + args pair into a list of quoted base64 arguments with # commas to satisfy the most recent JSON format of the REST API. This needs to # be done as a string (rather than as a list), otherwise it will be {} quoted # when substituted. @@ -442,11 +438,11 @@ proc ::fabric::caLogin {i_peer i_user i_secret} { proc ::fabric::argify {i_fn i_args} { set args [concat $i_fn $i_args] - set jsonargs "" + set args64 "" set comma "" foreach arg $args { - set jsonargs "$jsonargs$comma\"$arg\"" + set args64 "$args64$comma\"[binary encode base64 $arg]\"" set comma , } - return $jsonargs + return $args64 } diff --git a/tools/busywork/tcl/os.tcl b/tools/busywork/tcl/os.tcl index b2c8af544b1..32891b64ed9 100644 --- a/tools/busywork/tcl/os.tcl +++ b/tools/busywork/tcl/os.tcl @@ -1,13 +1,13 @@ # os.tcl - Utilities related to the operating system functions # Copyright IBM Corp. 2016. All Rights Reserved. -# +# # 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. @@ -43,7 +43,7 @@ proc waitPIDs {pids {digest {}}} { set _digest($pid.why) $why set _digest($pid.rc) $rc set _digest($pid.ok) [expr {($why eq "EXIT") && ($rc == 0)}] - + switch $why { EXIT { if {$rc != 0} { @@ -67,97 +67,3 @@ proc waitPIDs {pids {digest {}}} { } return $rv } - - -############################################################################ -# procPIDStat i_pid o_array {i_prefix ""} - -# This procedure parses the result of executing - -# cat /proc/[i_pid]/stat - -# and stores the results in the array o_array keyed by name. See man proc(5) -# under /proc/[pid]/stat for an interpretation of the fields. The names are -# taken directly from the man page. The optional i_prefix can be specified to -# allow stats for multiple PIDs to be stored in the same array, using an -# indexing scheme chosen by the caller. - -# NB: This procedure only works on Linux, and will fail on other operating -# systems. - -# BUGS: Field 2 (comm) is the command name in parenthesis. If the file name of -# the command includes white space this will throw off the current parser. - -# Note: Copy/edited taken directly from the man page, which uses 1-based -# addressing. -array unset ::procPIDStatMap -foreach {index key} { - 1 pid - 2 comm - 3 state - 4 ppid - 5 pgrp - 6 session - 7 tty_nr - 8 tpgid - 9 flags - 10 minflt - 11 cminflt - 12 majflt - 13 cmajflt - 14 utime - 15 stime - 16 cutime - 17 cstime - 18 priority - 19 nice - 20 num_threads - 21 itrealvalue - 22 starttime - 23 vsize - 24 rss - 25 rsslim - 26 startcode - 27 endcode - 28 startstack - 29 kstkesp - 30 kstkeip - 31 signal - 32 blocked - 33 sigignore - 34 sigcatch - 35 wchan - 36 nswap - 37 cnswap - 38 exit_signal - 39 processor - 40 rt_priority - 41 policy - 42 delayacct_blkio_ticks - 43 guest_time - 44 cguest_time - 45 start_data - 46 end_data - 47 start_brk - 48 arg_start - 49 arg_end - 50 env_start - 51 env_end - 52 exit_code -} { - set ::procPIDStatMap([expr {$index - 1}]) $key -} - - -proc procPIDStat {i_pid o_array {i_prefix ""}} { - - upvar $o_array a - - if {[catch {exec cat /proc/$i_pid/stat} stat]} { - errorExit "Can not cat /proc/$i_pid/stat: $stat" - } - - foreach index [array names ::procPIDStatMap] { - set a($i_prefix$::procPIDStatMap($index)) [lindex $stat $index] - } -} From adc16001552cfff073c8e7004ae4f1a093a7a350 Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Sat, 1 Oct 2016 14:45:16 +0200 Subject: [PATCH 07/18] Fix FAB-578 Fix FAB-578 incorrect chaincode signature in REST API fix rest_api.json NB: Cherry-picked from a96b9edc80e86 after reverting inadvertent merge of master - GMH Change-Id: I852de103d902d5630f27b43a8057e0ee82f1b020 Signed-off-by: Christopher Ferris Signed-off-by: Greg Haskins --- core/rest/rest_api.json | 12 +++--------- docs/API/CoreAPI.md | 18 ++++++------------ 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/core/rest/rest_api.json b/core/rest/rest_api.json index 7bcd6e2bb1c..75ee953a86f 100644 --- a/core/rest/rest_api.json +++ b/core/rest/rest_api.json @@ -451,15 +451,9 @@ "type": "object", "properties": { "type": { - "type": "string", - "default": "GOLANG", - "example": "GOLANG", - "enum":[ - "UNDEFINED", - "GOLANG", - "NODE", - "JAVA" - ], + "type": "integer", + "default": 1, + "example": 1, "description": "Chaincode specification language." }, "chaincodeID": { diff --git a/docs/API/CoreAPI.md b/docs/API/CoreAPI.md index 5981096b057..16390cb24c7 100644 --- a/docs/API/CoreAPI.md +++ b/docs/API/CoreAPI.md @@ -227,8 +227,7 @@ POST host:port/chaincode "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" }, "ctorMsg": { - "function":"init", - "args":["a", "1000", "b", "2000"] + "args":["init", "a", "1000", "b", "2000"] } }, "id": 1 @@ -251,8 +250,7 @@ POST host:port/chaincode "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02" }, "ctorMsg": { - "function":"init", - "args":["a", "1000", "b", "2000"] + "args":["init", "a", "1000", "b", "2000"] }, "secureContext": "lukas" }, @@ -289,8 +287,7 @@ Chaincode Invocation Request without security enabled: "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"invoke", - "args":["a", "b", "100"] + "args":["invoke", "a", "b", "100"] } }, "id": 3 @@ -311,8 +308,7 @@ Chaincode Invocation Request with security enabled (add `secureContext` element) "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"invoke", - "args":["a", "b", "100"] + "args":["invoke", "a", "b", "100"] }, "secureContext": "lukas" }, @@ -349,8 +345,7 @@ Chaincode Query Request without security enabled: "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"query", - "args":["a"] + "args":["query", "a"] } }, "id": 5 @@ -371,8 +366,7 @@ Chaincode Query Request with security enabled (add `secureContext` element): "name":"52b0d803fc395b5e34d8d4a7cd69fb6aa00099b8fabed83504ac1c5d61a425aca5b3ad3bf96643ea4fdaac132c417c37b00f88fa800de7ece387d008a76d3586" }, "ctorMsg": { - "function":"query", - "args":["a"] + "args":["query", "a"] }, "secureContext": "lukas" }, From 2d75cbc00c9f7e4f50fcde5a437ad7410a67ce0e Mon Sep 17 00:00:00 2001 From: Gregory Haskins Date: Mon, 3 Oct 2016 18:27:52 -0400 Subject: [PATCH 08/18] Release v0.6.1-preview Change-Id: I5b1f0111984d5ba3304643bb30af2b9faa179467 Signed-off-by: Gregory Haskins --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1bdf1ec7ced..35a0ba0117d 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ PROJECT_NAME = hyperledger/fabric BASE_VERSION = 0.6.1-preview -IS_RELEASE = false +IS_RELEASE = true ifneq ($(IS_RELEASE),true) EXTRA_VERSION ?= snapshot-$(shell git rev-parse --short HEAD) From 019419d1a3c10f843922977d1e11e210277360fe Mon Sep 17 00:00:00 2001 From: Nick Gaski Date: Tue, 4 Oct 2016 12:12:56 -0400 Subject: [PATCH 09/18] v0.6 additions added v1.0 preview added SDK to TOC added starter kit moved starter kit to top of TOC [ci skip] Change-Id: I20607bcd163289f0bfbdaa459952b3ae72112703 Signed-off-by: Nick Gaski --- docs/abstract_v1.md | 32 ++++++ docs/starter/fabric-starter-kit.md | 170 +++++++++++++++++++++++++++++ mkdocs.yml | 12 ++ 3 files changed, 214 insertions(+) create mode 100644 docs/abstract_v1.md create mode 100644 docs/starter/fabric-starter-kit.md diff --git a/docs/abstract_v1.md b/docs/abstract_v1.md new file mode 100644 index 00000000000..ea0dd563d64 --- /dev/null +++ b/docs/abstract_v1.md @@ -0,0 +1,32 @@ +# HYPERLEDGER FABRIC v1.0 + +Hyperledger fabric is a platform that enables the delivery of a secure, robust, permissioned blockchain for the enterprise that incorporates a byzantine fault tolerant consensus. We have learned much as we progressed through the v0.6-preview release. In particular, that in order to provide for the scalability and confidentiality needs of many use cases, a refactoring of the architecture was needed. The v0.6-preview release will be the final (barring any bug fixes) release based upon the original architecture. + +Hyperledger fabric's v1.0 architecture has been designed to address two vital enterprise-grade requirements – **security** and **scalability**. Businesses and organizations can leverage this new architecture to execute confidential transactions on networks with shared or common assets – e.g. supply chain, FOREX market, healthcare, etc. The progression to v1.0 will be incremental, with myriad windows for community members to contribute code and start curating the fabric to fit specific business needs. + +## WHERE WE ARE: + +The current implementation involves every validating peer shouldering the responsibility for the full gauntlet of network functionality. They execute transactions, perform consensus, and maintain the shared ledger. Not only does this configuration lay a huge computational burden on each peer, hindering scalability, but it also constricts important facets of privacy and confidentiality. Namely, there is no mechanism to “channel” or “silo” confidential transactions. Every peer can see the logic for every transaction. + +## WHERE WE'RE GOING + +The new architecture introduces a clear functional separation of peer roles, and allows a transaction to pass through the network in a structured and modularized fashion. The peers are diverged into two distinct roles – Endorser & Committer. As an endorser, the peer will simulate the transaction and ensure that the outcome is both deterministic and stable. As a committer, the peer will validate the integrity of a transaction and then append to the ledger. Now confidential transactions can be sent to specific endorsers and their correlating committers, without the network being made cognizant of the transaction. Additionally, policies can be set to determine what levels of “endorsement” and “validation” are acceptable for a specific class of transactions. A failure to meet these thresholds would simply result in a transaction being withdrawn, rather than imploding or stagnating the entire network. This new model also introduces the possibility for more elaborate networks, such as a foreign exchange market. Entities may need to only participate as endorsers for their transactions, while leaving consensus and commitment (i.e. settlement in this scenario) to a trusted third party such as a clearing house. + +The consensus process (i.e. algorithmic computation) is entirely abstracted from the peer. This modularity not only provides a powerful security layer – the consenting nodes are agnostic to the transaction logic – but it also generates a framework where consensus can become pluggable and scalability can truly occur. There is no longer a parallel relationship between the number of peers in a network and the number of consenters. Now networks can grow dynamically (i.e. add endorsers and committers) without having to add corresponding consenters, and exist in a modular infrastructure designed to support high transaction throughput. Moreover, networks now have the capability to completely liberate themselves from the computational and legal burden of consensus by tapping into a pre-existing consensus cloud. + +As v1.0 manifests, we will see the foundation for interoperable blockchain networks that have the ability to scale and transact in a manner adherent with regulatory and industry standards. Watch how fabric v1.0 and the Hyperledger Project are building a true blockchain for business - + +[![HYPERLEDGERv1.0_ANIMATION](http://img.youtube.com/vi/EKa5Gh9whgU/0.jpg)](http://www.youtube.com/watch?v=EKa5Gh9whgU) + +## HOW TO CONTRIBUTE + +Use the following links to explore upcoming additions to fabric's codebase that will spawn the capabilities in v1.0: + +* Familiarize yourself with the [guidelines for code contributions](CONTRIBUTING.md) to this project. **Note**: In order to participate in the development of the Hyperledger fabric project, you will need an [LF account](Gerrit/lf-account.md). This will give you single +sign-on to JIRA and Gerrit. +* Explore the design document for the new [architecture](https://github.com/hyperledger-archives/fabric/wiki/Next-Consensus-Architecture-Proposal) +* Explore [JIRA](https://jira.hyperledger.org/projects/FAB/issues/) for open Hyperledger fabric issues. +* Explore the [JIRA](https://jira.hyperledger.org/projects/FAB/issues/) backlog for upcoming Hyperledger fabric issues. +* Explore [JIRA](https://jira.hyperledger.org/issues/?filter=10147) for Hyperledger fabric issues tagged with "help wanted." +* Explore the [source code](https://github.com/hyperledger/fabric) +* Explore the [documentation](http://hyperledger-fabric.readthedocs.io/en/latest/) diff --git a/docs/starter/fabric-starter-kit.md b/docs/starter/fabric-starter-kit.md new file mode 100644 index 00000000000..7d199ad1281 --- /dev/null +++ b/docs/starter/fabric-starter-kit.md @@ -0,0 +1,170 @@ +# Fabric Starter Kit + +This section describes how to set up a self-contained environment for +application development with the Hyperledger fabric. The setup +uses **Docker** to provide a controlled environment with all the necessary +Hyperledger fabric components to support a Node.js application built with +the fabric's Node.js SDK, and chaincode written in Go. + +There are three Docker images that, when run, will provide a basic +network environment. There is an image to run a single `peer`, one to run +the `membersrvc`, and one to run both your Node.js application and your +chaincode. See [Application Developer's Overview](../nodeSDK/app-overview.md) on how the +components running within the containers will communicate. + +The starter kit comes with a sample Node.js application ready to execute and +sample chaincode. The starter kit will be running in chaincode developer mode. +In this mode, the chaincode is built and started prior to the application +making a call to deploy it. + +**Note:** The deployment of chaincode in network mode requires that the +Hyperledger fabric Node.js SDK has access to the chaincode source code and all +of its dependencies, in order to properly build a deploy request. It also +requires that the `peer` have access to the Docker daemon to be able to build +and deploy the new Docker image that will run the chaincode. *This is a more +complicated configuration and not suitable to an introduction to the +Hyperledger fabric.* We recommend first running in chaincode development mode. + +## Further exploration + +If you wish, there are a number of chaincode examples near by. +``` + cd ../../chaincode +``` +## Getting started + +**Note:** This sample was prepared using Docker for Mac 1.12.0 + +* Prerequisite software to install: + + * [Docker](https://www.docker.com/products/overview) + * docker-compose (may be packaged with Docker) + +* Copy our [docker-compose.yml](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml) file to a local directory: + +``` + curl -o docker-compose.yml https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/docker-compose.yml +``` + The docker-compose environment uses three Docker images. Two are published to + DockerHub. However, with the third, we provide you the source to build your own, + so that you can customize it to inject your application code for development. The following [Dockerfile](https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile) + is used to build the base **fabric-starter-kit** image and may be used as + a starting point for your own customizations. + +``` + curl -o Dockerfile https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sdk/node/Dockerfile + docker build -t hyperledger/fabric-starter-kit:latest . +``` + +* Start the fabric network environment using docker-compose. From a terminal +session that has the working directory of where the above *docker-compose.yml* +is located, execute one of following `docker-compose` commands. + + * to run as detached containers: + +``` + docker-compose up -d +``` + **note:** to see the logs for the `peer` container use the + `docker logs peer` command + + * to run in the foreground and see the log output in the current terminal + session: + +``` + docker-compose up +``` + + Both commands will start three Docker containers. To view the container + status use the `docker ps` command. The first time this is run, the Docker + images will be downloaded. This may take 10 minutes or more depending on the + network connections of the system running the command. + +``` + docker ps +``` + You should see something similar to the following: + +``` + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + bb01a2fa96ef hyperledger/fabric-starter-kit "sh -c 'sleep 20; /op" About a minute ago Up 59 seconds starter + ec7572e65f12 hyperledger/fabric-peer "sh -c 'sleep 10; pee" About a minute ago Up About a minute peer + 118ef6da1709 hyperledger/fabric-membersrvc "membersrvc" About a minute ago Up About a minute membersrvc +``` + +* Start a terminal session in the **starter** container. This is where the +Node.js application is located. + + **note:** Be sure to wait 20 seconds after starting the network using the + `docker-compose up` command before executing the following command to allow + the network to initialize: + +``` + docker exec -it starter /bin/bash +``` + +* From the terminal session in the **starter** container execute the standalone +Node.js application. The Docker terminal session should be in the working +directory of the sample application called **app.js** (*/opt/gopath/src/github.com/hyperledger/fabric/examples/sdk/node*). Execute +the following Node.js command to run the application: + +``` + node app +``` + In another terminal session on the host you can view the logs for the peer + by executing the following command (not in the docker shell above, in a new + terminal session of the real system): + +``` + docker logs peer +``` + +* If you wish to run your own Node.js application using the pre-built Docker +images: + * use the directories in the `volumes` tag under **starter** in the + `docker-compose.yml` file as a place to store your programs from the host + system into the docker container. The first path is the top level system + (host system) and the second is created in the Docker container. If you wish + to use a host location that is not under the `/Users` directory (`~` is + under `/Users') then you must add that to the Docker file sharing + under Docker preferences. + +```yaml + volumes: + - ~/mytest:/user/mytest +``` + * copy or create and edit your application in the `~/mytest` directory as + stated in the `docker-compose.yml` `volumes` tag under **starter** container. + * run npm to install Hyperledger fabric Node.js SDK in the `mytest` directory: + +``` + npm install /opt/gopath/src/github.com/hyperledger/fabric/sdk/node +``` + * run the application from within the **starter** Docker container using the + following commands: + +``` + docker exec -it starter /bin/bash +``` + once in the shell, and assuming your Node.js application is called `app.js`: + +``` + cd /user/mytest + node app +``` +* To shutdown the environment, execute the following **docker-compose** command +in the directory where the *docker-compose.yml* is located. Any changes you made +to the sample application or deployment of a chaincode will be lost. Only +changes made to the shared area defined in the 'volumes' tag of the **starter** +container will persist. This will shutdown each of the containers and remove +the containers from Docker: + +``` + docker-compose down +``` + or if you wish to keep your changes and just stop the containers, which will + be restarted on the next `up` command: + +``` + docker-compose kill +``` diff --git a/mkdocs.yml b/mkdocs.yml index b81da566fdc..73b7f9e0ff3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -10,6 +10,9 @@ pages: - Protocol Spec: protocol-spec.md - Usecases: biz/usecases.md +- Starter Kit: + - Starter Kit: starter/fabric-starter-kit.md + - Installation and setup: - Chaincode or Application Developer Setup: Setup/Chaincode-setup.md - Java Chaincode Setup: Setup/JAVAChaincode.md @@ -25,6 +28,7 @@ pages: - System Chaincode: SystemChaincodes/noop.md - Fabric Developer: + - v1.0 Preview: abstract_v1.md - Contributing: CONTRIBUTING.md - Getting an Account: Gerrit/lf-account.md - Gerrit: Gerrit/gerrit.md @@ -49,6 +53,14 @@ pages: - Attributes: tech/attributes.md - Best Practices: tech/best-practices.md +- NodeSDK: + - App-developer-env-setup: nodeSDK/app-developer-env-setup.md + - App-Overview: nodeSDK/app-overview.md + - Node-SDK-guide: nodeSDK/node-sdk-guide.md + - Node-SDK-indepth: nodeSDK/node-sdk-indepth.md + - Sample-Standalone-app: nodeSDK/sample-standalone-app.md + - Sample-web-app: nodeSDK/sample-web-app.md + markdown_extensions: - extra - tables From cf69392366cc0ffe26ec256e09de11d86ed3317c Mon Sep 17 00:00:00 2001 From: Nick Gaski Date: Tue, 4 Oct 2016 18:26:10 -0400 Subject: [PATCH 10/18] chaincode-setup.md fixes fix incorrect chaincode signatures in REST API and CLI [ci skip] Change-Id: I9ecbb3c4fe0b82ce1b22a6cf5cc34629e353da3e Signed-off-by: Nick Gaski --- docs/Setup/Chaincode-setup.md | 44 +++++++++++++++-------------------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/docs/Setup/Chaincode-setup.md b/docs/Setup/Chaincode-setup.md index 8c4dac74e6b..a8b730e5f4c 100644 --- a/docs/Setup/Chaincode-setup.md +++ b/docs/Setup/Chaincode-setup.md @@ -275,7 +275,7 @@ POST localhost:7050/registrar First, send a chaincode deploy transaction, only once, to the validating peer. The CLI connects to the validating peer using the properties defined in the core.yaml file. **Note:** The deploy transaction typically requires a `path` parameter to locate, build, and deploy the chaincode. However, because these instructions are specific to local development mode and the chaincode is deployed manually, the `name` parameter is used instead. ``` -peer chaincode deploy -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}' +peer chaincode deploy -n mycc -c '{Args": ["init", "a","100", "b", "200"]}' ``` Alternatively, you can run the chaincode deploy transaction through the REST API. @@ -283,7 +283,7 @@ Alternatively, you can run the chaincode deploy transaction through the REST API **REST Request:** ``` -POST host:port/chaincode +POST /chaincode { "jsonrpc": "2.0", @@ -294,8 +294,7 @@ POST host:port/chaincode "name": "mycc" }, "ctorMsg": { - "function":"init", - "args":["a", "100", "b", "200"] + "args":["init", "a", "100", "b", "200"] } }, "id": 1 @@ -317,12 +316,12 @@ POST host:port/chaincode **Note:** When security is enabled, modify the CLI command and the REST API payload to pass the `enrollmentID` of a logged in user. To log in a registered user through the CLI or the REST API, follow the instructions in the [note on security functionality](#note-on-security-functionality). On the CLI, the `enrollmentID` is passed with the `-u` parameter; in the REST API, the `enrollmentID` is passed with the `secureContext` element. If you are enabling security and privacy on the peer process with environment variables, it is important to include these environment variables in the command when executing all subsequent peer operations (e.g. deploy, invoke, or query). - CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode deploy -u jim -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}' + CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode deploy -u jim -n mycc -c '{"Args": ["init", "a","100", "b", "200"]}' **REST Request:** ``` -POST host:port/chaincode +POST /chaincode { "jsonrpc": "2.0", @@ -333,8 +332,7 @@ POST host:port/chaincode "name": "mycc" }, "ctorMsg": { - "function":"init", - "args":["a", "100", "b", "200"] + "args":["init", "a", "100", "b", "200"] }, "secureContext": "jim" }, @@ -344,7 +342,7 @@ POST host:port/chaincode The deploy transaction initializes the chaincode by executing a target initializing function. Though the example shows "init", the name could be arbitrarily chosen by the chaincode developer. You should see the following output in the chaincode window: ``` - 2015/11/15 15:19:31 Received INIT(uuid:005dea42-d57f-4983-803e-3232e551bf61), initializing chaincode + Received INIT(uuid:005dea42-d57f-4983-803e-3232e551bf61), initializing chaincode Aval = 100, Bval = 200 ``` @@ -353,7 +351,7 @@ The deploy transaction initializes the chaincode by executing a target initializ Run the chaincode invoking transaction on the CLI as many times as desired. The `-n` argument should match the value provided in the chaincode window (started in Vagrant terminal 2): ``` - peer chaincode invoke -l golang -n mycc -c '{"Function": "invoke", "Args": ["a", "b", "10"]}' + peer chaincode invoke -l golang -n mycc -c '{Args": ["invoke", "a", "b", "10"]}' ``` Alternatively, run the chaincode invoking transaction through the REST API. @@ -361,7 +359,7 @@ Alternatively, run the chaincode invoking transaction through the REST API. **REST Request:** ``` -POST host:port/chaincode +POST /chaincode { "jsonrpc": "2.0", @@ -372,8 +370,7 @@ POST host:port/chaincode "name":"mycc" }, "ctorMsg": { - "function":"invoke", - "args":["a", "b", "10"] + "args":["invoke", "a", "b", "10"] } }, "id": 3 @@ -400,7 +397,7 @@ POST host:port/chaincode **REST Request:** ``` -POST host:port/chaincode +POST /chaincode { "jsonrpc": "2.0", @@ -411,8 +408,7 @@ POST host:port/chaincode "name":"mycc" }, "ctorMsg": { - "function":"invoke", - "args":["a", "b", "10"] + "args":["invoke", "a", "b", "10"] }, "secureContext": "jim" }, @@ -423,7 +419,7 @@ POST host:port/chaincode The invoking transaction runs the specified chaincode function name "invoke" with the arguments. This transaction transfers 10 units from A to B. You should see the following output in the chaincode window: ``` - 2015/11/15 15:39:11 Received RESPONSE. Payload 200, Uuid 075d72a4-4d1f-4a1d-a735-4f6f60d597a9 + Received RESPONSE. Payload 200, Uuid 075d72a4-4d1f-4a1d-a735-4f6f60d597a9 Aval = 90, Bval = 210 ``` @@ -432,7 +428,7 @@ The invoking transaction runs the specified chaincode function name "invoke" wit Run a query on the chaincode to retrieve the desired values. The `-n` argument should match the value provided in the chaincode window (started in Vagrant terminal 2): ``` - peer chaincode query -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}' + peer chaincode query -l golang -n mycc -c '{"Args": ["query", "b"]}' ``` The response should be similar to the following: @@ -451,7 +447,7 @@ Alternatively, run the chaincode query transaction through the REST API. **REST Request:** ``` -POST host:port/chaincode +POST /chaincode { "jsonrpc": "2.0", @@ -462,8 +458,7 @@ POST host:port/chaincode "name":"mycc" }, "ctorMsg": { - "function":"query", - "args":["a"] + "args":["query", "a"] } }, "id": 5 @@ -485,12 +480,12 @@ POST host:port/chaincode **Note:** When security is enabled, modify the CLI command and REST API payload to pass the `enrollmentID` of a logged in user. To log in a registered user through the CLI or the REST API, follow the instructions in the [note on security functionality](#note-on-security-functionality). On the CLI, the `enrollmentID` is passed with the `-u` parameter; in the REST API, the `enrollmentID` is passed with the `secureContext` element. If you are enabling security and privacy on the peer process with environment variables, it is important to include these environment variables in the command when executing all subsequent peer operations (e.g. deploy, invoke, or query). ``` - CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode query -u jim -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}' + CORE_SECURITY_ENABLED=true CORE_SECURITY_PRIVACY=true peer chaincode query -u jim -l golang -n mycc -c '{Args": ["query", "b"]}' ``` **REST Request:** ``` -POST host:port/chaincode +POST /chaincode { "jsonrpc": "2.0", @@ -501,8 +496,7 @@ POST host:port/chaincode "name":"mycc" }, "ctorMsg": { - "function":"query", - "args":["a"] + "args":["query", "a"] }, "secureContext": "jim" }, From d1ec79a5274ec35ed754807d0dc0fb3741ed9cc5 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Fri, 14 Oct 2016 17:29:45 -0400 Subject: [PATCH 11/18] Fixing HFC break caused by typedoc npm update The update in npm 3 days ago in typedoc causes it to require typescript 2.0.3 which is not compatible with HFC 0.6. Resolved by locking down typedoc to 0.4.5. Change-Id: If1e47c7a372854d47ea89b2ab0c4be28f407b15a Signed-off-by: Jim Zhang --- sdk/node/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/node/package.json b/sdk/node/package.json index b5a51318bef..e38bb72c072 100644 --- a/sdk/node/package.json +++ b/sdk/node/package.json @@ -38,6 +38,7 @@ "sjcl-codec": "0.1.1", "sleep": "^3.0.1", "tar-fs": "^1.13.0", + "typedoc": "0.4.5", "typescript": "1.8.10", "url": "^0.11.0", "util": "^0.10.3", From 344304bc14d8840c27872a4b8621ef9b09c76c2a Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Fri, 14 Oct 2016 17:40:33 -0400 Subject: [PATCH 12/18] Fixing a unit test error in cc2cc Target chaincode_example02 was updated by the hash was calculated wrong. Updating the target chaincode name hash to make the test pass. Change-Id: I7e6684b40fd4f369b34ad202ac7073e84628968a Signed-off-by: Jim Zhang --- .../chaincode/go/chaincode_example04/chaincode_example04.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/chaincode/go/chaincode_example04/chaincode_example04.go b/examples/chaincode/go/chaincode_example04/chaincode_example04.go index 7a2d5bca589..34ed880e0ac 100644 --- a/examples/chaincode/go/chaincode_example04/chaincode_example04.go +++ b/examples/chaincode/go/chaincode_example04/chaincode_example04.go @@ -34,7 +34,7 @@ type SimpleChaincode struct { func (t *SimpleChaincode) GetChaincodeToCall() string { //This is the hashcode for github.com/hyperledger/fabric/core/example/chaincode/chaincode_example02 //if the example is modifed this hashcode will change!! - chainCodeToCall := "ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539" + chainCodeToCall := "5c86473475a109e4c50e57016cae64937151dd0f17a05fb918665fd205ab86fa5796153a6d8f1c064af8a4e4a7484121011f0db9022bc6cb2d3cc29f0aaf2648" return chainCodeToCall } From de2cade189a04f5908e440532bb537fc177b6fc4 Mon Sep 17 00:00:00 2001 From: Jim Zhang Date: Fri, 14 Oct 2016 22:57:04 -0400 Subject: [PATCH 13/18] Reverting the change in 1759 Strangely, when testing locally the target chaincode hash in the cc2cc unit test is calculated differently than when running on the build machine. Reverting the hash value back to what the test generates on the build machine. Change-Id: I0e192b6ca0c7385ec7f93746d0deb23b98dd4361 Signed-off-by: Jim Zhang --- .../chaincode/go/chaincode_example04/chaincode_example04.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/chaincode/go/chaincode_example04/chaincode_example04.go b/examples/chaincode/go/chaincode_example04/chaincode_example04.go index 34ed880e0ac..7a2d5bca589 100644 --- a/examples/chaincode/go/chaincode_example04/chaincode_example04.go +++ b/examples/chaincode/go/chaincode_example04/chaincode_example04.go @@ -34,7 +34,7 @@ type SimpleChaincode struct { func (t *SimpleChaincode) GetChaincodeToCall() string { //This is the hashcode for github.com/hyperledger/fabric/core/example/chaincode/chaincode_example02 //if the example is modifed this hashcode will change!! - chainCodeToCall := "5c86473475a109e4c50e57016cae64937151dd0f17a05fb918665fd205ab86fa5796153a6d8f1c064af8a4e4a7484121011f0db9022bc6cb2d3cc29f0aaf2648" + chainCodeToCall := "ee5b24a1f17c356dd5f6e37307922e39ddba12e5d2e203ed93401d7d05eb0dd194fb9070549c5dc31eb63f4e654dbd5a1d86cbb30c48e3ab1812590cd0f78539" return chainCodeToCall } From 925f4d9bf7c0aa98dbdaffe3a7c9ea7fa6831e47 Mon Sep 17 00:00:00 2001 From: ASHUTOSH KUMAR Date: Fri, 7 Oct 2016 11:38:12 -0400 Subject: [PATCH 14/18] Allow TLS conn. between the client and the CA services Fixes FAB-392 Supporting TLS between the ACA client the rest of the CA services. This feature requires changes to the configuration of the Membership Services (YAML file), adding the support for two newly added (YAML) configuration parameters under the security section of membersrvc.yaml. To enable this feature (TLS connectivity), one needs to specify that tls_enabled (=true) and a path to a PEM-encoded certificate file to use. There is also the option to use the serverhostname override, enforcing that the same TLS Server Certificate's Common Name to be used. Change-Id: I64444d0e21615a47662ba1388cd6901ff787b408 Signed-off-by: ASHUTOSH KUMAR Signed-off-by: JonathanLevi Signed-off-by: Gari Singh --- docs/Setup/TLSSetup.md | 66 ++++++++++++++++++++ membersrvc/ca/client_grpc.go | 114 ++++++++++++++++++++++++++++++++++- membersrvc/membersrvc.yaml | 20 ++++-- membersrvc/server.go | 8 ++- mkdocs.yml | 1 + 5 files changed, 201 insertions(+), 8 deletions(-) create mode 100644 docs/Setup/TLSSetup.md diff --git a/docs/Setup/TLSSetup.md b/docs/Setup/TLSSetup.md new file mode 100644 index 00000000000..abc6b03497d --- /dev/null +++ b/docs/Setup/TLSSetup.md @@ -0,0 +1,66 @@ +### Steps to enable TLS for all sever (ECA , ACA , TLSCA , TCA) and between ACA client to server communications. + +1. Go to **memebersrvc.yaml** file under the fabric/membersrvc directory and edit security section, that is: +``` + security: + serverhostoverride: + tls_enabled: false + client: + cert: + file: +``` +To enable TLS between the ACA client and the rest of the CA Services set the `tls_enbabled` flag to `true`. + +2. Next, set **serverhostoverride** field to match **CN** (Common Name) of TLS Server certificate. To extract the Common Name from TLS Server's certificate, for example using OpenSSL, you can use the following command: + +``` +openssl x509 -in < 0) && (diffFromStart > 0)) + +} + +// NewClientTLSFromFile creates Client TLS connection credentials +// @certFile : TLS Server Certificate in PEM format +// @serverNameOverride : Common Name (CN) of the TLS Server Certificate +// returns Secure Transport Credentials +// +func NewClientTLSFromFile(certFile, serverNameOverride string) (credentials.TransportCredentials, error) { + caLogger.Debug("upgrading to TLS1.2") + b, err := ioutil.ReadFile(certFile) + + if err != nil { + caLogger.Errorf("Certificate could not be found in the [%s] path", certFile) + return nil, err + } + + if !isValidCertFormatted(certFile) { + return nil, nil + } + + cp := x509.NewCertPool() + + ok := cp.AppendCertsFromPEM(b) + if !ok { + caLogger.Error("credentials: failed to append certificates: ") + return nil, nil + } + return credentials.NewTLS(&tls.Config{ServerName: serverNameOverride, RootCAs: cp, MinVersion: 0, MaxVersion: 0}), nil +} + //GetClientConn returns a connection to the server located on *address*. func GetClientConn(address string, serverName string) (*grpc.ClientConn, error) { + + caLogger.Debug("GetACAClient: using the given gRPC client connection to return a new ACA client") var opts []grpc.DialOption - opts = append(opts, grpc.WithInsecure()) + + if viper.GetBool("security.tls_enabled") { + caLogger.Debug("TLS was enabled [security.tls_enabled == true]") + + creds, err := NewClientTLSFromFile(viper.GetString("security.client.cert.file"), viper.GetString("security.serverhostoverride")) + + if err != nil { + caLogger.Error("Could not establish TLS client connection in GetClientConn while getting creds:") + caLogger.Error(err) + return nil, err + } + opts = append(opts, grpc.WithTransportCredentials(creds)) + } else { + caLogger.Debug("TLS was not enabled [security.tls_enabled == false]") + opts = append(opts, grpc.WithInsecure()) + } opts = append(opts, grpc.WithTimeout(time.Second*3)) return grpc.Dial(address, opts...) } //GetACAClient returns a client to Attribute Certificate Authority. func GetACAClient() (*grpc.ClientConn, pb.ACAPClient, error) { + caLogger.Debug("GetACAClient: Trying to create a new ACA Client from the connection provided") conn, err := GetClientConn(viper.GetString("aca.address"), viper.GetString("aca.server-name")) if err != nil { return nil, nil, err diff --git a/membersrvc/membersrvc.yaml b/membersrvc/membersrvc.yaml index a3f8f39563a..84ef66d74d9 100644 --- a/membersrvc/membersrvc.yaml +++ b/membersrvc/membersrvc.yaml @@ -21,14 +21,26 @@ server: file: security: - # Can be 256 or 384 - # Must be the same as in core.yaml + # Either 256 or 384 (note: must be the exact same value as specified in the core.yaml file) level: 256 - # Can be SHA2 or SHA3 - # Must be the same as in core.yaml + # Either SHA2 or SHA3 (note: must be the exact same value as specified in the core.yaml file) hashAlgorithm: SHA3 + # The server host CN (Common Name) to be used (needs to match the TLS Server Certificate) + serverhostoverride: + + # Boolean (true/false) value indicating whether TLS should be used between the client and + # the various CA services (ECA, TCA, TLSCA, ACA) + tls_enabled: false + + # A PEM-encoded (X509 v3, Base64) certificate to use for establishing the TLS connection + # between the client and the ACA service + client: + cert: + file: + + # Enabling/disabling different logging levels of the CA. # logging: diff --git a/membersrvc/server.go b/membersrvc/server.go index 763d90f4c8a..bdc7fc11736 100644 --- a/membersrvc/server.go +++ b/membersrvc/server.go @@ -85,16 +85,22 @@ func main() { runtime.GOMAXPROCS(viper.GetInt("server.gomaxprocs")) var opts []grpc.ServerOption - if viper.GetString("server.tls.cert.file") != "" { + + if viper.GetBool("security.tls_enabled") { + logger.Debug("TLS was enabled [security.tls_enabled == true]") creds, err := credentials.NewServerTLSFromFile(viper.GetString("server.tls.cert.file"), viper.GetString("server.tls.key.file")) if err != nil { logger.Panic(err) } opts = []grpc.ServerOption{grpc.Creds(creds)} + } else { + logger.Debug("TLS was not enabled [security.tls_enabled == false]") } + srv := grpc.NewServer(opts...) if viper.GetBool("aca.enabled") { + logger.Debug("ACA was enabled [aca.enabled == true]") aca.Start(srv) } eca.Start(srv) diff --git a/mkdocs.yml b/mkdocs.yml index 73b7f9e0ff3..e98593a5668 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -19,6 +19,7 @@ pages: - Fabric Network Setup: Setup/Network-setup.md - NodeSDK Setup: Setup/NodeSDK-setup.md - CA Setup: Setup/ca-setup.md + - TLS Setup: Setup/TLSSetup.md - Logging: Setup/logging-control.md - APIs: From 7123f77dd2855ea36817099a14eb9a07c8265910 Mon Sep 17 00:00:00 2001 From: Allen Bailey Date: Sun, 9 Oct 2016 20:57:18 -0400 Subject: [PATCH 15/18] xnode-sdk: Test Updates for supporting TLS changes required to test the fix for Fabric FAB-392 re-enable ACA+TLS unit test for node-sdk Updated getOptsFromOpts() in hfs.ts Updated eventHub setPeerAddr() in hfs.ts Added new tests: ../test/unit/member-api.js ../test/unit/getChain.js Change-Id: I3a1ad9a3f887720426ecd68de6bc4d1953f05eaf Signed-off-by: Allen Bailey --- membersrvc/membersrvc.yaml | 7 + sdk/node/bin/run-unit-tests.sh | 690 ++++++++++++++---- sdk/node/src/hfc.ts | 262 +++---- .../unit/asset-mgmt-with-dynamic-roles.js | 41 +- sdk/node/test/unit/asset-mgmt-with-roles.js | 151 +++- sdk/node/test/unit/asset-mgmt.js | 43 +- sdk/node/test/unit/chain-tests.js | 482 +++++++++--- sdk/node/test/unit/event-tests.js | 62 +- sdk/node/test/unit/getChain.js | 95 +++ sdk/node/test/unit/member-api.js | 467 ++++++++++++ sdk/node/test/unit/registrar.js | 69 +- sdk/node/test/unit/test-util.js | 133 ++++ 12 files changed, 2035 insertions(+), 467 deletions(-) create mode 100644 sdk/node/test/unit/getChain.js create mode 100644 sdk/node/test/unit/member-api.js create mode 100644 sdk/node/test/unit/test-util.js diff --git a/membersrvc/membersrvc.yaml b/membersrvc/membersrvc.yaml index 84ef66d74d9..bfdd3b0353e 100644 --- a/membersrvc/membersrvc.yaml +++ b/membersrvc/membersrvc.yaml @@ -26,6 +26,13 @@ security: # Either SHA2 or SHA3 (note: must be the exact same value as specified in the core.yaml file) hashAlgorithm: SHA3 + serverhostoverride: + tls_enabled: false + + client: + cert: + file: + # The server host CN (Common Name) to be used (needs to match the TLS Server Certificate) serverhostoverride: diff --git a/sdk/node/bin/run-unit-tests.sh b/sdk/node/bin/run-unit-tests.sh index 9e6f332903c..d94bc66607e 100755 --- a/sdk/node/bin/run-unit-tests.sh +++ b/sdk/node/bin/run-unit-tests.sh @@ -1,93 +1,323 @@ +#!/bin/bash # +# run-unit-tests.sh # Run the unit tests associated with the node.js client sdk +# Any arguments supplied to this script will be interpreted +# as a *js test file existing in # +# ${GOPATH}//src/github.com/hyperledger/fabric/sdk/node/test/unit +# +# By default all tests are run. Note that run-unit-tests.sh will +# only run tests that it knows about, since there are unique +# environmental prerequisites to many of the tests (including copying +# the fabric code into the chaincode directory). The 'case' statement +# in runTests() will need to be updated with the specific actions +# to perform for any new test that is added to the test/unit directory. +# +# The tests can be run against a local fabric network, or remote (such +# as Bluemix, HSBN, vLaunch, softLayer, etc.). +# +# The test will run 4 permutations of each test: +# TLS-disabled - deployMode=Net +# TLS-disabled - deployMode=Dev +# TLS-enabled - deployMode=Net +# TLS-enabled - deployMode=Dev +# While both 'dev' and 'net' mode are exercised, only +# 'net' mode will be executed when the network nodes +# are remote w/r/t to the host running the tests. +# +# There are six conditions that are fatal and will +# cause the tests to abort: +# Local: +# membersrvc build fails +# membersrvc fails to initialize +# peer build fails +# peer fails to initialize +# Remote: +# membersrvc is unreachable +# peer is unreachable +# +# The following environment variables will determine the +# network resources to be tested +# SDK_KEYSTORE - local directory under which user +# authentication data is stored +# SDK_CA_CERT_FILE - CA certificate used to authenticate +# network nodes +# SDK_CA_CERT_HOST - Expected host identity in server certificate +# Default is 'tlsca' +# SDK_MEMBERSRVC_ADDRESS - ip address or hostname of membersrvc +# SDK_PEER_ADDRESS - ip address or hostname of peer node under test; +# it is assumed that only one peer will contacted +# SDK_TLS - Set to '1' (use TLS) or '0' (do not use TLS) +# Note that if TLS is requested, a CA cert must be used. +# The default certificate generated by membersrvc is the default: +# /var/hyperledger/production/.membersrvc/tlsca.cert +# The run-unit-tests.sh script will run all unit tests +# twice, one without TLS and one with TLS enabled +# +# Other environment variables that will be referenced by individual tests +# SDK_DEPLOYWAIT - time (in seconds) to wait after sending deploy request +# SDK_INVOKEWAIT - time (in seconds) to wait after sending invoke request +# GRPC_SSL_CIPHER_SUITES - quoted, colon-delimited list of specific cipher suites +# that node.js client sdk should propose. +# The default list is set in sdk/node/lib/hfc.js +# SDK_DEFAULT_USER - User defined with 'registrar' authority. Default is 'WebAppAdmin' +# SDK_DEFAULT_SECRET - Password for SDK_DEFAULT_USER. Defaults to 'DJY27pEnl16d' +# When running a local network, these are configured in the +# membersrvc.yaml file. In the IBM Bluemix starter and HSBN +# networks, this password is generated dynamically and returned +# in the network credentials file. +# SDK_KEYSTORE_PERSIST - Set to '0' will delete all previously generated auth +# enrollment data prior to running the tests +# Set to '1' keep the auth data from previous enrollments +# SDK_CHAINCODE_PATH - the directory (relative to ${GOPATH}/src/) which contains +# the chaincode (and CA cert) to be deployed +# SDK_CHAINCODE_ID - the chaincode ID from a previous deployment. e.g. can be used +# to invoke/query previously-deployed chaincode +# +export CGO_CFLAGS="-I/opt/rocksdb/include" +export CGO_LDFLAGS="-L/opt/rocksdb -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy" +export NODE_PATH="${GOPATH}/src/github.com/hyperledger/fabric/sdk/node:\ +${GOPATH}/src/github.com/hyperledger/fabric/sdk/node/lib:\ +${GOPATH}/src/github.com/hyperledger/fabric/sdk/node/node_modules:\ +/usr/local/lib/node_modules:/usr/local/lib/node_modules/hfc" + +errorExit() { + printf "%s...exiting\n" "$1" + exit 1 +} -# Variable to store error results -NODE_ERR_CODE=0 +resolvHost() { + # simple 'host' or 'nslookup' doesn't work for + # /etc/host entries...attempt to resolve via ping + local host="$1" + ping -w2 -c1 "$host" | head -n1 | awk -F'[()]' '{print $2}' +} -main() { - # Initialization - init +isLocal() { + # determine if the ca/peer instance in question + # is running native/vagrant on this local machine, + # or on a remote network. echo 'true' or 'false' + # This permits constructions like + # $(isLocal ) + # to return 0 (true) or 1 (false) - # Start member services - startMemberServices + local addr="$1" + local port="$2" - # Run tests in network mode - export DEPLOY_MODE='net' - runTests + # assume remote + local result="false" - # Run tests in dev mode - export DEPLOY_MODE='dev' - runTests + # if localhost, return true + if test ${addr%%.*} = "127"; then + result="true" + else + # search this machine for address + ip addr list | + awk -v s="$addr" -v rc=1 ' + $1=="inet" { gsub(/\/.*/,"",$2); if ($2==s) rc=0 } + END { exit rc }' + if test $? -eq 0; then + # address is local but still peer might be running in container + # if docker-proxy is not running this instance, return true + sudo netstat -tlpn | grep "$port" | + awk -F '/' '{print $NF}'| grep -q proxy + test $? = 0 || result="true" + fi + fi + echo "$result" + return 0 +} - # Stop peer and member services - stopPeer - stopMemberServices +isReachable() { + # a test to see if there is a listener on + # specified host:port + # netcat would be *far* simpler: + # nc -nzvt host port + # but not guaranteed to be installed + # so use python, since it is ubiquitious + local host="$1" + local port="$2" + test -z "$host" -o -z "$port" && return 1 + + python - < /dev/null + cp -r $FABRIC . + cp -r fabric/vendor/github.com/op .. + cd ../../.. + + echo "Building chaincode..." + go build + rc+=$? fi - mkdir $DSTDIR - cd $DSTDIR - cp $SRCDIR/${1}.go . - mkdir -p vendor/github.com/hyperledger - cd vendor/github.com/hyperledger - echo "copying Hyperledger fabric project dependency..." - cp -r $FABRIC . - cp -r fabric/vendor/github.com/op .. - cd ../../.. - go build + + return $rc } # $1 is the name of the sample to start startExampleInDevMode() { - SRCDIR=$EXAMPLES/$1 - if [ ! -d $SRCDIR ]; then - echo "FATAL ERROR: directory does not exist: $SRCDIR" - NODE_ERR_CODE=1 - exit 1; - fi - EXE=$SRCDIR/$1 - cd $SRCDIR - go build + local chaincodeSrc="$1" + local rc=0 export CORE_CHAINCODE_ID_NAME=$2 - export CORE_PEER_ADDRESS=0.0.0.0:7051 - startProcess "$EXE" "${EXE}.log" "$1" + export CORE_PEER_ADDRESS=localhost:7051 + + SRCDIR=${EXAMPLES}/${chaincodeSrc} + + if test ! -d $SRC_DIR; then + echo "ERROR: directory does not exist: $SRCDIR" + rc=1 + else + EXE=${SRCDIR}/${chaincodeSrc} + if test ! -f $EXE; then + cd $SRCDIR + go build + rc=$? + fi + + test "$rc" = 0 && startProcess "$EXE" "${EXE}.log" "$chaincodeSrc" + let rc+=$? + fi + + return $rc } -# $1 is the name of the sample to start +# $1 is the name of the sample to stop stopExampleInDevMode() { + echo "killing $1" killProcess $1 } runRegistrarTests() { + local rc=0 echo "BEGIN running registrar tests ..." node $UNITTEST/registrar.js - if [ $? -ne 0 ]; then - echo "ERROR running registrar tests!" - NODE_ERR_CODE=1 - fi + rc=$? echo "END running registrar tests" + return $rc +} + +runMemberApi() { + local rc=0 + echo "BEGIN running member-api tests ..." + node $UNITTEST/member-api.js + rc=$? + echo "END running member-api tests" + return $rc } runChainTests() { + local rc=0 echo "BEGIN running chain-tests ..." preExample chaincode_example02 mycc1 - node $UNITTEST/chain-tests.js - if [ $? -ne 0 ]; then - echo "ERROR running chain-tests!" - NODE_ERR_CODE=1 + if test $? -eq 0; then + node $UNITTEST/chain-tests.js + rc=$? + postExample chaincode_example02 + else + echo "setup failed" + let rc+=1 fi - postExample chaincode_example02 echo "END running chain-tests" + return $rc } runAssetMgmtTests() { + local rc=0 echo "BEGIN running asset-mgmt tests ..." preExample asset_management mycc2 - node $UNITTEST/asset-mgmt.js - if [ $? -ne 0 ]; then - echo "ERROR running asset-mgmt tests!" - NODE_ERR_CODE=1 + if test $? -eq 0; then + node $UNITTEST/asset-mgmt.js + rc=$? + postExample asset_management + else + echo "setup failed" + let rc+=1 fi - postExample asset_management echo "END running asset-mgmt tests" + return $rc } runAssetMgmtWithRolesTests() { + local rc=0 echo "BEGIN running asset management with roles tests ..." preExample asset_management_with_roles mycc3 - node $UNITTEST/asset-mgmt-with-roles.js - if [ $? -ne 0 ]; then - echo "ERROR running asset management with roles tests!" - NODE_ERR_CODE=1 + if test $? -eq 0; then + node $UNITTEST/asset-mgmt-with-roles.js + rc=$? + postExample asset_management_with_roles + else + echo "setup failed" + let rc+=1 fi - postExample asset_management_with_roles echo "END running asset management with roles tests" + return $rc } runAssetMgmtWithDynamicRolesTests() { + local rc=0 echo "BEGIN running asset management with dynamic roles tests ..." preExample asset_management_with_roles mycc4 - node $UNITTEST/asset-mgmt-with-dynamic-roles.js - if [ $? -ne 0 ]; then - echo "ERROR running asset management with dynamic roles tests!" - NODE_ERR_CODE=1 + if test $? -eq 0; then + node $UNITTEST/asset-mgmt-with-dynamic-roles.js + rc=$? + echo "RC:" $rc + postExample asset_management_with_roles + else + echo "setup failed" + let rc+=1 fi - postExample asset_management_with_roles echo "END running asset management with dynamic roles tests" + return $rc } runEventTests() { + local rc=0 echo "BEGIN running event-tests ..." preExample eventsender mycc5 - node $UNITTEST/event-tests.js - if [ $? -ne 0 ]; then - echo "ERROR running event-tests!" - NODE_ERR_CODE=1 + if test $? -eq 0; then + node $UNITTEST/event-tests.js + rc=$? + postExample eventsender + else + echo "setup failed" + let rc+=1 fi - postExample eventsender echo "END running event-tests" + return $rc +} + +runGetChainTests() { + local rc=0 + echo "BEGIN running runGetChainTests ..." + node $UNITTEST/getChain.js + rc=$? + echo "END running getChain" + return $rc } # start process @@ -245,32 +565,128 @@ runEventTests() { # $2 is the log file # $3 is string description of the process startProcess() { - $1 > $2 2>&1& + local cmd="$1" + local log="$2" + local proc="$3" + + $cmd >> $log 2>&1& PID=$! sleep 2 kill -0 $PID > /dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "$3 is started" + if test $? -eq 0; then + echo "$proc is started" else - echo "ERROR: $3 failed to start; see $2" - NODE_ERR_CODE=1 - exit 1 + echo "ERROR: $proc failed to start; see $log" + return 1 fi } # kill a process # $1 is the executable name killProcess() { - PID=`ps -ef | grep "$1" | grep -v "grep" | awk '{print $2}'` - if [ "$PID" != "" ]; then - echo "killing PID $PID running $1 ..." + local proc="$1" + PID=$(ps -ef | awk -v s="$proc" '$0~s && $8!="awk" {print $2}') + if test -n "$PID"; then + echo "killing PID $PID running $proc ..." kill -9 $PID fi } -main +# Run tests +runTests() { + local TestsToBeRun="$1" + local rc=0 -if [ "$NODE_ERR_CODE" != "0" ]; then - echo "ERROR: Error executing run-unit-tests.sh. Exiting with status code '1'." - exit 1 -fi + echo "Begin running tests in $SDK_DEPLOY_MODE mode ..." + # restart peer + if $($peerAddrIsLocal); then + stopPeer + startPeer || errorExit "Start peer failed." + fi + + for Test in $TestsToBeRun; do + case "${Test##*/}" in + "registrar.js") runRegistrarTests ;; + "chain-tests.js") runChainTests ;; + "asset-mgmt.js") runAssetMgmtTests ;; + "member-api.js") runMemberApi ;; +"asset-mgmt-with-dynamic-roles.js") runAssetMgmtWithDynamicRolesTests ;; + "asset-mgmt-with-roles.js") runAssetMgmtWithRolesTests ;; + "event-tests.js") runEventTests ;; + "getChain.js") runGetChainTests ;; + *) echo "NO case statement for ${Test##*/}, skipping..." ;; + esac + if test $? -ne 0; then + echo "******* ${Test##*/} failed! *******" + let NODE_ERR_CODE=$((NODE_ERR_CODE+1)) + fi + echo "**************************************************************" + echo "" + echo "" + done + + echo "End running tests in $SDK_DEPLOY_MODE mode" + sleep 5 +} + +main() { + # Initialization + echo "Initilizing environment..." + init + { + printf "%s -----> Beginning nodejs SDK UT tests...\n" "$(date)" + for t in ${TEST_SUITE[*]}; do + echo ${t##*/} | sed 's/^/ /' + done + + # Start member services + for tlsEnabled in 0 1; do + export SDK_TLS=$tlsEnabled + test "$SDK_TLS" = 0 && echo "Running NON-TLS-enabled tests..." || echo "Running TLS-enabled tests..." + + if test "$SDK_TLS" = "1"; then + : ${SDK_CA_CERT_FILE:="/var/hyperledger/production/.membersrvc/tlsca.cert"} + : ${SDK_CA_KEY_FILE:="/var/hyperledger/production/.membersrvc/tlsca.priv"} + export SDK_CA_CERT_FILE + else + export MEMBERSRVC_CA_ACA_ENABLED=true + fi + + if $($caAddrIsLocal); then + startMemberServices || errorExit "Failed to start membersrvc" + fi + + # Run tests in network mode + SDK_DEPLOYWAIT=40 + SDK_INVOKEWAIT=15 + export SDK_DEPLOY_MODE='net' + runTests "$TEST_SUITE" + + # Run tests in dev mode + SDK_DEPLOYWAIT=12 + SDK_INVOKEWAIT=8 + if $($peerAddrIsLocal); then + export SDK_DEPLOY_MODE='dev' + runTests "$TEST_SUITE" + fi + + # Stop peer and member services + $($peerAddrIsLocal) && stopPeer + $($caAddrIsLocal) && stopMemberServices + + # do not delete the authentication data if this is set + test "$SDK_KEYSTORE_PERSIST" != "1" && + rm -rf /var/hyperledger/production /tmp/*keyValStore* + + done + printf "\n%s\n" "${NODE_ERR_CODE}" + } 2>&1 | tee $LOGDIR/log +} + +TEST_SUITE="$@" +main +NODE_ERR_CODE=$(sed -n '$p' $LOGDIR/log | awk '{print $NF}') +echo "exit code: $NODE_ERR_CODE" +printf "%s " $(date) | tee -a $LOGDIR/log +test "$NODE_ERR_CODE" -eq 0 && echo "UT tests PASSED" || echo "UT tests FAILED" +exit $NODE_ERR_CODE diff --git a/sdk/node/src/hfc.ts b/sdk/node/src/hfc.ts index 440b865f5ab..f31cb881050 100644 --- a/sdk/node/src/hfc.ts +++ b/sdk/node/src/hfc.ts @@ -567,16 +567,16 @@ export class Chain { /** * Set and connect to the peer to be used as the event source. */ - eventHubConnect(peeraddr: string):void { - this.eventHub.setPeerAddr(peeraddr); - this.eventHub.connect(); + eventHubConnect(peerUrl: string, opts?:GRPCOptions):void { + this.eventHub.setPeerAddr(peerUrl, opts); + this.eventHub.connect(); }; /** * Set and connect to the peer to be used as the event source. */ eventHubDisconnect():void { - this.eventHub.disconnect(); + this.eventHub.disconnect(); }; /** @@ -800,27 +800,27 @@ export class Chain { } let peers = this.peers; let trySendTransaction = (pidx) => { - if( pidx >= peers.length ) { - eventEmitter.emit('error', new EventTransactionError("None of "+peers.length+" peers reponding")); - return; - } - let p = urlParser.parse(peers[pidx].getUrl()); - let client = new net.Socket(); - let tryNext = () => { - debug("Skipping unresponsive peer "+peers[pidx].getUrl()); - client.destroy(); - trySendTransaction(pidx+1); - } - client.on('timeout', tryNext); - client.on('error', tryNext); - client.connect(p.port, p.hostname, () => { - if( pidx > 0 && peers === this.peers ) - this.peers = peers.slice(pidx).concat(peers.slice(0,pidx)); - client.destroy(); - peers[pidx].sendTransaction(tx, eventEmitter); - }); - } - trySendTransaction(0); + if( pidx >= peers.length ) { + eventEmitter.emit('error', new EventTransactionError("None of "+peers.length+" peers reponding")); + return; + } + let p = urlParser.parse(peers[pidx].getUrl()); + let client = new net.Socket(); + let tryNext = () => { + debug("Skipping unresponsive peer "+peers[pidx].getUrl()); + client.destroy(); + trySendTransaction(pidx+1); + } + client.on('timeout', tryNext); + client.on('error', tryNext); + client.connect(p.port, p.hostname, () => { + if( pidx > 0 && peers === this.peers ) + this.peers = peers.slice(pidx).concat(peers.slice(0,pidx)); + client.destroy(); + peers[pidx].sendTransaction(tx, eventEmitter); + }); + } + trySendTransaction(0); } } @@ -1386,7 +1386,7 @@ export class TransactionContext extends events.EventEmitter { * @param tx {Transaction} The transaction. */ private execute(tx:Transaction):TransactionContext { - debug('Executing transaction [%j]', tx); + debug('Executing transaction'); let self = this; // Get the TCert @@ -1437,9 +1437,9 @@ export class TransactionContext extends events.EventEmitter { } else { let txType = tx.pb.getType(); let uuid = tx.pb.getTxid(); - let eh = self.getChain().getEventHub(); - // async deploy and invokes need to maintain - // tx context(completion status(self.complete)) + let eh = self.getChain().getEventHub(); + // async deploy and invokes need to maintain + // tx context(completion status(self.complete)) if ( txType == _fabricProto.Transaction.Type.CHAINCODE_DEPLOY) { self.cevent = new EventDeployComplete(uuid, tx.chaincodeID); self.waitTime = self.getChain().getDeployWaitTime(); @@ -1449,17 +1449,17 @@ export class TransactionContext extends events.EventEmitter { } eh.registerTxEvent(uuid, function (uuid) { self.complete = true; - if (self.timeoutId) { + if (self.timeoutId) { clearTimeout(self.timeoutId); - } + } eh.unregisterTxEvent(uuid); self.emit("complete", self.cevent); }); self.getChain().sendTransaction(tx, self); - // sync query can be skipped as response - // is processed and event generated in sendTransaction - // no timeout processing is necessary - if ( txType != _fabricProto.Transaction.Type.CHAINCODE_QUERY) { + // sync query can be skipped as response + // is processed and event generated in sendTransaction + // no timeout processing is necessary + if ( txType != _fabricProto.Transaction.Type.CHAINCODE_QUERY) { debug("waiting %d seconds before emitting complete event", self.waitTime); self.timeoutId = setTimeout(function() { debug("timeout uuid=", uuid); @@ -1475,7 +1475,7 @@ export class TransactionContext extends events.EventEmitter { }, self.waitTime * 1000 ); - } + } } } else { debug('Missing TCert...'); @@ -1611,7 +1611,7 @@ export class TransactionContext extends events.EventEmitter { * @param request {Object} A BuildRequest or DeployRequest */ private newBuildOrDeployTransaction(request:DeployRequest, isBuildRequest:boolean, cb:DeployTransactionCallback):void { - debug("newBuildOrDeployTransaction"); + debug("newBuildOrDeployTransaction"); let self = this; @@ -1756,14 +1756,14 @@ export class TransactionContext extends events.EventEmitter { debug("hash: " + hash); // Compose the Dockerfile commands - let dockerFileContents = - "from hyperledger/fabric-baseimage" + "\n" + - "COPY . $GOPATH/src/build-chaincode/" + "\n" + - "WORKDIR $GOPATH" + "\n\n" + - "RUN go install build-chaincode && cp src/build-chaincode/vendor/github.com/hyperledger/fabric/peer/core.yaml $GOPATH/bin && mv $GOPATH/bin/build-chaincode $GOPATH/bin/%s"; + let dockerFileContents = + "from hyperledger/fabric-baseimage" + "\n" + + "COPY . $GOPATH/src/build-chaincode/" + "\n" + + "WORKDIR $GOPATH" + "\n\n" + + "RUN go install build-chaincode && cp src/build-chaincode/vendor/github.com/hyperledger/fabric/peer/core.yaml $GOPATH/bin && mv $GOPATH/bin/build-chaincode $GOPATH/bin/%s"; - // Substitute the hashStrHash for the image name - dockerFileContents = util.format(dockerFileContents, hash); + // Substitute the hashStrHash for the image name + dockerFileContents = util.format(dockerFileContents, hash); // Add the certificate path on the server, if it is being passed in debug("type of request.certificatePath: " + typeof(request.certificatePath)); @@ -1775,9 +1775,9 @@ export class TransactionContext extends events.EventEmitter { dockerFileContents = util.format(dockerFileContents, request.certificatePath); } - // Create a Docker file with dockerFileContents - let dockerFilePath = projDir + "/Dockerfile"; - fs.writeFile(dockerFilePath, dockerFileContents, function(err) { + // Create a Docker file with dockerFileContents + let dockerFilePath = projDir + "/Dockerfile"; + fs.writeFile(dockerFilePath, dockerFileContents, function(err) { if (err) { debug(util.format("Error writing file [%s]: %s", dockerFilePath, err)); return cb(Error(util.format("Error writing file [%s]: %s", dockerFilePath, err))); @@ -1939,9 +1939,9 @@ export class TransactionContext extends events.EventEmitter { return cb(null, tx); }); // end delete Dockerfile }); // end delete .tar.gz - }); // end reading .tar.zg and composing transaction - }); // end writing .tar.gz - }); // end writing Dockerfile + }); // end reading .tar.zg and composing transaction + }); // end writing .tar.gz + }); // end writing Dockerfile } /** @@ -2780,19 +2780,27 @@ function getPemFromOpts(opts:any):string { // Normalize opts function getOptsFromOpts(opts:any):GRPCOptions { - if (isObject(opts)) { - delete opts.pem; - if (opts.hostnameOverride) { - opts['grpc.ssl_target_name_override'] = opts.hostnameOverride; - opts['grpc.default_authority'] = opts.hostnameOverride; - delete opts.hostnameOverride; - } - return opts; - } - if (isString(opts)) { - // backwards compatible to handle pem as opts - return { pem: opts }; - } + if (typeof opts === 'object') { + var optCopy = {}; + + for (var prop in opts) { + if (prop !== 'pem') { + if (prop === 'hostnameOverride') { + optCopy['grpc.ssl_target_name_override'] = opts.hostnameOverride; + optCopy['grpc.default_authority'] = opts.hostnameOverride; + } else { + optCopy[prop] = opts[prop]; + } + } + } + + return optCopy; + } + + if (typeof opts === 'string') { + // backwards compatible to handle pem as opts + return { pem: opts }; + } } function endsWith(str:string, suffix:string) { @@ -2861,31 +2869,35 @@ export class ChainCodeCBE { */ export class EventHub { // peer addr to connect to - private peeraddr: string; - // grpc events interface + private ep: Endpoint; + // grpc options + private opts: GRPCOptions; + // grpc events interface private events: any; - // grpc event client interface + // grpc event client interface private client: any; - // grpc chat streaming interface + // grpc chat streaming interface private call: any; - // hashtable of clients registered for chaincode events + // hashtable of clients registered for chaincode events private chaincodeRegistrants: any; - // set of clients registered for block events + // set of clients registered for block events private blockRegistrants: any; - // hashtable of clients registered for transactional events + // hashtable of clients registered for transactional events private txRegistrants: any; - // fabric connection state of this eventhub + // fabric connection state of this eventhub private connected: boolean; constructor() { - this.chaincodeRegistrants = new HashTable(); - this.blockRegistrants = new Set(); - this.txRegistrants = new HashTable(); - this.peeraddr = null; + this.chaincodeRegistrants = new HashTable(); + this.blockRegistrants = new Set(); + this.txRegistrants = new HashTable(); + this.ep = null; this.connected = false; } - public setPeerAddr(peeraddr: string) { - this.peeraddr = peeraddr; + public setPeerAddr(peeraddr: string, opts?:GRPCOptions) { + let pem = getPemFromOpts(opts); + this.opts = getOptsFromOpts(opts); + this.ep = new Endpoint(peeraddr,pem); } public isconnected() { @@ -2894,37 +2906,37 @@ export class EventHub { public connect() { if (this.connected) return; - if (!this.peeraddr) throw Error("Must set peer address before connecting."); + if (!this.ep) throw Error("Must set peer address before connecting."); this.events = grpc.load(__dirname + "/protos/events.proto" ).protos; - this.client = new this.events.Events(this.peeraddr,grpc.credentials.createInsecure()); - this.call = this.client.chat(); + this.client = new this.events.Events(this.ep.addr, this.ep.creds, this.opts); + this.call = this.client.chat(); this.connected = true; this.registerBlockEvent(this.txCallback); - let eh = this; // for callback context + let eh = this; // for callback context this.call.on('data', function(event) { - if ( event.Event == "chaincodeEvent" ) { - var cbtable = eh.chaincodeRegistrants.get(event.chaincodeEvent.chaincodeID); - if( !cbtable ) { - return; - } - cbtable.forEach(function (cbe) { - if ( cbe.eventNameFilter.test(event.chaincodeEvent.eventName)) { - cbe.cb(event.chaincodeEvent); - } - }); - } else if ( event.Event == "block") { - eh.blockRegistrants.forEach(function(cb){ - cb(event.block); - }); - } - }); - this.call.on('end', function() { - eh.call.end(); - // clean up Registrants - should app get notified? - eh.chaincodeRegistrants.clear(); - eh.blockRegistrants.clear(); - }); + if ( event.Event == "chaincodeEvent" ) { + var cbtable = eh.chaincodeRegistrants.get(event.chaincodeEvent.chaincodeID); + if( !cbtable ) { + return; + } + cbtable.forEach(function (cbe) { + if ( cbe.eventNameFilter.test(event.chaincodeEvent.eventName)) { + cbe.cb(event.chaincodeEvent); + } + }); + } else if ( event.Event == "block") { + eh.blockRegistrants.forEach(function(cb){ + cb(event.block); + }); + } + }); + this.call.on('end', function() { + eh.call.end(); + // clean up Registrants - should app get notified? + eh.chaincodeRegistrants.clear(); + eh.blockRegistrants.clear(); + }); } public disconnect() { @@ -2936,14 +2948,14 @@ export class EventHub { public registerChaincodeEvent(ccid: string, eventname: string, callback: Function): ChainCodeCBE { if (!this.connected) return; - let cb = new ChainCodeCBE(ccid, eventname, callback); - let cbtable = this.chaincodeRegistrants.get(ccid); + let cb = new ChainCodeCBE(ccid, eventname, callback); + let cbtable = this.chaincodeRegistrants.get(ccid); if ( !cbtable ) { - cbtable = new Set(); - this.chaincodeRegistrants.put(ccid, cbtable); + cbtable = new Set(); + this.chaincodeRegistrants.put(ccid, cbtable); cbtable.add(cb); - let register = { register: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid , eventName: "" }} ] }}; - this.call.write(register); + let register = { register: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: ccid , eventName: "" }} ] }}; + this.call.write(register); } else { cbtable.add(cb); } @@ -2959,43 +2971,43 @@ export class EventHub { } cbtable.delete(cbe); if( cbtable.size <= 0 ) { - var unregister = { unregister: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: cbe.ccid, eventName: "" }} ] }}; - this.chaincodeRegistrants.remove(cbe.ccid); - this.call.write(unregister); + var unregister = { unregister: { events: [ { eventType: "CHAINCODE", chaincodeRegInfo:{ chaincodeID: cbe.ccid, eventName: "" }} ] }}; + this.chaincodeRegistrants.remove(cbe.ccid); + this.call.write(unregister); } } public registerBlockEvent(callback:Function){ if (!this.connected) return; - this.blockRegistrants.add(callback); - if(this.blockRegistrants.size==1) { - var register = { register: { events: [ { eventType: "BLOCK"} ] }}; - this.call.write(register); - } + this.blockRegistrants.add(callback); + if(this.blockRegistrants.size==1) { + var register = { register: { events: [ { eventType: "BLOCK"} ] }}; + this.call.write(register); + } } public unregisterBlockEvent(callback:Function){ if (!this.connected) return; - if(this.blockRegistrants.size<=1) { - var unregister = { unregister: { events: [ { eventType: "BLOCK"} ] }}; - this.call.write(unregister); - } - this.blockRegistrants.delete(callback); + if(this.blockRegistrants.size<=1) { + var unregister = { unregister: { events: [ { eventType: "BLOCK"} ] }}; + this.call.write(unregister); + } + this.blockRegistrants.delete(callback); } public registerTxEvent(txid:string, callback:Function){ debug("reg txid "+txid); - this.txRegistrants.put(txid, callback); + this.txRegistrants.put(txid, callback); } public unregisterTxEvent(txid:string){ - this.txRegistrants.remove(txid); + this.txRegistrants.remove(txid); } private txCallback = (event) => { debug("txCallback event=%j", event); var eh = this; - event.transactions.forEach(function(transaction){ + event.transactions.forEach(function(transaction) { debug("transaction.txid="+transaction.txid); var cb = eh.txRegistrants.get(transaction.txid); if (cb) diff --git a/sdk/node/test/unit/asset-mgmt-with-dynamic-roles.js b/sdk/node/test/unit/asset-mgmt-with-dynamic-roles.js index a6835505d66..1d0a4f48e98 100644 --- a/sdk/node/test/unit/asset-mgmt-with-dynamic-roles.js +++ b/sdk/node/test/unit/asset-mgmt-with-dynamic-roles.js @@ -22,26 +22,39 @@ * Simple asset management use case where authentication is performed * with the help of TCerts only (use-case 1) or attributes only (use-case 2).*/ -var hfc = require('../..'); +var hfc = require('hfc'); var test = require('tape'); var util = require('util'); -var crypto = require('../../lib/crypto'); +var crypto = require('lib/crypto'); +var tutil = require('test/unit/test-util.js'); +var fs = require('fs'); var chain, chaincodeID; var chaincodeName = "mycc4"; var deployer, alice, bob, assigner; var aliceAccount = "12345-56789"; var bobAccount = "23456-67890"; -var devMode = process.env.DEPLOY_MODE == 'dev'; + +var goPath = process.env.GOPATH +var testChaincodePath = process.env.SDK_CHAINCODE_PATH + ? process.env.SDK_CHAINCODE_PATH + : "github.com/asset_management_with_roles/" +var absoluteTestChaincodePath = goPath + "/src/" + testChaincodePath; + +function pass(t, msg) { + t.pass("Success: [" + msg + "]"); + t.end(); +} + +function fail(t, msg, err) { + t.fail("Failure: [" + msg + "]: [" + err + "]"); + t.end(err); +} // Create the chain and enroll users as deployer, assigner, and nonAssigner (who doesn't have privilege to assign. function setup(cb) { console.log("initializing ..."); - chain = hfc.newChain("testChain"); - chain.setKeyValStore(hfc.newFileKeyValStore("/tmp/keyValStore")); - chain.setMemberServicesUrl("grpc://localhost:7054"); - chain.addPeer("grpc://localhost:7051"); - if (devMode) chain.setDevMode(true); + chain = tutil.getTestChain("testChain"); console.log("enrolling deployer ..."); chain.enroll("WebAppAdmin", "DJY27pEnl16d", function (err, user) { if (err) return cb(err); @@ -69,15 +82,23 @@ function setup(cb) { // Deploy assetmgmt_with_roles with the name of the assigner role in the metadata function deploy(cb) { console.log("deploying with the role name 'assigner' in metadata ..."); + if (tutil.tlsOn) { + var deployCert = tutil.caCert + if (tutil.peerAddr0.match(tutil.hsbnDns)) deployCert = tutil.hsbnCertPath + else if (tutil.peerAddr0.match(tutil.bluemixDns)) deployCert = tutil.bluemixCertPath + fs.createReadStream(tutil.caCert).pipe(fs.createWriteStream(absoluteTestChaincodePath + '/certificate.pem')); + } var req = { fcn: "init", args: [], + certificatePath: deployCert, metadata: new Buffer("assigner") }; - if (devMode) { + + if (tutil.deployMode === 'dev' ) { req.chaincodeName = chaincodeName; } else { - req.chaincodePath = "github.com/asset_management_with_roles/"; + req.chaincodePath = testChaincodePath; } var tx = deployer.deploy(req); tx.on('submitted', function (results) { diff --git a/sdk/node/test/unit/asset-mgmt-with-roles.js b/sdk/node/test/unit/asset-mgmt-with-roles.js index 9ec3de5a5d5..75bdad48fa9 100644 --- a/sdk/node/test/unit/asset-mgmt-with-roles.js +++ b/sdk/node/test/unit/asset-mgmt-with-roles.js @@ -22,40 +22,121 @@ * Simple asset management use case where authentication is performed * with the help of TCerts only (use-case 1) or attributes only (use-case 2).*/ -var hfc = require('../..'); +var hfc = require('hfc'); var test = require('tape'); var util = require('util'); -var crypto = require('../../lib/crypto'); +var crypto = require('crypto'); +var fs = require('fs'); +var tutil = require('test/unit/test-util.js'); +var x509 = require('x509'); var chain, chaincodeID; var chaincodeName = "mycc3"; var deployer, alice, bob, assigner; + var aliceAccount = "12345-56789"; +var aliceAttributeList=["role", "account" ] +var aliceAttributeValueList=["client", aliceAccount ] + var bobAccount = "23456-67890"; -var devMode = process.env.DEPLOY_MODE == 'dev'; +var bobAttributeList=["role", "account" ] +var bobAttributeValueList=["client", bobAccount ] + +var username = process.env.SDK_DEFAULT_USER +var usersecret = process.env.SDK_DEFAULT_SECRET +var goPath = process.env.GOPATH +var testChaincodePath = process.env.SDK_CHAINCODE_PATH + ? process.env.SDK_CHAINCODE_PATH + : "github.com/asset_management_with_roles/" ; +var absoluteTestChaincodePath = goPath + "/src/" + testChaincodePath; + +var devMode = ( process.env.SDK_DEPLOY_MODE == 'dev') + ? true + : false; +var peerAddr0 = process.env.SDK_PEER_ADDRESS + ? process.env.SDK_PEER_ADDRESS + : "localhost:7054" ; +var caCert = process.env.SDK_CA_CERT_FILE + ? process.env.SDK_CA_CERT_FILE + : "tlsca.cert" ; + +var chainDeployer = { + name: username ? username : 'WebAppAdmin', + secret: usersecret ? usersecret : 'DJY27pEnl16d' +}; + +var chainAssigner = { + name: 'assigner', + secret: 'Tc43PeqBl11' +}; + +var chainUser1 = { + name: 'alice', + secret: 'CMS10pEQlB16' +}; + +var chainUser2 = { + name: 'bob', + secret: 'NOE63pEQbL25' +}; + +// Given a certificate byte buffer of the DER-encoded certificate, return +// a PEM-encoded (64 chars/line) string with the appropriate header/footer +function certToPEM(cert, cb) { + var pem = cert.encode().toString('base64'); + certStr = "-----BEGIN CERTIFICATE-----\n" + for (var i = 0; i < pem.length; i++) { + if ((i>0) && i%64 == 0) certStr += "\n"; + certStr += pem[i] + } + certStr += "\n-----END CERTIFICATE-----\n" + cb(certStr) +} + +// Validate that the correct x509 v3 extensions containing +// attribute-entries were added to the certificate +function checkCertExtensions(certbuf, attV, cb) { + var pem = certbuf.encode().toString('base64'); + certToPEM(certbuf, function(certPem) { + var c = x509.parseCert(certPem) + console.log("CN: ", c.subject.commonName); + console.log("extensions: "); + var extArrVal = []; + Object.keys(c.extensions).forEach(function(key) { + var attrOid = key; + var attrVal = c.extensions[key]; + extArrVal.push(attrVal); + console.log(" --->", attrOid, ":", attrVal); + }); + for (var a in attV) { + if ( extArrVal.indexOf(attV[a]) == -1) { + console.log( attV[a], "not in extentions"); + return cb(new Error(util.format("Failed to find %s in certificate extentions", attV[a]))); + } + } + }); + return cb(); +} // Create the chain and enroll users as deployer, assigner, and nonAssigner (who doesn't have privilege to assign. function setup(cb) { console.log("initializing ..."); - var chain = hfc.newChain("testChain"); - chain.setKeyValStore(hfc.newFileKeyValStore("/tmp/keyValStore")); - chain.setMemberServicesUrl("grpc://localhost:7054"); - chain.addPeer("grpc://localhost:7051"); + var chain = tutil.getTestChain(); if (devMode) chain.setDevMode(true); - console.log("enrolling deployer ..."); - chain.enroll("WebAppAdmin", "DJY27pEnl16d", function (err, user) { + console.log("enrolling " + chainDeployer.name + "..."); + chain.enroll(chainDeployer.name, chainDeployer.secret, function (err, user) { if (err) return cb(err); deployer = user; - console.log("enrolling Assigner ..."); - chain.enroll("assigner","Tc43PeqBl11", function (err, user) { + console.log("enrolling " + chainAssigner.name + "..."); + chain.enroll(chainAssigner.name, chainAssigner.secret, function (err, user) { if (err) return cb(err); assigner = user; - console.log("enrolling Alice ..."); - chain.enroll("alice","CMS10pEQlB16", function (err, user) { + console.log("enrolling " + chainUser1.name + "..."); + chain.enroll(chainUser1.name, chainUser1.secret, function (err, user) { if (err) return cb(err); alice = user; - console.log("enrolling Bob ..."); - chain.enroll("bob","NOE63pEQbL25", function (err, user) { + console.log("enrolling " + chainUser2.name + "..."); + chain.enroll(chainUser2.name, chainUser2.secret, function (err, user) { if (err) return cb(err); bob = user; return deploy(cb); @@ -65,18 +146,27 @@ function setup(cb) { }); } -// Deploy assetmgmt_with_roles with the name of the assigner role in the metadata +// Deploy asset_management_with_roles with the name of the assigner role in the metadata function deploy(cb) { + if (tutil.tlsOn) { + var deployCert = tutil.caCert + if (peerAddr0.match(tutil.hsbnDns)) deployCert = tutil.hsbnCertPath + else if (peerAddr0.match(tutil.bluemixDns)) deployCert = tutil.bluemixCertPath + // Path (under $GOPATH) required for deploy in network mode + fs.createReadStream(caCert).pipe(fs.createWriteStream(absoluteTestChaincodePath + '/certificate.pem')); + } + console.log("deploying with the role name 'assigner' in metadata ..."); var req = { fcn: "init", args: [], + certificatePath: deployCert, metadata: new Buffer("assigner") }; if (devMode) { req.chaincodeName = chaincodeName; } else { - req.chaincodePath = "github.com/asset_management_with_roles/"; + req.chaincodePath = testChaincodePath; } var tx = deployer.deploy(req); tx.on('submitted', function (results) { @@ -99,7 +189,8 @@ function assignOwner(user,owner,cb) { chaincodeID: chaincodeID, fcn: "assign", args: ["MyAsset",owner], - attrs: ['role'] + userCert: user.cert, + attrs: aliceAttributeList }; console.log("assign: invoking %j",req); var tx = user.invoke(req); @@ -160,12 +251,13 @@ test('setup asset management with roles', function (t) { test('assign asset management with roles', function (t) { t.plan(1); - alice.getUserCert(["role", "account"], function (err, aliceCert) { - if (err) { - fail(t, "Failed getting Application certificate for Alice."); - // Exit the test script after a failure - process.exit(1); - } + alice.getUserCert(aliceAttributeList, function (err, aliceCert) { + if (err) t.fail(t, "Failed getting Application certificate for Alice."); + checkCertExtensions(aliceCert, aliceAttributeValueList, function(err) { + if(err){ + t.fail("error: "+err.toString()); + } + }); assignOwner(assigner, aliceCert.encode().toString('base64'), function(err) { if (err) { t.fail("error: "+err.toString()); @@ -190,11 +282,12 @@ test('not assign asset management with roles', function (t) { t.plan(1); bob.getUserCert(["role", "account"], function (err, bobCert) { - if (err) { - fail(t, "Failed getting Application certificate for Alice."); - // Exit the test script after a failure - process.exit(1); - } + if (err) t.fail(t, "Failed getting Application certificate for Bob."); + checkCertExtensions(bobCert, bobAttributeValueList, function(err) { + if(err){ + t.fail("error: "+err.toString()); + } + }); assignOwner(alice, bobCert.encode().toString('base64'), function(err) { if (err) { t.fail("error: "+err.toString()); diff --git a/sdk/node/test/unit/asset-mgmt.js b/sdk/node/test/unit/asset-mgmt.js index 653dabe8ae2..ba116b42c8c 100644 --- a/sdk/node/test/unit/asset-mgmt.js +++ b/sdk/node/test/unit/asset-mgmt.js @@ -22,10 +22,13 @@ * Simple asset management use case where authentication is performed * with the help of TCerts only (use-case 1) or attributes only (use-case 2).*/ -var hfc = require('../..'); +var hfc = require('hfc'); var test = require('tape'); var util = require('util'); var fs = require('fs'); +var tutil = require('test/unit/test-util.js'); + + // constants var registrar = { @@ -37,7 +40,11 @@ var alice, bob, charlie; var alicesCert, bobAppCert, charlieAppCert; // Path to the local directory containing the chaincode project under $GOPATH -var testChaincodePath = "github.com/asset_management/"; +var goPath = process.env.GOPATH +var testChaincodePath = process.env.SDK_CHAINCODE_PATH + ? process.env.SDK_CHAINCODE_PATH + : "github.com/asset_management/" ; +var absoluteTestChaincodePath = goPath + "/src/" + testChaincodePath; // Chaincode hash that will be filled in by the deployment operation or // chaincode name that will be referenced in development mode. @@ -49,24 +56,7 @@ var testChaincodeID; // // Create and configure a test chain // -var chain = hfc.newChain("testChain"); -chain.setKeyValStore(hfc.newFileKeyValStore('/tmp/keyValStore')); -chain.setMemberServicesUrl("grpc://localhost:7054"); -chain.addPeer("grpc://localhost:7051"); - -// -// Set the chaincode deployment mode to either developent mode (user runs chaincode) -// or network mode (code package built and sent to the peer). -// - -var mode = process.env['DEPLOY_MODE']; -console.log("$DEPLOY_MODE: " + mode); -if (mode === 'dev') { - chain.setDevMode(true); -} else { - chain.setDevMode(false); -} - +chain = tutil.getTestChain("testChain"); /** * Get the user and if not enrolled, register and enroll the user. @@ -181,9 +171,15 @@ test('Enroll Charlie', function (t) { test("Alice deploys chaincode", function (t) { t.plan(1); + if (tutil.tlsOn) { + var deployCert = tutil.caCert + if (tutil.peerAddr0.match(tutil.hsbnDns)) deployCert = tutil.hsbnCertPath + else if (tutil.peerAddr0.match(tutil.bluemixDns)) deployCert = tutil.bluemixCertPath + // Path (under $GOPATH) required for deploy in network mode + fs.createReadStream(tutil.caCert).pipe(fs.createWriteStream(absoluteTestChaincodePath + '/certificate.pem')); + } console.log('Deploy and assigning administrative rights to Alice [%s]', alicesCert.encode().toString('hex')); - // Construct the deploy request var deployRequest = { // Function to trigger @@ -193,10 +189,11 @@ test("Alice deploys chaincode", function (t) { // Mark chaincode as confidential confidential: true, // Assign Alice's cert - metadata: alicesCert.encode() + metadata: alicesCert.encode(), + certificatePath: deployCert }; - if (mode === 'dev') { + if (tutil.deployMode === 'dev') { // Name required for deploy in development mode deployRequest.chaincodeName = testChaincodeName; } else { diff --git a/sdk/node/test/unit/chain-tests.js b/sdk/node/test/unit/chain-tests.js index 921585be822..e407ee94f5e 100644 --- a/sdk/node/test/unit/chain-tests.js +++ b/sdk/node/test/unit/chain-tests.js @@ -13,60 +13,43 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/** - * Licensed Materials - Property of IBM - * © Copyright IBM Corp. 2016 - */ -var hfc = require('../..'); +var hfc = require('hfc'); var test = require('tape'); var util = require('util'); +var tutil = require('test/unit/test-util.js'); var fs = require('fs'); +// Constant to test for URLs +var urlpattern = new RegExp( "(http|ftp|grpc)s*:\/\/?"); + // // Create a test chain // - -var chain = hfc.newChain("testChain"); +var chain = tutil.getTestChain("testChain"); // // Configure the test chain // -// Set the directory for the local file-based key value store, point to the -// address of the membership service, and add an associated peer node. -// -// If the "tlsca.cert" file exists then the client-sdk will -// try to connect to the member services using TLS. -// The "tlsca.cert" is supposed to contain the root certificate (in PEM format) -// to be used to authenticate the member services certificate. -// - -chain.setKeyValStore(hfc.newFileKeyValStore('/tmp/keyValStore')); -if (fs.existsSync("tlsca.cert")) { - chain.setMemberServicesUrl("grpcs://localhost:7054", fs.readFileSync('tlsca.cert')); -} else { - chain.setMemberServicesUrl("grpc://localhost:7054"); +if (tutil.tlsOn) { + if (tutil.caCert) { + var pem = fs.readFileSync(tutil.caCert); + console.log("tutil.caCertHost:", tutil.caCertHost); + if (tutil.caCertHost) { var eventGrpcOpts={ pem:pem, hostnameOverride: tutil.caCertHost} } + else { var eventGrpcOpts={ pem:pem } }; + } + console.log("Setting eventHubAddr address to grpcs://" + tutil.eventHubAddr); + chain.eventHubConnect("grpcs://" + tutil.eventHubAddr, eventGrpcOpts); +} +else { + console.log("Setting eventHubAddr address to grpc://" + tutil.eventHubAddr); + chain.eventHubConnect("grpc://" + tutil.eventHubAddr); } -chain.addPeer("grpc://localhost:7051"); -chain.eventHubConnect("localhost:7053"); process.on('exit', function (){ chain.eventHubDisconnect(); }); -// -// Set the chaincode deployment mode to either developent mode (user runs chaincode) -// or network mode (code package built and sent to the peer). -// - -var mode = process.env['DEPLOY_MODE']; -console.log("$DEPLOY_MODE: " + mode); -if (mode === 'dev') { - chain.setDevMode(true); -} else { - chain.setDevMode(false); -} - // // Configure test users // @@ -90,9 +73,11 @@ var test_user_Member1; // Declare test variables that will be used to store chaincode values used // across multiple tests. // - -// Path to the local directory containing the chaincode project under $GOPATH -var testChaincodePath = "github.com/chaincode_example02/"; +var goPath = process.env.GOPATH +var testChaincodePath = process.env.SDK_CHAINCODE_PATH + ? process.env.SDK_CHAINCODE_PATH + : "github.com/chaincode_example02/" +var absoluteTestChaincodePath = goPath + "/src/" + testChaincodePath; // Chaincode hash that will be filled in by the deployment operation or // chaincode name that will be referenced in development mode. @@ -101,6 +86,14 @@ var testChaincodeName = "mycc1"; // testChaincodeID will store the chaincode ID value after deployment. var testChaincodeID; +// var deployCert = '/var/hyperledger/production/.membersrvc/tlsca.cert' +if (tutil.tlsOn) { + var deployCert = tutil.caCert + if (tutil.peerAddr0.match(tutil.hsbnDns)) deployCert = tutil.hsbnCertPath + else if (tutil.peerAddr0.match(tutil.bluemixDns)) deployCert = tutil.bluemixCertPath + fs.createReadStream(tutil.caCert).pipe(fs.createWriteStream(absoluteTestChaincodePath + '/certificate.pem')); +} + // Initializing values for chaincode parameters var initA = "100"; var initB = "200"; @@ -133,6 +126,78 @@ function fail(t, msg, err) { t.end(err); } +// +// Test boolean function +function devMode(c) { + var initialDevMode = c.isDevMode(); + + + c.setDevMode(c.isDevMode() ? false : true); /* toggle boolean */ + + if (c.isDevMode == initialDevMode) { + console.log("setDevMode did not change devMode"); + return "unexpected result from setDevMode() and isDevMode()"; + } + c.setDevMode(c.isDevMode() ? false : true); /* toggle boolean */ + + if (c.isDevMode() != initialDevMode) { + console.log("oops DevMode: c.isDevMode() =", c.isDevMode()) + return "unexpected result from setDevMode() and isDevMode()"; + } + return ""; +} /* DevMode() */ + +// +// Test chain.deployWaitTime() and chain.setDeployWaitTime() +function deployWaitChallenge(cb) { + var initDeployWaitTime = chain.getDeployWaitTime(); + var expectDeployWaitTime = 2*initDeployWaitTime; + + console.log("initDeployWaitTime", initDeployWaitTime); + + // I wrote an issue for these values which shouldn't work. When issue is resolved, I'll + // enhance this test + chain.setDeployWaitTime(0); + console.log("deployWaitTime", chain.getDeployWaitTime()); + chain.setDeployWaitTime(6000); + console.log("deployWaitTime", chain.getDeployWaitTime()); + chain.setDeployWaitTime(-1); + console.log("deployWaitTime", chain.getDeployWaitTime()); + chain.setDeployWaitTime("as long as it takes"); + console.log("deployWaitTime", chain.getDeployWaitTime()); + + // conventional testing + chain.setDeployWaitTime(initDeployWaitTime*2); + var x = chain.getDeployWaitTime(); + if (x != expectDeployWaitTime) { + console.log("deployWaitChallenge: expected " + expectDeployWaitTime + " got " + x); + return cb(new Error("deployWaitChallenge: unexpected value from getDeployWaitTime()")); + } + return cb(); +}; /* deployWaitChallenge() */ + +// +// Test chain.setInvokeWaitTime() and chain.getInvokeWaitTime() +// +function invokeWaitChallenge(cb) { + var initInvokeWaitTime = chain.getInvokeWaitTime(); + var expectInvokeWaitTime = 2*initInvokeWaitTime; + + //console.log("initInvokeWaitTime", initInvokeWaitTime); + + chain.setInvokeWaitTime(0); + chain.setInvokeWaitTime(6000); + chain.setInvokeWaitTime(-1); + chain.setInvokeWaitTime("as long as it takes"); + chain.setInvokeWaitTime(expectInvokeWaitTime); + var x = chain.getInvokeWaitTime(); + if (x != expectInvokeWaitTime) { + console.log("InvokeWaitChallenge: expected " + expectInvokeWaitTime + " got " + x); + return cb(new Error("InvokeWaitChallenge: unexpected value from getInvokeWaitTime()")); + } + return cb(); +}; /* invokeWaitChallenge() */ + // // Test adding an invalid peer (omit protocol or use invalid protocol in URL) // @@ -173,7 +238,7 @@ test('Add invalid peer URLs to the chain', function (t) { // -// Test adding a valid peer (URL must start with grpc or grpcs) +// Test adding a valid peer (URL must start with grpc or grpcs) // test('Add valid peer URLs to the chain', function (t) { @@ -196,7 +261,7 @@ test('Add valid peer URLs to the chain', function (t) { try { chain_test2.addPeer(prefix + "://localhost:7051", - fs.readFileSync(__dirname + "/../fixtures/tlsca.cert")); + fs.readFileSync(__dirname + "/../fixtures/tlsca.cert", {encoding: "ascii"})); t.pass("Successfully added peer with URL starting with " + prefix + "://"); } catch (err) { @@ -303,13 +368,9 @@ test('Set Invalid security level and hash algorithm.', function (t) { try { chain.getMemberServices().setSecurityLevel(128); t.fail("Setting an invalid security level should fail. Allowed security levels are '256' and '384'.") - // Exit the test script after a failure - process.exit(1); } catch (err) { if (securityLevel != chain.getMemberServices().getSecurityLevel()) { t.fail("Chain is using an invalid security level.") - // Exit the test script after a failure - process.exit(1); } t.pass("Setting an invalid security level failed as expected.") @@ -319,19 +380,15 @@ test('Set Invalid security level and hash algorithm.', function (t) { try { chain.getMemberServices().setHashAlgorithm('SHA'); t.fail("Setting an invalid hash algorithm should fail. Allowed hash algorithm are 'SHA2' and 'SHA3'.") - // Exit the test script after a failure - process.exit(1); } catch (err) { if (hashAlgorithm != chain.getMemberServices().getHashAlgorithm()) { t.fail("Chain is using an invalid hash algorithm.") - // Exit the test script after a failure - process.exit(1); } t.pass("Setting an invalid hash algorithm failed as expected.") } -}); +}); /* Set Invalid security level and hash algorithm */ // @@ -347,8 +404,6 @@ test('Enroll WebAppAdmin', function (t) { if (err) { t.fail("Failed to get WebAppAdmin member " + " ---> " + err); t.end(err); - // Exit the test script after a failure - process.exit(1); } else { t.pass("Successfully got WebAppAdmin member" /*+ " ---> " + JSON.stringify(crypto)*/); @@ -359,8 +414,6 @@ test('Enroll WebAppAdmin', function (t) { if (err) { t.fail("Failed to enroll WebAppAdmin member " + " ---> " + err); t.end(err); - // Exit the test script after a failure - process.exit(1); } else { t.pass("Successfully enrolled WebAppAdmin member" /*+ " ---> " + JSON.stringify(crypto)*/); @@ -372,15 +425,13 @@ test('Enroll WebAppAdmin', function (t) { t.pass("Successfully stored client token" /*+ " ---> " + WebAppAdmin.getName()*/); } else { t.fail("Failed to store client token for " + WebAppAdmin.getName() + " ---> " + err); - // Exit the test script after a failure - process.exit(1); } }); } }); } }); -}); +}); /* Enroll WebAppAdmin */ // // Set the WebAppAdmin as the designated chain 'registrar' member who will @@ -397,8 +448,6 @@ test('Set chain registrar', function (t) { if (err) { t.fail("Failed to get WebAppAdmin member " + " ---> " + err); t.end(err); - // Exit the test script after a failure - process.exit(1); } else { t.pass("Successfully got WebAppAdmin member"); @@ -409,7 +458,7 @@ test('Set chain registrar', function (t) { t.equal(chain.getRegistrar().getName(), "WebAppAdmin", "Successfully set chain registrar"); } }); -}); +}); /* Set Chain Registrar */ // // Register and enroll a new user with the certificate authority. @@ -423,8 +472,6 @@ test('Register and enroll a new user', function (t) { getUser(test_user1.name, function (err, user) { if (err) { fail(t, "Failed to get " + test_user1.name + " ---> ", err); - // Exit the test script after a failure - process.exit(1); } else { test_user_Member1 = user; @@ -439,13 +486,11 @@ test('Register and enroll a new user', function (t) { } else { t.fail("Failed to store client token for " + test_user1.name + " ---> " + err); t.end(err); - // Exit the test script after a failure - process.exit(1); } }); } }); -}); +}); /* Register and enroll a new user */ // // Create and issue a chaincode deploy request with a missing chaincodeName @@ -462,7 +507,8 @@ test('Deploy with missing chaincodeName or chaincodePath', function (t) { // Function to trigger fcn: "init", // Arguments to the initializing function - args: ["a", initA, "b", initB] + args: ["a", initA, "b", initB], + certificatePath: deployCert }; // Trigger the deploy transaction @@ -476,14 +522,12 @@ test('Deploy with missing chaincodeName or chaincodePath', function (t) { testChaincodeID = results.chaincodeID; console.log("testChaincodeID:" + testChaincodeID); t.fail(util.format("Successfully deployed chaincode: request=%j, response=%j", deployRequest, results)); - // Exit the test script after a failure - process.exit(1); }); deployTx.on('error', function (err) { // Deploy request failed t.pass(util.format("Failed to deploy chaincode: request=%j, error=%j", deployRequest, err)); }); -}); +}); /* Deploy with missing chaincodeName or chaincodePath */ // // Create and issue a chaincode deploy request by the test user, who was @@ -499,10 +543,13 @@ test('Deploy a chaincode by enrolled user', function (t) { // Function to trigger fcn: "init", // Arguments to the initializing function - args: ["a", initA, "b", initB] + args: ["a", initA, "b", initB], + certificatePath: deployCert }; - if (mode === 'dev') { + //chain.setDeployWaitTime(-1); + //console.log("setting bogus wait time prior to deploy") + if (tutil.deployMode === 'dev') { // Name required for deploy in development mode deployRequest.chaincodeName = testChaincodeName; } else { @@ -525,10 +572,8 @@ test('Deploy a chaincode by enrolled user', function (t) { deployTx.on('error', function (err) { // Deploy request failed t.fail(util.format("Failed to deploy chaincode: request=%j, error=%j", deployRequest, err)); - // Exit the test script after a failure - process.exit(1); }); -}); +}); /* Deploy a chaincode by enrolled user */ // // Create and issue a chaincode query request with a missing chaincodeID @@ -555,14 +600,12 @@ test('Query with missing chaincodeID', function (t) { queryTx.on('complete', function (results) { // Query completed successfully t.fail(util.format("Successfully queried existing chaincode state: request=%j, response=%j, value=%s", queryRequest, results, results.result.toString())); - // Exit the test script after a failure - process.exit(1); }); queryTx.on('error', function (err) { // Query failed t.pass(util.format("Failed to query existing chaincode state: request=%j, error=%j", queryRequest, err)); }); -}); +}); /* Query with missing chaincodeID */ // // Create and issue a chaincode query request by the test user, who was @@ -595,10 +638,8 @@ test('Query existing chaincode state by enrolled user with batch size of 1', fun queryTx.on('error', function (err) { // Query failed t.fail(util.format("Failed to query existing chaincode state: request=%j, error=%j", queryRequest, err)); - // Exit the test script after a failure - process.exit(1); }); -}); +}); /* Query existing chaincode state by enrolled user with batch size of 1 */ // // Create and issue a chaincode query request by the test user, who was @@ -631,10 +672,8 @@ test('Query existing chaincode state by enrolled user with batch size of 100', f queryTx.on('error', function (err) { // Query failed t.fail(util.format("Failed to query existing chaincode state: request=%j, error=%j", queryRequest, err)); - // Exit the test script after a failure - process.exit(1); }); -}); +}); /* Query existing chaincode state by enrolled user with batch size of 100 */ // // Create and issue a chaincode query request by the test user, who was @@ -662,14 +701,12 @@ test('Query non-existing chaincode state by enrolled user', function (t) { queryTx.on('complete', function (results) { // Query completed successfully t.fail(util.format("Successfully queried non-existing chaincode state: request=%j, response=%j, value=%s", queryRequest, results, results.result.toString())); - // Exit the test script after a failure - process.exit(1); }); queryTx.on('error', function (err) { // Query failed t.pass(util.format("Failed to query non-existing chaincode state: request=%j, error=%j", queryRequest, err)); }); -}); +}); /* Query non-existing chaincode state by enrolled user */ // // Create and issue a chaincode query request by the test user, who was @@ -697,14 +734,12 @@ test('Query non-existing chaincode function by enrolled user', function (t) { queryTx.on('complete', function (results) { // Query completed successfully t.fail(util.format("Successfully queried non-existing chaincode function: request=%j, response=%j, value=%s", queryRequest, results, results.result.toString())); - // Exit the test script after a failure - process.exit(1); }); queryTx.on('error', function (err) { // Query failed t.pass(util.format("Failed to query non-existing chaincode function: request=%j, error=%j", queryRequest, err)); }); -}); +}); /* Query non-existing chaincode function by enrolled user */ // // Create and issue a chaincode invoke request with a missing chaincodeID @@ -730,14 +765,12 @@ test('Invoke with missing chaincodeID', function (t) { invokeTx.on('submitted', function (results) { // Invoke transaction submitted successfully t.fail(util.format("Successfully submitted chaincode invoke transaction: request=%j, response=%j", invokeRequest, results)); - // Exit the test script after a failure - process.exit(1); }); invokeTx.on('error', function (err) { // Invoke transaction submission failed t.pass(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); }); -}); +}); /* Invoke with missing chaincodeID */ // // Create and issue a chaincode invoke request by the test user, who was @@ -769,7 +802,268 @@ test('Invoke a chaincode by enrolled user', function (t) { invokeTx.on('error', function (err) { // Invoke transaction submission failed t.fail(util.format("Failed to submit chaincode invoke transaction: request=%j, error=%j", invokeRequest, err)); - // Exit the test script after a failure - process.exit(1); }); +}); /* Invoke a chaincode by enrolled user */ + + +// +// Test getting and setting member services +// registered and enrolled in the UT above. +// +test.skip('Get/set Member services', function (t) { + // + // Leave t.plan(1) for now. Deleting t.plan(1) causes all subsequent test cases to fail. + // + t.plan(1); // Don't even think of deleting this + var initMemberServices = chain.getMemberServices(); + //console.log("Here is a MemberServices: ", chain.getMemberServices()); + + // Make a modifiable copy of incoming member services + var myMemberServices = { ecaaClient: initMemberServices.ecaaClient + ,ecapClient: initMemberServices.ecapClient + ,tcapClient: initMemberServices.tcapClient + ,tlscapClient: initMemberServices.tlscapClient + ,cryptoPrimitives: initMemberServices.cryptoPrimitives + }; + + + //console.log("\nCurrent MemberServices copied into myMemberServices", myMemberServices); + + // Modify my MemberServices so I can test chain.setMemberServices() + // SecurityLevel and HashAlgorithm have only two valid values, so set each to its other value + myMemberServices.cryptoPrimitives.securityLevel = initMemberServices.getSecurityLevel() == 256 ? 384 : 256; + myMemberServices.cryptoPrimitives.hashAlgorithm = initMemberServices.getHashAlgorithm('SHA2') == 'SHA2' ? 'SHA3' : 'SHA2'; + + console.log("\nMyMemberServices with new security level and hash algorithm: ", myMemberServices); + chain.setMemberServices(myMemberServices); + + console.log("\nnew member services after chain.setMemberServices(myMemberServices):", chain.getMemberServices()); + t.fail(util.format("chain.getMemberServices failed waiting for FAB-249")); + console.log("chain.getMemberServices().getSecurityLevel ", chain.getMemberServices().getSecurityLevel()); + console.log("\nchain.getMemberServices.getHashAlgorithm ", chain.getMemberServices().getHashAlgorithm()); + + //var level = chain.getMemberServices().getSecurityLevel(); + var level = chain.getMemberServices().getSecurityLevel(); + if (c.securityLevel !== level) { + console.log("get/setMemberServices Unexpected result from getSecurityLevel ", level); + t.fail(util.format("chain.getMemberServices failed")); + } + var hash = chain.getMemberServices().getHashAlgorithm(); + if (c.hashAlgorithm !== hash) { + console.log("get/setMemberServices Unexpected result from ", hash); + t.fail(util.format("chain.getMemberServices failed")); + } + chain.setMemberServices(initMemberServices); + t.pass(util.format("get/set MemberServices OK")); + +}); /* Get/set Member services */ + +// +// Test setting and getting deployWaitTime +// +test('Deploy wait time', function(t) { + deployWaitChallenge(function(err) { + if (err) { + fail(t, "deployWaitChallenge", err); + } + else { + pass(t, "deployWaitChallenge"); + } + }); +}); + +// +// Test setting and getting invokeWaitTime +// +test('Invoke wait time', function(t) { + invokeWaitChallenge(function(err) { + if (err) { + fail(t, "invokeWaitChallenge", err); + } + else { + pass(t, "invokeWaitChallenge"); + } + }); +}); + + +// +// Test chain.getPeers() and chain.addPeer() +// +test.skip('peer pem', function(t) { + console.log("peer pem is blocked by issue FAB-433") + var initialPeerCount = chain.getPeers().length; + var realPem = "-----BEGIN CERTIFICATE-----" + + "MIICSjCCAbOgAwIBAgIJAJHGGR4dGioHMA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNV"+ + "BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX"+ + "aWRnaXRzIFB0eSBMdGQxDzANBgNVBAMTBnRlc3RjYTAeFw0xNDExMTEyMjMxMjla"+ + "Fw0yNDExMDgyMjMxMjlaMFYxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0"+ + "YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxDzANBgNVBAMT"+ + "BnRlc3RjYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwEDfBV5MYdlHVHJ7"+ + "+L4nxrZy7mBfAVXpOc5vMYztssUI7mL2/iYujiIXM+weZYNTEpLdjyJdu7R5gGUu"+ + "Qah2PH5ACLrIIC6tRka9hcaBlIECAwEAAaMgMB4wDAYDVR0TBAUwAwEB/zAOBgNV"+ + "HQ8BAf8EBAMCAgQwDQYJKoZIhvcNAQELBQADgYEAHzC7jdYlzAVmddi/gdAeKPau"+ + "sPBG/C2HCWqHzpCUHcKuvMzDVkY/MP2o6JIW2DBbY64bO/FceExhjcykgaYtCH/m"+ + "oIU63+CFOTtR7otyQAWHqXa7q4SbCDlG7DyRFxqG0txPtGvy12lgldA2+RgcigQG"+ + "Dfcog5wrJytaQ6UA0wE=" + + "-----END CERTIFICATE-----"; + + //console.log("real pem = ", realPem); + // Specify invalid pem parameters + chain.addPeer("grpc://localhost:20202", realPem); + if (chain.addPeer("grpc://localhost:30303", realPem)) { + //console.log("real PEM accepted"); + if (chain.addPeer("grpc://localhost:303030", "")) { + // This parameter is optional, so probably empty string should be allowed + if (chain.addPeer("grpc://localhost:303031", -12)) { + // not a string, so why was it accepted? + fail(t, "peer pem: pem=-12 unexpectedly accepted"); + } + else { + pass(t, "peer pem"); + } + } + else { + fail(t, "peer pem: null pem was rejected"); + } + } + else { + fail(t, "peer pem: text string rejected"); + } + +}); /* AddPeer pem */ + +// +// Test chain.getTCertBatchSize() +test('Get tcert batch size', function(t) { + + var size = chain.getTCertBatchSize(); + chain.setTCertBatchSize(0); + + if (!isNaN(size) && (size)) { + chain.setTCertBatchSize(size + 1); + var newSize = chain.getTCertBatchSize(); + if (newSize == (size + 1)) { + pass(t, "get tcert batch size"); + } + else { + fail(t, "chain.getTCertBatchSize() returned " + newSize + " expected " + size); + } + } + else { + fail(t, "chain.getTCertBatchSize() unexpectedly returned " + size); + } + chain.setTCertBatchSize(size); // restore initial value +}); /* Get tcert batch size */ + +// +// Test chain.isPreFetchMode() +test('Get and test prefetch mode', function(t) { + var initialPreFetchMode = chain.isPreFetchMode(); + + chain.setPreFetchMode(chain.isPreFetchMode() ? false : true); /* toggle value */ + if (chain.isPreFetchMode == initialPreFetchMode) { + fail(t, "get and test prefetch mode", "setPreFetchMode() did not change preFetchMode()"); + } + + chain.setPreFetchMode(chain.isPreFetchMode() ? false : true); /* toggle value */ + if (chain.isPreFetchMode() != initialPreFetchMode) { + fail(t, "get and test prefetch mode", + "unexpected result from setPreFetchMode() and isPreFetchMode()"); + } + + pass(t, "get and test prefetch mode") +}); /* Get and test prefetch mode */ + +// +// Test chain.isDevMode() +test('Get and test Dev mode', function(t) { + //err = DevMode(chain); + //console.log("return from DevModeTEst", err) + if (err = devMode(chain)) { + console.log("DevMode returned ", err); + fail(t, "get and test Dev mode: ", err); + } + else { + pass(t, "get and set Dev mode"); + } +}); /* Get and test Dev mode */ + +// +// Test chain.isSecurityEnabled() +test('is Security enabled', function(t) { + var incoming = chain.isSecurityEnabled(); + var expected = true; + + if (incoming != expected) { + console.log("chain isSecurityEnabled=" + incoming + " Expecting "+ expected); + fail(t, "is security enabled: unexpected result from chain.isSecurityEnabled()"); + } + pass(t, "is security enabled"); }); + +// +// Test peer class methods +test('Peer class methods', function(t) { + var peers = chain.getPeers(); + + if (!peers) { + fail(t, "Peer class methods: chain has no peers"); + } + + for (var i = 0; peers[i]; i++) { // For each peer + // + // Verify peer.chain points to original chain + var ch2 = peers[i].getChain(); + if (ch2 != chain) { + console.log("peers[%d]", i, peers[i]); + fail(t, "Peer class methods: Peer's chain does not point back to original chain"); + } + + var url = peers[i].getUrl(); + // console.log("peer url", url); + // This pattern test isn't bullet proof but good enough to test whether the URL of an active peer + // seems to be an actual URL. + if (!urlpattern.test(url)) { + console.log(url + " is not a valid URL"); + fail(t, "Peer class: peer.getUrl() returned invalid url: " + url); + } + } /* for each peer */ + + pass(t, "Peer class methods"); + +}); /* Peer class methods */ + +// +// Test chain.removePeer(). +// This must be the last test. +test.skip('Remove peer', function(t) { + // BLOCKED BY DEFECT fab-250. + // This test has executed only on a single peer network on my laptop, but is designed to work when + // multiple peers are in the chain. + // + console.log("Remove peer: rewrite this test when FAB-250 fix is available"); + fail(t, "Remove peer: blocked by issue FAB-250"); + + return; + var peers = chain.getPeers(); + if (!peers) { + fail(t, "Remove peer: chain has no peers"); + } + try { + for (var i = 0; peers[i]; i++) { // Remove all the peers + //console.log("Removing this peer: ", peers[i]); + peers[i].remove(); + } + } catch (err) { + t.fail("Remove peer: exception removing peer from chain"); + } + + // Verify no peers remain + peers = chain.getPeers(); + if (peers) { + fail(t, "Remove peer: chain has peers after peer.remove()"); + } + + pass(t, 'Remove peer'); +}); /* Remove peer */ diff --git a/sdk/node/test/unit/event-tests.js b/sdk/node/test/unit/event-tests.js index ad045b57ebf..178426642e6 100644 --- a/sdk/node/test/unit/event-tests.js +++ b/sdk/node/test/unit/event-tests.js @@ -18,51 +18,45 @@ var hfc = require('../..'); var test = require('tape'); var util = require('util'); var fs = require('fs'); +var tutil = require('test/unit/test-util.js'); // // Create a test chain // -var chain = hfc.newChain("testChain"); +var chain = tutil.getTestChain("testChain"); +chain.setDeployWaitTime(120); + +var goPath = process.env.GOPATH; +// Path to the local directory containing the chaincode project under $GOPATH +var testChaincodePath = "github.com/eventsender/"; +var absoluteTestChaincodePath = goPath + "/src/" + testChaincodePath; + // // Configure the test chain // -// Set the directory for the local file-based key value store, point to the -// address of the membership service, and add an associated peer node. -// -// If the "tlsca.cert" file exists then the client-sdk will -// try to connect to the member services using TLS. -// The "tlsca.cert" is supposed to contain the root certificate (in PEM format) -// to be used to authenticate the member services certificate. -// - -chain.setKeyValStore(hfc.newFileKeyValStore('/tmp/keyValStore')); -if (fs.existsSync("tlsca.cert")) { - chain.setMemberServicesUrl("grpcs://localhost:7054", fs.readFileSync('tlsca.cert')); -} else { - chain.setMemberServicesUrl("grpc://localhost:7054"); +if (tutil.tlsOn) { + var deployCert = tutil.caCert; + fs.createReadStream(tutil.caCert).pipe(fs.createWriteStream(absoluteTestChaincodePath + '/certificate.pem')); + if (tutil.caCert) { + var pem = fs.readFileSync(tutil.caCert); + console.log("tutil.caCertHost:", tutil.caCertHost); + if (tutil.caCertHost) { var eventGrpcOpts={ pem:pem, hostnameOverride: tutil.caCertHost} } + else { var eventGrpcOpts={ pem:pem } }; + } + console.log("Setting eventHubAddr address to grpcs://" + tutil.eventHubAddr); + chain.eventHubConnect("grpcs://" + tutil.eventHubAddr, eventGrpcOpts); +} +else { + console.log("Setting eventHubAddr address to grpc://" + tutil.eventHubAddr); + chain.eventHubConnect("grpc://" + tutil.eventHubAddr); } -chain.addPeer("grpc://localhost:7051"); -chain.eventHubConnect("localhost:7053"); process.on('exit', function (){ chain.eventHubDisconnect(); }); -// -// Set the chaincode deployment mode to either developent mode (user runs chaincode) -// or network mode (code package built and sent to the peer). -// - -var mode = process.env['DEPLOY_MODE']; -console.log("$DEPLOY_MODE: " + mode); -if (mode === 'dev') { - chain.setDevMode(true); -} else { - chain.setDevMode(false); -} - // // Configure test users // @@ -87,9 +81,6 @@ var test_user_Member1; // across multiple tests. // -// Path to the local directory containing the chaincode project under $GOPATH -var testChaincodePath = "github.com/eventsender/"; - // Chaincode hash that will be filled in by the deployment operation or // chaincode name that will be referenced in development mode. var testChaincodeName = "mycc5"; @@ -203,10 +194,11 @@ test('Deploy a chaincode by enrolled user', function (t) { // Function to trigger fcn: "init", // Arguments to the initializing function - args: [] + args: [], + certificatePath: deployCert }; - if (mode === 'dev') { + if (tutil.deployMode === 'dev') { // Name required for deploy in development mode deployRequest.chaincodeName = testChaincodeName; } else { diff --git a/sdk/node/test/unit/getChain.js b/sdk/node/test/unit/getChain.js new file mode 100644 index 00000000000..3332201c66f --- /dev/null +++ b/sdk/node/test/unit/getChain.js @@ -0,0 +1,95 @@ +// +// Run the getChain tests +// +var hfc = require('hfc'); +var test = require('tape'); +var util = require('util'); +var fs = require('fs'); +var tutil = require('test/unit/test-util.js'); + +function pass(t, msg) { + t.pass("Success: [" + msg + "]"); + t.end(); +} + +function fail(t, msg, err) { + t.fail("Failure: [" + msg + "]: [" + err + "]"); + t.end(err); +} + +function getChainTests(cb) { + console.log("getChainTests"); + var absentChain = "pizza crust"; + var existingChain = "testChain"; + + var newChainNames = ["Rottweiler", "Dachshund", "Beagle", "Collie", "Wire Haired Fox Terrier", + "Norwegian Elk Hound", "Blue Tick Hound", "Golden Retriever", "Greyhound"]; + var name = "____testChain" + var create0 = 0; + var create1 = 1; + var createF = false; + var createT = true; + var flags = [ 0, 1, false, true, create0, create1, createF, createT, 12]; // Define one newChainNames[] element per flag + + // Verify that fetch only existing chains when create flag is not specified + var ch = hfc.getChain(absentChain); + + if (ch) { + console.log("chain %s unexpectedly found", absentChain); + return cb(Error("Chain pizza crust unexpectedly found")); + } + + var T = Boolean(true) + hfc.getChain(existingChain, T); + ch = hfc.getChain(existingChain); + + if (!ch) { + console.log("chain " + existingChain + "expected but not found"); + return cb(Error("Chain expected but not found", existingChain)); + } + + + if (newChainNames.length != flags.length) { + return cb(Error("Test case flaw: flags.length != newChainNames.length ")) + } + + // + // Test getting existing chain using the different flags + var results = []; + for (var i = 0; i < flags.length; i++) { + results[i] = hfc.getChain(existingChain, flags[i]); + //console.log("results for " + i + " " + results[i]); + if (i > 0) { + if (results[i] != results[i-1]) { + return cb(Error("unexpected result[" + i + "] for existing chain " + existingChain + " and flag " + flags[i])); + } + } + } + + // + // Test non existing chain with various create flags + for (var i = 0; i < flags.length; i++) { + results[i] = hfc.getChain(newChainNames[i], flags[i]); + + if (flags[i] && results[i]) { /* Create flag specified and a chain is returned */ + continue; + } + if (!flags[i] && !results[i]) { /* create flag not specified and no chain returned */ + continue; + } + var s = "getChainTests: unexpected result for flag " + flags[i] + " name " + newChainNames[i]; + return cb(s); + } + return cb(); +} /* getChainTests() */ + +test('getChain tests', function (t) { + getChainTests(function(err) { + if (err) { + fail(t, "getChain tests", err); + // Exit the test script after a failure + } else { + pass(t, "getChain tests"); + } + }); +}); /* getChain tests */ diff --git a/sdk/node/test/unit/member-api.js b/sdk/node/test/unit/member-api.js new file mode 100644 index 00000000000..ffc3c9d478a --- /dev/null +++ b/sdk/node/test/unit/member-api.js @@ -0,0 +1,467 @@ +/** + * Copyright 2016 IBM + * + * 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. + */ +/** + * Licensed Materials - Property of IBM + * © Copyright IBM Corp. 2016 + */ + +/** + * Simple asset management use case where authentication is performed + * with the help of TCerts only (use-case 1) or attributes only (use-case 2).*/ + +var hfc = require('hfc'); +var test = require('tape'); +var util = require('util'); +var tutil = require('test/unit/test-util.js'); +var fs = require('fs'); + +// constants +var registrar = { + name: 'WebAppAdmin', + secret: 'DJY27pEnl16d' + //name: 'alice', + //secret: 'CMS10pEQlB16' +}; + +var badRegistrar = { + name : 'test_user0', + secret: 'MS9qrN8hFjlE' +}; + + +// +// Create and configure a test chain +// +var chain = tutil.getTestChain("testChain"); + +function arraysEqual(a, b) { + if (a === b) return true; + if (a == null || b == null) return false; + if (a.length != b.length) return false; + + // If you don't care about the order of the elements inside + // the array, you should sort both arrays here. + + for (var i = 0; i < a.length; ++i) { + if (a[i] !== b[i]) return false; + } + return true; +} + +/** + * Get the user and if not enrolled, register and enroll the user. + */ +function getUser(name, cb) { + // setRegistrar is presumed to have been done previously + // the second test in the below sequence sets the registrar + chain.getUser(name, function (err, user) { + //console.log(name + ".getAffiliation() = ", user.getAffiliation()); + //console.log(name + "user.getRoles()", user.getRoles()); + if (err) return cb(err); + if (user.isEnrolled()) return cb(null, user); + // User is not enrolled yet, so perform both registration and enrollment + var registrationRequest = { + enrollmentID: name, + affiliation: "bank_c" + }; + user.registerAndEnroll(registrationRequest, function (err) { + if (err) cb(err, null) + cb(null, user) + console.log("getName enrolled " + user.getName()); + console.log("getChain.getName " + user.getChain().getName); + console.log("getAffiliation " + user.getAffiliation()); + console.log("getChain " + user.getChain()); + console.log("getEnrollment" + user.getEnrollment()); + console.log("getMemberServices ", user.getMemberServices()); + console.log("getRoles", user.getRoles()); + console.log("getTCertBatchSize", user.getTCertBatchSize()); + //console.log("user.getRoles()", user.getRoles()); + }); + }); +} + +function pass(t, msg) { + t.pass("Success: [" + msg + "]"); + t.end(); +} + +function fail(t, msg, err) { + t.fail("Failure: [" + msg + "]: [" + err + "]"); + t.end(err); +} + + +//test if a non-register role user can be enrolled and set as registrar successfully +// Omitted this test due to FAB-152 fixed as "can't/won't fix" +test.skip('-Ve Test Enroll the registrar', function (t) { + + // Get the non-webappadmin member details + chain.getUser(badRegistrar.name, function (err, user) { + if (err) { + fail(t, "-ve Test get registrar", err); + // Exit the test script after a failure + //process.exit(1); + } + user.enroll(badRegistrar.secret, function (err) { + if (err) { + fail(t, "-ve Test enroll registrar", err); + // Exit the test script after a failure + //process.exit(1); + } + try { + //chain.setRegistrar(user); + console.log(user) + fail(t, "How can I set test_user0 as registrar "); + } catch (e) { + console.log(e); + } + }); + }); +}); + + + +test('Enroll the registrar', function (t) { + // Get the WebAppAdmin member + chain.getUser(registrar.name, function (err, user) { + if (err) { + fail(t, "get registrar", err); + // Exit the test script after a failure + process.exit(1); + } + // Enroll the WebAppAdmin user with the certificate authority using + // the one time password hard coded inside the membersrvc.yaml. + user.enroll(registrar.secret, function (err) { + if (err) { + fail(t, "enroll registrar", err); + // Exit the test script after a failure + process.exit(1); + } + chain.setRegistrar(user); + //console.log(user) + pass(t, "enrolled " + registrar.name); + }); + }); +}); + +//test enroll Alice +test('Enroll Alice', function (t) { + getUser('Alice', function (err, user) { + if (err) { + fail(t, "enroll Alice", err); + // Exit the test script after a failure + process.exit(1); + } + alice = user; + alice.getUserCert(null, function (err, userCert) { + if (err) { + fail(t, "Failed getting Application certificate."); + // Exit the test script after a failure + process.exit(1); + } + alicesCert = userCert; + pass(t, "enroll Alice"); + }) + }); +}); + +//test isRegistered() API +test('isRegistered', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("After getUser ", user) + alice = user; + //console.log("from isRegistered: 2 %s", alice) + if (alice.isRegistered()) { + //console.log(" Alice is isRegistered true ") + pass(t, "isRegistered "); + } else { + console.log("Alice isRegistered false") + fail(t, "isRegistered "); + } + }) +}); + +//isRegisterd() API -ve test +test('isRegistered -Ve', function (t) { + //var XYZ123 = user; + //console.log("from isRegistered: 2 %s", alice) + chain.getUser("AAA12345", function (err, user) { + if (err) { + //console.log("AAA1234 user not found ") + fail(t, "isRegistered -Ve"); + } + //console.log("XYZ1234 user found ", user) + var XYZ1234 = user + if (XYZ1234.isRegistered()) { + console.log("How can this user be registered??? ", user) + fail(t, "isRegistered -Ve"); + } else { + //console.log("XYZ1234 isRegistered false ") + pass(t, "isRegistered -Ve"); + } + }); +}); + +//test chain.getRegistrar() API +test('getRegistrar', function (t) { + mem = chain.getRegistrar() + if (mem.getName() == "WebAppAdmin") { + console.log("from getRegistrar: ", mem) + pass(t, "getRegistrar"); + } else { + fail(t, "getRegistrar"); + } + +}); + +//test getAffiliation API +test.skip('getAffiliation', function (t) { + + console.log("getAffiliation: blocked by issue FAB-218 "); + + getUser('Alice1', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice "); + alice = user; + aff = alice.getAffiliation() + if (aff != null) { + console.log("result from getAffiliation ", aff) + pass(t, "getAffiliation"); + } else { + fail(t, "getAffiliaton", aff); + } + }) +}); + + +//test setAffiliation() API +test('setAffiliation', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice") + alice = user; + console.log("Setting affiliation to bank_b") + alice.setAffiliation("bank_b") + aff = alice.getAffiliation() + if ( aff.toString().trim() === "bank_b") { + pass(t, "setAffiliation"); + } else { + fail(t, "setAffiliation"); + } + }) +}); + + +//test getEnrollment() API +test('getEnrollment', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user; + enr = alice.getEnrollment() + if ( enr != null) { + pass(t, "getEnrollment data: ", enr); + } else { + fail(t, "getEnrollment"); + } + }) +}); + + +//test getName() +test('getName', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user; + name = alice.getName() + if ( name == "Alice") { + console.log("result from getName ", name) + pass(t, "getName"); + } else { + fail(t, "getName", name); + } + }) +}); + +//test getNextTCert() API +test.skip('getNextTCert', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice") + alice = user; + alice.getNextTCert(['role'],function(err, tcert) { + if (err) { + fail(t, "getNextTCert", tcert); + //continues to next test case after throwing error + throw err; + } else { + //console.log("getNextTcert passed", tcert) + pass(t, "getNextTCert"); + + } + }) + }) +}); + + +//test getNextTCert() API +test.skip('getNextTCertNegativeTest', function (t) { + console.log("getNextTCertNegativeTest: blocked by issue FAB-219"); + getUser('Alice', function (err, user) { + if (err) return cb(err); + alice = user + alice.getNextTCert(['fail'],function(err, tcert) { + if (err) { + console.log("We want this API to fail, since we are passing invalid attribute") + pass(t, "getNextTCertNegativeTest"); + //throw err; + } else { + console.log("GetNextTCertNegativeTest: getting cert for invalid attribute", tcert) + fail(t, "getNextTCertNegativeTest"); + } + }) + }) +}); + +// test getUserCert() API +test.skip('getUserCertTest', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user + alice.getUserCert(['role'], function(err, ucert) { + if (err) { + fail(t, "UserCertTest", ucert); + throw err; + } else { + pass(t, "UserCertTest"); + //console.log("UserCertTest passed", ucert) + } + }) + }) +}); + + +//test getRoles() API +test.skip('getRoles', function (t) { + console.log("getRoles: blocked by issue FAB-217"); + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + currRole = user.getRoles(); + if (currRole){ + pass(t, "getRoles"); + } else { + fail(t, "getRoles"); + } + }); +}); + +//test get/setTCertBatchSize() API +test('getTCertBatchSize', function (t) { + bSize = chain.getTCertBatchSize() + + chain.setTCertBatchSize(1000) + + bSize = chain.getTCertBatchSize() + if (bSize == 1000) { + pass(t, "getTCertBatchSize after setTCertBatchSize: ", bSize); + } else { + console.log("from test TCertBatchSize batchSize %d is not a expected as 1000", bSize) + fail(t, "getTCertBatchSize after setTCertBatchSize fails: ", bSize); + } +}); + + +//test toString() API +test('toString', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user + stateAsString = alice.toString() + if (stateAsString.slice(0,38) === '{"name":"Alice","affiliation":"bank_b"') { + stateKeys = JSON.parse(alice.toString()) + expectedKeys = [ 'name', 'affiliation', 'enrollmentSecret', 'enrollment' ] + if (arraysEqual(Object.keys(stateKeys), expectedKeys)) { + console.log("PASSED") + pass(t, "StringToObect"); + } else { + console.log("FALIED") + fail(t, "StringToObject") + } + } else { + fail(t, "ObjectToString"); + } + + }) +}); + + +//test newTransactionContext() API +test.skip('newTransactionContext', function (t) { + //console.log("from newTransactionContext: 1") + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user + alice.getNextTCert(['role'],function(err, tcert) { + if (err) return cb(err); + var nTxContext = alice.newTransactionContext(tcert); + if (nTxContext != null) { + //console.log("from newTransactionContext: ", nTxContext) + pass(t, "newTransactionContext"); + } else { + console.log("from newTransactionContext: ", nTxContext) + fail(t, "newTransactionContext", nTxContext); + } + }) + }) +}); + + +//test saveState() API +test('saveState', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user + alice.saveState(function (err) { + if (err) { + fail(t, "saveState", err); + } + pass(t, "saveState"); + }) + }) +}); + +//test restoreState() API +test('restoreState', function (t) { + getUser('Alice', function (err, user) { + if (err) return cb(err); + //console.log("got user Alice ") + alice = user + alice.restoreState( function (err) { + if (err) { + fail(t, "restoreState: User state could not be restored", err); + return cb(err); + } + pass(t, "restoreState"); + }) + }) +}); diff --git a/sdk/node/test/unit/registrar.js b/sdk/node/test/unit/registrar.js index 726b3f33c42..7817fa9ea70 100644 --- a/sdk/node/test/unit/registrar.js +++ b/sdk/node/test/unit/registrar.js @@ -13,18 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/** - * Licensed Materials - Property of IBM - * © Copyright IBM Corp. 2016 - */ -var hfc = require('../..'); +var hfc = require('hfc'); var test = require('tape'); var util = require('util'); var fs = require('fs'); +var tutil = require('test/unit/test-util.js'); -var keyValStorePath = "/tmp/keyValStore"; +var keyValStorePath = "/tmp/keyValStore" var keyValStorePath2 = keyValStorePath + "2"; +var keyValStorePath3 = keyValStorePath + "3"; // // Run the registrar test @@ -42,7 +40,7 @@ test('registrar test', function (t) { }); // -// Run the registrar test +// Run the enroll again test // test('enroll again', function (t) { enrollAgain(function(err) { @@ -64,9 +62,8 @@ function registrarTest(cb) { // // Create and configure the test chain // - chain = hfc.newChain("testChain"); - chain.setKeyValStore(hfc.newFileKeyValStore(keyValStorePath)); - chain.setMemberServicesUrl("grpc://localhost:7054"); + chain = tutil.getTestChain("testChain"); + chain.enroll("admin", "Xurw3yU9zI0l", function (err, user) { if (err) return cb(err); admin = user; @@ -91,7 +88,7 @@ function registrarTestStep3(cb) { console.log("registrarTest: STEP 3"); var attrs; attrs = [{name:'foo',value:'bar'}]; - registerAndEnroll("webUser", "client", attrs, null, chain, function(err, user) { + registerThenEnroll("webUser", "client", attrs, webAdmin, chain, function(err, user) { if (err) return cb(err); webUser = user; registrarTestStep4(cb); @@ -152,6 +149,47 @@ function registerAndEnroll(name, role, attributes, registrar, chain, cb) { chain.registerAndEnroll(registrationRequest,cb); } +// Register, then enroll user 'name' with role 'role' with registrar info 'registrar' for chain 'chain' +// This drives standalone chain.register() and chain.enroll() functions +function registerThenEnroll(name, role, attributes, registrar, chain, cb) { + console.log("registerThenEnroll %s",name); + // User is not enrolled yet, so perform both registration and enrollment + var registrationRequest = { + roles: [ role ], + enrollmentID: name, + affiliation: "bank_a", + attributes: attributes, + registrar: registrar + }; + // Test chain.register() + chain.register(registrationRequest, function(err, enrollmentPassword) { + if (err) { + console.log("registerThenEnroll: couldn't register name ", err) + return cb(err); + } + // Fetch name's member so we can set the Registrar + chain.getMember(registrar, function(err, member) { + if (err) { + console.log("could not get member for ", name, err); + return cb(err); + } + //console.log("I did find this member", member) + chain.setRegistrar(member); + }); + + // Test chain.enroll using password returned by chain.register() + chain.enroll(name, enrollmentPassword, function(err, member) { + //console.log("am I defined?", cb) /* yes, defined */ + if (err) { + console.log("registerThenEnroll: enroll failed", err); + return cb(err); + } + //console.log("registerThenEnroll: enroll succeeded for registration request =", registrationRequest); + return cb(err, member); + }); + }); /* end chain.register */ +} /* registerThenEnroll */ + // Force the client to try to enroll admin again by creating a different chain // This should fail. function enrollAgain(cb) { @@ -162,9 +200,12 @@ function enrollAgain(cb) { // This is necessary to start without a local cache. // fs.renameSync(keyValStorePath,keyValStorePath2); - var chain = hfc.newChain("testChain2"); - chain.setKeyValStore(hfc.newFileKeyValStore('/tmp/keyValStore')); - chain.setMemberServicesUrl("grpc://localhost:7054"); + var chain = tutil.getTestChain("testChain2"); + + //console.log("enrollAgain: chain.getDeployWaitTime() = ", x) + //var chain2 = hfc.newChain(42) + //console.log("enrollAgain: here's my chain: %v", chain) + chain.enroll("admin", "Xurw3yU9zI0l", function (err, admin) { rmdir(keyValStorePath); fs.renameSync(keyValStorePath2,keyValStorePath); diff --git a/sdk/node/test/unit/test-util.js b/sdk/node/test/unit/test-util.js new file mode 100644 index 00000000000..76084c95195 --- /dev/null +++ b/sdk/node/test/unit/test-util.js @@ -0,0 +1,133 @@ +/** + * Copyright IBM Corp. 2016 All Rights Reserved. + * + * 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. + */ + +var hfc = require('hfc'); +var util = require('util'); +var fs = require('fs'); + +//Set defaults, if not set +var deployMode = process.env.SDK_DEPLOY_MODE + ? process.env.SDK_DEPLOY_MODE + : "net" ; +var keyStore = process.env.SDK_KEYSTORE + ? process.env.SDK_KEYSTORE + : "/tmp/keyValStore" ; +var caCert = process.env.SDK_CA_CERT_FILE + ? process.env.SDK_CA_CERT_FILE + : "tlsca.cert" ; +var caCertHost = process.env.SDK_CA_CERT_HOST + ? process.env.SDK_CA_CERT_HOST + : "" ; +var caAddr = process.env.SDK_MEMBERSRVC_ADDRESS + ? process.env.SDK_MEMBERSRVC_ADDRESS + : "localhost:7054" ; +var peerAddr0 = process.env.SDK_PEER_ADDRESS + ? process.env.SDK_PEER_ADDRESS + : "localhost:7051" ; +var eventHubAddr = process.env.SDK_EVENTHUB_ADDRESS + ? process.env.SDK_EVENTHUB_ADDRESS + : "localhost:7053" ; +var tlsOn = ( process.env.SDK_TLS == null ) + ? Boolean(false) + : Boolean(parseInt(process.env.SDK_TLS)); +var deployWait = process.env.SDK_DEPLOYWAIT + ? process.env.SDK_DEPLOYWAIT + : 20; +var invokeWait = process.env.SDK_INVOKEWAIT + ? process.env.SDK_INVOKEWAIT + : 5; +var ciphers = process.env.GRPC_SSL_CIPHER_SUITES + +var hsbnDns="zone.blockchain.ibm.com"; +var hsbnCertPath="/root/certificate.pem"; +var bluemixDns="us.blockchain.ibm.com"; +var bluemixCertPath="/certs/blockchain-cert.pem"; + +console.log("deployMode :"+deployMode ); +console.log("keyStore :"+keyStore ); +console.log("caCert :"+caCert ); +console.log("caAddr :"+caAddr ); +console.log("peerAddr0 :"+peerAddr0 ); +console.log("tlsOn :"+tlsOn ); +console.log("deployWait :"+deployWait ); +console.log("invokeWait :"+invokeWait ); +console.log("ciphers :"+ciphers ); +console.log("hostOverride :"+caCertHost ); + +function getTestChain(name) { + name = name || "testChain"; + var chain = hfc.newChain(name); + + chain.setKeyValStore(hfc.newFileKeyValStore(keyStore)); + if (tlsOn) { + if (fs.existsSync(caCert)) { + var pem = fs.readFileSync(caCert); + console.log("Setting cert to " + caCert); + + if (caCertHost) { var grpcOpts={ pem:pem, hostnameOverride: caCertHost } } + else { var grpcOpts={ pem:pem } }; + + console.log("Setting membersrvc address to grpcs://" + caAddr); + chain.setMemberServicesUrl("grpcs://" + caAddr, grpcOpts); + + console.log("Setting peer address to grpcs://" + peerAddr0); + chain.addPeer("grpcs://" + peerAddr0, grpcOpts); + +// console.log("Setting eventHub address to grpcs://" + eventHubAddr); +// chain.eventHubConnect("grpcs://" + eventHubAddr, grpcOpts); + + } else { + console.log("TLS was requested but " + caCert + " not found.") + process.exit(1) + } + } else { + console.log("Setting membersrvc address to grpc://" + caAddr); + console.log("Setting peer address to grpc://" + peerAddr0); +// console.log("Setting eventHub address to grpc://" + eventHubAddr); + chain.setMemberServicesUrl("grpc://" + caAddr); + chain.addPeer("grpc://" + peerAddr0); +// chain.eventHubConnect("grpc://" + eventHubAddr); + } + // + // Set the chaincode deployment mode to either developent mode (user runs chaincode) + // or network mode (code package built and sent to the peer). + console.log("$SDK_DEPLOY_MODE: " + deployMode); + if (deployMode === 'dev') { + chain.setDevMode(true); + } else { + chain.setDevMode(false); + } + chain.setDeployWaitTime(parseInt(deployWait)); + chain.setInvokeWaitTime(parseInt(invokeWait)); + return chain; +} + +exports.getTestChain = getTestChain; +exports.deployMode = deployMode +exports.keyStore = keyStore +exports.caCert = caCert +exports.caAddr = caAddr +exports.peerAddr0 = peerAddr0 +exports.tlsOn = tlsOn +exports.deployWait = deployWait +exports.invokeWait = invokeWait +exports.ciphers = ciphers +exports.caCertHost = caCertHost +exports.eventHubAddr = eventHubAddr +exports.hsbnDns = hsbnDns; +exports.hsbnCertPath = hsbnCertPath; +exports.bluemixDns = bluemixDns; +exports.bluemixCertPath = bluemixCertPath; From 4745512c293373ed631b5a7f1792977285d9627c Mon Sep 17 00:00:00 2001 From: Gregory Haskins Date: Mon, 3 Oct 2016 18:28:24 -0400 Subject: [PATCH 16/18] Prepare for v0.6.2 development Change-Id: Ib00779035e9c05b7c077de492382dba3f8e73828 Signed-off-by: Gregory Haskins --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 35a0ba0117d..fd2529dc567 100644 --- a/Makefile +++ b/Makefile @@ -37,8 +37,8 @@ # - dist-clean - superset of 'clean' that also removes persistent state PROJECT_NAME = hyperledger/fabric -BASE_VERSION = 0.6.1-preview -IS_RELEASE = true +BASE_VERSION = 0.6.2-preview +IS_RELEASE = false ifneq ($(IS_RELEASE),true) EXTRA_VERSION ?= snapshot-$(shell git rev-parse --short HEAD) From c8205c6f38b405465de07f1099fd14213ba182e1 Mon Sep 17 00:00:00 2001 From: rameshbabu79 Date: Sun, 16 Oct 2016 22:59:30 -0400 Subject: [PATCH 17/18] FAB-598: fixed nodesdk doc broken links fixed nodesdk doc broken links and added permalinks and admonition in mkdocs.yml file. These changes improves user experience while using documentation through readthedocs. Change-Id: Ic24782898c70732c99565c72487973c8fbce8704 Signed-off-by: rameshthoomu --- docs/Setup/NodeSDK-setup.md | 3 +-- docs/index.md | 16 +++++++--------- docs/nodeSDK/app-developer-env-setup.md | 2 +- docs/nodeSDK/node-sdk-guide.md | 4 ++-- mkdocs.yml | 21 ++++++++++++--------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/Setup/NodeSDK-setup.md b/docs/Setup/NodeSDK-setup.md index db94428933c..8226cf54f96 100755 --- a/docs/Setup/NodeSDK-setup.md +++ b/docs/Setup/NodeSDK-setup.md @@ -24,5 +24,4 @@ See [Hyperledger fabric Node.js client SDK](../nodeSDK/node-sdk-guide.md) for mo ## Hyperledger fabric network First, you'll want to have a running peer node and member services. The -instructions for setting up a network are -[here](Network-setup.md). You may also use the [self contained environment](../nodeSDK/node-sdk-self-contained.md) that provides the network. +instructions for setting up a network are [here](Network-setup.md). You may also use the [Fabric-starter-kit](../starter/fabric-starter-kit.md) that provides the network. diff --git a/docs/index.md b/docs/index.md index 6d4d23ba778..8e7630a6bef 100755 --- a/docs/index.md +++ b/docs/index.md @@ -70,15 +70,13 @@ in this documentation, please use Below, you'll find the following sections: -- [Getting started](#getting-started) -- [Quickstart](#quickstart-documentation) -- [Developer guides](#developer-guides) - - - [Fabric developer's guide](#fabric-developer-guide) - - [Chaincode developer's guide](#chaincode-developer-guide) - - [API developer's guide](#api-developer-guide) - -- [Operations guide](#operations-guide) +* [Getting started](#getting-started) +* [Quickstart](#quickstart-documentation) +* [Developer guides](#developer-guides) + * [Fabric developer's guide](#fabric-developer-guide) + * [Chaincode developer's guide](#chaincode-developer-guide) + * [API developer's guide](#api-developer-guide) +* [Operations guide](#operations-guide) # Getting started diff --git a/docs/nodeSDK/app-developer-env-setup.md b/docs/nodeSDK/app-developer-env-setup.md index 004db12b8b3..ef3ea6ae8cd 100755 --- a/docs/nodeSDK/app-developer-env-setup.md +++ b/docs/nodeSDK/app-developer-env-setup.md @@ -35,7 +35,7 @@ make doc ``` - * To build the reference documentation in the [Self Contained Node.js Environment](node-sdk-self-contained.md): + * To build the reference documentation in the [Fabric-starter-kit](../starter/fabric-starter-kit.md) ``` docker exec -it nodesdk /bin/bash diff --git a/docs/nodeSDK/node-sdk-guide.md b/docs/nodeSDK/node-sdk-guide.md index e47079757e6..146f7463cae 100755 --- a/docs/nodeSDK/node-sdk-guide.md +++ b/docs/nodeSDK/node-sdk-guide.md @@ -10,7 +10,7 @@ The Hyperledger fabric Client (HFC) SDK for Node.js provides a powerful and easy #### Development Environment Choices -* *Recommended:* [Self Contained Node.js Environment](node-sdk-self-contained.md) uses pre-built docker images for the Node.js client application interacting with Hyperledger fabric blockchain. This environment may suffice for a majority of Node.js application developers. The environment contains a built-in standalone sample ready to go. +* *Recommended:* [Fabric-starter-kit](../starter/fabric-starter-kit.md) uses pre-built docker images for the Node.js client application interacting with Hyperledger fabric blockchain. This environment may suffice for a majority of Node.js application developers. The environment contains a built-in standalone sample ready to go. * [Full Hyperledger fabric development environment](app-developer-env-setup.md) on how to set up an environment for developing chaincode and applications. @@ -29,4 +29,4 @@ The Hyperledger fabric Client (HFC) SDK for Node.js provides a powerful and easy * To build the reference documentation for the Node.js client SDK APIs follow the instructions [here](app-developer-env-setup.md). - * To learn more about chaincode, see [Writing, Building, and Running Chaincode in a Development Environment](../Setup/Chaincode-setup.md). \ No newline at end of file + * To learn more about chaincode, see [Writing, Building, and Running Chaincode in a Development Environment](../Setup/Chaincode-setup.md). diff --git a/mkdocs.yml b/mkdocs.yml index e98593a5668..3fc6565fc3c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,7 @@ site_name: Hyperledger Fabric site_url: http://hyperledger-fabric.readthedocs.io theme: readthedocs -repo_url: http://gerrit.hyperledger.org/r/fabric +repo_url: https://github.com/hyperledger/fabric.git site_description: 'Welcome to the Hyperledger fabric documentation' pages: @@ -13,7 +13,7 @@ pages: - Starter Kit: - Starter Kit: starter/fabric-starter-kit.md -- Installation and setup: +- Installation and Setup: - Chaincode or Application Developer Setup: Setup/Chaincode-setup.md - Java Chaincode Setup: Setup/JAVAChaincode.md - Fabric Network Setup: Setup/Network-setup.md @@ -22,7 +22,7 @@ pages: - TLS Setup: Setup/TLSSetup.md - Logging: Setup/logging-control.md -- APIs: +- API's: - Chaincode APIs: API/ChaincodeAPI.md - Core API: API/CoreAPI.md - CA API: API/MemberServicesAPI.md @@ -31,18 +31,18 @@ pages: - Fabric Developer: - v1.0 Preview: abstract_v1.md - Contributing: CONTRIBUTING.md - - Getting an Account: Gerrit/lf-account.md - - Gerrit: Gerrit/gerrit.md + - Maintainers: MAINTAINERS.md - Fabric Developer Setup: dev-setup/devenv.md - Building Fabric: dev-setup/build.md - - Best Practices: Gerrit/best-practices.md - - Maintainers: MAINTAINERS.md + - Getting an Account: Gerrit/lf-account.md + - Gerrit: Gerrit/gerrit.md - Reviewing: Gerrit/reviewing.md - Changes: Gerrit/changes.md - - Style guides: + - Best Practices: Gerrit/best-practices.md +- Go Style Guides: - Golang: Style-guides/go-style.md -- FAQ: +- FAQ's: - ChainCodeFAQ: FAQ/chaincode_FAQ.md - ConfidentialityFAQ: FAQ/confidentiality_FAQ.md - ConsensusFAQ: FAQ/consensus_FAQ.md @@ -63,6 +63,9 @@ pages: - Sample-web-app: nodeSDK/sample-web-app.md markdown_extensions: + - toc: + permalink: true + - admonition - extra - tables - toc From 8ffaebbe9b5c0ddd53ff9c5aa7fcb30214e2c9c6 Mon Sep 17 00:00:00 2001 From: "Mr. Angry" Date: Mon, 17 Oct 2016 11:39:08 -0400 Subject: [PATCH 18/18] Updating package.json for NPM Publish Updating package.json to update the hfc version to 0.6.3 in order to publish the new package to NPM. Change-Id: I13a45ee0aabf9157a4c25a1f6e79b58ccf580213 Signed-off-by: Anna D Derbakova --- sdk/node/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/node/package.json b/sdk/node/package.json index e38bb72c072..b2d6fb526a1 100644 --- a/sdk/node/package.json +++ b/sdk/node/package.json @@ -1,6 +1,6 @@ { "name": "hfc", - "version": "0.6.2", + "version": "0.6.3", "description": "The Hyperledger Fabric Client SDK (HFC) provides a powerful and easy to use API to interact with a Hyperledger Fabric blockchain.", "keywords": [ "hfc",

    _t^_vexf#;l`MN*3XegljWn~xZdXX_y%R4` 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