github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/sampleconfig/core.yaml (about)

     1  # Copyright hechain. All Rights Reserved.
     2  #
     3  # SPDX-License-Identifier: Apache-2.0
     4  #
     5  
     6  ###############################################################################
     7  #
     8  #    Peer section
     9  #
    10  ###############################################################################
    11  peer:
    12  
    13      # The peer id provides a name for this peer instance and is used when
    14      # naming docker resources.
    15      id: jdoe
    16  
    17      # The networkId allows for logical separation of networks and is used when
    18      # naming docker resources.
    19      networkId: dev
    20  
    21      # The Address at local network interface this Peer will listen on.
    22      # By default, it will listen on all network interfaces
    23      listenAddress: 0.0.0.0:7051
    24  
    25      # The endpoint this peer uses to listen for inbound chaincode connections.
    26      # If this is commented-out, the listen address is selected to be
    27      # the peer's address (see below) with port 7052
    28      # chaincodeListenAddress: 0.0.0.0:7052
    29  
    30      # The endpoint the chaincode for this peer uses to connect to the peer.
    31      # If this is not specified, the chaincodeListenAddress address is selected.
    32      # And if chaincodeListenAddress is not specified, address is selected from
    33      # peer address (see below). If specified peer address is invalid then it
    34      # will fallback to the auto detected IP (local IP) regardless of the peer
    35      # addressAutoDetect value.
    36      # chaincodeAddress: 0.0.0.0:7052
    37  
    38      # When used as peer config, this represents the endpoint to other peers
    39      # in the same organization. For peers in other organization, see
    40      # gossip.externalEndpoint for more info.
    41      # When used as CLI config, this means the peer's endpoint to interact with
    42      address: 0.0.0.0:7051
    43  
    44      # Whether the Peer should programmatically determine its address
    45      # This case is useful for docker containers.
    46      # When set to true, will override peer address.
    47      addressAutoDetect: false
    48  
    49      # Settings for the Peer's gateway server.
    50      gateway:
    51          # Whether the gateway is enabled for this Peer.
    52          enabled: true
    53          # endorsementTimeout is the duration the gateway waits for a response
    54          # from other endorsing peers before returning a timeout error to the client.
    55          endorsementTimeout: 30s
    56          # dialTimeout is the duration the gateway waits for a connection
    57          # to other network nodes.
    58          dialTimeout: 2m
    59  
    60  
    61      # Keepalive settings for peer server and clients
    62      keepalive:
    63          # Interval is the duration after which if the server does not see
    64          # any activity from the client it pings the client to see if it's alive
    65          interval: 7200s
    66          # Timeout is the duration the server waits for a response
    67          # from the client after sending a ping before closing the connection
    68          timeout: 20s
    69          # MinInterval is the minimum permitted time between client pings.
    70          # If clients send pings more frequently, the peer server will
    71          # disconnect them
    72          minInterval: 60s
    73          # Client keepalive settings for communicating with other peer nodes
    74          client:
    75              # Interval is the time between pings to peer nodes.  This must
    76              # greater than or equal to the minInterval specified by peer
    77              # nodes
    78              interval: 60s
    79              # Timeout is the duration the client waits for a response from
    80              # peer nodes before closing the connection
    81              timeout: 20s
    82          # DeliveryClient keepalive settings for communication with ordering
    83          # nodes.
    84          deliveryClient:
    85              # Interval is the time between pings to ordering nodes.  This must
    86              # greater than or equal to the minInterval specified by ordering
    87              # nodes.
    88              interval: 60s
    89              # Timeout is the duration the client waits for a response from
    90              # ordering nodes before closing the connection
    91              timeout: 20s
    92  
    93  
    94      # Gossip related configuration
    95      gossip:
    96          # Bootstrap set to initialize gossip with.
    97          # This is a list of other peers that this peer reaches out to at startup.
    98          # Important: The endpoints here have to be endpoints of peers in the same
    99          # organization, because the peer would refuse connecting to these endpoints
   100          # unless they are in the same organization as the peer.
   101          bootstrap: 127.0.0.1:7051
   102  
   103          # NOTE: orgLeader and useLeaderElection parameters are mutual exclusive.
   104          # Setting both to true would result in the termination of the peer
   105          # since this is undefined state. If the peers are configured with
   106          # useLeaderElection=false, make sure there is at least 1 peer in the
   107          # organization that its orgLeader is set to true.
   108  
   109          # Defines whenever peer will initialize dynamic algorithm for
   110          # "leader" selection, where leader is the peer to establish
   111          # connection with ordering service and use delivery protocol
   112          # to pull ledger blocks from ordering service.
   113          useLeaderElection: false
   114          # Statically defines peer to be an organization "leader",
   115          # where this means that current peer will maintain connection
   116          # with ordering service and disseminate block across peers in
   117          # its own organization. Multiple peers or all peers in an organization
   118          # may be configured as org leaders, so that they all pull
   119          # blocks directly from ordering service.
   120          orgLeader: true
   121  
   122          # Interval for membershipTracker polling
   123          membershipTrackerInterval: 5s
   124  
   125          # Overrides the endpoint that the peer publishes to peers
   126          # in its organization. For peers in foreign organizations
   127          # see 'externalEndpoint'
   128          endpoint:
   129          # Maximum count of blocks stored in memory
   130          maxBlockCountToStore: 10
   131          # Max time between consecutive message pushes(unit: millisecond)
   132          maxPropagationBurstLatency: 10ms
   133          # Max number of messages stored until a push is triggered to remote peers
   134          maxPropagationBurstSize: 10
   135          # Number of times a message is pushed to remote peers
   136          propagateIterations: 1
   137          # Number of peers selected to push messages to
   138          propagatePeerNum: 3
   139          # Determines frequency of pull phases(unit: second)
   140          # Must be greater than digestWaitTime + responseWaitTime
   141          pullInterval: 4s
   142          # Number of peers to pull from
   143          pullPeerNum: 3
   144          # Determines frequency of pulling state info messages from peers(unit: second)
   145          requestStateInfoInterval: 4s
   146          # Determines frequency of pushing state info messages to peers(unit: second)
   147          publishStateInfoInterval: 4s
   148          # Maximum time a stateInfo message is kept until expired
   149          stateInfoRetentionInterval:
   150          # Time from startup certificates are included in Alive messages(unit: second)
   151          publishCertPeriod: 10s
   152          # Should we skip verifying block messages or not (currently not in use)
   153          skipBlockVerification: false
   154          # Dial timeout(unit: second)
   155          dialTimeout: 3s
   156          # Connection timeout(unit: second)
   157          connTimeout: 2s
   158          # Buffer size of received messages
   159          recvBuffSize: 20
   160          # Buffer size of sending messages
   161          sendBuffSize: 200
   162          # Time to wait before pull engine processes incoming digests (unit: second)
   163          # Should be slightly smaller than requestWaitTime
   164          digestWaitTime: 1s
   165          # Time to wait before pull engine removes incoming nonce (unit: milliseconds)
   166          # Should be slightly bigger than digestWaitTime
   167          requestWaitTime: 1500ms
   168          # Time to wait before pull engine ends pull (unit: second)
   169          responseWaitTime: 2s
   170          # Alive check interval(unit: second)
   171          aliveTimeInterval: 5s
   172          # Alive expiration timeout(unit: second)
   173          aliveExpirationTimeout: 25s
   174          # Reconnect interval(unit: second)
   175          reconnectInterval: 25s
   176          # Max number of attempts to connect to a peer
   177          maxConnectionAttempts: 120
   178          # Message expiration factor for alive messages
   179          msgExpirationFactor: 20
   180          # This is an endpoint that is published to peers outside of the organization.
   181          # If this isn't set, the peer will not be known to other organizations.
   182          externalEndpoint:
   183          # Leader election service configuration
   184          election:
   185              # Longest time peer waits for stable membership during leader election startup (unit: second)
   186              startupGracePeriod: 15s
   187              # Interval gossip membership samples to check its stability (unit: second)
   188              membershipSampleInterval: 1s
   189              # Time passes since last declaration message before peer decides to perform leader election (unit: second)
   190              leaderAliveThreshold: 10s
   191              # Time between peer sends propose message and declares itself as a leader (sends declaration message) (unit: second)
   192              leaderElectionDuration: 5s
   193  
   194          pvtData:
   195              # pullRetryThreshold determines the maximum duration of time private data corresponding for a given block
   196              # would be attempted to be pulled from peers until the block would be committed without the private data
   197              pullRetryThreshold: 60s
   198              # As private data enters the transient store, it is associated with the peer's ledger's height at that time.
   199              # transientstoreMaxBlockRetention defines the maximum difference between the current ledger's height upon commit,
   200              # and the private data residing inside the transient store that is guaranteed not to be purged.
   201              # Private data is purged from the transient store when blocks with sequences that are multiples
   202              # of transientstoreMaxBlockRetention are committed.
   203              transientstoreMaxBlockRetention: 1000
   204              # pushAckTimeout is the maximum time to wait for an acknowledgement from each peer
   205              # at private data push at endorsement time.
   206              pushAckTimeout: 3s
   207              # Block to live pulling margin, used as a buffer
   208              # to prevent peer from trying to pull private data
   209              # from peers that is soon to be purged in next N blocks.
   210              # This helps a newly joined peer catch up to current
   211              # blockchain height quicker.
   212              btlPullMargin: 10
   213              # the process of reconciliation is done in an endless loop, while in each iteration reconciler tries to
   214              # pull from the other peers the most recent missing blocks with a maximum batch size limitation.
   215              # reconcileBatchSize determines the maximum batch size of missing private data that will be reconciled in a
   216              # single iteration.
   217              reconcileBatchSize: 10
   218              # reconcileSleepInterval determines the time reconciler sleeps from end of an iteration until the beginning
   219              # of the next reconciliation iteration.
   220              reconcileSleepInterval: 1m
   221              # reconciliationEnabled is a flag that indicates whether private data reconciliation is enable or not.
   222              reconciliationEnabled: true
   223              # skipPullingInvalidTransactionsDuringCommit is a flag that indicates whether pulling of invalid
   224              # transaction's private data from other peers need to be skipped during the commit time and pulled
   225              # only through reconciler.
   226              skipPullingInvalidTransactionsDuringCommit: false
   227              # implicitCollectionDisseminationPolicy specifies the dissemination  policy for the peer's own implicit collection.
   228              # When a peer endorses a proposal that writes to its own implicit collection, below values override the default values
   229              # for disseminating private data.
   230              # Note that it is applicable to all channels the peer has joined. The implication is that requiredPeerCount has to
   231              # be smaller than the number of peers in a channel that has the lowest numbers of peers from the organization.
   232              implicitCollectionDisseminationPolicy:
   233                 # requiredPeerCount defines the minimum number of eligible peers to which the peer must successfully
   234                 # disseminate private data for its own implicit collection during endorsement. Default value is 0.
   235                 requiredPeerCount: 0
   236                 # maxPeerCount defines the maximum number of eligible peers to which the peer will attempt to
   237                 # disseminate private data for its own implicit collection during endorsement. Default value is 1.
   238                 maxPeerCount: 1
   239  
   240          # Gossip state transfer related configuration
   241          state:
   242              # indicates whenever state transfer is enabled or not
   243              # default value is false, i.e. state transfer is active
   244              # and takes care to sync up missing blocks allowing
   245              # lagging peer to catch up to speed with rest network.
   246              # Keep in mind that when peer.gossip.useLeaderElection is true
   247              # and there are several peers in the organization,
   248              # or peer.gossip.useLeaderElection is false alongside with
   249              # peer.gossip.orgleader being false, the peer's ledger may lag behind
   250              # the rest of the peers and will never catch up due to state transfer
   251              # being disabled.
   252              enabled: false
   253              # checkInterval interval to check whether peer is lagging behind enough to
   254              # request blocks via state transfer from another peer.
   255              checkInterval: 10s
   256              # responseTimeout amount of time to wait for state transfer response from
   257              # other peers
   258              responseTimeout: 3s
   259              # batchSize the number of blocks to request via state transfer from another peer
   260              batchSize: 10
   261              # blockBufferSize reflects the size of the re-ordering buffer
   262              # which captures blocks and takes care to deliver them in order
   263              # down to the ledger layer. The actual buffer size is bounded between
   264              # 0 and 2*blockBufferSize, each channel maintains its own buffer
   265              blockBufferSize: 20
   266              # maxRetries maximum number of re-tries to ask
   267              # for single state transfer request
   268              maxRetries: 3
   269  
   270      # TLS Settings
   271      tls:
   272          # Require server-side TLS
   273          enabled:  false
   274          # Require client certificates / mutual TLS for inbound connections.
   275          # Note that clients that are not configured to use a certificate will
   276          # fail to connect to the peer.
   277          clientAuthRequired: false
   278          # X.509 certificate used for TLS server
   279          cert:
   280              file: tls/server.crt
   281          # Private key used for TLS server
   282          key:
   283              file: tls/server.key
   284          # rootcert.file represents the trusted root certificate chain used for verifying certificates
   285          # of other nodes during outbound connections.
   286          # It is not required to be set, but can be used to augment the set of TLS CA certificates
   287          # available from the MSPs of each channel’s configuration.
   288          rootcert:
   289              file: tls/ca.crt
   290          # If mutual TLS is enabled, clientRootCAs.files contains a list of additional root certificates
   291          # used for verifying certificates of client connections.
   292          # It augments the set of TLS CA certificates available from the MSPs of each channel’s configuration.
   293          # Minimally, set your organization's TLS CA root certificate so that the peer can receive join channel requests.
   294          clientRootCAs:
   295              files:
   296                - tls/ca.crt
   297          # Private key used for TLS when making client connections.
   298          # If not set, peer.tls.key.file will be used instead
   299          clientKey:
   300              file:
   301          # X.509 certificate used for TLS when making client connections.
   302          # If not set, peer.tls.cert.file will be used instead
   303          clientCert:
   304              file:
   305  
   306      # Authentication contains configuration parameters related to authenticating
   307      # client messages
   308      authentication:
   309          # the acceptable difference between the current server time and the
   310          # client's time as specified in a client request message
   311          timewindow: 15m
   312  
   313      # Path on the file system where peer will store data (eg ledger). This
   314      # location must be access control protected to prevent unintended
   315      # modification that might corrupt the peer operations.
   316      fileSystemPath: /var/hyperledger/production
   317  
   318      # BCCSP (Blockchain crypto provider): Select which crypto implementation or
   319      # library to use
   320      BCCSP:
   321          Default: SW
   322          # Settings for the SW crypto provider (i.e. when DEFAULT: SW)
   323          SW:
   324              # TODO: The default Hash and Security level needs refactoring to be
   325              # fully configurable. Changing these defaults requires coordination
   326              # SHA2 is hardcoded in several places, not only BCCSP
   327              Hash: SHA2
   328              Security: 256
   329              # Location of Key Store
   330              FileKeyStore:
   331                  # If "", defaults to 'mspConfigPath'/keystore
   332                  KeyStore:
   333          # Settings for the PKCS#11 crypto provider (i.e. when DEFAULT: PKCS11)
   334          PKCS11:
   335              # Location of the PKCS11 module library
   336              Library:
   337              # Token Label
   338              Label:
   339              # User PIN
   340              Pin:
   341              Hash:
   342              Security:
   343  
   344      # Path on the file system where peer will find MSP local configurations
   345      mspConfigPath: msp
   346  
   347      # Identifier of the local MSP
   348      # ----!!!!IMPORTANT!!!-!!!IMPORTANT!!!-!!!IMPORTANT!!!!----
   349      # Deployers need to change the value of the localMspId string.
   350      # In particular, the name of the local MSP ID of a peer needs
   351      # to match the name of one of the MSPs in each of the channel
   352      # that this peer is a member of. Otherwise this peer's messages
   353      # will not be identified as valid by other nodes.
   354      localMspId: SampleOrg
   355  
   356      # CLI common client config options
   357      client:
   358          # connection timeout
   359          connTimeout: 3s
   360  
   361      # Delivery service related config
   362      deliveryclient:
   363          # Enables this peer to disseminate blocks it pulled from the ordering service
   364          # via gossip.
   365          # Note that 'gossip.state.enabled' controls point to point block replication
   366          # of blocks committed in the past.
   367          blockGossipEnabled: true
   368          # It sets the total time the delivery service may spend in reconnection
   369          # attempts until its retry logic gives up and returns an error
   370          reconnectTotalTimeThreshold: 3600s
   371  
   372          # It sets the delivery service <-> ordering service node connection timeout
   373          connTimeout: 3s
   374  
   375          # It sets the delivery service maximal delay between consecutive retries
   376          reConnectBackoffThreshold: 3600s
   377  
   378          # A list of orderer endpoint addresses which should be overridden
   379          # when found in channel configurations.
   380          addressOverrides:
   381          #  - from:
   382          #    to:
   383          #    caCertsFile:
   384          #  - from:
   385          #    to:
   386          #    caCertsFile:
   387  
   388      # Type for the local MSP - by default it's of type bccsp
   389      localMspType: bccsp
   390  
   391      # Used with Go profiling tools only in none production environment. In
   392      # production, it should be disabled (eg enabled: false)
   393      profile:
   394          enabled:     false
   395          listenAddress: 0.0.0.0:6060
   396  
   397      # Handlers defines custom handlers that can filter and mutate
   398      # objects passing within the peer, such as:
   399      #   Auth filter - reject or forward proposals from clients
   400      #   Decorators  - append or mutate the chaincode input passed to the chaincode
   401      #   Endorsers   - Custom signing over proposal response payload and its mutation
   402      # Valid handler definition contains:
   403      #   - A name which is a factory method name defined in
   404      #     core/handlers/library/library.go for statically compiled handlers
   405      #   - library path to shared object binary for pluggable filters
   406      # Auth filters and decorators are chained and executed in the order that
   407      # they are defined. For example:
   408      # authFilters:
   409      #   -
   410      #     name: FilterOne
   411      #     library: /opt/lib/filter.so
   412      #   -
   413      #     name: FilterTwo
   414      # decorators:
   415      #   -
   416      #     name: DecoratorOne
   417      #   -
   418      #     name: DecoratorTwo
   419      #     library: /opt/lib/decorator.so
   420      # Endorsers are configured as a map that its keys are the endorsement system chaincodes that are being overridden.
   421      # Below is an example that overrides the default ESCC and uses an endorsement plugin that has the same functionality
   422      # as the default ESCC.
   423      # If the 'library' property is missing, the name is used as the constructor method in the builtin library similar
   424      # to auth filters and decorators.
   425      # endorsers:
   426      #   escc:
   427      #     name: DefaultESCC
   428      #     library: /etc/hyperledger/fabric/plugin/escc.so
   429      handlers:
   430          authFilters:
   431            -
   432              name: DefaultAuth
   433            -
   434              name: ExpirationCheck    # This filter checks identity x509 certificate expiration
   435          decorators:
   436            -
   437              name: DefaultDecorator
   438          endorsers:
   439            escc:
   440              name: DefaultEndorsement
   441              library:
   442          validators:
   443            vscc:
   444              name: DefaultValidation
   445              library:
   446  
   447      #    library: /etc/hyperledger/fabric/plugin/escc.so
   448      # Number of goroutines that will execute transaction validation in parallel.
   449      # By default, the peer chooses the number of CPUs on the machine. Set this
   450      # variable to override that choice.
   451      # NOTE: overriding this value might negatively influence the performance of
   452      # the peer so please change this value only if you know what you're doing
   453      validatorPoolSize:
   454  
   455      # The discovery service is used by clients to query information about peers,
   456      # such as - which peers have joined a certain channel, what is the latest
   457      # channel config, and most importantly - given a chaincode and a channel,
   458      # what possible sets of peers satisfy the endorsement policy.
   459      discovery:
   460          enabled: true
   461          # Whether the authentication cache is enabled or not.
   462          authCacheEnabled: true
   463          # The maximum size of the cache, after which a purge takes place
   464          authCacheMaxSize: 1000
   465          # The proportion (0 to 1) of entries that remain in the cache after the cache is purged due to overpopulation
   466          authCachePurgeRetentionRatio: 0.75
   467          # Whether to allow non-admins to perform non channel scoped queries.
   468          # When this is false, it means that only peer admins can perform non channel scoped queries.
   469          orgMembersAllowedAccess: false
   470  
   471      # Limits is used to configure some internal resource limits.
   472      limits:
   473          # Concurrency limits the number of concurrently running requests to a service on each peer.
   474          # Currently this option is only applied to endorser service and deliver service.
   475          # When the property is missing or the value is 0, the concurrency limit is disabled for the service.
   476          concurrency:
   477              # endorserService limits concurrent requests to endorser service that handles chaincode deployment, query and invocation,
   478              # including both user chaincodes and system chaincodes.
   479              endorserService: 2500
   480              # deliverService limits concurrent event listeners registered to deliver service for blocks and transaction events.
   481              deliverService: 2500
   482              # gatewayService limits concurrent requests to gateway service that handles the submission and evaluation of transactions.
   483              gatewayService: 500
   484  
   485      # Since all nodes should be consistent it is recommended to keep
   486      # the default value of 100MB for MaxRecvMsgSize & MaxSendMsgSize
   487      # Max message size in bytes GRPC server and client can receive
   488      maxRecvMsgSize: 104857600
   489      # Max message size in bytes GRPC server and client can send
   490      maxSendMsgSize: 104857600
   491  
   492  ###############################################################################
   493  #
   494  #    VM section
   495  #
   496  ###############################################################################
   497  vm:
   498  
   499      # Endpoint of the vm management system.  For docker can be one of the following in general
   500      # unix:///var/run/docker.sock
   501      # http://localhost:2375
   502      # https://localhost:2376
   503      # If you utilize external chaincode builders and don't need the default Docker chaincode builder,
   504      # the endpoint should be unconfigured so that the peer's Docker health checker doesn't get registered.
   505      endpoint: unix:///var/run/docker.sock
   506  
   507      # settings for docker vms
   508      docker:
   509          tls:
   510              enabled: false
   511              ca:
   512                  file: docker/ca.crt
   513              cert:
   514                  file: docker/tls.crt
   515              key:
   516                  file: docker/tls.key
   517  
   518          # Enables/disables the standard out/err from chaincode containers for
   519          # debugging purposes
   520          attachStdout: false
   521  
   522          # Parameters on creating docker container.
   523          # Container may be efficiently created using ipam & dns-server for cluster
   524          # NetworkMode - sets the networking mode for the container. Supported
   525          # standard values are: `host`(default),`bridge`,`ipvlan`,`none`.
   526          # Dns - a list of DNS servers for the container to use.
   527          # Note:  `Privileged` `Binds` `Links` and `PortBindings` properties of
   528          # Docker Host Config are not supported and will not be used if set.
   529          # LogConfig - sets the logging driver (Type) and related options
   530          # (Config) for Docker. For more info,
   531          # https://docs.docker.com/engine/admin/logging/overview/
   532          # Note: Set LogConfig using Environment Variables is not supported.
   533          hostConfig:
   534              NetworkMode: host
   535              Dns:
   536                 # - 192.168.0.1
   537              LogConfig:
   538                  Type: json-file
   539                  Config:
   540                      max-size: "50m"
   541                      max-file: "5"
   542              Memory: 2147483648
   543  
   544  ###############################################################################
   545  #
   546  #    Chaincode section
   547  #
   548  ###############################################################################
   549  chaincode:
   550  
   551      # The id is used by the Chaincode stub to register the executing Chaincode
   552      # ID with the Peer and is generally supplied through ENV variables
   553      # the `path` form of ID is provided when installing the chaincode.
   554      # The `name` is used for all other requests and can be any string.
   555      id:
   556          path:
   557          name:
   558  
   559      # Generic builder environment, suitable for most chaincode types
   560      builder: $(DOCKER_NS)/fabric-ccenv:$(TWO_DIGIT_VERSION)
   561  
   562      # Enables/disables force pulling of the base docker images (listed below)
   563      # during user chaincode instantiation.
   564      # Useful when using moving image tags (such as :latest)
   565      pull: false
   566  
   567      golang:
   568          # golang will never need more than baseos
   569          runtime: $(DOCKER_NS)/fabric-baseos:$(TWO_DIGIT_VERSION)
   570  
   571          # whether or not golang chaincode should be linked dynamically
   572          dynamicLink: false
   573  
   574      java:
   575          # This is an image based on java:openjdk-8 with addition compiler
   576          # tools added for java shim layer packaging.
   577          # This image is packed with shim layer libraries that are necessary
   578          # for Java chaincode runtime.
   579          runtime: $(DOCKER_NS)/fabric-javaenv:$(TWO_DIGIT_VERSION)
   580  
   581      node:
   582          # This is an image based on node:$(NODE_VER)-alpine
   583          runtime: $(DOCKER_NS)/fabric-nodeenv:$(TWO_DIGIT_VERSION)
   584  
   585      # List of directories to treat as external builders and launchers for
   586      # chaincode. The external builder detection processing will iterate over the
   587      # builders in the order specified below.
   588      # If you don't need to fallback to the default Docker builder, also unconfigure vm.endpoint above.
   589      # To override this property via env variable use CORE_CHAINCODE_EXTERNALBUILDERS: [{name: x, path: dir1}, {name: y, path: dir2}]
   590      externalBuilders:
   591         - name: ccaas_builder
   592           path: /opt/hyperledger/ccaas_builder
   593           propagateEnvironment:
   594             - CHAINCODE_AS_A_SERVICE_BUILDER_CONFIG
   595  
   596  
   597      # The maximum duration to wait for the chaincode build and install process
   598      # to complete.
   599      installTimeout: 300s
   600  
   601      # Timeout duration for starting up a container and waiting for Register
   602      # to come through.
   603      startuptimeout: 300s
   604  
   605      # Timeout duration for Invoke and Init calls to prevent runaway.
   606      # This timeout is used by all chaincodes in all the channels, including
   607      # system chaincodes.
   608      # Note that during Invoke, if the image is not available (e.g. being
   609      # cleaned up when in development environment), the peer will automatically
   610      # build the image, which might take more time. In production environment,
   611      # the chaincode image is unlikely to be deleted, so the timeout could be
   612      # reduced accordingly.
   613      executetimeout: 30s
   614  
   615      # There are 2 modes: "dev" and "net".
   616      # In dev mode, user runs the chaincode after starting peer from
   617      # command line on local machine.
   618      # In net mode, peer will run chaincode in a docker container.
   619      mode: net
   620  
   621      # keepalive in seconds. In situations where the communication goes through a
   622      # proxy that does not support keep-alive, this parameter will maintain connection
   623      # between peer and chaincode.
   624      # A value <= 0 turns keepalive off
   625      keepalive: 0
   626  
   627      # enabled system chaincodes
   628      system:
   629          _lifecycle: enable
   630          cscc: enable
   631          lscc: enable
   632          qscc: enable
   633  
   634      # Logging section for the chaincode container
   635      logging:
   636        # Default level for all loggers within the chaincode container
   637        level:  info
   638        # Override default level for the 'shim' logger
   639        shim:   warning
   640        # Format for the chaincode container logs
   641        format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
   642  
   643  ###############################################################################
   644  #
   645  #    Ledger section - ledger configuration encompasses both the blockchain
   646  #    and the state
   647  #
   648  ###############################################################################
   649  ledger:
   650  
   651    blockchain:
   652  
   653    state:
   654      # stateDatabase - options are "goleveldb", "CouchDB"
   655      # goleveldb - default state database stored in goleveldb.
   656      # CouchDB - store state database in CouchDB
   657      stateDatabase: goleveldb
   658      # Limit on the number of records to return per query
   659      totalQueryLimit: 100000
   660      couchDBConfig:
   661         # It is recommended to run CouchDB on the same server as the peer, and
   662         # not map the CouchDB container port to a server port in docker-compose.
   663         # Otherwise proper security must be provided on the connection between
   664         # CouchDB client (on the peer) and server.
   665         couchDBAddress: 127.0.0.1:5984
   666         # This username must have read and write authority on CouchDB
   667         username:
   668         # The password is recommended to pass as an environment variable
   669         # during start up (eg CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD).
   670         # If it is stored here, the file must be access control protected
   671         # to prevent unintended users from discovering the password.
   672         password:
   673         # Number of retries for CouchDB errors
   674         maxRetries: 3
   675         # Number of retries for CouchDB errors during peer startup.
   676         # The delay between retries doubles for each attempt.
   677         # Default of 10 retries results in 11 attempts over 2 minutes.
   678         maxRetriesOnStartup: 10
   679         # CouchDB request timeout (unit: duration, e.g. 20s)
   680         requestTimeout: 35s
   681         # Limit on the number of records per each CouchDB query
   682         # Note that chaincode queries are only bound by totalQueryLimit.
   683         # Internally the chaincode may execute multiple CouchDB queries,
   684         # each of size internalQueryLimit.
   685         internalQueryLimit: 1000
   686         # Limit on the number of records per CouchDB bulk update batch
   687         maxBatchUpdateSize: 1000
   688         # Create the _global_changes system database
   689         # This is optional.  Creating the global changes database will require
   690         # additional system resources to track changes and maintain the database
   691         createGlobalChangesDB: false
   692         # CacheSize denotes the maximum mega bytes (MB) to be allocated for the in-memory state
   693         # cache. Note that CacheSize needs to be a multiple of 32 MB. If it is not a multiple
   694         # of 32 MB, the peer would round the size to the next multiple of 32 MB.
   695         # To disable the cache, 0 MB needs to be assigned to the cacheSize.
   696         cacheSize: 64
   697  
   698    history:
   699      # enableHistoryDatabase - options are true or false
   700      # Indicates if the history of key updates should be stored.
   701      # All history 'index' will be stored in goleveldb, regardless if using
   702      # CouchDB or alternate database for the state.
   703      enableHistoryDatabase: true
   704  
   705    pvtdataStore:
   706      # the maximum db batch size for converting
   707      # the ineligible missing data entries to eligible missing data entries
   708      collElgProcMaxDbBatchSize: 5000
   709      # the minimum duration (in milliseconds) between writing
   710      # two consecutive db batches for converting the ineligible missing data entries to eligible missing data entries
   711      collElgProcDbBatchesInterval: 1000
   712      # The missing data entries are classified into two categories:
   713      # (1) prioritized
   714      # (2) deprioritized
   715      # Initially, all missing data are in the prioritized list. When the
   716      # reconciler is unable to fetch the missing data from other peers,
   717      # the unreconciled missing data would be moved to the deprioritized list.
   718      # The reconciler would retry deprioritized missing data after every
   719      # deprioritizedDataReconcilerInterval (unit: minutes). Note that the
   720      # interval needs to be greater than the reconcileSleepInterval
   721      deprioritizedDataReconcilerInterval: 60m
   722  
   723    snapshots:
   724      # Path on the file system where peer will store ledger snapshots
   725      rootDir: /var/hyperledger/production/snapshots
   726  
   727  ###############################################################################
   728  #
   729  #    Operations section
   730  #
   731  ###############################################################################
   732  operations:
   733      # host and port for the operations server
   734      listenAddress: 127.0.0.1:9443
   735  
   736      # TLS configuration for the operations endpoint
   737      tls:
   738          # TLS enabled
   739          enabled: false
   740  
   741          # path to PEM encoded server certificate for the operations server
   742          cert:
   743              file:
   744  
   745          # path to PEM encoded server key for the operations server
   746          key:
   747              file:
   748  
   749          # most operations service endpoints require client authentication when TLS
   750          # is enabled. clientAuthRequired requires client certificate authentication
   751          # at the TLS layer to access all resources.
   752          clientAuthRequired: false
   753  
   754          # paths to PEM encoded ca certificates to trust for client authentication
   755          clientRootCAs:
   756              files: []
   757  
   758  ###############################################################################
   759  #
   760  #    Metrics section
   761  #
   762  ###############################################################################
   763  metrics:
   764      # metrics provider is one of statsd, prometheus, or disabled
   765      provider: disabled
   766  
   767      # statsd configuration
   768      statsd:
   769          # network type: tcp or udp
   770          network: udp
   771  
   772          # statsd server address
   773          address: 127.0.0.1:8125
   774  
   775          # the interval at which locally cached counters and gauges are pushed
   776          # to statsd; timings are pushed immediately
   777          writeInterval: 10s
   778  
   779          # prefix is prepended to all emitted statsd metrics
   780          prefix: