Hyperledger Fabric 配置文件解析——core.yaml

提示:个人学习Hyperledger Fabric 的个人笔记,也是摸石头过河,借鉴前人的经验来提高自己。

借鉴:2.2 Fabric核心配置文件的理解_kevin-hf(ID不是微信)的博客-CSDN博客


目录

1.Peer section

2.VM section

3.Chaincode section

4.Ledger section

5.Operations section

6.Metrics section

FAQ


 peer节点的主要配置文件为core.yaml,接下来我们以sampleconfig/core.yaml为例进行注释。

首先,core.yaml由6个部分组成:peer、vm、chaincode、ledger、operations、metrics

1.Peer section

###############################################################################
#
#    Peer section
#
###############################################################################
peer:

    # 指定peer节点 id,并在命名docker资源时使用
    id: jdoe

    # 指定网络ID,并在命名docker资源时使用。
    networkId: dev

    # 侦听本地网络接口上的地址。默认监听所有网络接口
    listenAddress: 0.0.0.0:7051

    # 此peer节点用于侦听入站链码连接的端点。
    # 如果这被注释掉,则侦听地址被选择为具有端口7052的对等地址(如下所示)
    # chaincodeListenAddress: 0.0.0.0:7052

    # 此peer的链码端点用于连接到peer。如果没有指定,则选择chaincodeListenAddress地址。
    # 如果未指定chaincodeListenAddress,则选择(如下所示)peer地址
    # 如果指定的peer地址无效,则无论peer地址自动检测值如何,它都将返回到自动检测的IP(本地IP)。
    # chaincodeAddress: 0.0.0.0:7052

    # 当作为peer配置时,它表示同一组织内作为联系其他节点的端点。关于联系其他组织的peer节点,详情请看gossip中externalEndpoint。
    # 当用作CLI配置时,这意味着这个peer节点可作为交互使用
    address: 0.0.0.0:7051

    # peer节点是否通过编程的方式自动探测对外服务绑定的地址。这种情况对于docker容器非常有用
    # 设置为true时,将覆盖peer地址
    addressAutoDetect: false

    # peer节点的 gateway网关 服务设置(2.4新增内容).
    gateway:
        # 是否对该peer启用网关
        enabled: true
        # 背书超时是网关在向客户端返回超时错误之前等待其他背书对等方响应的时间。
        endorsementTimeout: 30s
        # dialTimeout是网关等待连接到其他网络节点的持续时间。
        dialTimeout: 2m


    # peer服务器和客户端的keepalive设置
    keepalive:
        # Interval是一个持续时间,如果服务器没有看到来自客户端的任何活动
        # 则会ping客户端以查看其是否处于活动状态
        interval: 7200s
        # 等待响应超时时间
        timeout: 20s
        # MinInterval是服务器和客户端ping之间允许的最小时间。
        # 如果客户端频繁地发送ping,对等服务器将断开它们的连接
        minInterval: 60s
        # 用于与其他peer节点通信的客户端设置
        client:
            # Interval是ping到peer节点之间的时间。
            # 这必须大于或等于对等节点指定的最小间隔
            interval: 60s
            # 等待响应超时时间
            timeout: 20s


    # Gossip 相关设置
    gossip:
        # 节点启动后默认连接的初始节点
        # 这是该peer节点在启动时可以联系到的其他peer节点的列表
        # 注意: 此处的端点必须是同一组织中peer节点的端点,
        # 因为peer将拒绝连接到这些端点,除非是与peer位于同一组织。
        bootstrap: 127.0.0.1:7051

        # 注意:orgLeader和useLeaderElection参数是互斥的。
        # 将两者设置为true将导致peer的终止,因为这是未定义状态。
        # 如果对等体配置为useLeaderElection=false,请确保组织中至少有一个peer的orgLeader设置为true

        # 是否选用动态算法来动态选举leader
        # 其中leader是与orderer服务建立连接的peer,并使用交付协议从orderer服务中获取block
        useLeaderElection: false
        # 静态地将该peer定义为组织“领导者”,这意味着当前peer将保持与orderer服务的连接,
        # 并在其自身组织中的peer之间传播块。
        # 一个组织中的多个peer或所有peer可以被配置为组织领导者,以便它们都直接从订购服务中提取块。
        orgLeader: true

        # 成员跟踪轮询的间隔
        membershipTrackerInterval: 5s

        # 覆盖peer发布到其组织中其端点。
        # 对于其他组织中的peer,请参见“externalEndpoint”
        endpoint:
        # 内存中存储的最大块数
        maxBlockCountToStore: 10
        # 连续消息推送之间的最大时间(单位:毫秒)超过则触发,转发给其它节点
        maxPropagationBurstLatency: 10ms
        # 能缓存的最大消息数量,若超过则推送消息给其他peer节点
        maxPropagationBurstSize: 10
        # 将消息推送到远程peer节点的次数
        propagateIterations: 1
        # 选择将消息推送到的peer节点的数量
        propagatePeerNum: 3
        # 拉取消息的时间间隔(单位:秒)
        # 必须大于 digestWaitTime + responseWaitTime
        pullInterval: 4s
        # 拉取消息的peer节点数量
        pullPeerNum: 3
        # Peer节点拉取状态信息消息的周期(单位:秒)
        requestStateInfoInterval: 4s
        # 将状态信息消息推送到peer节点的周期(单位:秒)
        publishStateInfoInterval: 4s
        # 状态信息消息可以保存直到过期的超时时间
        stateInfoRetentionInterval:
        # Alive messages包含启动证书的时间(单位:秒)
        publishCertPeriod: 10s
        # 是否应该跳过验证区块信息(默认为false)
        skipBlockVerification: false
        # gRPC连接拨号的超时时间(单位:秒)
        dialTimeout: 3s
        # 建立连接超时时间(单位:秒)
        connTimeout: 2s
        # 接收消息的缓冲区大小
        recvBuffSize: 20
        # 发送消息的缓冲区大小
        sendBuffSize: 200
        # 处理摘要信息前的等待时间(单位:秒)应略小于requestWaitTime
        digestWaitTime: 1s
        # 处理移除nonce数据之前等待的时间(单位:毫秒)应略大于digestWaitTime
        requestWaitTime: 1500ms
        # 结束拉取数据处理前的等待时间(单位:秒)
        responseWaitTime: 2s
        # 心跳检查间隔时间(单位:秒)
        aliveTimeInterval: 5s
        # 心跳消息的超时时间 (单位:秒)
        aliveExpirationTimeout: 25s
        # 重新连接的间隔时间(单位:秒)
        reconnectInterval: 25s
        # 尝试连接到peer的最大次数
        maxConnectionAttempts: 120
        # Message expiration factor for alive messages
        msgExpirationFactor: 20
        # 这是发布给组织外部外的peer端口
        # 如果未设置,则其他组织不会知道同伴,也不会通过服务发现暴露    
        externalEndpoint:
        # Leader主节点选举模块配置
        election:
            # 领导者选择启动期间peer等待的时间(单位:秒)
            startupGracePeriod: 15s
            # gossip成员关系采样的时间间隔用于检查稳定性(单位:秒)
            membershipSampleInterval: 1s
            # peer节点决定选举的等待时间(单位:秒)
            leaderAliveThreshold: 10s
            # peer发送提议消息和声明自己为领导者之间的时间(发送声明消息)(单位:秒)
            leaderElectionDuration: 5s

        # 私有数据配置
        pvtData:
            # 从其他peer节点拉取数据直到被提交时(隐私数据被删除),隐私数据的最大保存时间        
            pullRetryThreshold: 60s
            # 当私有数据进入瞬时存储时,它与当时peer的分类账的高度相关联。
            # 定义了提交时当前分类账高度与保证不被清除的瞬时存储内存在私有数据之间的最大差异。
            # 当提交具有多个transientstoreMaxBlockRetention序列的块时,将从瞬时存储中清除私有数据。
            transientstoreMaxBlockRetention: 1000
            # 在背书时间等待隐私数据推送的每个peer确认的最长时间
            pushAckTimeout: 3s
            # 用作缓冲区以防止peer试图从别的peer提取私有数据,这些数据很快将在接下来的N个块中被清除。 
            # 这有助于新加入的peer更快地赶上当前的区块链高度。
            btlPullMargin: 10
            # 协调过程是在一个无限循环中完成的,而在每次迭代中,
            # 协调器都会尝试从其他peer中提取具有最大批量大小限制的最近丢失的块。 
            # 确定将在单次迭代中协调的丢失私有数据的最大批量大小。
            reconcileBatchSize: 10
            # 确定协调器从迭代结束到下一次协调迭代开始的睡眠时间。
            reconcileSleepInterval: 1m
            # 是一个标志,指示是否启用私有数据协调。
            reconciliationEnabled: true
            # 是一个标志,指示是否需要在提交期间跳过从其他peer拉取无效事务的私有数据,并仅通过协调器拉取。
            skipPullingInvalidTransactionsDuringCommit: false
            # implicitCollectionDisseminationPolicy 指定对等方自己的隐式集合的传播策略。
            # 当peer认可写入其自己的隐式集合的提案时,以下值会覆盖用于传播私有数据的默认值。
            # 请注意,它适用于peer已加入的所有频道。
            # 这意味着 requiredPeerCount 必须小于具有组织中peer数量最少的通道中的peer节点数量。
            implicitCollectionDisseminationPolicy:
               # 定义了peer在背书期间必须成功地将私有数据传播到其自己的隐式集合的合格peer的最小数量。 默认值为 0。             
               requiredPeerCount: 0
               # 定义了peer在背书期间尝试为自己的隐式集合传播私有数据的合格peer的最大数量。 默认值为 1。
               maxPeerCount: 1

        # Gossip 状态转移相关配置
        state:
            # 指示何时启用状态传输或默认值为 false,
            # 即状态传输处于活动状态并注意同步丢失的块,从而允许落后的peer跟上其余网络的速度。
            # 请记住,当 peer.gossip.useLeaderElection 为 true 并且组织中有多个 peer 时,
            # 或者 peer.gossip.useLeaderElection 为 false 而 peer.gossip.orgleader 为 false 时,
            # peer 的账本可能落后于其他 peer 并且由于状态转移被禁用而永远不会赶上。
            enabled: false
            # 来检查peer是否滞后到足以通过来自另一个peer的状态传输来请求块
            checkInterval: 10s
            # 等待来自其他peer的状态传输响应的时间量
            responseTimeout: 3s
            # 通过来自另一个peer的状态传输请求的块数
            batchSize: 10
            # blockBufferSize 反映了重新排序缓冲区的大小
            # 该缓冲区捕获块并注意将它们按顺序传递到分类帐层。
            # 实际缓冲区大小在 0 到 2*blockBufferSize 之间,每个通道维护自己的缓冲区
            blockBufferSize: 20
            # 请求单个状态传输请求的最大重试次数
            maxRetries: 3

    # TLS 设置
    tls:
        # 是否开启服务器端TLS
        enabled:  false
        # 入站连接需要客户端证书/双向TLS验证
        # 注意:没有配置使用证书的客户端不能连接到peer。
        clientAuthRequired: false
        # 用于 TLS 服务器的 X.509 证书
        cert:
            file: tls/server.crt
        # 用于 TLS 服务器的私钥
        key:
            file: tls/server.key
        # rootcert.file 表示在出站连接期间用于验证其他节点证书的可信的根CA证书。
        # 它不需要设置,但可用于扩充每个通道配置的 MSP 中可用的 TLS CA 证书集。
        rootcert:
            file: tls/ca.crt
        # 如果启用了双向 TLS,clientRootCAs.files 包含用于验证客户端连信任的根CA证书。
        # 它增加了每个通道配置的 MSP 中可用的 TLS CA 证书集。 
        # 至少,设置您组织的 TLS CA 根证书,以便对等方可以接收加入频道请求。
        clientRootCAs:
            files:
              - tls/ca.crt
        # 建立客户端连接时用于 TLS 的私钥。 如果未设置,将使用 peer.tls.key.file 代替
        clientKey:
            file:
        # 建立客户端连接时用于 TLS 的 X.509 证书。 如果未设置,将使用 peer.tls.cert.file 代替
        clientCert:
            file:

    # Authentication 包含与验证客户端消息相关的配置参数
    authentication:
        # 当前服务器时间与客户端请求消息中指定的客户端时间之间可接受的差异
        timewindow: 15m

    # peer将存储数据的文件系统上的路径(例如分类帐)。
    # 此位置必须受到访问控制保护,以防止可能破坏对等操作的意外修改。
    # 该路径可能是相对于 FABRIC_CFG_PATH 或绝对路径。
    fileSystemPath: /var/hyperledger/production

    # BCCSP(区块链加密提供者):选择要使用的加密实现或库
    BCCSP:
        # 默认是SW(软件实现),也可以选择PKCS11(硬件安全模块)
        Default: SW
        # SW 加密提供者的设置
        SW:
            # TODO:默认的哈希和安全级别需要重构才能完全配置。
            # 更改这些默认值需要协调 SHA2 在多个地方被硬编码,不仅是 BCCSP
            Hash: SHA2
            Security: 256
            # 私钥位置
            FileKeyStore:
                # 如果为 "",则默认为 'mspConfigPath'/keystore
                KeyStore:
        # PKCS11 加密提供程序的设置(即默认值:PKCS11)
        PKCS11:
            # PKCS11 模块库的位置
            Library:
            # Token Label
            Label:
            # User PIN
            Pin:
            Hash:
            Security:

    # peer节点上msp本地配置文件路径
    # 该路径可能是相对于 FABRIC_CFG_PATH 或绝对路径。
    mspConfigPath: msp

    # 本地 MSP 标识符
    # ----!!!!IMPORTANT!!!-!!!IMPORTANT!!!-!!!IMPORTANT!!!!----
    # 部署者需要更改 localMspId 字符串的值。
    # 特别是,一个peer的localMspId的名称需要与该peer所属的每个通道中的一个MSP的名称相匹配
    # 否则,此peer的消息将不会被其他节点识别为有效。
    localMspId: SampleOrg

    # CLI 常用客户端配置选项
    client:
        # 连接超时
        connTimeout: 3s

    # 订购服务相关的配置
    deliveryclient:
        # 使该peer能够通过gossip传播它从排序服务中提取的块。
        # 注意:“gossip.state.enabled”控制点对点复制过去提交的块。
        blockGossipEnabled: true
        # 它设置排序服务在重新连接尝试中可能花费的总时间,直到其重试逻辑放弃并返回错误
        reconnectTotalTimeThreshold: 3600s

        # 它设置排序服务<->订购服务节点连接超时
        connTimeout: 3s

        # 它设置连续重试之间的传递服务最大延迟
        reConnectBackoffThreshold: 3600s

        # 在通道配置中找到时应覆盖的排序者端点地址列表。
        addressOverrides:
        #  - from:
        #    to:
        #    caCertsFile:
        #  - from:
        #    to:
        #    caCertsFile:

    # 本地 MSP 的类型 - 默认为 bccsp 类型
    localMspType: bccsp

    # 仅在非生产环境中与 Go 分析工具一起使用。 在生产中,它应该被禁用(例如启用:false)
    profile:
        enabled:     false
        listenAddress: 0.0.0.0:6060

    # 定义处理程序可以过滤和自定义处理程序在对等点内传递的对象,比如
    #  Auth filter 身份验证过滤器 -拒绝或转发来自客户的提案
    #  Decorators  装饰器 - 附加或改变传递给链码的链码输入
    #  Endorsers - 自定义签名提案响应有效负载及其突变
    # 有效的处理程序定义包含:
    #   - 一个名称,它是在 core/handlers/library/library.go 中为静态编译的处理程序定义的工厂方法名称
    #   - 可插入过滤器的共享对象二进制文件的库路径 Auth 过滤器和装饰器按照定义的顺序链接和执行。例如:
    # authFilters:
    #   -
    #     name: FilterOne
    #     library: /opt/lib/filter.so
    #   -
    #     name: FilterTwo
    # decorators:
    #   -
    #     name: DecoratorOne
    #   -
    #     name: DecoratorTwo
    #     library: /opt/lib/decorator.so
    # 背书者被配置为一个映射,它的键是被覆盖的背书系统链码。 
    # 下面是一个覆盖默认 ESCC 并使用与默认 ESCC 具有相同功能的背书插件的示例。
    # 如果缺少 'library' 属性,则该名称将用作内置库中的构造方法,类似于 auth 过滤器和装饰器。
    # endorsers:
    #   escc:
    #     name: DefaultESCC
    #     library: /etc/hyperledger/fabric/plugin/escc.so
    # 定义处理句柄
    handlers:
        # 定义了拒绝或转发来自客户端提交的提案
        authFilters:
          -
            name: DefaultAuth # 工厂方法的名称
          -
            name: ExpirationCheck    #此过滤器检查身份 x509 证书过期
        # 添加或改变链码的输入参数
        decorators:
          -
            name: DefaultDecorator # 工厂方法的名称
        endorsers:
          escc:
            name: DefaultEndorsement
            library:
        validators:
          vscc:
            name: DefaultValidation
            library:

    #    library: /etc/hyperledger/fabric/plugin/escc.so
    # 将并行执行事务验证的 goroutine 的数量。
    # 默认情况下,peer 选择机器上的 CPU 数量。 设置此变量以覆盖该选择。
    # 注意:覆盖此值可能会对对等体的性能产生负面影响,因此请仅在您知道自己在做什么的情况下更改此值
    validatorPoolSize:

    # 客户端使用发现服务来查询有关节点的信息,
    # 例如 - 哪些节点加入了某个通道,最新的通道配置是什么,最重要的是--给定链码和通道,哪些可能的节点集满足背书政策。
    discovery:
        enabled: true
        # 是否启用了身份验证缓存
        authCacheEnabled: true
        # 缓存的最大大小,之后进行清除
        authCacheMaxSize: 1000
        # 由于过多而清除缓存后,保留在缓存中的条目的比例(0 到 1)
        authCachePurgeRetentionRatio: 0.75
        # 是否允许非管理员执行非通道范围的查询。
        # 如果为 false,则意味着只有对等管理员才能执行非通道范围的查询。
        orgMembersAllowedAccess: false

    # Limits 用于配置一些内部资源限制。
    limits:
        # 并发限制了每个对等点上对服务的并发运行请求的数量
        # 目前该选项仅适用于endorser service和delivery service。
        # 当该属性缺失或值为 0 时,对该服务禁用并发限制。
        concurrency:
            # 将并发请求限制为处理链码部署、查询和调用的背书服务,包括用户链码和系统链码。
            endorserService: 2500
            # 限制并发事件侦听器注册为块和事务事件提供服务。
            deliverService: 2500
            # 将并发请求限制为处理事务提交和评估的网关服务。
            gatewayService: 500

    # 由于所有节点都应保持一致,因此建议保留 MaxRecvMsgSize 和 MaxSendMsgSize 的默认值 100MB
    # GRPC 服务器和客户端可以接收的最大消息大小(以字节为单位)
    maxRecvMsgSize: 104857600
    # GRPC 服务器和客户端可以发送的最大消息大小(以字节为单位)
    maxSendMsgSize: 104857600

2.VM section

###############################################################################
#
#    VM section
#
###############################################################################
vm:

    # VM管理系统的端点。 对于 docker,一般可以是以下之一
    # unix:///var/run/docker.sock
    # http://localhost:2375
    # https://localhost:2376
    # 如果您使用外部链码构建器并且不需要默认的 Docker 链码构建器,
    # 则应取消配置端点,以免注册对等方的 Docker 健康检查器。
    # docker daemon地址
    endpoint: unix:///var/run/docker.sock

    # docker vms 的设置
    docker:
        tls:
            # 是否打开TLS认证
            enabled: false
            # CA证书
            ca:
                file: docker/ca.crt
            # TLS身份证书
            cert:
                file: docker/tls.crt
            # 私钥
            key:
                file: docker/tls.key

        # 启用/禁用链码容器的标准输出/错误以进行调试
        attachStdout: false

        # 创建 docker 容器的参数
        # 可以使用 ipam 和 dns-server 为集群有效地创建容器
        # NetworkMode - 设置容器的网络模式。支持的标准值为:`host`(默认)、`bridge`、`ipvlan`、`none`。
        # Dns - 供容器使用的 DNS 服务器列表。
        # 注意:不支持 Docker Host Config 的 `Privileged` `Binds` `Links` 和 `PortBindings` 属性,如果设置则不会使用。
        # LogConfig - 为 Docker 设置日志记录驱动程序(类型)和相关选项(配置)。
        # 了解更多信息,https://docs.docker.com/engine/admin/logging/overview/
        # 注意:不支持使用环境变量设置 LogConfig。
        hostConfig:
            # host意味着链码容器使用主机网络命名
            NetworkMode: host
            # DNS服务器
            Dns:
               # - 192.168.0.1
            LogConfig:
                Type: json-file
                Config:
                    # 最大50MB
                    max-size: "50m"
                    # 最多5个文件
                    max-file: "5"
            # 内从容量为2GB
            Memory: 2147483648

3.Chaincode section

###############################################################################
#
#    Chaincode section
#
###############################################################################
chaincode:

    # id通常是通过环境变量来提供的,动态标记链码信息
    id:
        # ID的path部分是在安装链码时提供的
        path:
        # name用于其他所有请求,可以是任意字符串值
        name:

    # 通用builder本地编译环境,适用于大多数链码类型,是一个docker镜像
    builder: $(DOCKER_NS)/fabric-ccenv:$(TWO_DIGIT_VERSION)

    # 在用户链码实例化过程中 启用/禁用 基本docker镜像的拉取(如下所列)。
    # 使用动态图像标签时很有用(例如 :latest)
    pull: false

    golang:
        # golang的链码部署生成镜像的基础docker镜像
        runtime: $(DOCKER_NS)/fabric-baseos:$(TWO_DIGIT_VERSION)

        # 是否动态链接golang链码
        dynamicLink: false

    java:
        # 这是一个基于 java:openjdk-8 的图像,添加了用于 java shim 层打包的附加编译器工具。
        # 此图像包含 Java 链代码运行时所需的 shim 层库。
        runtime: $(DOCKER_NS)/fabric-javaenv:$(TWO_DIGIT_VERSION)

    node:
        # 这是基于 node:$(NODE_VER)-alpine 的图像
        runtime: $(DOCKER_NS)/fabric-nodeenv:$(TWO_DIGIT_VERSION)

    # 被视为链码的外部构建器和启动器的目录列表。外部构建器检测处理将按照下面指定的顺序迭代构建器。
    # 如果您不需要回退到默认的 Docker 构建器,也可以取消配置上面的 vm.endpoint。
    # 要通过 env 变量覆盖此属性,请使用 CORE_CHAINCODE_EXTERNALBUILDERS: [{name: x, path: dir1}, {name: y, path: dir2}]
    # 路径必须是绝对路径。
    externalBuilders:
       - name: ccaas_builder
         path: /opt/hyperledger/ccaas_builder
         propagateEnvironment:
           - CHAINCODE_AS_A_SERVICE_BUILDER_CONFIG


    # 等待链码构建和安装过程完成的最长时间。
    installTimeout: 300s

    # 启动容器并等待注册通过的超时时间。
    startuptimeout: 300s

    # Invoke 和 Init 调用的超时持续时间以防止失控。
    # 此超时由所有通道中的所有链码使用,包括系统链码。
    # 注意:在 Invoke 期间,如果镜像不可用(例如在开发环境中被清理),peer 将自动构建镜像,这可能需要更多时间。 
    # 在生产环境中,链码镜像不太可能被删除,因此可以相应减少超时。
    executetimeout: 30s

    # 有 2 种模式:“开发”和“网络”:"dev" and "net".
    # 在开发模式下,用户在本地机器上从命令行启动 peer 后运行链代码。
    # 在网络模式下,peer 将在 docker 容器中运行链代码。
    mode: net

    # Peer和链码之间的心跳超时,值小于或等于0会关闭
    keepalive: 0

    # 启用系统链码
    system:
        _lifecycle: enable
        cscc: enable
        lscc: enable
        qscc: enable

    # 链码容器的日志记录部分
    logging:
      # 链码容器中所有记录器的默认级别
      level:  info
      # 覆盖“shim”记录器的默认级别
      shim:   warning
      # 链码容器日志的格式
      format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'

4.Ledger section

###############################################################################
#
#    Ledger section - 账本配置包括区块链和状态
#
###############################################################################
ledger:

  blockchain:

  state:
    # stateDatabase - 选项是“goleveldb”、“CouchDB”
    # goleveldb - 存储在 goleveldb 中的默认状态数据库。
    # CouchDB - 在 CouchDB 中存储状态数据库
    stateDatabase: goleveldb
    # 限制每次查询返回的记录数
    totalQueryLimit: 100000
    couchDBConfig:
       # 建议 CouchDB 与 peer 在同一台服务器上运行,不要将 CouchDB 容器端口映射到 docker-compose 中的服务器端口。
       # 否则,必须在 CouchDB 客户端(对等端)和服务器之间的连接上提供适当的安全性。
       couchDBAddress: 127.0.0.1:5984
       # 此用户名必须在 CouchDB 上具有读写权限
       username:
       # 建议在启动期间将密码作为环境变量传递(例如 CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD)。
       # 如果存储在此处,则该文件必须受到访问控制保护,以防止意外用户发现密码。
       password:
       # CouchDB 错误的重试次数
       maxRetries: 3
       # 对等启动期间 CouchDB 错误的重试次数。
       # 每次尝试重试之间的延迟加倍。
       # 默认为 10 次重试会导致 11 次尝试超过 2 分钟。
       maxRetriesOnStartup: 10
       # CouchDB 请求超时(单位:持续时间,例如 20s)
       requestTimeout: 35s
       # 每个 CouchDB 查询的记录数限制
       # 请注意,链码查询仅受 totalQueryLimit 约束。
       # 在内部,chaincode 可以执行多个 CouchDB 查询,每个查询的大小为 internalQueryLimit。
       internalQueryLimit: 1000
       # 每个 CouchDB 批量更新batch的记录数限制
       maxBatchUpdateSize: 1000
       # 创建 _global_ 更改系统数据库
       # 这是可选的。创建全局更改数据库将需要额外的系统资源来跟踪更改和维护数据库
       createGlobalChangesDB: false
       # CacheSize 表示要为内存状态缓存分配的最大兆字节 (MB)。
       # 请注意,CacheSize 需要是 32 MB 的倍数。 
       # 如果它不是 32 MB 的倍数,则对等方会将大小四舍五入到下一个 32 MB 的倍数。
       # 要禁用缓存,需要为 cacheSize 分配 0 MB。
       cacheSize: 64

  history:
    # enableHistoryDatabase - 选项为真或假
    # 指示是否应存储密钥更新的历史记录
    # 所有历史“索引”都将存储在 goleveldb 中,无论是否使用 CouchDB 或备用数据库作为状态。
    enableHistoryDatabase: true

  pvtdataStore:
    # 将不合格的缺失数据条目转换为合格的缺失数据条目的最大 db 批量大小
    collElgProcMaxDbBatchSize: 5000
    # 写入两个连续的数据库批次之间的最小持续时间(以毫秒为单位),用于将不合格的缺失数据条目转换为合格的缺失数据条目
    collElgProcDbBatchesInterval: 1000
    # 缺失的数据条目分为两类:
    # (1) prioritized
    # (2) deprioritized
    # 最初,所有缺失的数据都在优先列表中。
    # 当协调器无法从其他对等方获取丢失的数据时,未协调的丢失数据将被移动到去优先级列表中。
    # 协调器将在每个 deprioritizedDataReconcilerInterval(单位:分钟)之后重试已取消优先级的缺失数据。
    # 注意间隔需要大于reconcileSleepInterv
    deprioritizedDataReconcilerInterval: 60m

  snapshots:
    # peer将存储分类帐快照的文件系统上的路径
    # 路径必须是绝对路径。
    rootDir: /var/hyperledger/production/snapshots

5.Operations section

###############################################################################
#
#    Operations section
#
###############################################################################
operations:
    # 操作服务器的主机和端口
    listenAddress: 127.0.0.1:9443

    # 操作端点的 TLS 配置
    tls:
        # 是否启用 TLS
        enabled: false

        # 操作服务器的 PEM 编码服务器证书的路径
        # 本节中的路径可能是相对于 FABRIC_CFG_PATH 或绝对路径。
        cert:
            file:

        # 操作服务器的 PEM 编码服务器密钥的路径
        key:
            file:

        # 启用 TLS 时,大多数运营服务端点都需要客户端身份验证。
        # clientAuthRequired 需要在 TLS 层进行客户端证书身份验证才能访问所有资源。
        clientAuthRequired: false

        # 客户端身份验证信任的 PEM 编码 ca 证书的路径
        clientRootCAs:
            files: []

6.Metrics section

###############################################################################
#
#    Metrics section
#
###############################################################################
metrics:
    # metrics provider是 statsd、prometheus 或 disabled 之一
    provider: disabled

    # 统计配置
    statsd:
        # 网络类型:tcp 或 udp
        network: udp

        # 统计服务器地址
        address: 127.0.0.1:8125

        # 地缓存的计数器和仪表被推送到 statsd 的时间间隔; 时间被立即推送
        writeInterval: 10s

        # 前缀添加到所有发出的 statsd 指标
        prefix:


FAQ

  1. 这些配置文件的内容需要全部都记下吗?

    不需要死记硬背,重要的是理解这些配置信息都指定的什么重要内容。

猜你喜欢

转载自blog.csdn.net/humingwei11/article/details/126439582