综述
原始提案详见 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: 暂不支持
- Ubuntu:
- 或者根据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: 恋水无意
腾讯云开发者社区:孟斯特