一、区块整体结构

1. 结构图

2. json格式

{ header: { number: '37', previous_hash:'b57d891702819c0e62dd7d405743b0663d19e49365d43c6420f281b43492e78d',  data_hash:'c730c7f832a24f9906e5224205182a66f25ef92b766c02aba60e23293883361f'},data: { data: [{ signature:<Buffer 30 45 02 21 00 90 e3 37 85 e3 16 05 4f 34 79 cc d3 b6 75 42 1e 08 b8 34 c9 62 cd ae bb 66 b8 45 e0 9c c2 c9 41 02 20 6d 34 cb 6a 2f 04 cb 6f 2a e9 cb ... >,payload: { header: { channel_header: {type: 3,version: 1,timestamp: '2019-12-27T02: 30: 35.321Z',channel_id: 'mychannel',tx_id:'cbd9e30878c5a9c6887d67596e6cd0a2cb30c253ef32e7dceb4440b4d0ec3b9d',epoch: '0',extension: <Buffer 12 06 12 04 6d 79 63 63>,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:<Buffer d5 8e 36 01 34 a9 21 61 fb c2 90 5d 85 fd 55 4d 09 4e 49 d0 0b cb 18 74>}},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:<Buffer d5 8e 36 01 34 a9 21 61 fb c2 90 5d 85 fd 55 4d 09 4e 49 d0 0b cb 18 74>},payload: { chaincode_proposal_payload: { input: { chaincode_spec: { type: 1,typeString: 'GOLANG',input: { args: [ <Buffer 69 6e 73 65 72 74>,<Buffer 7b 22 62 69 7a 54 79 70 65 22 3a 22 48 59 22 2c 22 62 69 7a 55 55 49 44 22 3a 22 36 33 39 39 65 32 35 66 2d 32 61 64 31 2d 34 66 37 63 2d 38 30 63 63 ... >],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: <Buffer >},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:<Buffer 30 45 02 21 00 a8 80 cc 94 22 54 68 bc 10 e3 c1 87 45 d7 33 5a da c6 88 a4 49 a7 71 57 7a 71 1c 87 b6 1f 93 1b 02 20 6a 21 3f db 23 6a 36 c4 a4 b5 93 ... >}]}}}]}}}]},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:<Buffer c6 2b cd eb f6 98 a1 e7 36 94 d6 01 3c 8f e1 54 3b e4 e8 54 67 5d f9 77>},signature:<Buffer 30 45 02 21 00 9b e9 af 68 06 b8 88 d4 0a df 64 91 dc 6d 9f f7 57 0d 37 c0 28 7e d6 5d 1a 0e aa 57 ad 99 4e e4 02 20 63 44 04 f9 8e 83 f3 44 95 1f a3 ... >}]},{ 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、随机数noncedata: 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区块和交易结构解析

https://blog.csdn.net/qq_33657251/article/details/104452568

https://www.cnblogs.com/adderhuang/archive/2004/01/13/12108426.html

Hyperledger Fabric的区块结构 交易结构相关推荐

  1. Hyperledger Fabric是区块链中联盟链架构详细介绍

    区块链开源实现HYPERLEDGER FABRIC架构详解 区块链开源实现HYPERLEDGER FABRIC架构详解 hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM ...

  2. HyperLedger Fabric Introduction——区块链超级账本介绍

    介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...

  3. Hyperledger Fabric explorer区块链浏览器搭建

    https://github.com/hyperledger-labs/blockchain-explorer 官方浏览器的github地址 根据文档,采用docker容器的方法搭建explorer. ...

  4. Hyperledger Fabric金融区块链项目总结 之一 概述

    这半年从零开始做了一个金融区块链项目,做的事情比较杂,因为人手不够(只有一个campus hire帮忙),几乎所有事情都要自己做,但人手少也有很明显的好处:项目/人员管理简单,几乎把所有精力都放在研发 ...

  5. hyperledger fabric 交易结构以及解析

    Fabric 1.0源代码分析(43) Tx(Transaction 交易)_yinchengmvp的技术博客_51CTO博客 Hyperledger Fabric的区块结构 交易结构Hyperled ...

  6. 区块链 以太坊 交易结构、执行、存储 解析 交易中为什么没有包含发送者地址这条数据

    一. 交易的结构 1. Transaction结构 交易结构定义在 core/types/transaction.go 中: type Transaction struct {//交易数据data t ...

  7. 区块链开源实现hyperledger fabric架构详解

    hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM.Intel.各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量.本文中我们依次讨论:区块链 ...

  8. Linux搭建Hyperledger Fabric区块链框架 - Hyperledger Fabric模型概念

    企业选型的区块链底层技术 Hyperledger Fabric 概念 2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术. Hyperledger Fabric ...

  9. “Hyperledger Fabric 是假区块链!”

    作者 | Stuart Popejoy 编译 | 王国玺 出品 | 区块链大本营(blockchain_camp) 自 Libra 发布以来,沉寂已久的区块链社区又活跃了起来,一些探索区块链业务的公司 ...

  10. Hyperledger fabric学习笔记(一)

    原文链接:https://blog.csdn.net/zhanglingge/article/details/106012703 fabric分为底层的网络层.权限管理模块.区块链应用模块,通过SDK ...

最新文章

  1. C语言——四字节对齐(4对齐后是4, 5对齐后是8)
  2. php phpanalysis2.0,使用phpAnalysis打造PHP应用非侵入式性能分析器
  3. 有1~5000一组乱序数列,请使用伪代码对该数进行排列
  4. 博客文件第二部分 Linux Shell高级编程技巧——第一章 深入讨论
  5. 第五节、矩阵分解之LU分解
  6. linux-inject:注入代码到运行的Linux进程中
  7. linux vi中删除命令,linux vi删除命令的使用
  8. KEIL4烧写下载程序到STM32最小系统板
  9. 机器学习、深度学习、计算机视觉、自然语言处理及应用案例
  10. Migration中的Collation Confliction
  11. fresco android 6.0 不支持 gif,Fresco Gif加载优化
  12. 【爱情】男女关系大实话 婚姻篇
  13. css——background、border、margin、float、content、blur(图片模糊)、user-select:none(禁用用户选择复制),border-image
  14. 算力智库2021隐私计算论坛圆满落幕,隐私计算落地会长出怎样的新商业模式?
  15. 使用virt-manager管理虚拟机
  16. Soft NMS+Softer NMS+KL Loss
  17. linux脚本编写后怎么退出,linux脚本编写退出拍摄pdf
  18. # nest笔记四:文件的上传与下载
  19. 【001 设备驱动】主设备号和次设备号的用途
  20. 全能型pdf文件阅读编辑器PDF Reader专业版

热门文章

  1. webmin的vsftp插件
  2. Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
  3. Jenkins+MSbuild+SVN实现快速搭建.net持续集成环境(构建、编辑、部署到服务器)
  4. [AGC003F] Fraction of Fractal 矩阵快速幂
  5. jemalloc优化MySQL、Nginx内存管理
  6. WINCE 中常见的问题收集
  7. 储存管理系统c语言,C语言-图书管理系统-未做文件储存系统.docx
  8. 拓端tecdat|R语言基于温度对城市层次聚类、kmean聚类、主成分分析和Voronoi图可视化
  9. 拓端tecdat|用Python进行图像模糊处理和特征提取
  10. java编辑简单文本编辑器_简单文本编辑器