mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-21 00:55:10 +00:00
Merge "[FAB-7160] Samples - readme sample commands"
This commit is contained in:
commit
cd18887f4b
7 changed files with 78 additions and 64 deletions
|
|
@ -108,7 +108,7 @@ cd fabric-samples/balance-transfer
|
||||||
"success": true,
|
"success": true,
|
||||||
"secret": "RaxhMgevgJcm",
|
"secret": "RaxhMgevgJcm",
|
||||||
"message": "Jim enrolled Successfully",
|
"message": "Jim enrolled Successfully",
|
||||||
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI"
|
"token": "<put JSON Web Token here>"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ The response contains the success/failure status, an **enrollment Secret** and a
|
||||||
```
|
```
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
http://localhost:4000/channels \
|
http://localhost:4000/channels \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
"channelName":"mychannel",
|
"channelName":"mychannel",
|
||||||
|
|
@ -134,7 +134,7 @@ Please note that the Header **authorization** must contain the JWT returned from
|
||||||
```
|
```
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
http://localhost:4000/channels/mychannel/peers \
|
http://localhost:4000/channels/mychannel/peers \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
"peers": ["peer0.org1.example.com","peer1.org1.example.com"]
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"]
|
||||||
|
|
@ -145,30 +145,30 @@ curl -s -X POST \
|
||||||
```
|
```
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
http://localhost:4000/chaincodes \
|
http://localhost:4000/chaincodes \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
|
||||||
"chaincodeName":"mycc",
|
"chaincodeName":"mycc",
|
||||||
"chaincodePath":"github.com/example_cc",
|
"chaincodePath":"github.com/example_cc/go",
|
||||||
"chaincodeType": "golang",
|
"chaincodeType": "golang",
|
||||||
"chaincodeVersion":"v0"
|
"chaincodeVersion":"v0"
|
||||||
}'
|
}'
|
||||||
```
|
```
|
||||||
**NOTE:** *chaincodeType* must be set to **node** when node.js chaincode is used and *chaincodePath* must be set to the location of the node.js chaincode.
|
**NOTE:** *chaincodeType* must be set to **node** when node.js chaincode is used and *chaincodePath* must be set to the location of the node.js chaincode. Also put in the $PWD
|
||||||
```
|
```
|
||||||
ex:
|
ex:
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
http://localhost:4000/chaincodes \
|
http://localhost:4000/chaincodes \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d "{
|
-d '{
|
||||||
\"peers\": [\"peer0.org1.example.com\",\"peer1.org1.example.com\"],
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
|
||||||
\"chaincodeName\":\"mycc\",
|
"chaincodeName":"mycc",
|
||||||
\"chaincodePath\":\"$PWD/artifacts/src/github.com/example_cc/node\",
|
"chaincodePath":"$PWD/artifacts/src/github.com/example_cc/node",
|
||||||
\"chaincodeType\": \"node\",
|
"chaincodeType": "node",
|
||||||
\"chaincodeVersion\":\"v0\"
|
"chaincodeVersion":"v0"
|
||||||
}"
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Instantiate chaincode
|
### Instantiate chaincode
|
||||||
|
|
@ -176,9 +176,10 @@ curl -s -X POST \
|
||||||
```
|
```
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
http://localhost:4000/channels/mychannel/chaincodes \
|
http://localhost:4000/channels/mychannel/chaincodes \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
|
||||||
"chaincodeName":"mycc",
|
"chaincodeName":"mycc",
|
||||||
"chaincodeVersion":"v0",
|
"chaincodeVersion":"v0",
|
||||||
"chaincodeType": "golang",
|
"chaincodeType": "golang",
|
||||||
|
|
@ -192,9 +193,10 @@ curl -s -X POST \
|
||||||
```
|
```
|
||||||
curl -s -X POST \
|
curl -s -X POST \
|
||||||
http://localhost:4000/channels/mychannel/chaincodes/mycc \
|
http://localhost:4000/channels/mychannel/chaincodes/mycc \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
|
||||||
"fcn":"move",
|
"fcn":"move",
|
||||||
"args":["a","b","10"]
|
"args":["a","b","10"]
|
||||||
}'
|
}'
|
||||||
|
|
@ -206,7 +208,7 @@ curl -s -X POST \
|
||||||
```
|
```
|
||||||
curl -s -X GET \
|
curl -s -X GET \
|
||||||
"http://localhost:4000/channels/mychannel/chaincodes/mycc?peer=peer0.org1.example.com&fcn=query&args=%5B%22a%22%5D" \
|
"http://localhost:4000/channels/mychannel/chaincodes/mycc?peer=peer0.org1.example.com&fcn=query&args=%5B%22a%22%5D" \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -215,18 +217,18 @@ curl -s -X GET \
|
||||||
```
|
```
|
||||||
curl -s -X GET \
|
curl -s -X GET \
|
||||||
"http://localhost:4000/channels/mychannel/blocks/1?peer=peer0.org1.example.com" \
|
"http://localhost:4000/channels/mychannel/blocks/1?peer=peer0.org1.example.com" \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Query Transaction by TransactionID
|
### Query Transaction by TransactionID
|
||||||
|
|
||||||
```
|
```
|
||||||
curl -s -X GET http://localhost:4000/channels/mychannel/transactions/TRX_ID?peer=peer0.org1.example.com \
|
curl -s -X GET http://localhost:4000/channels/mychannel/transactions/<put transaction id here>?peer=peer0.org1.example.com \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
**NOTE**: Here the TRX_ID can be from any previous invoke transaction, see results of the invoke request, will look something like `8a95b1794cb17e7772164c3f1292f8410fcfdc1943955a35c9764a21fcd1d1b3`.
|
**NOTE**: The transaction id can be from any previous invoke transaction, see results of the invoke request, will look something like `8a95b1794cb17e7772164c3f1292f8410fcfdc1943955a35c9764a21fcd1d1b3`.
|
||||||
|
|
||||||
|
|
||||||
### Query ChainInfo
|
### Query ChainInfo
|
||||||
|
|
@ -234,7 +236,7 @@ curl -s -X GET http://localhost:4000/channels/mychannel/transactions/TRX_ID?peer
|
||||||
```
|
```
|
||||||
curl -s -X GET \
|
curl -s -X GET \
|
||||||
"http://localhost:4000/channels/mychannel?peer=peer0.org1.example.com" \
|
"http://localhost:4000/channels/mychannel?peer=peer0.org1.example.com" \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -243,7 +245,7 @@ curl -s -X GET \
|
||||||
```
|
```
|
||||||
curl -s -X GET \
|
curl -s -X GET \
|
||||||
"http://localhost:4000/chaincodes?peer=peer0.org1.example.com&type=installed" \
|
"http://localhost:4000/chaincodes?peer=peer0.org1.example.com&type=installed" \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -252,7 +254,7 @@ curl -s -X GET \
|
||||||
```
|
```
|
||||||
curl -s -X GET \
|
curl -s -X GET \
|
||||||
"http://localhost:4000/chaincodes?peer=peer0.org1.example.com&type=instantiated" \
|
"http://localhost:4000/chaincodes?peer=peer0.org1.example.com&type=instantiated" \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -261,7 +263,7 @@ curl -s -X GET \
|
||||||
```
|
```
|
||||||
curl -s -X GET \
|
curl -s -X GET \
|
||||||
"http://localhost:4000/channels?peer=peer0.org1.example.com" \
|
"http://localhost:4000/channels?peer=peer0.org1.example.com" \
|
||||||
-H "authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTQ4NjU1OTEsInVzZXJuYW1lIjoiSmltIiwib3JnTmFtZSI6Im9yZzEiLCJpYXQiOjE0OTQ4NjE5OTF9.yWaJhFDuTvMQRaZIqg20Is5t-JJ_1BP58yrNLOKxtNI" \
|
-H "authorization: Bearer <put JSON Web Token here>" \
|
||||||
-H "content-type: application/json"
|
-H "content-type: application/json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -126,11 +126,13 @@ app.post('/users', async function(req, res) {
|
||||||
orgName: orgName
|
orgName: orgName
|
||||||
}, app.get('secret'));
|
}, app.get('secret'));
|
||||||
let response = await helper.getRegisteredUser(username, orgName, true);
|
let response = await helper.getRegisteredUser(username, orgName, true);
|
||||||
logger.debug('Successfully returned from registering the username %s for organization %s',username,orgName);
|
logger.debug('-- returned from registering the username %s for organization %s',username,orgName);
|
||||||
if (response && typeof response !== 'string') {
|
if (response && typeof response !== 'string') {
|
||||||
|
logger.debug('Successfully registered the username %s for organization %s',username,orgName);
|
||||||
response.token = token;
|
response.token = token;
|
||||||
res.json(response);
|
res.json(response);
|
||||||
} else {
|
} else {
|
||||||
|
logger.debug('Failed to register the username %s for organization %s with::%s',username,orgName,response);
|
||||||
res.json({success: false, message: response});
|
res.json({success: false, message: response});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -215,12 +217,14 @@ app.post('/chaincodes', async function(req, res) {
|
||||||
// Instantiate chaincode on target peers
|
// Instantiate chaincode on target peers
|
||||||
app.post('/channels/:channelName/chaincodes', async function(req, res) {
|
app.post('/channels/:channelName/chaincodes', async function(req, res) {
|
||||||
logger.debug('==================== INSTANTIATE CHAINCODE ==================');
|
logger.debug('==================== INSTANTIATE CHAINCODE ==================');
|
||||||
|
var peers = req.body.peers;
|
||||||
var chaincodeName = req.body.chaincodeName;
|
var chaincodeName = req.body.chaincodeName;
|
||||||
var chaincodeVersion = req.body.chaincodeVersion;
|
var chaincodeVersion = req.body.chaincodeVersion;
|
||||||
var channelName = req.params.channelName;
|
var channelName = req.params.channelName;
|
||||||
var chaincodeType = req.body.chaincodeType;
|
var chaincodeType = req.body.chaincodeType;
|
||||||
var fcn = req.body.fcn;
|
var fcn = req.body.fcn;
|
||||||
var args = req.body.args;
|
var args = req.body.args;
|
||||||
|
logger.debug('peers : ' + peers);
|
||||||
logger.debug('channelName : ' + channelName);
|
logger.debug('channelName : ' + channelName);
|
||||||
logger.debug('chaincodeName : ' + chaincodeName);
|
logger.debug('chaincodeName : ' + chaincodeName);
|
||||||
logger.debug('chaincodeVersion : ' + chaincodeVersion);
|
logger.debug('chaincodeVersion : ' + chaincodeVersion);
|
||||||
|
|
@ -248,7 +252,7 @@ app.post('/channels/:channelName/chaincodes', async function(req, res) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let message = await instantiate.instantiateChaincode(channelName, chaincodeName, chaincodeVersion, chaincodeType, fcn, args, req.username, req.orgname);
|
let message = await instantiate.instantiateChaincode(peers, channelName, chaincodeName, chaincodeVersion, chaincodeType, fcn, args, req.username, req.orgname);
|
||||||
res.send(message);
|
res.send(message);
|
||||||
});
|
});
|
||||||
// Invoke transaction on chaincode on target peers
|
// Invoke transaction on chaincode on target peers
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,6 @@ logger.setLevel('DEBUG');
|
||||||
|
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var fs = require('fs-extra');
|
|
||||||
var User = require('fabric-client/lib/User.js');
|
|
||||||
var crypto = require('crypto');
|
|
||||||
var copService = require('fabric-ca-client');
|
var copService = require('fabric-ca-client');
|
||||||
|
|
||||||
var hfc = require('fabric-client');
|
var hfc = require('fabric-client');
|
||||||
|
|
@ -85,6 +82,7 @@ var getRegisteredUser = async function(username, userOrg, isJson) {
|
||||||
logger.info('Successfully loaded member from persistence');
|
logger.info('Successfully loaded member from persistence');
|
||||||
} else {
|
} else {
|
||||||
// user was not enrolled, so we will need an admin user object to register
|
// user was not enrolled, so we will need an admin user object to register
|
||||||
|
logger.info('User %s was not enrolled, so we will need an admin user object to register',username);
|
||||||
var admins = hfc.getConfigSetting('admins');
|
var admins = hfc.getConfigSetting('admins');
|
||||||
let adminUserObj = await client.setUserContext({username: admins[0].username, password: admins[0].secret});
|
let adminUserObj = await client.setUserContext({username: admins[0].username, password: admins[0].secret});
|
||||||
let caClient = client.getCertificateAuthority();
|
let caClient = client.getCertificateAuthority();
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ var hfc = require('fabric-client');
|
||||||
var helper = require('./helper.js');
|
var helper = require('./helper.js');
|
||||||
var logger = helper.getLogger('instantiate-chaincode');
|
var logger = helper.getLogger('instantiate-chaincode');
|
||||||
|
|
||||||
var instantiateChaincode = async function(channelName, chaincodeName, chaincodeVersion, functionName, chaincodeType, args, username, org_name) {
|
var instantiateChaincode = async function(peers, channelName, chaincodeName, chaincodeVersion, functionName, chaincodeType, args, username, org_name) {
|
||||||
logger.debug('\n\n============ Instantiate chaincode on channel ' + channelName +
|
logger.debug('\n\n============ Instantiate chaincode on channel ' + channelName +
|
||||||
' ============\n');
|
' ============\n');
|
||||||
var error_message = null;
|
var error_message = null;
|
||||||
|
|
@ -45,6 +45,7 @@ var instantiateChaincode = async function(channelName, chaincodeName, chaincodeV
|
||||||
|
|
||||||
// send proposal to endorser
|
// send proposal to endorser
|
||||||
var request = {
|
var request = {
|
||||||
|
targets : peers,
|
||||||
chaincodeId: chaincodeName,
|
chaincodeId: chaincodeName,
|
||||||
chaincodeType: chaincodeType,
|
chaincodeType: chaincodeType,
|
||||||
chaincodeVersion: chaincodeVersion,
|
chaincodeVersion: chaincodeVersion,
|
||||||
|
|
@ -128,10 +129,11 @@ var instantiateChaincode = async function(channelName, chaincodeName, chaincodeV
|
||||||
});
|
});
|
||||||
|
|
||||||
var orderer_request = {
|
var orderer_request = {
|
||||||
txId: tx_id, //must includethe transaction id so that the outbound
|
txId: tx_id, // must include the transaction id so that the outbound
|
||||||
// transaction to the orderer will be signed by the admin
|
// transaction to the orderer will be signed by the admin
|
||||||
// id as was the proposal above, notice that transactionID
|
// id as was the proposal above, notice that transactionID
|
||||||
// generated above was based on the admin id not userContext.
|
// generated above was based on the admin id not the current
|
||||||
|
// user assigned to the 'client' instance.
|
||||||
proposalResponses: proposalResponses,
|
proposalResponses: proposalResponses,
|
||||||
proposal: proposal
|
proposal: proposal
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@ var invokeChaincode = async function(peerNames, channelName, chaincodeName, fcn,
|
||||||
|
|
||||||
// send proposal to endorser
|
// send proposal to endorser
|
||||||
var request = {
|
var request = {
|
||||||
|
targets: peerNames,
|
||||||
chaincodeId: chaincodeName,
|
chaincodeId: chaincodeName,
|
||||||
fcn: fcn,
|
fcn: fcn,
|
||||||
args: args,
|
args: args,
|
||||||
|
|
@ -167,9 +168,10 @@ var invokeChaincode = async function(peerNames, channelName, chaincodeName, fcn,
|
||||||
|
|
||||||
if (!error_message) {
|
if (!error_message) {
|
||||||
let message = util.format(
|
let message = util.format(
|
||||||
'Successfully invoked the chaincode %s to the channel \'%s\'',
|
'Successfully invoked the chaincode %s to the channel \'%s\' for transaction ID: %s',
|
||||||
org_name, channelName);
|
org_name, channelName, tx_id_string);
|
||||||
logger.info(message);
|
logger.info(message);
|
||||||
|
|
||||||
return tx_id_string;
|
return tx_id_string;
|
||||||
} else {
|
} else {
|
||||||
let message = util.format('Failed to invoke chaincode. cause:%s',error_message);
|
let message = util.format('Failed to invoke chaincode. cause:%s',error_message);
|
||||||
|
|
|
||||||
61
balance-transfer/package-lock.json
generated
61
balance-transfer/package-lock.json
generated
|
|
@ -553,9 +553,9 @@
|
||||||
"integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
|
"integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
|
||||||
},
|
},
|
||||||
"fabric-ca-client": {
|
"fabric-ca-client": {
|
||||||
"version": "1.1.0-snapshot.25",
|
"version": "1.1.0-snapshot.39",
|
||||||
"resolved": "https://registry.npmjs.org/fabric-ca-client/-/fabric-ca-client-1.1.0-snapshot.25.tgz",
|
"resolved": "https://registry.npmjs.org/fabric-ca-client/-/fabric-ca-client-1.1.0-snapshot.39.tgz",
|
||||||
"integrity": "sha512-mhMasJ/y7pkzF4EJi4zk4mjKu/DGy6NyRCzmX9bV2SW0Kyqz4UMFmOe5iV9P0BXTDm31peplp2XCvRNyH3MV+g==",
|
"integrity": "sha512-6aG5Y2+ZcVOxEyTdY/AJpJ/hJbJT6NL9mQh8NfigfAy9ywZjWJfr5B5EAYT0eD0YBbu8b5JspytbPVMm4qPxwA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "4.11.8",
|
"bn.js": "4.11.8",
|
||||||
"elliptic": "6.4.0",
|
"elliptic": "6.4.0",
|
||||||
|
|
@ -564,7 +564,7 @@
|
||||||
"jsrsasign": "6.2.2",
|
"jsrsasign": "6.2.2",
|
||||||
"jssha": "2.3.1",
|
"jssha": "2.3.1",
|
||||||
"nconf": "0.8.5",
|
"nconf": "0.8.5",
|
||||||
"sjcl": "1.0.3",
|
"sjcl": "1.0.7",
|
||||||
"sjcl-codec": "0.1.1",
|
"sjcl-codec": "0.1.1",
|
||||||
"url": "0.11.0",
|
"url": "0.11.0",
|
||||||
"util": "0.10.3",
|
"util": "0.10.3",
|
||||||
|
|
@ -582,13 +582,18 @@
|
||||||
"path-is-absolute": "1.0.1",
|
"path-is-absolute": "1.0.1",
|
||||||
"rimraf": "2.6.2"
|
"rimraf": "2.6.2"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sjcl": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/sjcl/-/sjcl-1.0.7.tgz",
|
||||||
|
"integrity": "sha1-MrNlpQ3Ju6JriLo8nfjqNCF9n0U="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fabric-client": {
|
"fabric-client": {
|
||||||
"version": "1.1.0-snapshot.25",
|
"version": "1.1.0-snapshot.39",
|
||||||
"resolved": "https://registry.npmjs.org/fabric-client/-/fabric-client-1.1.0-snapshot.25.tgz",
|
"resolved": "https://registry.npmjs.org/fabric-client/-/fabric-client-1.1.0-snapshot.39.tgz",
|
||||||
"integrity": "sha512-gZYoVvs1Q1BzIY8HZZi6adl7OerDaqxiCbCErivv6s23vgHYmcvulFIvhQZQt3IdBiT25yOnhfdpcjlj5d4O7w==",
|
"integrity": "sha512-NKgtVdDI8GuWseUXJVMb528+31bueb0aPKeXps1eyEkZu/bX0JmkSw5/YypWoMPeMlk2x6iiFl5WhTWd2ThXHA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bn.js": "4.11.8",
|
"bn.js": "4.11.8",
|
||||||
"callsite": "1.0.0",
|
"callsite": "1.0.0",
|
||||||
|
|
@ -607,7 +612,7 @@
|
||||||
"path": "0.12.7",
|
"path": "0.12.7",
|
||||||
"pkcs11js": "1.0.10",
|
"pkcs11js": "1.0.10",
|
||||||
"promise-settle": "0.3.0",
|
"promise-settle": "0.3.0",
|
||||||
"sjcl": "1.0.3",
|
"sjcl": "1.0.7",
|
||||||
"sjcl-codec": "0.1.1",
|
"sjcl-codec": "0.1.1",
|
||||||
"stream-buffers": "3.0.1",
|
"stream-buffers": "3.0.1",
|
||||||
"tar-stream": "1.5.2",
|
"tar-stream": "1.5.2",
|
||||||
|
|
@ -627,6 +632,11 @@
|
||||||
"path-is-absolute": "1.0.1",
|
"path-is-absolute": "1.0.1",
|
||||||
"rimraf": "2.6.2"
|
"rimraf": "2.6.2"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"sjcl": {
|
||||||
|
"version": "1.0.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/sjcl/-/sjcl-1.0.7.tgz",
|
||||||
|
"integrity": "sha1-MrNlpQ3Ju6JriLo8nfjqNCF9n0U="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -1333,13 +1343,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"string_decoder": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"bundled": true,
|
|
||||||
"requires": {
|
|
||||||
"safe-buffer": "5.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"string-width": {
|
"string-width": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
|
|
@ -1349,6 +1352,13 @@
|
||||||
"strip-ansi": "3.0.1"
|
"strip-ansi": "3.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "5.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stringstream": {
|
"stringstream": {
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"bundled": true
|
"bundled": true
|
||||||
|
|
@ -2247,11 +2257,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
|
||||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
|
||||||
},
|
},
|
||||||
"sjcl": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/sjcl/-/sjcl-1.0.3.tgz",
|
|
||||||
"integrity": "sha1-TtSGSY7Wt0K11KIZAiaBFvBUpwk="
|
|
||||||
},
|
|
||||||
"sjcl-codec": {
|
"sjcl-codec": {
|
||||||
"version": "0.1.1",
|
"version": "0.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/sjcl-codec/-/sjcl-codec-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/sjcl-codec/-/sjcl-codec-0.1.1.tgz",
|
||||||
|
|
@ -2307,14 +2312,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.1.tgz",
|
||||||
"integrity": "sha1-aKOMX6re3tef95mI02jj+xMl7wY="
|
"integrity": "sha1-aKOMX6re3tef95mI02jj+xMl7wY="
|
||||||
},
|
},
|
||||||
"string_decoder": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
|
||||||
"requires": {
|
|
||||||
"safe-buffer": "5.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"string-width": {
|
"string-width": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||||
|
|
@ -2325,6 +2322,14 @@
|
||||||
"strip-ansi": "3.0.1"
|
"strip-ansi": "3.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
||||||
|
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "5.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"stringstream": {
|
"stringstream": {
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
||||||
|
|
|
||||||
|
|
@ -159,13 +159,14 @@ curl -s -X POST \
|
||||||
echo
|
echo
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "POST invoke chaincode on peers of Org1 and Org2"
|
echo "POST invoke chaincode on peers of Org1"
|
||||||
echo
|
echo
|
||||||
TRX_ID=$(curl -s -X POST \
|
TRX_ID=$(curl -s -X POST \
|
||||||
http://localhost:4000/channels/mychannel/chaincodes/mycc \
|
http://localhost:4000/channels/mychannel/chaincodes/mycc \
|
||||||
-H "authorization: Bearer $ORG1_TOKEN" \
|
-H "authorization: Bearer $ORG1_TOKEN" \
|
||||||
-H "content-type: application/json" \
|
-H "content-type: application/json" \
|
||||||
-d '{
|
-d '{
|
||||||
|
"peers": ["peer0.org1.example.com","peer1.org1.example.com"],
|
||||||
"fcn":"move",
|
"fcn":"move",
|
||||||
"args":["a","b","10"]
|
"args":["a","b","10"]
|
||||||
}')
|
}')
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue