【Fabric】教程之使用GO-SDK(一)

框架搭建

1.整体目录

整个目录可以分为三个部分,即fabric相关,app相关;其中app分为server后端和web前端。

故创建如下文件夹:fixture、app/server和app/web

1.1 fabric相关(fixture)

这一部分参考自己搭建网络

其中,fabric部分可以:

  1. 仅保留配置文件、创世块等文件,不需要写网络启动脚本。完全通过go-sdk启动
  2. 也可以像正常网络一样启动,然后go-sdk仅调用

需要注意的是,第一种方式只需要生成一次创世块等等文件,后续就不要再重新生成了,也无需利用fabric创建通道部署链码等,这些操作都交给sdk;而第二种方式更倾向于一次完整的fabric网络启动,所有的步骤都由fabric脚本完成,而sdk仅负责调用链码,不负责启动fabric网络。

这两种分类是我自己总结出来的,不是非常标准。目前在众多教程中标准的应该是第一种,整个周期比较完整,接口较多,因此这篇教程针对于第一种方式进行一次详细的解释,两种方法是相通的,后续看情况在写第二种方式。

1. cryptogen

编写配置文件crypto-config.yaml

这里采用直接拷贝已有的配置文件,因此不需要重新写。

生成配置文件

cryptogen generate --config=./crypto-config.yaml --output="organizations"

{% asset_img fabric-1.1.png This is an image %}

这时会生成一个crypto-config文件夹,里面包含了所有的组织信息

{% asset_img fabric-1.2.png This is an image %}

2.configtx

同样,可以将已有的configtx拷贝过来
然后对路径进行更改

之后生成相关块

  1. 生成genesis.block
export FABRIC_CFG_PATH=${PWD}
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block -channelID fabric-channel

{% asset_img fabric-1.3.png This is an image %}

目录中会多出
{% asset_img fabric-1.4.png This is an image %}

  1. 生成channel.tx
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

{% asset_img fabric-1.5.png This is an image %}

目录中会多出
{% asset_img fabric-1.6.png This is an image %}

  1. 生成Org1MSPanchors.tx和Org2MSPanchors.tx
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

{% asset_img fabric-1.7.png This is an image %}

目录中会多出
{% asset_img fabric-1.8.png This is an image %}

3.创建peer节点(其他节点同理)

有两种方式 一种是利用core.yaml 一种是利用docker(常用)
在此仅操作docker
因此仅编写docker-compose.yaml
我选择了copy test-network目录下的docker-compose-test文件
但是注意! 需要把所有路径换为自己的路径

  • 3.1 开始启动网络
docker-compose up -d
# 上面这条命令需要在docker.yaml路径下,如果不想在该路径下执行,则应该在命令中标注路径,即利用-f参数
# docker-compose -f ./docker/docker-compose-net.yaml up -d

{% asset_img fabric-1.9.png This is an image %}

本地目录此时不会多出相关的东西。

这时,就可以不再操作fabric了,后续的创建通道、部署链码等都可以使用sdk来解决。

1.2 server相关(app/server)

1.2.1 fabric-go-sdk

首先是sdk的使用。

顾名思义,sdk是后端调用的接口,所以首先建如下目录:

{% asset_img fabric-1.10.png This is an image %}

其中,sdkInit是负责连接fabric的代码;router是后端部署、对应接口的代码;models是存放数据结构的代码;api是接口具体实现的代码。main.go则是启动后端的代码;config.yaml是fabric的相关配置信息。

  1. config.yaml

这个文件一般都是有模板的,前期只需要根据自己的fabric配置进行更改即可,要注意节点名称、路径、通道名称等问题即可。

  1. sdkInit。

这里可以直接放入写好的代码,一般sdk不怎么需要大的改动。

整个调用过程如下:

2.1. setup

2.2. create channel and join

2.3. create chaincode lifecycle

2.4. invoke chaincode set status

这些的逻辑就是正常启动网络的逻辑,很好理解。

按照此逻辑编写main.go。

(如果想要了解sdk的原理可以上网自己搜索一下,很多讲原理的)

1.2.2 router

写好sdk后,下一步就是写router,这个有点后端基础的同学应该都差不多能看懂,可以参照很多基础教程,这里给一个非常新新手的教程,这个教程中的handlers就是我的api/v1这些。

这里需要注意的是,router中只是声明了有哪些接口,方便前端调用,但是具体的api实现应该在api/v1中实现。

之后只需要在main.go中调用router.init()即可

至此,整个后端就ok了.

终端会显示如图:

{% asset_img fabric-1.11.png This is an image %}

1.3 web

在上面那个教程里有 就不多写了

!!!注意!!!

给的项目中接口没有写,写了的也是写了一半的,你们可以根据自己的链码接口啥的自己重新写

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值