Добавление канала в сеть.

Эта статья является частью серии, начинающейся с Пример Hyperledger Fabric: Часть 1.

Интерфейс командной строки (CLI)

До сих пор мы настраивали примерную сеть, создавая файл конфигурации, файл genesis.block; используется для начальной загрузки узла orderer.example.com.

В дальнейшем мы захотим иметь возможность настраивать сеть после того, как все узлы были запущены, то есть после того, как все контейнеры Docker запущены.

С этой целью мы создаем один дополнительный контейнер, в который мы можем удаленно выполнять команды конфигурации. Мы добавляем раздел в файл Docker Compose с одним дополнительным контейнером:

./first-network/docker-compose-cli.yaml

Наблюдения:

  • Не удалось найти документацию по контейнеру Docker, hyperledger / fabric-tools
  • Эта конфигурация в настоящее время жестко запрограммирована для связи только с одноранговым узлом peer0.org1.example.com; нам придется переопределить несколько переменных среды, когда мы будем общаться с другими узлами

Поскольку мы хотим запустить новые образы Docker, мы останавливаем и удаляем созданный ранее с помощью:

docker stop $(docker ps -aq)
docker rm $(docker ps -aq)

Как и раньше, вызываем сеть:

docker-compose -f docker-compose-cli.yaml up

и запустив:

docker ps

Мы видим, что у нас есть шесть контейнеров; один из них - новый контейнер CLI.

Каналы

На этом этапе у нас есть все узлы в сети, и мы начинаем настраивать сеть с помощью контейнера CLI; следующие шаги описаны в концептуальной документации по сети блокчейнов Hyperledger Fabric по Создание канала для консорциума (пожалуйста, прочтите эти разделы, прежде чем продолжить ).

канал - это:

Канал - это закрытый блокчейн, который обеспечивает изоляцию и конфиденциальность данных. Реестр, зависящий от канала, совместно используется одноранговыми узлами в канале, и стороны транзакции должны быть должным образом аутентифицированы для канала, чтобы взаимодействовать с ним. Каналы определяются блоком конфигурации.

- Hyperledger Fabric - Глоссарий

В нашем примере мы собираемся создать новый канал, mychannel,, используя конфигурацию канала (CC) . Этот канал связан с SampleConsortium и двумя организациями (Org1MSP и Org2MSP).

Мы обновляем файл конфигурации Hyperledger Fabric с новым профилем; в этом обновлении мы используем исходный файл, предоставленный в примере (снова в комментариях).

./first-network/configtx.yaml

Затем мы генерируем другой файл, channel.tx, который будем использовать с нашим контейнером CLI:

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

Затем мы подключились к интерфейсу командной строки:

docker exec -it cli bash

И выполните следующую команду:

peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

Создание вашей первой сети действительно предоставляет некоторую полезную информацию о том, что происходит под капотом, в данном случае:

Эта команда возвращает генезис-блок - ‹channel-ID.block›, который мы будем использовать для присоединения к каналу. Он содержит информацию о конфигурации, указанную в channel.tx. Если вы не внесли никаких изменений в имя канала по умолчанию, команда вернет вам протокол с названием mychannel.block.

- Hyperledger Fabric - Создание вашей первой сети

Далее мы будем использовать mychannel.block для присоединения пиров к каналу.

Присоединение сверстников к каналу

Теперь, когда мы создали канал, нам нужно присоединить к нему одноранговые узлы .; следующие шаги описаны в концептуальной документации по сети блокчейнов Hyperledger Fabric по Пиры и реестры (пожалуйста, прочтите эти разделы, прежде чем продолжить).

Здесь мы собираемся присоединиться к peer0.org1.example.com и peer0.org2.example.com к каналу mynetwork; при этом создается распределенный реестр (L).

Используя контейнер CLI:

docker exec -it cli bash

Мы выполняем следующую команду, чтобы присоединиться к peer0.org1.example.com и mychannel.

peer channel join -b mychannel.block

Как мы указывали ранее, созданный контейнер CLI жестко запрограммирован для работы с peer0.org1.example.com; поэтому нам нужно переопределить некоторые переменные среды, чтобы присоединить peer0.org2.example.com к mychannel.

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt peer channel join -b mychannel.block

Якорные партнеры

Как мы уже отметили ранее, нам нужно настроить peer0.org1.example.com и peer0.org2.example.com в качестве узлов привязки для mychannel для каждой из организаций.

Как и на этапе создания канала, нам необходимо сгенерировать файл с помощью инструмента интерфейса командной строки configtxgen:

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP

и снова для Org2MSP:

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

Затем мы удаляемся в контейнер CLI и запускаем:

peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

и для Org2MSP; с установленной переменной среды:

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp CORE_PEER_ADDRESS=peer0.org2.example.com:7051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

Дальнейшие действия

В следующей статье Пример Hyperledger Fabric: Часть 6 мы продолжаем вводить новые концепции по мере расширения нашей сети.

Получайте лучшие предложения по программному обеспечению прямо в свой почтовый ящик