#hyperledger-fabric #hyperledger-fabric-ca
#hyperledger-fabric #hyperledger-fabric-ca
Вопрос:
Я пытаюсь запустить свою сеть HLF в K8s. При настройке всего при упорядоченном запуске я получаю следующую ошибку:
Main -> PANI 005 Failed validating bootstrap block: initializing channelconfig failed: could not create channel Consortiums sub-group config: setting up the MSP manager failed: administrators must be declared when no admin ou classification is set
panic: Failed validating bootstrap block: initializing channelconfig failed: could not create channel Consortiums sub-group config: setting up the MSP manager failed: administrators must be declared when no admin ou classification is set
Я следую аналогичной настройке, что и тестовая сеть из образцов: у меня есть ЦС-центр, генерирующий сертификаты и использующий NodeOUs:
NodeOUs:
Enable: true
ClientOUIdentifier:
Certificate: cacerts/hlf-ca--amvoxdlt-7054.pem
OrganizationalUnitIdentifier: client
PeerOUIdentifier:
Certificate: cacerts/hlf-ca--amvoxdlt-7054.pem
OrganizationalUnitIdentifier: peer
AdminOUIdentifier:
Certificate: cacerts/hlf-ca--amvoxdlt-7054.pem
OrganizationalUnitIdentifier: admin
OrdererOUIdentifier:
Certificate: cacerts/hlf-ca--amvoxdlt-7054.pem
OrganizationalUnitIdentifier: orderer
Это configtx.yaml, который я использую для создания genesis.block
Orderer: amp;OrdererDefaults
# Orderer Type: The orderer implementation to start
OrdererType: etcdraft
Addresses:
- orderer0.amvox-dlt.io:7050
# Batch Timeout: The amount of time to wait before creating a batch
BatchTimeout: 3s
# Batch Size: Controls the number of messages batched into a block
BatchSize:
# Max Message Count: The maximum number of messages to permit in a batch
MaxMessageCount: 500
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
# the serialized messages in a batch.
AbsoluteMaxBytes: 99 MB
# Preferred Max Bytes: The preferred maximum number of bytes allowed for
# the serialized messages in a batch. A message larger than the preferred
# max bytes will result in a batch larger than preferred max bytes.
PreferredMaxBytes: 512 KB
EtcdRaft:
Consenters:
- Host: orderer0.amvox-dlt.io
Port: 7050
ClientTLSCert: /hlf_config/crypto-config/ordererOrganizations/amvox-dlt.io/orderers/orderer0.amvox-dlt.io/tls/server.crt
ServerTLSCert: /hlf_config/crypto-config/ordererOrganizations/amvox-dlt.io/orderers/orderer0.amvox-dlt.io/tls/server.crt
# Organizations is the list of orgs which are defined as participants on
# the orderer side of the network
Organizations:
# Policies defines the set of policies at this level of the config tree
# For Orderer policies, their canonical path is
# /Channel/Orderer/<PolicyName>
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
# BlockValidation specifies what signatures must be included in the block
# from the orderer for the peer to validate it.
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"
# Capabilities describes the orderer level capabilities, see the
# dedicated Capabilities section elsewhere in this file for a full
# description
Capabilities:
<<: *OrdererCapabilities
################################################################################
#
# CHANNEL
#
# This section defines the values to encode into a config transaction or
# genesis block for channel related parameters.
#
################################################################################
Channel: amp;ChannelDefaults
# Policies defines the set of policies at this level of the config tree
# For Channel policies, their canonical path is
# /Channel/<PolicyName>
Policies:
# Who may invoke the 'Deliver' API
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
# Who may invoke the 'Broadcast' API
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
# By default, who may modify elements at this config level
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
# Capabilities describes the channel level capabilities, see the
# dedicated Capabilities section elsewhere in this file for a full
# description
Capabilities:
<<: *ChannelCapabilities
################################################################################
#
# Profile
#
# - Different configuration profiles may be encoded here to be specified
# as parameters to the configtxgen tool
#
################################################################################
Profiles:
amvox-channel:
Consortium: AmvoxConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Amvox
- *Org2
- *Org3
Capabilities:
<<: *ApplicationCapabilities
OrdererGenesis:
<<: *ChannelDefaults
Orderer:
<<: *OrdererDefaults
OrdererType: etcdraft
EtcdRaft:
Consenters:
- Host: orderer0.amvox-dlt.io
Port: 7050
ClientTLSCert: /hlf_config/crypto-config/ordererOrganizations/amvox-dlt.io/orderers/orderer0.amvox-dlt.io/tls/server.crt
ServerTLSCert: /hlf_config/crypto-config/ordererOrganizations/amvox-dlt.io/orderers/orderer0.amvox-dlt.io/tls/server.crt
Addresses:
- orderer0.amvox-dlt.io:7050
Organizations:
- *AmvoxDLT
Capabilities:
<<: *OrdererCapabilities
Application:
<<: *ApplicationDefaults
Organizations:
- <<: *AmvoxDLT
Consortiums:
AmvoxConsortium:
Organizations:
- *Amvox
- *Org2
- *Org3
У кого-нибудь есть идеи, почему ordered не может начать работу?
Комментарии:
1. Не могли бы вы проверить
cacerts/hlf-ca--amvoxdlt-7054.pem
, нет ли опечаток и хорошо ли они совпадают?2. все есть. Нет опечаток ;/
3. Вы сгенерировали блок genesis с config.yaml, уже помещенным в каталог msp? В моем случае размещение config.yaml перед созданием genesis block решает ту же проблему.
4. Config.yaml уже был там. Проблема заключалась в правильном создании сертификатов и размещении их в правильной структуре папок. Задача, которую я получил, заключалась в мониторинге genesis.block. ` configtxlator proto_decode —input=/channel-artifacts/genesis.block —type=common. Блокировать `
5. Последнее, что я обнаружил, это то, что я регистрировал два идентификатора в одной папке (два администратора, что также приводило к несоответствию сертификатов).
Ответ №1:
Если у вас включено подразделение узла, убедитесь, что при предоставлении MSP у него должен быть config.yaml, где указаны все подразделения узла. Пример файла конфигурации приведен ниже.
NodeOUs:
Enable: true
ClientOUIdentifier:
Certificate: cacerts/localhost-7054-ca-org1-example-com.pem
OrganizationalUnitIdentifier: client
PeerOUIdentifier:
Certificate: cacerts/localhost-7054-ca-org1-example-com.pem
OrganizationalUnitIdentifier: peer
AdminOUIdentifier:
Certificate: cacerts/localhost-7054-ca-org1-example-com.pem
OrganizationalUnitIdentifier: admin
OrdererOUIdentifier:
Certificate: cacerts/localhost-7054-ca-org1-example-com.pem
OrganizationalUnitIdentifier: orderer
Комментарии:
1. Вы имеете в виду
config.yaml
?2. да, config.yaml