Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperledger fabric 理解Hyperledger结构块提取_Hyperledger Fabric_Extract_Block_Hyperledger - Fatal编程技术网

Hyperledger fabric 理解Hyperledger结构块提取

Hyperledger fabric 理解Hyperledger结构块提取,hyperledger-fabric,extract,block,hyperledger,Hyperledger Fabric,Extract,Block,Hyperledger,我想更好地了解hyperledger fabric 1.4.2块的块结构以及其中发生的事情。 因此,我使用了FabCar示例,进行了一次更新过程,并提取了这个相关块 下载此块进行分析后,我使用以下代码对其进行解码: peer channel fetch 5 mychannel5.block -c mychannel docker cp peer0.org1.example.com:/opt/gopath/src/github.com/hyperledger/fabric ./configtxl

我想更好地了解hyperledger fabric 1.4.2块的块结构以及其中发生的事情。 因此,我使用了FabCar示例,进行了一次更新过程,并提取了这个相关块

下载此块进行分析后,我使用以下代码对其进行解码:

peer channel fetch 5 mychannel5.block -c mychannel 
docker cp peer0.org1.example.com:/opt/gopath/src/github.com/hyperledger/fabric
./configtxlator proto_decode --input mychannel5.block --type common.Block > block5
下面是块的摘录:

在这里,我想知道,里面有字节的较长行的内容是什么,比如: 1.背书人(签字部分) 2.id_字节(顶部:) 3.值(在我更新的事务中)

我希望有一个可读的字节版本。我如何转换或解码它们?例如,对于背书人,我希望在那里显示的字节后面有一个证书和一个公钥

谢谢大家!

            "payload": {
                "data": {
                    "actions": [
                        {
                            "header": {
                                "creator": {
                                    "id_bytes": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLVENDQWRDZ0F3SUJBZ0lRUzV3cFlnSHdFS24xVGFYTVpaZnpZVEFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEV4TWpjd09ERTBNREJhRncweU9URXhNalF3T0RFME1EQmEKTUd3eEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVE4d0RRWURWUVFMRXdaamJHbGxiblF4SHpBZEJnTlZCQU1NRmtGa2JXbHVRRzl5Clp6SXVaWGhoYlhCc1pTNWpiMjB3V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVRKWVdFdlpHV0UKejFxWFNUWTc1ZGw1Q2hQYzNsTElWUFZQODBZeFJGMkZiRjJpR3pad0RJRXZ3Ykc1VkM5UGlobGFhNU92c0lZVgpXaHZYS1VraFFoN2pvMDB3U3pBT0JnTlZIUThCQWY4RUJBTUNCNEF3REFZRFZSMFRBUUgvQkFJd0FEQXJCZ05WCkhTTUVKREFpZ0NBbG9tTXk5LzlxNjZIZXBCQXM5QXE0NjQ4WGdTRzljd0Z1bjhWY2Z4SXRNVEFLQmdncWhrak8KUFFRREFnTkhBREJFQWlCSGF6N1ZuajR1aFdjSzE4d0ZQOUUzdGRscGRSZmNZQ1Zkdk9CL08zSHd3Z0lnUm9SegpFTFFyVm9KanFjYkltcFN6dDVQY0FVbWIxRGozSllmL1EvN0RKMFk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
                                    "mspid": "Org2MSP"
                                },
                                "nonce": "n9De6IYrKMCvyKHHCT3iv9JeDQOAspmU"
                            },
                            "payload": {
                                "action": {
                                    "endorsements": [
                                        {
                                            "endorser": "CgdPcmcxTVNQEqYGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNKekNDQWM2Z0F3SUJBZ0lRQm0xS0Qvd3g1M3lEdWZZYmVJK0hjekFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTVM1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NUzVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEV4TWpjd09ERTBNREJhRncweU9URXhNalF3T0RFME1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN4CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVDY2h5bm82Z3lUVWYKT2JuYzZZOEVWekVTdGVYZ0dCZnpqWXlyeVhsYkpvMEJ5a3RPRjI0ZGtBbDdxR2FsWStjajducit2UFMzNDhZLwozQ20zNDJHelo2Tk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FncmFTYWo2dTJSZTVqUkhrTElCN0lDWkNkbmZnUVMzczZGcjJ3YTNJOGxKVXdDZ1lJS29aSXpqMEUKQXdJRFJ3QXdSQUlnV1NFZzVidEVESXdkejdQNWYrUWVrTjVhcm5pMDFnOWZycnFtYjh3ZDJ1UUNJQ2VkcXZpNgpqQ00weUo4SVpwT2FrQ2FnYTd0MnExYnN4M1ZJeG0yTkJuVFMKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
                                            "signature": "MEUCIQDWlfdijJGiKFCsvev5eQptsp2ClJnXVP6yYYV9kxwBrAIgRZjPQRhXe97EV3o4VZJrt7QCejFKnpEgJbB1SHUYPvg="
                                        },
                                        {
                                            "endorser": "CgdPcmcyTVNQEqoGLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNLRENDQWM2Z0F3SUJBZ0lRSVRaYUN1VVQvSkhZTjgwK0w4Z2p0REFLQmdncWhrak9QUVFEQWpCek1Rc3cKQ1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0JNS1EyRnNhV1p2Y201cFlURVdNQlFHQTFVRUJ4TU5VMkZ1SUVaeQpZVzVqYVhOamJ6RVpNQmNHQTFVRUNoTVFiM0puTWk1bGVHRnRjR3hsTG1OdmJURWNNQm9HQTFVRUF4TVRZMkV1CmIzSm5NaTVsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEV4TWpjd09ERTBNREJhRncweU9URXhNalF3T0RFME1EQmEKTUdveEN6QUpCZ05WQkFZVEFsVlRNUk13RVFZRFZRUUlFd3BEWVd4cFptOXlibWxoTVJZd0ZBWURWUVFIRXcxVApZVzRnUm5KaGJtTnBjMk52TVEwd0N3WURWUVFMRXdSd1pXVnlNUjh3SFFZRFZRUURFeFp3WldWeU1DNXZjbWN5CkxtVjRZVzF3YkdVdVkyOXRNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXM1dFOCthR2RkYWwKVW9wUy9mRm5nSERYdG5LRUplRUQxYlI4ZWZQNE1kdkQrMi9NVjRFTDRpb1FIV1AyTjZXTTk0aDNoaWVCOE41LwpBblY1eVFOenA2Tk5NRXN3RGdZRFZSMFBBUUgvQkFRREFnZUFNQXdHQTFVZEV3RUIvd1FDTUFBd0t3WURWUjBqCkJDUXdJb0FnSmFKak12Zi9hdXVoM3FRUUxQUUt1T3VQRjRFaHZYTUJicC9GWEg4U0xURXdDZ1lJS29aSXpqMEUKQXdJRFNBQXdSUUloQU0wVWg3VVgwbitlZTRBdGJhV204cnZlb29sM2pXaTlMSTdaVGZPN3d5QnNBaUJ5c1VQNwp4QklhaEhSMjV2alNUOWVkamxXbmVBV1lZQk9Vbm1OWWZrS21HZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K",
                                            "signature": "MEUCIQCWAcc9SCtgY+dBx/bE26zkvFmC7zRpr1fOv7mWj4fuwAIgOZzea7Oukxsi87D1nSe+jT2lMBg7Av/XeC1VRP91AjI="
                                        }
                                    ],
                                    "proposal_response_payload": {
                                        "extension": {
                                            "chaincode_id": {
                                                "name": "fabcar",
                                                "path": "",
                                                "version": "1.0"
                                            },
                                            "events": null,
                                            "response": {
                                                "message": "",
                                                "payload": null,
                                                "status": 200
                                            },
                                            "results": {
                                                "data_model": "KV",
                                                "ns_rwset": [
                                                    {
                                                        "collection_hashed_rwset": [],
                                                        "namespace": "fabcar",
                                                        "rwset": {
                                                            "metadata_writes": [],
                                                            "range_queries_info": [],
                                                            "reads": [],
                                                            "writes": [
                                                                {
                                                                    "is_delete": false,
                                                                    "key": "CAR12",
                                                                    "value": "eyJtYWtlIjoiSG9uZGEiLCJtb2RlbCI6IkFjY29yZCIsImNvbG91ciI6ImJsYWNrIiwib3duZXIiOiJUb20ifQ=="
                                                                }
                                                            ]
                                                        }
                                                    },

通常,Hyperledger结构中类似的内容都是Base64编码的

“id_bytes”字段是提议块的对等方(这里是org2的对等方,因为mspid是org2MSP)的管理证书的base64编码版本。如果将其粘贴到Base64解码器(如此解码器)中,您应该会看到与您在artifacts/crypto config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts下找到的证书相同的证书

“背书人”字段是在Base64编码后,背书对等方(即为块签名的对等方)的signcert。这里有两个代言人。您可以在artifacts/crypto config/peerOrganizations/org0.example.com/peers/peer0.org0.example.com/msp/signcerts下找到签名证书


“值”部分只是用于事务的参数,再次使用Base64编码(例如,这里的参数是{“make”:“Honda”,“model”:“Accord”,“Color”:“black”,“owner”:“Tom”},正如您在解码后看到的那样)。

通常类似Hyperledger结构中的参数都是Base64编码的

“id_bytes”字段是提议块的对等方(这里是org2的对等方,因为mspid是org2MSP)的管理证书的base64编码版本。如果将其粘贴到Base64解码器(如此解码器)中,您应该会看到与您在artifacts/crypto config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp/admincerts下找到的证书相同的证书

“背书人”字段是在Base64编码后,背书对等方(即为块签名的对等方)的signcert。这里有两个代言人。您可以在artifacts/crypto config/peerOrganizations/org0.example.com/peers/peer0.org0.example.com/msp/signcerts下找到签名证书

“value”部分只是用于事务的参数,再次使用Base64编码(例如,这里的参数是{“make”:“Honda”,“model”:“Accord”,“color”:“black”,“owner”:“Tom”},解码后可以看到)