Добавление канала в сеть.
Эта статья является частью серии, начинающейся с Пример 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 мы продолжаем вводить новые концепции по мере расширения нашей сети.
Получайте лучшие предложения по программному обеспечению прямо в свой почтовый ящик