博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hyperledger Fabric的区块结构 交易结构
阅读量:2037 次
发布时间:2019-04-28

本文共 8784 字,大约阅读时间需要 29 分钟。

 

 

一、区块整体结构

1. 结构图

 

 

2. json格式

{     header: {         number: '37',         previous_hash:'b57d891702819c0e62dd7d405743b0663d19e49365d43c6420f281b43492e78d',          data_hash:'c730c7f832a24f9906e5224205182a66f25ef92b766c02aba60e23293883361f'    },    data: {         data: [{             signature:
, payload: { header: { channel_header: { type: 3, version: 1, timestamp: '2019-12-27T02: 30: 35.321Z', channel_id: 'mychannel', tx_id:'cbd9e30878c5a9c6887d67596e6cd0a2cb30c253ef32e7dceb4440b4d0ec3b9d', epoch: '0', extension:
, typeString: 'ENDORSER_TRANSACTION' }, signature_header: { creator: { Mspid: 'Org1MSP', IdBytes:'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIQWv/vCt79Gp31mVsZBLDTBzAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xOTEyMjcwMTE4MDBaFw0yOTEyMjQwMTE4MDBa\nMGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATFYP5wn0Nr\n9NXpCXbqDiNa53r9RXcO0qcIgZhj9apQIn1ZOqdj4E7UQ/Yv9J8nOJMfFCwfU6VU\nNJ0B5DI7R/jro00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCAfNb1MjsB1bCjo4uzb2roawarG0SSzApS1Qp8u50YO5DAKBggqhkjO\nPQQDAgNHADBEAiBofjUeoqz1oTNc5yeE7R7/5incME4/aQJX8U7Ym8oHMgIgdor2\n40bkUNJmhFdeB2kXoLHGrD9F+bRzN+6zoerkApg=\n-----END CERTIFICATE-----\n' }, nonce:
} }, data: { actions: [{ header: { creator: { Mspid: 'Org1MSP', IdBytes:'-----BEGIN CERTIFICATE-----\nMIICKTCCAdCgAwIBAgIQWv/vCt79Gp31mVsZBLDTBzAKBggqhkjOPQQDAjBzMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu\nb3JnMS5leGFtcGxlLmNvbTAeFw0xOTEyMjcwMTE4MDBaFw0yOTEyMjQwMTE4MDBa\nMGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T\nYW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFkFkbWluQG9y\nZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATFYP5wn0Nr\n9NXpCXbqDiNa53r9RXcO0qcIgZhj9apQIn1ZOqdj4E7UQ/Yv9J8nOJMfFCwfU6VU\nNJ0B5DI7R/jro00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV\nHSMEJDAigCAfNb1MjsB1bCjo4uzb2roawarG0SSzApS1Qp8u50YO5DAKBggqhkjO\nPQQDAgNHADBEAiBofjUeoqz1oTNc5yeE7R7/5incME4/aQJX8U7Ym8oHMgIgdor2\n40bkUNJmhFdeB2kXoLHGrD9F+bRzN+6zoerkApg=\n-----END CERTIFICATE-----\n' }, nonce:
}, payload: { chaincode_proposal_payload: { input: { chaincode_spec: { type: 1, typeString: 'GOLANG', input: { args: [
,
], decorations: {} }, chaincode_id: { path: '', name: 'mycc', version: '' }, timeout: 0 } } }, action: { proposal_response_payload: { proposal_hash:'50180bdb986b6b4488a54528e9f002221109ea1f6bb87847783cf4bdabeb2037', extension: { results:{ data_model: 0, ns_rwset: [{ namespace: 'lscc', rwset: { reads: [{ key: 'mycc', version: { block_num: '1', tx_num: '0' } }], range_queries_info: [], writes: [], metadata_writes: [] }, collection_hashed_rwset: [] }, { namespace: 'mycc', rwset: { reads: [], range_queries_info: [], writes: [{ key: '8543b514-1fa8-49f6-a610-cd44d4d5a318', is_delete: false, value:'{ "bizType": "HY", "bizUUID": "6399e25f-2ad1-4f7c-80cc-6ba720f312b9", "count": 5, "fillPerson": "许褚", "requestID": "89c06e39-403b-430d-9bac-caab738c1aeb", "requestTime": "2019-12-27 10:30:24", "reviewOpinion": "从许攸,袭乌巢", "reviewPass": "通过", "reviewer": "曹操", "submissionTim": "提交审核时间", "toGzwTime": "上报时间", "blockTimeTamp": "2019-12-27 10:30:35:320", "tx_id": "cbd9e30878c5a9c6887d67596e6cd0a2cb30c253ef32e7dceb4440b4d0ec3b9d" }' }], metadata_writes: [] }, collection_hashed_rwset: [] }] }, events: { chaincode_id: '', tx_id: '', event_name: '', payload:
}, response: { status: 200, message: 'insert finished successfully', payload:'8543b514-1fa8-49f6-a610-cd44d4d5a318: { "bizType": "HY", "bizUUID": "6399e25f-2ad1-4f7c-80cc-6ba720f312b9", "count": 5, "fillPerson": "许褚", "requestID": "89c06e39-403b-430d-9bac-caab738c1aeb", "requestTime": "2019-12-27 10:30:24", "reviewOpinion": "从许攸,袭乌巢", "reviewPass": "通过", "reviewer": "曹操", "submissionTim": "提交审核时间", "toGzwTime": "上报时间", "blockTimeTamp": "2019-12-27 10:30:35:320", "tx_id": "cbd9e30878c5a9c6887d67596e6cd0a2cb30c253ef32e7dceb4440b4d0ec3b9d" }' }, chaincode_id: { path: '', name: 'mycc', version: '1.0' } } }, endorsements: [{ endorser: { Mspid: 'Org1MSP', IdBytes:'-----BEGIN CERTIFICATE-----\nMIICKTCCAc+gAwIBAgIRALSEbL20/qyKuufJLYD1EH0wCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkxMjI3MDExODAwWhcNMjkxMjI0MDExODAw\nWjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn\nMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABArT+vAEGJ/5\nOS0ntKWOJS9krod8flniyops3SqN3vFhGfRzmDq5dxARMnCTjT16g9I4Jo4QyFAo\nUAfXu1Zv93qjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud\nIwQkMCKAIB81vUyOwHVsKOji7NvauhrBqsbRJLMClLVCny7nRg7kMAoGCCqGSM49\nBAMCA0gAMEUCIQDWlXWhXOkwlANMLmkAB8REFYyqmKQz9UKe3z3VmjOQ+AIgWPq/\nDZgErjIfq7KT5XWVCfvsxbJRWjD3o3aw0TE291A=\n-----END CERTIFICATE-----\n' }, signature:
}] } } }] } } }] }, metadata: { metadata: [ { value: '\n\u0000', signatures: [{ signature_header: { creator: { Mspid: 'OrdererMSP', IdBytes:'-----BEGIN CERTIFICATE-----\nMIICCzCCAbKgAwIBAgIQU4Xlp67Edi3tdBugbUNo9TAKBggqhkjOPQQDAjBpMQsw\nCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy\nYW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w\nbGUuY29tMB4XDTE5MTIyNzAxMTgwMFoXDTI5MTIyNDAxMTgwMFowWDELMAkGA1UE\nBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz\nY28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq\nhkjOPQMBBwNCAATdnI0rfvsU27XRhbPEp81yTiBpjiP4kLTHtAuXPc58RHHM2zYX\n4oBC+UeOsreh2pibd/J1qJ0gnSlxL8ZmtdKTo00wSzAOBgNVHQ8BAf8EBAMCB4Aw\nDAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCBcNzwBMeyKcdPqnBdYhDyqMKUAYA6W\nUcitApPVWMMjEzAKBggqhkjOPQQDAgNHADBEAiBQegfrUuFYAHqDla+DJlSMHqiW\nQoI8q1Dv8t39c72tOQIgDpg9AbEPgz7s+8HUW+ahlZcYnRsRg1HM3WtElcMRlVM=\n-----END CERTIFICATE-----\n' }, nonce:
}, signature:
}] }, { value: { index: '0' }, signatures: [] }, [0] ] }}

 

二、如何查看区块

1. 查看区块链信息

docker exec [container] peer channel getinfo -c [channel]#返回如下信息Blockchain info: {"height":3,"currentBlockHash":"MvXGp1W3jK7vnn5V0dGZAgg7iIadjLCl1ArCh5XHXHs=","previousBlockHash":"BxXo7hCkE6Gb4Y/KDi0M85dw/8d7S4BU1hvcVz0DQJw="} #区块链高度为3,区块链的编号为0, 1, 2,其中0是创世区块

 

2. 获取区块文件

#获取区块链文件docker exec [container] peer channel fetch [block-number] -c [channel]#区块文件保存在当前文件夹,文件名为[channel]_[block-number].block#拷贝区块文件到宿主机器当前文件夹docker cp [container]:/opt/gopath/src/github.com/hyperledger/fabric/peer/[channel]_[block-number].block ./

 

3. 解析区块文件

使用fabric-samples中的二进制工具configtxgen解析区块文件,可以将configtxgen所在文件夹添加到PATH中。再查看环境变量中是否有FABRIC_CFG_PATH,没有的话要设置成configtx.yaml所在文件夹,否则configtxgen会找不到配置文件。

 

#将区块文件解析成json文件configtxgen -inspectBlock [.block file] > [.json file]

 

三、解析

1. 区块结构

为了增强可读性,可以用在线工具将json转成yaml

---header: 	data_hash: ...	number: ...	previous_hash: ...data: 	data: 	-	payload: ...		signature: ...metadata: 	metadata: ...

可以看到一个区块包括三部分:

  • 区块头:包含当前区块哈希、区块序号、前一区块的哈希;
  • 区块数据:交易组成的数组
  • 元数据:和当前区块相关的元数据

 

2. 交易结构

signature: ...payload: 	header: 		channel_header: ...		//包括txid、时间戳、通道等信息		signature_header: ...	//包括sender的证书、mspid、随机数nonce	data: 		actions: 		-	header: 			payload: ...

可以看到一个交易包括:交易发送者的签名、数据载荷payload。

payload又包含两部分:

  • header
  • data: 包括一个由action组成的数组

 

下面看看action包含哪些东西

actions: -	header: ...	//和signature_header一样	payload: 		chaincode_proposal_payload: ...	//请求智能合约的函数名、参数等		action: 			endorsements: ...	//背书者的id组成的数组			proposal_response_payload: ...	//链码模拟执行结果对KV类型状态数据库的读写集

 

 

Hyperledger Fabric区块和交易结构解析

 

 

 

 

 

 

转载地址:http://bjkof.baihongyu.com/

你可能感兴趣的文章
【JS】【31】读取json文件
查看>>
Ubuntu Boost 编译
查看>>
OpenCV模块分析(转)
查看>>
聊聊我对写好程序的认识
查看>>
OpenSSL源代码学习[转]
查看>>
插件原理2[转自CSDN]
查看>>
OpenCV Windows7 VC6.0安装以及HelloWorld
查看>>
python升级导致yum命令无法使用的解决办法
查看>>
vi/vim 中如何在每行行首或行尾插入指定字符串
查看>>
linux 查看端口被哪个程序占用
查看>>
socket
查看>>
Spring下载地址
查看>>
Linux日志2
查看>>
VS的路径变量[转]
查看>>
MFC消息处理[转]
查看>>
cookie被禁止后怎样使用session的解决方案
查看>>
Eclipse 部分快捷键失效解决
查看>>
Bootstrap 自定义弹框
查看>>
MyBatis 分页插件 PageHelper 使用方法
查看>>
AbstractQueuedSynchronizer 源码分析
查看>>