导语
Fabric的Peer节点和Orderer节点都提提供了基于GRPC协议的接口,通过这些接口可以和Peer节点以及Orderer节点进行交互。于是Fabric 提供了sdk来简化访问Peer节点和Orderer节点。
8.1 Fabric接口的通信协议和功能划分
1.Grpc协议
开源的远程过程调用 RPC系统
2.Fabric模块的Grpc接口
Peer 模块和 Orderer 模块提供了 Grpc 相关的接口,但是在项目就开发中并不直接调用Orderer模块中Grpc接口,主要是Fabric的Peer模块的Grpc接口的调用方式。
3,Fabric的Peer模块的接口功能划分
- 系统管理
- Chaincode相关操作
系统管理
- 获取当前 Peer 加入了哪些 Channl
- 获取当前Peer 加入的某个Channel的区块数
- 获取当前Peer加入的某个Channel中的某个区块号,获取区块的详细信息
- 根据当前Peer加入的某个Channel中的某个区块的哈希值,获取区块的详细信息
- 根据当前Peer加入的某个 Channel中交易的哈希值,获取交易的详细信息
- 获取当前Peer服务器中状态为install的Chaincode的信息
- 根据当前Peer加入的某个Channel中状态为Instantiate的Chaincode的详细信息
Chaincode相关操作
- 调用Chaincode的query方法
- 调用一个已经部署的Chaincode的invoke方法
Fab ric-ca-server的RESTAPI接口
- 注册一个Fabric账号
- 加载一个已经注册过得Fabric账号
在开发中尽量使用sdk,尽量避免重复发明轮子
8.4 Fabric Go SDK
Golang是Fabric源生的开发语言,Fabric和Fabric-ca都是Goalng开发的,Fabric的Chaincode也是采用Golang开发的。
下面开始是非常重要的
8.4.1 Fabric Golang的安装
Fabric Golang SDK 的安装非常简单, 执行命令:
8.4.2 创建配置文件
Fabric GoLang SDK 需要依赖一个配置文件,该配置文件采用YAML的格式。配置格式如下:
完整的配直文件可以 参考h ttps: // gi thub. com/hyper ledger/fabric-sdk- go/b lob/master I test/fixtures/ config/ config test. yaml
8.4.3 一个简单的golang 访问Fabric的例子
上面有两获取账号 的方式
- fabric_local:通过使用cryptogen模块生成的账号访问Peer服务器节点
- fabirc-ca: 通过使用fabric-ca-server 授权的账号访问Peer服务器节点
8.4.4 Fabric Golang SDK其他的方法
-
获取当前Peer节点加入那些Channel
-
获取当前Peer加入的某个Channel的区块数
-
根据当前Peer加入的某个Channel中的某个区块号,获取区块的详细信息
- -
根据当前的Peer加入的某个Channel中的某个区块的哈希值,获取区块的详细信息
-
- 根据当前的Peer加入的某个Channel中交易的哈希值,获取交易的详细信息
-
获取当前Peer服务器中状态install的Chaincode的信息
Fabric Golang SDK中Chaincode相关操作接口
-
调用Chaincode的query方法
-
调用一个已经部署的Chaincode 的invoke方法
8.4.5 Fabric Golang SDK 的背书操作
在Golang 中进行背书操作是非常简单的。只需要在执行发起交易之前,添加需要背书的Peer节点即可,相关代码如下:
上述代码中增加了一个背书节点,该节点的IP地址为: 172.16.188:7051,端口号为:7051
背书节点必须安装和目标节点一样的Chaincode。
小结
背书操作虽然简单。 但是每个sdk都有单独的提示,这是一个非常重要的功能,从sdk触发,可以简化我们开发难度,大大提高开发效率。