Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之九《查询指定的交易信息》
2017-11-13 09:33
891 查看
本文已在我的公众号BigManing_blog原创首发。
转载请标明出处:
https://blog.csdn.net/qq_27818541/article/details/78517110
本文出自:【BigManing的博客】
交易id
peer节点
channel
我们可以复用第六篇文章中的交易id
控制台打印:
后台打印:
转载请标明出处:
https://blog.csdn.net/qq_27818541/article/details/78517110
本文出自:【BigManing的博客】
前言
根据交易id查询交易详细信息。需要如下参数:交易id
peer节点
channel
我们可以复用第六篇文章中的交易id
eb058850e7247ad0bc25ec57ced1cd1255666c390ca0c9300858ce6e57175221。
路由
接收指定的peer以及交易id,校验参数后传入到具体的实现中。app.js
//根据交易id 查询交易详情 Query Get Transaction by Transaction ID app.get('/channels/:channelName/transactions/:trxnId', function(req, res) { logger.debug( '================ GET TRANSACTION BY TRANSACTION_ID ======================' ); logger.debug('channelName : ' + req.params.channelName); let trxnId = req.params.trxnId; let peer = req.query.peer; if (!trxnId) { res.json(getErrorMessage('\'trxnId\'')); return; } // 具体实现 query.getTransactionByID(peer, trxnId, req.username, req.orgname) .then(function(message) { res.send(message); }); });
具体实现
query.js
var getTransactionByID = function(peer, trxnID, username, org) { //1 peer节点地址 var target = buildTarget(peer, org); //2 获取channel var channel = helper.getChannelForOrg(org); //3 获取注册用户 return helper.getRegisteredUsers(username, org).then((member) => { //4 查询交易详情 return channel.queryTransaction(trxnID, target); }, (err) => { logger.info('Failed to get submitter "' + username + '"'); return 'Failed to get submitter "' + username + '". Error: ' + err.stack ? err.stack : err; }).then((response_payloads) => { //5 处理响应 if (response_payloads) { logger.debug(response_payloads); return response_payloads; } else { logger.error('response_payloads is null'); return 'response_payloads is null'; } }, (err) => { logger.error('Failed to send query due to error: ' + err.stack ? err.stack : err); return 'Failed to send query due to error: ' + err.stack ? err.stack : err; }).catch((err) => { logger.error('Failed to query with error:' + err.stack ? err.stack : err); return 'Failed to query with error:' + err.stack ? err.stack : err; }); };
基本流程
Created with Raphaël 2.1.2Start 获取到当前用户通过channel查询交易信息处理结果EndAPI访问
echo "GET query Transaction by TransactionID" echo curl -s -X GET http://localhost:4000/channels/mychannel/transactions/eb058850e7247ad0bc25ec57ced1cd1255666c390ca0c9300858ce6e57175221?peer=peer1 \ -H "authorization: Bearer $ORG1_TOKEN" \ -H "content-type: application/json" echo echo
控制台打印:
GET query Transaction by TransactionID {"validationCode":0,"transactionEnvelope":{"signature":{"type":"Buffer","data":[48,69,2,33,0,177,26,37,152,112,224,187,240,114,88,79,53,58,177,81,95,71,89,200,84,235,71,91,237,204,186,56,181,195,98,164,215,2,32,102,121,110,5,234,233,1,94,99,238,162,8,112,138,154,142,145,133,56,33,199,34,26,132,60,75,208,125,235,250,233,124]},"payload":{"header":{"channel_header":{"type":"ENDORSER_TRANSACTION","version":3,"timestamp":"Mon Oct 16 2017 11:07:40 GMT+0800 (CST)","channel_id":"mychannel","tx_id":"eb058850e7247ad0bc25ec57ced1cd1255666c390ca0c9300858ce6e57175221","epoch":0,"extension":{"type":"Buffer","data":[18,6,18,4,109,121,99,99]}},"signature_header":{"creator":{"Mspid":"Org1MSP","IdBytes":"-----BEGIN CERTIFICATE-----\nMIIB7zCCAZWgAwIBAgIUTQ2LENWmI4cRoknmGQFqZ6a+8uswCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMDE2MDMwMjAwWhcNMTgxMDE2MDMw\nMjAwWjAOMQwwCgYDVQQDEwNKaW0wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASz\n4qdbmk/SsIFYmxxFveSfWDrqnX1GZ5jHt2XEypaXPcWIIOWp23WrF4QawVjpOJrQ\n0TCmgn3AaC3LLSxdzLNJo2wwajAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQU42nR4T+yFtzFUcCWx06codR4rU8wKwYDVR0jBCQwIoAgDnKS\nJOiz8xeEyKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIh\nANpJucU0QfIApR7BrR2wzqU22Oq1Mv2slupaSSEhqUcuAiAK0iN+dkb8qsJPbUHp\nsX26SgxX8YIiKWpL0t+OYEqjsw==\n-----END CERTIFICATE-----\n"},"nonce":{"type":"Buffer","data":[169,122,192,203,43,77,68,42,128,240,8,81,90,35,63,156,13,236,81,59,126,148,200,17]}}},"data":{"actions":[{"header":{"creator":{"Mspid":"Org1MSP","IdBytes":"-----BEGIN CERTIFICATE-----\nMIIB7zCCAZWgAwIBAgIUTQ2LENWmI4cRoknmGQFqZ6a+8uswCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcxMDE2MDMwMjAwWhcNMTgxMDE2MDMw\nMjAwWjAOMQwwCgYDVQQDEwNKaW0wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASz\n4qdbmk/SsIFYmxxFveSfWDrqnX1GZ5jHt2XEypaXPcWIIOWp23WrF4QawVjpOJrQ\n0TCmgn3AaC3LLSxdzLNJo2wwajAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIw\nADAdBgNVHQ4EFgQU42nR4T+yFtzFUcCWx06codR4rU8wKwYDVR0jBCQwIoAgDnKS\nJOiz8xeEyKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDSAAwRQIh\nANpJucU0QfIApR7BrR2wzqU22Oq1Mv2slupaSSEhqUcuAiAK0iN+dkb8qsJPbUHp\nsX26SgxX8YIiKWpL0t+OYEqjsw==\n-----END CERTIFICATE-----\n"},"nonce":{"type":"Buffer","data":[169,122,192,203,43,77,68,42,128,240,8,81,90,35,63,156,13,236,81,59,126,148,200,17]}},"payload":{"chaincode_proposal_payload":{"input":{"type":"Buffer","data":[10,28,8,1,18,6,18,4,109,121,99,99,26,16,10,4,109,111,118,101,10,1,97,10,1,98,10,2,49,48]}},"action":{"proposal_response_payload":{"proposal_hash":"36c833a60246db1941e7c403e1e3d3cf2f240bdc40c210da80278d463fb094c6","extension":{"results":{"data_model":0,"ns_rwset":[{"namespace":"lscc","rwset":{"reads":[{"key":"mycc","version":{"block_num":{"low":1,"high":0,"unsigned":true},"tx_num":{"low":0,"high":0,"unsigned":true}}}],"range_queries_info":[],"writes":[]}},{"namespace":"mycc","rwset":{"reads":[{"key":"a","version":{"block_num":{"low":1,"high":0,"unsigned":true},"tx_num":{"low":0,"high":0,"unsigned":true}}},{"key":"b","version":{"block_num":{"low":1,"high":0,"unsigned":true},"tx_num":{"low":0,"high":0,"unsigned":true}}}],"range_queries_info":[],"writes":[{"key":"a","is_delete":false,"value":"90"},{"key":"b","is_delete":false,"value":"210"}]}}]},"events":{"chaincode_id":"","tx_id":"","event_name":"","payload":{"type":"Buffer","data":[]}},"response":{"status":200,"message":"","payload":""}}},"endorsements":[{"endorser":{"Mspid":"Org1MSP","IdBytes":"-----BEGIN -----\nMIICGDCCAb+gAwIBAgIQPcMFFEB/vq6mEL6vXV7aUTAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xNzA2MjMxMjMzMTlaFw0yNzA2MjExMjMzMTla\nMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29tMFkw\nEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzS9k2gCKHcat8Wj4T2nB1uyC8R2zg3um\nxdTL7nmgFWp0uyCCbQQxD/VS+8R/3DNvEFkvzhcjc9NU/nRqMirpLqNNMEswDgYD\nVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgDnKSJOiz8xeE\nyKk8W4729MHJHZ5uV3xFwzFjYJ/kABEwCgYIKoZIzj0EAwIDRwAwRAIgHBdxbHUG\nrFUzKPX9UmmN3SwigWcRUREUy/GTb3hDIAsCIEF1BxTqv8ilQYE8ql0wJL4mTber\nHE6DFYvvBCUnicUh\n-----END -----\n"},"signature":{"type":"Buffer","data":[48,68,2,32,63,184,99,69,87,244,62,157,237,78,167,227,25,195,112,215,214,197,244,114,183,91,98,30,135,103,97,82,53,102,214,64,2,32,96,34,207,210,245,68,136,213,125,235,146,198,246,248,179,48,130,115,48,159,54,172,212,58,1,142,37,211,118,47,195,173]}},{"endorser":{"Mspid":"Org1MSP","IdBytes":"-----BEGIN -----\nMIICGjCCAcCgAwIBAgIRAI+BBtEBvpOqhfRZZH7eV/YwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNjIzMTIzMzE5WhcNMjcwNjIxMTIzMzE5\nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNvbTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCnT04ltvjsgiZVuCGLsRYzEiCTJZlZw\nh3HT/273B3NkWA7wrlyK7FfAanIyexuR1UI9m4+YKNqFG6cgYnf8MsejTTBLMA4G\nA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIA5ykiTos/MX\nhMipPFuO9vTByR2ebld8RcMxY2Cf5AARMAoGCCqGSM49BAMCA0gAMEUCIQCSRdWm\ni4IgVUajvzWVxyE/wi7n617pVqS4+nJ7gbTRjQIgefzBwS+bkNhPc3/rktySFLRC\nWMnq87KyqMLc6iRaJx0=\n-----END -----\n"},"signature":{"type":"Buffer","data":[48,68,2,32,76,217,173,123,31,20,202,218,178,182,34,209,106,247,120,120,18,17,185,185,79,107,181,134,40,40,117,89,215,41,176,186,2,32,1,76,239,78,145,183,212,170,26,111,86,80,140,178,212,198,166,201,33,28,86,181,198,25,15,79,227,97,43,56,101,216]}}]}}}]}}}}
后台打印:
[2017-10-16 11:07:43.140] [DEBUG] SampleWebApp - Decoded from JWT token: username - Jim, orgname - org1 [2017-10-16 11:07:43.140] [DEBUG] SampleWebApp - ================ GET TRANSACTION BY TRANSACTION_ID ====================== [2017-10-16 11:07:43.141] [DEBUG] SampleWebApp - channelName : mychannel [2017-10-16 11:07:43.142] [DEBUG] Helper - [FileKeyValueStore.js]: FileKeyValueStore.js - constructor [2017-10-16 11:07:43.144] [DEBUG] Helper - [FileKeyValueStore.js]: FileKeyValueStore -- getValue [2017-10-16 11:07:43.145] [DEBUG] Helper - [crypto_ecdsa_aes]: importKey - start [2017-10-16 11:07:43.146] [DEBUG] Helper - [crypto_ecdsa_aes]: importKey - have the key [Circular] [2017-10-16 11:07:43.146] [DEBUG] Helper - [utils.CryptoKeyStore]: _getKeyStore resolving store [2017-10-16 11:07:43.146] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param X: b3e2a75b9a4fd2b081589b1c45bde49f583aea9d7d466798c7b765c4ca96973d [2017-10-16 11:07:43.146] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param Y: c58820e5a9db75ab17841ac158e9389ad0d130a6827dc0682dcb2d2c5dccb349 [2017-10-16 11:07:43.146] [DEBUG] Helper - [FileKeyValueStore.js]: FileKeyValueStore -- setValue [2017-10-16 11:07:43.147] [DEBUG] Helper - [utils.CryptoKeyStore]: _getKeyStore resolving store [2017-10-16 11:07:43.147] [DEBUG] Helper - [FileKeyValueStore.js]: FileKeyValueStore -- getValue [2017-10-16 11:07:43.147] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param X: b3e2a75b9a4fd2b081589b1c45bde49f583aea9d7d466798c7b765c4ca96973d [2017-10-16 11:07:43.147] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param Y: c58820e5a9db75ab17841ac158e9389ad0d130a6827dc0682dcb2d2c5dccb349 [2017-10-16 11:07:43.148] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param X: b3e2a75b9a4fd2b081589b1c45bde49f583aea9d7d466798c7b765c4ca96973d [2017-10-16 11:07:43.148] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param Y: c58820e5a9db75ab17841ac158e9389ad0d130a6827dc0682dcb2d2c5dccb349 [2017-10-16 11:07:43.148] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param X: b3e2a75b9a4fd2b081589b1c45bde49f583aea9d7d466798c7b765c4ca96973d [2017-10-16 11:07:43.148] [DEBUG] Helper - [ecdsa/key.js]: ECDSA curve param Y: c58820e5a9db75ab17841ac158e9389ad0d130a6827dc0682dcb2d2c5dccb349 [2017-10-16 11:07:43.148] [DEBUG] Helper - [FileKeyValueStore.js]: FileKeyValueStore -- setValue [2017-10-16 11:07:43.148] [INFO] Helper - Successfully loaded member from persistence [2017-10-16 11:07:43.155] [DEBUG] Helper - [crypto_ecdsa_aes]: ecdsa signature: Signature { r: <BN: 6d0ae79a06d8b5d9d593d8a22f9667e41ef41d7005f635e071d61730e4519868>, s: <BN: 2aa650cffd0dcf227f76add8a490a94eae4717a572576e2f56105d58cb21d292>, recoveryParam: 1 } [2017-10-16 11:07:43.167] [DEBUG] Query - { validationCode: 0, transactionEnvelope: { signature: <Buffer 30 45 02 21 00 b1 1a 25 98 70 e0 bb f0 72 58 4f 35 3a b1 51 5f 47 59 c8 54 eb 47 5b ed cc ba 38 b5 c3 62 a4 d7 02 20 66 79 6e 05 ea e9 01 5e 63 ee a2 ... >, payload: { header: [Object], data: [Object] } } }
相关文章推荐
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之八《查询指定的区块信息》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之十一《查询已经安装/实例化的chaincode》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之十二《查询已经加入的channel名称》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之十《查询链信息》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之二《创建Channel》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之七《查询chaincode》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之五《初始化chaincode》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之六《执行chaincode》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之三《加入到Channel》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之四《安装chaincode》
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之一《注册用户》
- Hyperledger Fabric SDK 示例 fabric-samples-《balance-transfer》之简介
- Hyperledger Fabric Node SDK
- Hyperledger fabric Client Node.js Hello World示例程序
- hyperledger/fabric sdk-java编译
- Hyperledger Fabric Samples 建立第一个网络
- Hyperledger Fabric(三)- fabric-sdk-java
- hyperledger fabric chaincode开发示例
- Hyperledger Fabric Client SDK for Go 下载与配置
- 使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统