综述

原始提案详见 Fabric Gateway RFC。Fabric Gateway 为 Fabric Peer网络提供了单一入口, 并将许多事务提交逻辑从客户端应用程序中移除。

Fabric Gateway为客户端应用程序提供了一组简单的gRPC接口,同时管理客户端侧事务调用的声明周期。这最小化了客户端与区块链网络之间传递的网络流量,同时也减少了需要打开的网络端口数量。

gRPC接口细节详见gateway.proto

构建与测试

先决条件

Fabric Gateway包括三个功能相当的客户端 API,分别用 Go、Typescript 和 Java 编写。构建这些组件,需要安装并将以下内容添加到 PATH 中:

  • Go 1.20+
  • Node 18+
  • Java 8+
  • Docker
  • Make
  • Maven
  • ShellCheck

运行硬件加密模块(HSM)测试的话,还需要安装SoftHSM v2,下面两种方法均可:

  • 通过对应系统的包管理器安装:
    • Ubuntu: sudo apt install softhsm2
    • macOS: brew install softhsm
    • Windows: 暂不支持
  • 或者根据SoftHSM2 安装文档从源码构建
    • 建议使用--disable-gost选项,除非需要gost算法支持俄罗斯市场,因为它需要额外的库。

make构建

注意:首次克隆存储库时,用于测试的某些模拟实现可能不存在,Go 代码将显示编译错误。这些将在运行unit-test目标时生成,或者可以通过运行 make generate 明确生成。

以下是Makefile中可用的命令:

  • make generate:生成用于单元测试的模拟实现
  • make lint:运行 Go 代码的 lint 检查
  • make unit-test-go:运行 Go 客户端 API 的单元测试,不包括 HSM 测试
  • make unit-test-go-pkcs11:运行 Go 客户端 API 的单元测试,包括 HSM 测试
  • make unit-test-node:运行 Node 客户端 API 的单元测试
  • make unit-test-java:运行 Java 客户端 API 的单元测试
  • make unit-test:运行所有客户端语言实现的单元测试
  • make pull-latest-peer:获取包含网关服务器的最新对等体 Docker 镜像
  • make scenario-test-go:运行 Go 客户端 API 的场景(端到端集成)测试,包括 HSM 测试
  • make scenario-test-go-no-hsm:运行 Go 客户端 API 的场景测试,不包括 HSM 测试
  • make scenario-test-node:运行 Node 客户端 API 的场景测试,包括 HSM 测试
  • make scenario-test-node-no-hsm:运行 Node 客户端 API 的场景测试,不包括 HSM 测试
  • make scenario-test-java:运行 Java 客户端 API 的场景测试
  • make scenario-test:运行所有客户端语言实现的场景测试
  • make scenario-test-no-hsm :运行所有客户端语言实现的场景测试,不包括 HSM 测试
  • make shellcheck:检查脚本错误
  • make test:运行所有测试

场景测试

场景测试创建了一个包含两个组织(每个组织一个对等体)和一组 Docker 容器中的单个网关的 Fabric 网络。客户端连接到网关以提交交易并查询账本状态。

这些测试由 Cucumber BDD 框架的功能文件定义,使用相同的一组功能文件在所有三个客户端语言实现之间进行,以确保行为的一致性。


孟斯特

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特