为什么 Hyperledger Fabric 中的连接配置文件具有 gRPC URL?

Why does connection profile in Hyperledger Fabric has gRPC URL?

在客户端应用程序中(使用 Node/Go),我们提供连接配置文件来识别背书者的端点。

我们根据 grpc://localhost:port 指定对等端点,但实际上 gRPC 运行在 HTTP2 上,对吗?

然后 Fabric SDK 将端点转换为 HTTP url 还是由 fabric 对等代码处理?

我的意思是 grpc 端点如何转换为 HTTP 端点?

或者对等方是否公开了 grpc 端点本身?如果是,如何?

对于前端和 Hyperledger Fabric Layer 之间的通信,我们有两种方法,一种是使用 gRPC 调用,或者使用 Hyperledger 社区提供的 SDK 之一。 v1.0 之后没有 REST API 调用,与 v0.6 不同,v0.6 有 REST API 调用,您可以使用 IP 地址将交易触发给排序者,然后触发共识。

将其限制为 gRPC 和 SDK 可以改善设计和连接安全问题,这对于区块链的工作至关重要。 gRPC 是用于通信的 HTTPS 2.0 协议,它比 HTTPS 1.1 更快,并且具有改进的安全功能。 SDK 使用 gRPC 调用与网络通信。所以,说白了,如果你需要和Network通信,你只需要使用gRPC调用

如上面评论中@david_k所建议,connection profile中的URL用于识别是否为grpc[=36]后提取主机和端口号=] 或 grpcs(通过 SSL)调用。

验证:

  1. 部署 fabcar 示例并安装节点模块。
  2. 转到 lib 目录中 fabric-common 节点模块中的 Endpoint.js 文件。编辑第 44 行对应的行here
  3. 进入first-network目录(fabcar示例使用的网络)编辑连接配置文件。根据您对节点模块中的 Endpoint.js 文件所做的编辑,替换对等节点和排序节点 URL 中的 grpcs
  4. Return 回到 javascript 目录并获取钱包身份。
  5. 修改 invoke.js 以读取新的连接配置文件。
  6. 执行一下可以看到交易提交成功

因此,我们可以确定只有主机和端口是从 URL 中获取的,用于对结构进行 grpc/grpcs 调用网络。