10. Hyperledger Fabric 专题 - Fabric 的重要日志输出

Hyperledger Fabric 专题 - Fabric 的重要日志输出

假设存在下列 docker 容器。

dev-peer0.org1.example.com-dfgchaincode-1.0
dev-peer1.org1.example.com-dfgchaincode-1.0
dev-peer0.org2.example.com-dfgchaincode-1.0
dev-peer1.org2.example.com-dfgchaincode-1.0

peer0.org1.example.com
peer1.org1.example.com
peer0.org2.example.com
peer1.org2.example.com

我们只监控了下列 docker 容器的日志:

dev-peer0.org1.example.com-dfgchaincode-1.0
dev-peer0.org2.example.com-dfgchaincode-1.0

peer0.org1.example.com
peer0.org2.example.com

1. 接口 add(key, value)

当链码接口 add(key, value) 被调用时,链码进程和对端节点进程的重要输出日志。

1.1 链码重要的日志输出

当发生一次链码接口调用时,会产生如下输出。最重要的是注意 onChaincodeMessage,同时 payload 中包含接口名、参数的 BASE64 编码格式。

01:31:37:369 FINE    org.hyperledger.fabric.shim.impl.InnvocationTaskManager onChaincodeMessage       [dcfee6e6] {
  "type": "TRANSACTION",
  "payload": "CgNhZGQKBWZpbGUwCiJ7ImtleSI6ICJmaWxlMCIsICJ2YWx1ZSI6ICJmaWxlMCJ9",
  "txid": "dcfee6e6ae088526edb7d645836c7ea12e44276396c76e6b3644fb584e80ab4c",
  "proposal": {
    "proposalBytes": "CvYICpMBCAMQARoMCPmJ/PIFEMCHx6MBIglteWNoYW5uZWwqQGRjZmVlNmU2YWUwODg1MjZlZGI3ZDY0NTgzNmM3ZWExMmU0NDI3NjM5NmM3NmU2YjM2NDRmYjU4NGU4MGFiNGM6EBIOEgxkZmdjaGFpbmNvZGVCIJS7fxl892EaRUBDqyuXkBGk61ePHV5rbgy+rAYKQtJjEt0HCsAHCgdPcmcxTVNQErQHLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNqakNDQWpXZ0F3SUJBZ0lVRTJGWVBWMFE4NzBPcmZnUld0eXB3RjNBQitvd0NnWUlLb1pJemowRUF3SXcKY3pFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4R1RBWEJnTlZCQW9URUc5eVp6RXVaWGhoYlhCc1pTNWpiMjB4SERBYUJnTlZCQU1UCkUyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpBd016QTBNREV5TmpBd1doY05NakV3TXpBME1ERXoKTVRBd1dqQkNNVEF3RFFZRFZRUUxFd1pqYkdsbGJuUXdDd1lEVlFRTEV3UnZjbWN4TUJJR0ExVUVDeE1MWkdWdwpZWEowYldWdWRERXhEakFNQmdOVkJBTVRCWFZ6WlhJeU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEClFnQUVJeXlJWjVCY0JKWkhGall6ak9ub0tSS0RZUExnbEc0VHFsSjZoWWhpUTQ0L2lQcEtDZ2JVY0tSVlpjc2sKN3FDRjZwNi9BdExvQWNzd095OXduL0J6YmFPQjF6Q0IxREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdEQVlEVlIwVApBUUgvQkFJd0FEQWRCZ05WSFE0RUZnUVUyU3NuazNsV3l6ZllyNFk4ZnNjcG1rUVAxcEF3S3dZRFZSMGpCQ1F3CklvQWdvTlFGRG13eWNHZkEyYVN1U1l4bXN1UTJDc09ZK2ZqS1ZtdWV4dnNBOU9rd2FBWUlLZ01FQlFZSENBRUUKWEhzaVlYUjBjbk1pT25zaWFHWXVRV1ptYVd4cFlYUnBiMjRpT2lKdmNtY3hMbVJsY0dGeWRHMWxiblF4SWl3aQphR1l1Ulc1eWIyeHNiV1Z1ZEVsRUlqb2lkWE5sY2pJaUxDSm9aaTVVZVhCbElqb2lZMnhwWlc1MEluMTlNQW9HCkNDcUdTTTQ5QkFNQ0EwY0FNRVFDSUR3aUlscUZHaDFNWFpQOHg0SHFzeTI0WmZ4YWdIaGxPakl3WkJYRmRCUDIKQWlBZlhyK1JGTzBaMzlqTW9iQytyUGRJR2RCVXNDdTBBM0tXbEoxSnhaWjdYdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhgPel/w719m9fkiYuuT0AgAkvG6Ka6ua08SSApGCkQIARIOEgxkZmdjaGFpbmNvZGUaMAoDYWRkCgVmaWxlMAoieyJrZXkiOiAiZmlsZTAiLCAidmFsdWUiOiAiZmlsZTAifQ==",
    "signature": "MEUCIQCtmrpr1dJZJt0FD5llNhnAzJ1djqlu8v/G4EEC3jskdQIgbT0msXjUZDMs1GqrwFt1XAafI9UoUvz8ec7k3uXJ0OQ="
  },
  "channelId": "mychannel"
}

"payload": "CgNhZGQKBWZpbGUwCiJ7ImtleSI6ICJmaWxlMCIsICJ2YWx1ZSI6ICJmaWxlMCJ9" BASE64 解码后为:

�add
�file0
"{"key": "file0", "value": "file0"}

同时,还会输出下列重要的日志,注意与接口 add(file,value) 相关的部分以及一些格式化的日志,如 Got invoke routing request 等:

01:31:37:380 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got invoke routing request
01:31:37:383 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got the invoke request for:add [file0, {"key": "file0", "value": "file0"}]
01:31:37:384 FINE    org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest <init>  add
01:31:37:384 FINE    org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest <init>  default add [[B@82c3141f, [B@90b5ba3b]
01:31:37:387 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got routing:add:org.union.chaincode.CaojiaduContract
01:31:37:389 FINE    org.hyperledger.fabric.contract.execution.impl.ContractExecutionService executeR Routing Requestadd @2eb669a6

还有调用成功的日志输出:

01:31:37:624 FINE    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask call                   [dcfee6e6] Invoke succeeded. Sending COMPLETED

1.2 节点 peer 的重要输出

1.2.1 直接组织的节点 peer 的输出

注意,包含通道名称 mychannel,链码名称 dfgchaincode。同时,还包含一个区块产生的流程:Received blockValidated blockCommitted block

2020-03-04 01:31:37.362 UTC [endorser] callChaincode -> INFO 07f [mychannel][dcfee6e6] Entry chaincode: name:"dfgchaincode"
2020-03-04 01:31:37.627 UTC [endorser] callChaincode -> INFO 080 [mychannel][dcfee6e6] Exit chaincode: name:"dfgchaincode"  (265ms)
2020-03-04 01:31:37.628 UTC [comm.grpc.server] 1 -> INFO 081 unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.28.0.1:51944 grpc.code=OK grpc.call_duration=266.444284ms
2020-03-04 01:31:39.692 UTC [gossip.privdata] StoreBlock -> INFO 082 [mychannel] Received block [5] from buffer
2020-03-04 01:31:39.694 UTC [committer.txvalidator] Validate -> INFO 083 [mychannel] Validated block [5] in 1ms
2020-03-04 01:31:39.709 UTC [kvledger] CommitWithPvtData -> INFO 084 [mychannel] Committed block [5] with 1 transaction(s) in 14ms (state_validation=0ms block_and_pvtdata_commit=9ms state_commit=1ms) commitHash=[c62657a8ce62191b8a1961faf5ebe4e9e11c4876d8717b988c626b4456e26722]

1.2.2 相关组织的节点 peer 的输出

注意,这里只包含一个区块产生的流程:Received blockValidated blockCommitted block。而不包含链码调用相关的信息。

2020-03-04 01:31:39.687 UTC [gossip.privdata] StoreBlock -> INFO 069 [mychannel] Received block [5] from buffer
2020-03-04 01:31:39.689 UTC [committer.txvalidator] Validate -> INFO 06a [mychannel] Validated block [5] in 2ms
2020-03-04 01:31:39.701 UTC [kvledger] CommitWithPvtData -> INFO 06b [mychannel] Committed block [5] with 1 transaction(s) in 11ms (state_validation=0ms block_and_pvtdata_commit=6ms state_commit=3ms) commitHash=[c62657a8ce62191b8a1961faf5ebe4e9e11c4876d8717b988c626b4456e26722]

2. 接口 query(key)

当链码接口 query(key) 被调用时,链码进程和对端节点进程的重要输出日志。

下面的日志大部分和上面的日志类似部分就不再作解释了,独特的部分会指出来。

2.1 链码重要的日志输出

01:53:43:563 FINE    org.hyperledger.fabric.shim.impl.InnvocationTaskManager onChaincodeMessage       [b14f5a0a] {
  "type": "TRANSACTION",
  "payload": "CgVxdWVyeQoFZmlsZTA=",
  "txid": "b14f5a0a2413a378c4d4f52e4d5624f95b59f9953c0d95ac7abc2fc57df0ae1e",
  "proposal": {
    "proposalBytes": "CvYICpMBCAMQARoMCKeU/PIFEICZrYQCIglteWNoYW5uZWwqQGIxNGY1YTBhMjQxM2EzNzhjNGQ0ZjUyZTRkNTYyNGY5NWI1OWY5OTUzYzBkOTVhYzdhYmMyZmM1N2RmMGFlMWU6EBIOEgxkZmdjaGFpbmNvZGVCIECI5w6scNo144zC14H9lQRnMocC3+2zL6Q4/b8AGMgHEt0HCsAHCgdPcmcxTVNQErQHLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNqakNDQWpXZ0F3SUJBZ0lVRTJGWVBWMFE4NzBPcmZnUld0eXB3RjNBQitvd0NnWUlLb1pJemowRUF3SXcKY3pFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4R1RBWEJnTlZCQW9URUc5eVp6RXVaWGhoYlhCc1pTNWpiMjB4SERBYUJnTlZCQU1UCkUyTmhMbTl5WnpFdVpYaGhiWEJzWlM1amIyMHdIaGNOTWpBd016QTBNREV5TmpBd1doY05NakV3TXpBME1ERXoKTVRBd1dqQkNNVEF3RFFZRFZRUUxFd1pqYkdsbGJuUXdDd1lEVlFRTEV3UnZjbWN4TUJJR0ExVUVDeE1MWkdWdwpZWEowYldWdWRERXhEakFNQmdOVkJBTVRCWFZ6WlhJeU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEClFnQUVJeXlJWjVCY0JKWkhGall6ak9ub0tSS0RZUExnbEc0VHFsSjZoWWhpUTQ0L2lQcEtDZ2JVY0tSVlpjc2sKN3FDRjZwNi9BdExvQWNzd095OXduL0J6YmFPQjF6Q0IxREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdEQVlEVlIwVApBUUgvQkFJd0FEQWRCZ05WSFE0RUZnUVUyU3NuazNsV3l6ZllyNFk4ZnNjcG1rUVAxcEF3S3dZRFZSMGpCQ1F3CklvQWdvTlFGRG13eWNHZkEyYVN1U1l4bXN1UTJDc09ZK2ZqS1ZtdWV4dnNBOU9rd2FBWUlLZ01FQlFZSENBRUUKWEhzaVlYUjBjbk1pT25zaWFHWXVRV1ptYVd4cFlYUnBiMjRpT2lKdmNtY3hMbVJsY0dGeWRHMWxiblF4SWl3aQphR1l1Ulc1eWIyeHNiV1Z1ZEVsRUlqb2lkWE5sY2pJaUxDSm9aaTVVZVhCbElqb2lZMnhwWlc1MEluMTlNQW9HCkNDcUdTTTQ5QkFNQ0EwY0FNRVFDSUR3aUlscUZHaDFNWFpQOHg0SHFzeTI0WmZ4YWdIaGxPakl3WkJYRmRCUDIKQWlBZlhyK1JGTzBaMzlqTW9iQytyUGRJR2RCVXNDdTBBM0tXbEoxSnhaWjdYdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KEhiDzZOFXK9VrlV2gOldrfOI6zLvPTsTvZoSJgokCiIIARIOEgxkZmdjaGFpbmNvZGUaDgoFcXVlcnkKBWZpbGUw",
    "signature": "MEUCIQDSjj6G4jKfCKT8jBLHpN5TwNviVTkKFlHa+sy3Eh11XgIgCYKRbr5aX4FEVQMz3oMZPGomL5BxZadLwZbi9Agt4Gk="
  },
  "channelId": "mychannel"
}

其中,"payload": "CgVxdWVyeQoFZmlsZTA=" BASE64 解码为:

�query
�file0
01:53:43:569 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got invoke routing request
01:53:43:570 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got the invoke request for:query [file0]
01:53:43:571 FINE    org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest <init>  query
01:53:43:572 FINE    org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest <init>  default query [[B@650a2fdb]
01:53:43:572 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got routing:query:org.union.chaincode.CaojiaduContract
01:53:43:573 FINE    org.hyperledger.fabric.contract.execution.impl.ContractExecutionService executeR Routing Requestquery @93bcc8d7

注意,这里竟然还会包含查询结果的内容日志:

01:53:43:592 INFO    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask invoke                 Got response back from the peertype: RESPONSE
payload: "{\"key\":\"file0\",\"value\":\"file0\",\"timestamp\":1583285497343,\"txHash\":\"dcfee6e6ae088526edb7d645836c7ea12e44276396c76e6b3644fb584e80ab4c\",\"extraValue\":null}"
txid: "b14f5a0a2413a378c4d4f52e4d5624f95b59f9953c0d95ac7abc2fc57df0ae1e"
channel_id: "mychannel"
01:53:43:595 FINE    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask invoke                 [b14f5a0a] RESPONSE response received.
01:53:43:595 FINE    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask invoke                 [b14f5a0a] Successful response received.
01:53:43:597 FINE    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask call                   [b14f5a0a] Invoke succeeded. Sending COMPLETED

2.2 节点 peer 的重要输出

2.2.1 直接组织的节点 peer 的输出

2020-03-04 01:53:43.559 UTC [endorser] callChaincode -> INFO 088 [mychannel][b14f5a0a] Entry chaincode: name:"dfgchaincode"
2020-03-04 01:53:43.600 UTC [endorser] callChaincode -> INFO 089 [mychannel][b14f5a0a] Exit chaincode: name:"dfgchaincode"  (40ms)

2.2.2 相关组织的节点 peer 的输出

查询接口无日志输出。

3. 接口 queryList(keys)

当链码接口 queryList(keys) 被调用时,链码进程和对端节点进程的重要输出日志。

下面的日志大部分和上面的日志类似部分就不再作解释了,独特的部分会指出来。

3.1 链码重要的日志输出

3.2 节点 peer 的重要输出

02:38:44:279 FINE    org.hyperledger.fabric.shim.impl.InnvocationTaskManager onChaincodeMessage       [0bc74105] {
  "type": "TRANSACTION",
  "payload": "CglxdWVyeUxpc3QKH1siZmlsZTEwMCIsImZpbGUxMDEiLCJmaWxlMTAyIl0=",
  "txid": "0bc74105b9b5e358faf774e57ec57facfdc1856149aa98928cc20a46c1b2fe24",
  "proposal": {
    "proposalBytes": "CvUICpIBCAMQARoLCLSp/PIFEMCWunwiCW15Y2hhbm5lbCpAMGJjNzQxMDViOWI1ZTM1OGZhZjc3NGU1N2VjNTdmYWNmZGMxODU2MTQ5YWE5ODkyOGNjMjBhNDZjMWIyZmUyNDoQEg4SDGRmZ2NoYWluY29kZUIgYXjB01DstzzhUMwpATu7d6Cwt3fx3qD8CcMYIvrZdRwS3QcKwAcKB09yZzFNU1AStActLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ2pqQ0NBaldnQXdJQkFnSVVFMkZZUFYwUTg3ME9yZmdSV3R5cHdGM0FCK293Q2dZSUtvWkl6ajBFQXdJdwpjekVMTUFrR0ExVUVCaE1DVlZNeEV6QVJCZ05WQkFnVENrTmhiR2xtYjNKdWFXRXhGakFVQmdOVkJBY1REVk5oCmJpQkdjbUZ1WTJselkyOHhHVEFYQmdOVkJBb1RFRzl5WnpFdVpYaGhiWEJzWlM1amIyMHhIREFhQmdOVkJBTVQKRTJOaExtOXlaekV1WlhoaGJYQnNaUzVqYjIwd0hoY05NakF3TXpBME1ERXlOakF3V2hjTk1qRXdNekEwTURFegpNVEF3V2pCQ01UQXdEUVlEVlFRTEV3WmpiR2xsYm5Rd0N3WURWUVFMRXdSdmNtY3hNQklHQTFVRUN4TUxaR1Z3CllYSjBiV1Z1ZERFeERqQU1CZ05WQkFNVEJYVnpaWEl5TUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0QKUWdBRUl5eUlaNUJjQkpaSEZqWXpqT25vS1JLRFlQTGdsRzRUcWxKNmhZaGlRNDQvaVBwS0NnYlVjS1JWWmNzawo3cUNGNnA2L0F0TG9BY3N3T3k5d24vQnpiYU9CMXpDQjFEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0RBWURWUjBUCkFRSC9CQUl3QURBZEJnTlZIUTRFRmdRVTJTc25rM2xXeXpmWXI0WThmc2NwbWtRUDFwQXdLd1lEVlIwakJDUXcKSW9BZ29OUUZEbXd5Y0dmQTJhU3VTWXhtc3VRMkNzT1krZmpLVm11ZXh2c0E5T2t3YUFZSUtnTUVCUVlIQ0FFRQpYSHNpWVhSMGNuTWlPbnNpYUdZdVFXWm1hV3hwWVhScGIyNGlPaUp2Y21jeExtUmxjR0Z5ZEcxbGJuUXhJaXdpCmFHWXVSVzV5YjJ4c2JXVnVkRWxFSWpvaWRYTmxjaklpTENKb1ppNVVlWEJsSWpvaVkyeHBaVzUwSW4xOU1Bb0cKQ0NxR1NNNDlCQU1DQTBjQU1FUUNJRHdpSWxxRkdoMU1YWlA4eDRIcXN5MjRaZnhhZ0hobE9qSXdaQlhGZEJQMgpBaUFmWHIrUkZPMFozOWpNb2JDK3JQZElHZEJVc0N1MEEzS1dsSjFKeFpaN1h3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoSGEIjwk38juxcvi8wkCn9MkiIRIGqlvRoChJECkIKQAgBEg4SDGRmZ2NoYWluY29kZRosCglxdWVyeUxpc3QKH1siZmlsZTEwMCIsImZpbGUxMDEiLCJmaWxlMTAyIl0=",
    "signature": "MEUCIQCHH5sg6yqFIKE6hhVahdQxhQPQj5fAHn3mpK+B++Hz7gIgfF1v1qf5lBNS/XxzYCz0fPENuaWKcTZ8x6+sh2XV7QA="
  },
  "channelId": "mychannel"
}
02:38:44:280 FINE    org.hyperledger.fabric.shim.impl.InnvocationTaskManager handleMsg                [0bc74105] Received TRANSACTION
02:38:44:284 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got invoke routing request
02:38:44:285 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got the invoke request for:queryList [["file100","file101","file102"]]
02:38:44:286 FINE    org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest <init>  queryList
02:38:44:286 FINE    org.hyperledger.fabric.contract.execution.impl.ContractInvocationRequest <init>  default queryList [[B@7da4e556]
02:38:44:287 INFO    org.hyperledger.fabric.contract.ContractRouter processRequest                    Got routing:queryList:org.union.chaincode.CaojiaduContract
02:38:44:288 FINE    org.hyperledger.fabric.contract.execution.impl.ContractExecutionService executeR Routing RequestqueryList @c3eac85

需要注意是,查询根据每个 key 返回一个内部结果,而不是一次返回所有 key 的结果:

02:38:44:323 INFO    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask invoke                 Got response back from the peertype: RESPONSE
payload: "{\"key\":\"file100\",\"value\":\"file100\",\"timestamp\":1583289329851,\"txHash\":\"2226025767f705b705fa9c106cc4a96097c77b64cd61b53f31d9fba4c5e45e46\",\"extraValue\":null}"
txid: "0bc74105b9b5e358faf774e57ec57facfdc1856149aa98928cc20a46c1b2fe24"
channel_id: "mychannel"

...

02:38:44:331 INFO    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask invoke                 Got response back from the peertype: RESPONSE
payload: "{\"key\":\"file101\",\"value\":\"file101\",\"timestamp\":1583289332112,\"txHash\":\"ee4bc37d866a06cec2071c711ca76b0901e4981419c038609b0796b767e2025c\",\"extraValue\":null}"
txid: "0bc74105b9b5e358faf774e57ec57facfdc1856149aa98928cc20a46c1b2fe24"
channel_id: "mychannel"

...

02:38:44:349 INFO    org.hyperledger.fabric.shim.impl.ChaincodeInnvocationTask invoke                 Got response back from the peertype: RESPONSE
payload: "{\"key\":\"file102\",\"value\":\"file102\",\"timestamp\":1583289334309,\"txHash\":\"9c38f269fa0a433417a5d792b78982561422a3776827dbc8178d14f82ce2e58e\",\"extraValue\":null}"
txid: "0bc74105b9b5e358faf774e57ec57facfdc1856149aa98928cc20a46c1b2fe24"
channel_id: "mychannel"

3.2.1 直接组织的节点 peer 的输出

2020-03-04 02:38:44.275 UTC [endorser] callChaincode -> INFO 0ab [mychannel][0bc74105] Entry chaincode: name:"dfgchaincode"
2020-03-04 02:38:44.366 UTC [endorser] callChaincode -> INFO 0ac [mychannel][0bc74105] Exit chaincode: name:"dfgchaincode"  (91ms)

3.2.2 相关组织的节点 peer 的输出

查询接口无日志输出。

4. 涉及私有数据

需要注意的是,当涉及私有数据的存储操作时候,另一个组织的链码节点也会有相类似的日志输出。

对应链码节点返回的私有数据,仍然是私有数据本身,而非私有数据的哈希。这也是容易理解的,因为具有权限的组织本身就存储私有数据本身。

Reference

项目源代码

项目源代码会逐步上传到 Github,地址为 https://github.com/windstamp

Contributor

  1. Windstamp, https://github.com/windstamp
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258

推荐阅读更多精彩内容