超级账本Fabric的块和交易大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超级账本Fabric的块和交易大小相关的知识,希望对你有一定的参考价值。
参考技术A 首先交易大小是和 PutState function(Chaincode中的函数)大小限制相关的 , 而putState限制则是和总体gRpc限制相关的(当前默认是100MB) 可以在 server.go 中定义也可以在 config.go 中找到默认定义值
至于块的大小 则应该是和交易相关 在Fabric v0.6中, fabric/consensus/pbft/config.yaml文件可以定义
这意味着 有超过五百个交易时或者时间过去了一秒钟 就生成一个新的块
而在1.0中的fabric中其中的一个 config文件 则是定义了BatchSize
对应的yaml配置文件为 configtx.yaml 中设定了块的最大值
参考
① Stack Overflow getState
② Stack Overflow blocksize
③ Stack Overflow blocksize
区块链之超级账本Fabric 基于SDK应用开发
一、Fabric 应用开发模型
Fabric开发包含客户端应用和智能合约(chaincode)开发
chaincode开发完成之后被部署到区块链网络的Peer节点上面。通过chaincode来操作账本,当调用一个交易transaction时,实际上是在调用chaincode中的一个函数方法,它实现业务逻辑,并对账本进行get, put, delete操作。
客户端应用提供用户交互界面,调用fabric SDK,完成区块链的操作和交易
本次培训侧重客户端应用的开发
二、Fabric SDK接口介绍
Fabric提供了SDK给应用程序调用,SDK包含了交易处理,成员管理,区块链查询和事件处理等接口
Fabric SDK具有以下特点: 底层接口调用很多都是异步返回,采用gRPC协议,能够很好的双向传输数据
gRPC结合Protocol Buffer能减少传输数据量,提高网络传输性能
支持语言有Go、Java、JavaScript、Python。本次配置我们以Java语言开发为例
和内部模块采用相同的接口,减少端口开放性,减少安全风险
整个Fabric网络,除了fabric-ca采用HTTP协议,其他都是GRPC协议
Fabric SDK接口模块
Fabric SDK定了两种模块的接口;一种访问fabric-ca接口,一种访问fabric网络接口,其中fabric-ca是可选的,可以选用其他成熟的第三方CA系统替换
Fabric SDK 提供的模块如下:
HFClient 模块:应用程序入口,提供通道管理,链码管理,数据存储,密码学相关的功能。每个HFC实例对应一个区块链网络,包含记账节点,排序节点等。如果应用层需要访问多个网络,可以建立多个HFC的实例Config 模块:初始化HFC时需要离线获取配置信息,Config模块包含可信的根证书,排序服务节点证书和IP地址,记账节点证书和IP地址等。配置模块读取后传递给HFC
Channel 模块:对应通道实例,通道在配置了order和peer之后需要初始化,初始化的时候给order服务节点发送获取配置区块请求
Peer 模块:Peer节点是HFC模块发送背书请求、交易查询的节点。Peer实例包含了节点名称、地址、角色、注册证书等信息
Order模块:Order节点是HFC模块发送交易排序的节点。Order实例包含了排序服务节点的地址信息,定义了发送原子广播请求和获取区块的接口
User模块:代表了已经完成注册证书和签名密钥的实体,注册证书必须由区块链网络信任的CA颁发
用户身份(User Identity) 和 节点身份(Peer Identity)是有区别的,在SDK里面,用户身份可以访问秘钥信息,可以进行签名。而节点身份不能访问秘钥,只能验证签名
三、Fabric 应用开发流程
Fabric应用开发流程具有通用性 一般步骤如下:
1.在排序节点上创建通道
2.用户登记与注册
3.Peer节点加入通道
4.通过Peer节点安装实例化链码
5.发起交易并生成区块
发起交易如下图所示:
> 四、Fabric 应用开发流程
如果应用层直接和Fabric SDK打交道,流程并不简单,同时会有大量的冗余代码,一般情况下在应用层和Fabric SDK中间还会为区块链包装一个Framework,,简化应用层和区块链对接的难度,对应用层来说不用关心区块链底层的逻辑和流程
Fabric 源码介绍:
Fabric-CA 源码介绍:
api:CA 接口相关代码实现
cmd/fabric-ca-client: CA客户端相关代码实现
cmd/fabric-ca-server:CA服务端相关代码实现的功能的实现
lib/metadata::数据库操作代码实现
五、Fabric应用开发注意事项
理解Fabric的运行,交易流程再开始应用开发,否则会摸不着门道
需要特别注意Fabric的配置选项,有加密,超时等
几乎每一个SDK或多或少的都会存在一些BUG,有些BUG大部分是SDK自身的,有些是Fabric的问题,那么遇到这些问题后,我们可以根据交易的流程来判断出哪一步出了问题,然后可以在每个节点修改日志级别来得到错误信息。再定位到SDK当中的某一行代码来进行调试
需要注意SDK版本和Fabric平台版本的匹配,不同版本会出现不兼容现象
建议初学者从Fabric自带的E2E例子开始学习会事半功倍
以上是关于超级账本Fabric的块和交易大小的主要内容,如果未能解决你的问题,请参考以下文章
Hyperledger Fabric学习笔记2——超级账本介绍