Hyperledger Fabric学习笔记——Connection Profile

链接配置文件描述了一个组件集合,包括peers、orderers和ca等,该文件也包括和这些组件相关的通道和组织信息。链接配置文件主要用于应用程序配置网关来处理所有网络接口,这样使得应用程序能够专注于业务逻辑。链接配置文件通常由知道网络拓扑结构的管理员创建。

1、Connection Profile特点

connection profile被用于配置网关(可以使用JSON或者YAML配置),网关主要用于简化应用程序和网络通道的连接接口。可以简单的把connection profile理解为一个描述网络视图的文件,它可以是一个详尽的视图,因为以下原因并不现实:

  • peers、orderers等网络构成元素一直随需求在变化
  • 组件可能因为一些特殊原因启动或者停止
  • 一个网关并不需要网络的完整视图,只需要和成功处理transaction(满足endorsement policy以及transaction被提交到账本时会返回确认的peers)相关的组件信息即可
  • 动态网关可以配置最小的网络拓扑信息,余下的可以被发现,因为Service Discovery可以添加connection profile中的信息

2、Connection Profile用法

const yaml = require('js-yaml');
const { Gateway } = require('fabric-network');

const connectionProfile = yaml.safeLoad(fs.readFileSync('../gateway/paperNet.yaml', 'utf8'));

const gateway = new Gateway();

await gateway.connect(connectionProfile, connectionOptions);

在导入一些需要的类后,从文件读入paperNet.yaml并转换为JSON对象,然后用connect方法配置一个网关。

3、Connection Profile结构

#connection profile的名字
name: "papernet.magnetocorp.profile.sample"
#可以添加自己的x-特定于应用程序的属性以供将来使用
x-type: "hlfv1"
#对connection profile一个简单的描述
description: "Sample connection profile for documentation topic"
#当前connection profile的架构版本,不会经常更改
version: "1.0"
#不同的通道最好放在不同的connection profile中,尤其是它们互相独立的情况下
channels:
  papernet:
    orderers:
    #下面仅仅是orderer的逻辑名称,后面会有如何连接到这个orderer
      - orderer1.magnetocorp.example.com
    peers:
    #下面同样是逻辑名称
      peer1.magnetocorp.example.com:
      #安装了智能合约的可以执行所有角色
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
      peer2.magnetocorp.example.com:
        endorsingPeer: true
        chaincodeQuery: true
        ledgerQuery: true
        eventSource: true
        #没有安装智能合约的peer
      peer3.magnetocorp.example.com:
        endorsingPeer: false
        chaincodeQuery: false
        ledgerQuery: true
        eventSource: true
      peer9.digibank.example.com:
        endorsingPeer: true
        chaincodeQuery: false
        ledgerQuery: false
        eventSource: false
#所有的组织,不一定是上面列出通道相关的组织,因为应用程序会得到可能通道外组织peer的通知,因此需要一#个组织到节点的映射关系
organizations:
  MagnetoCorp:
    mspid: MagnetoCorpMSP
    peers:
      - peer1.magnetocorp.example.com
      - peer2.magnetocorp.example.com
      - peer3.magnetocorp.example.com
    certificateAuthorities:
      - ca-magnetocorp
  DigiBank:
    mspid: DigiBankMSP
    peers:
      - peer9.digibank.example.com
#orderers的物理信息,包括ip地址和端口,gRPC选项,当和orderer交互时可以覆盖默认的
orderers:
  orderer1.magnetocorp.example.com:
    url: grpc://localhost:7050
    grpcOptions:
      ssl-target-name-override: orderer1.magnetocorp.example.co
peers:
  peer1.magnetocorp.example.com:
    url: grpc://localhost:7151
    grpcOptions:
      ssl-target-name-override: peer1.magnetocorp.example.com
      request-timeout: 120001
  peer2.magnetocorp.example.com:
    url: grpc://localhost:7251
    grpcOptions:
      ssl-target-name-override: peer2.magnetocorp.example.com
      request-timeout: 120001
  peer3.magnetocorp.example.com:
    url: grpc://localhost:7351
    grpcOptions:
      ssl-target-name-override: peer3.magnetocorp.example.com
      request-timeout: 120001
  peer9.digibank.example.com:
    url: grpc://localhost:7951
    grpcOptions:
      ssl-target-name-override: peer9.digibank.example.com
      request-timeout: 120001
certificateAuthorities:
  ca1-magnetocorp:
    url: http://localhost:7054
    httpOptions:
      verify: false
    registrar:
      - enrollId: admin
        enrollSecret: adminpw
    caName: ca-magnetocorp

总而言之,connection profile定义了足够的通道、组织、对等节点、orderers和cas,以供应用程序配置网关,网关允许应用程序专注于业务逻辑,而不是网络拓扑细节。

发布了38 篇原创文章 · 获赞 0 · 访问量 2011

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/104768841
今日推荐