Fabric的源码阅读方式

前言

Hyperledger fabric,什么是Hypeledger,什么是Fabric?Hypeledger从字面上的意思是超级账本,它是Linux基金会于2015年12月启动了名为“超级账本”的开源项目,旨在推动各方协作,共同打造基于区块链的企业级分布式账本底层技术,用于构建支撑业务的行业应用和平台,以便支持各种各样的商业应用场景。Fabric是超级账本中的一个项目,为商业区块链应用提供底层支持.Fabric是由IBM、数字资产和Blockstream等三家公司的代码整合而成.

准备工作
  1. 环境准备(Ubuntu)

    a. 安装go的开发环境
    b. 安装git工具及环境配置
    c. 利用git下载Fabric源码.
        git clone https://github.com/hyperledger/fabric.git (最好下载在go配置路径的src文件夹下)

  2. 技能准备

    2.1 Fabric项目主要是使用go语言进行编写,所有需要具备go语言的基础知识.

    a.基本的go语法知识.
    b.go的并发知识.
    c.一定的项目架构的设计模式思想

    2.2 通过Fabric项目部署的peer网络节点间的数据交互是属于不同的service(进程)间的通信,使用的是gRPC(谷歌的远程过程调用协议).所以需要掌握gRPC的基本用法和知识.而交互的数据格式使用的是 Protocol Buffers.

阅读方式-HOW

step 1 了解Fabric项目下的各个模块包的作用,Fabric源码项目是由不同的模块包组成的,了解各个模块包的作用有助于快速查找到你需要阅读的源码类.模块和包划分可参考http://qukuaiwang.com.cn/news/722.html. Fabric项目主要有三大模块peer和Order和fabric-ca,其中fabric-ca模块需要另外下源码.本文讨论的是Fabric的源码,只包括peer和Order两个模块.其他的Fabric源码中的不同的包都是为这两个模块服务.

step 2选定你要阅读和理解的模块部分.
这里写图片描述
图中peer和o-service的属于Fabric源码中的模块内容.


step 3 模块的源码阅读(举例说明)
注意:Docker部署Fabric网络需要的镜像是通过编译Fabric的源码的模块部分而来的,比如说,Fabric网络中的Peer镜像是通过make Peer模块的源码而来的.
eg如果选定的是阅读Order模块的源码,需要对照利用Order模块的源码编译生成的Order Docker镜像来启动的Order容器.

3.1下图是fabric部署的网络节点启动的docker容器展示图.—–图中可以看到最后一个容器启动的信息启动的是Order容器,启动时候运行的命令是"orderer",容器服务开放的端口是7050端口,用于gRPC服务通信.
这里写图片描述
3.2 进入到Fabric源码目录的文件夹,找到main.go入口文件.
这里写图片描述

3.3 main.go入口文件的代码理解

说明main.go文件中的第三方包
kingpin - 一个Go(golang)命令行和flag解析器支持子命令.

//命令变量的的初始化,app
var (
    app = kingpin.New("orderer", "Hyperledger Fabric orderer node")
    start   = app.Command("start", "Start the orderer node").Default()
    version = app.Command("version", "Show version information")
)
//入口函数main
func main() {
 //开始解析命令kingpin
    switch kingpin.MustParse(app.Parse(os.Args[1:])) {
    // "start" command
    case start.FullCommand():
        logger.Infof("Starting %s", metadata.GetVersionInfo())
        conf := config.Load()
        initializeLoggingLevel(conf)
        initializeProfilingService(conf)
        grpcServer := initializeGrpcServer(conf)//初始化gPRC服务配置
        initializeLocalMsp(conf)
        signer := localmsp.NewSigner()
        manager := initializeMultiChainManager(conf, signer)
        server := NewServer(manager, signer)
        ab.RegisterAtomicBroadcastServer(grpcServer.Server(), server)
        logger.Info("Beginning to serve requests")
        grpcServer.Start()//启动服务
    // "version" command
    case version.FullCommand():
        fmt.Println(metadata.GetVersionInfo())
    }

}

1.Order的Docker容器运行起来的时候初始化命令是”orderer”,而初始化命令参数flag默认的是”start”,start = app.Command("start", "Start the orderer node").Default()
2.解析命令是switch的是”start” command,运行的是start.FullCommand()分支下的代码,执行的是一些初始化的操作,接下来就可以具体查看Order模块的源码初始化的细节.

参考链接

Protocol Buffers的学习笔记
gRPC学习笔记

为了搭建一个可追溯系统,我们可以使用Fabric来设计和编写源代码。 Fabric是一个用于Python的库,它提供了一个简单而强大的方式来管理和执行远程命令和任务。通过使用Fabric,我们可以轻松地编写脚本来自动化一系列任务,例如部署、配置和管理系统。 在搭建可追溯系统的过程中,我们可以使用Fabric来完成以下任务: 1. 设计数据模型:我们需要首先设计数据库的数据模型,以便能够存储和追踪系统中的各种信息。我们可以使用Fabric来定义和创建数据库表和字段。 2. 编写API接口:为了实现系统的可追溯性,我们需要为系统设计一组API接口,这些接口将允许用户查询和检索系统中的数据。通过使用Fabric,我们可以轻松地编写这些API接口的代码,并对其进行测试和部署。 3. 追踪数据变更:为了追踪系统中的数据变更,我们可以使用Fabric来编写一些脚本,使其在数据变更时自动记录相关信息。例如,我们可以编写一个脚本,在数据插入、更新或删除时自动记录时间戳和用户信息。 4. 数据可视化:为了向用户展示系统中的数据变化情况,我们可以使用Fabric来编写脚本生成图表和报表。这些图表和报表可以通过Web界面展示给用户,让他们能够更好地了解系统的变化和趋势。 通过使用Fabric搭建可追溯系统源代码,我们可以更加方便地管理和追踪系统中的信息,提高系统的可靠性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值