# Команда peer channel Команда `peer channel` позволяет администраторам производить такие операции с одноранговыми узлами, как присоединение к каналу или получение списка каналов, к которым присоединен конкретный узел. ## Синтаксис Команда `peer channel` имеет следующие подкоманды: * create * fetch * getinfo * join * list * signconfigtx * update ## peer channel ``` Operate a channel: create|fetch|join|list|update|signconfigtx|getinfo. Usage: peer channel [command] Available Commands: create Create a channel fetch Fetch a block getinfo get blockchain information of a specified channel. join Joins the peer to a channel. list List of channels peer has joined. signconfigtx Signs a configtx update. update Send a configtx update. Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) -h, --help help for channel --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint Use "peer channel [command] --help" for more information about a command. ``` ## peer channel create Создание нового канала. При успешном выполнении команда сохраняет первичный блок нового канала в файле. ``` Create a channel and write the genesis block to a file. Usage: peer channel create [flags] Flags: -c, --channelID string In case of a newChain command, the channel ID to create. It must be all lower case, less than 250 characters long and match the regular expression: [a-z][a-z0-9.-]* -f, --file string Configuration transaction file generated by a tool such as configtxgen for submitting to orderer -h, --help help for create --outputBlock string The path to write the genesis block for the channel. (default ./.block) -t, --timeout duration Channel creation timeout (default 10s) Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## peer channel fetch Считывание указанного блока реестра канала и сохранение его в файле. ``` Fetch a specified block, writing it to a file. Usage: peer channel fetch [outputfile] [flags] Flags: --bestEffort Whether fetch requests should ignore errors and return blocks on a best effort basis -c, --channelID string In case of a newChain command, the channel ID to create. It must be all lower case, less than 250 characters long and match the regular expression: [a-z][a-z0-9.-]* -h, --help help for fetch Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## peer channel getinfo Получение данных о реестре указанного канала. ``` get blockchain information of a specified channel. Requires '-c'. Usage: peer channel getinfo [flags] Flags: -c, --channelID string In case of a newChain command, the channel ID to create. It must be all lower case, less than 250 characters long and match the regular expression: [a-z][a-z0-9.-]* -h, --help help for getinfo Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## peer channel join Присоединение однорангового узла к указанному каналу. ``` Joins the peer to a channel. Usage: peer channel join [flags] Flags: -b, --blockpath string Path to file containing genesis block -h, --help help for join Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## peer channel list Получение списка каналов, к которым присоединен одноранговый узел. ``` List of channels peer has joined. Usage: peer channel list [flags] Flags: -h, --help help for list Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## peer channel signconfigtx Подписывание файла, содержащего транзакцию обновления конфигурации канала. ``` Signs the supplied configtx update file in place on the filesystem. Requires '-f'. Usage: peer channel signconfigtx [flags] Flags: -f, --file string Configuration transaction file generated by a tool such as configtxgen for submitting to orderer -h, --help help for signconfigtx Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## peer channel update Обновление конфигурации канала из заранее подготовленного файла с транзакцией. ``` Signs and sends the supplied configtx update file to the channel. Requires '-f', '-o', '-c'. Usage: peer channel update [flags] Flags: -c, --channelID string In case of a newChain command, the channel ID to create. It must be all lower case, less than 250 characters long and match the regular expression: [a-z][a-z0-9.-]* -f, --file string Configuration transaction file generated by a tool such as configtxgen for submitting to orderer -h, --help help for update Global Flags: --cafile string Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint --certfile string Path to file containing PEM-encoded X509 public key to use for mutual TLS communication with the orderer endpoint --clientauth Use mutual TLS when communicating with the orderer endpoint --connTimeout duration Timeout for client to connect (default 3s) --keyfile string Path to file containing PEM-encoded private key to use for mutual TLS communication with the orderer endpoint -o, --orderer string Ordering service endpoint --ordererTLSHostnameOverride string The hostname override to use when validating the TLS connection to the orderer. --tls Use TLS when communicating with the orderer endpoint ``` ## Примеры использования ### Примеры использования команды peer channel create Пример использования команды `peer channel create` с флагом `--orderer`. * Создание канала `mychannel`, определенного в транзакции конфигурации, содержащейся в файле `./createchannel.tx`. Здесь используется узел службы упорядочения `orderer.example.com:7050`. ``` peer channel create -c mychannel -f ./createchannel.tx --orderer orderer.example.com:7050 2018-02-25 08:23:57.548 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 2018-02-25 08:23:57.626 UTC [channelCmd] InitCmdFactory -> INFO 019 Endorser and orderer connections initialized 2018-02-25 08:23:57.834 UTC [channelCmd] readBlock -> INFO 020 Received block: 0 2018-02-25 08:23:57.835 UTC [main] main -> INFO 021 Exiting..... ``` Команда возвращает блок с порядковым номером 0, что подтверждает успешное создание канала. Еще один пример использования опций команды `peer channel create`: * Создание нового канала `mychannel` в сети с помощью узла службы упорядочения `orderer.example.com:7050`. Транзакция обновления конфигурации, необходимая для создания этого канала, находится в файле `./createchannel.tx`. Команда будет ожидать 30 секунд, пока канал будет создан. ``` peer channel create -c mychannel --orderer orderer.example.com:7050 -f ./createchannel.tx -t 30s 2018-02-23 06:31:58.568 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 2018-02-23 06:31:58.669 UTC [channelCmd] InitCmdFactory -> INFO 019 Endorser and orderer connections initialized 2018-02-23 06:31:58.877 UTC [channelCmd] readBlock -> INFO 020 Received block: 0 2018-02-23 06:31:58.878 UTC [main] main -> INFO 021 Exiting..... ls -l -rw-r--r-- 1 root root 11982 Feb 25 12:24 mychannel.block ``` Можно видеть, что канал `mychannel` успешно создан, так как в терминале указано, что нулевой блок (с номером 0) добавлен в блокчейн для этого канала и отправлен на одноранговый узел, где он будет храниться в файле `mychannel.block` в локальном каталоге. Нулевой блок часто называют *первичным блоком*, так как он содержит исходную конфигурацию канала. Все последующие обновления канала будут сохранены в блоках конфигурации в блокчейне канала, заменяя предыдущие конфигурации. ### Пример использования команды peer channel fetch Ниже приведены примеры использования команды `peer channel fetch`: * Использование опции `newest` для считывания самого последнего блока в канале и сохранение его в файл `mychannel.block`. ``` peer channel fetch newest mychannel.block -c mychannel --orderer orderer.example.com:7050 2018-02-25 13:10:16.137 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 2018-02-25 13:10:16.144 UTC [channelCmd] readBlock -> INFO 00a Received block: 32 2018-02-25 13:10:16.145 UTC [main] main -> INFO 00b Exiting..... ls -l -rw-r--r-- 1 root root 11982 Feb 25 13:10 mychannel.block ``` Можно видеть, что полученный блок имеет номер 32, а также, что информация записана в файл `mychannel.block`. * Использование опции `(номер блока)` для считывания конкретного блока (номер 16 в примере) и сохранения этого блока в файле по умолчанию. ``` peer channel fetch 16 -c mychannel --orderer orderer.example.com:7050 2018-02-25 13:46:50.296 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 2018-02-25 13:46:50.302 UTC [channelCmd] readBlock -> INFO 00a Received block: 16 2018-02-25 13:46:50.302 UTC [main] main -> INFO 00b Exiting..... ls -l -rw-r--r-- 1 root root 11982 Feb 25 13:10 mychannel.block -rw-r--r-- 1 root root 4783 Feb 25 13:46 mychannel_16.block ``` Можно видеть, что полученный блок имеет номер 16, а также, что информация была записана в файл с названием по умолчанию `mychannel_16.block`. В случае с блоками конфигурации, файл блока может быть декодирован с использованием [команды configtxlator](./configtxlator.html). В описании этой команды приводится пример декодированной информации. Блоки пользовательских транзакций также можно декодировать, однако для этого нужно написать соответствующую программу. ### Пример использования команды peer channel getinfo Ниже приведен пример использования команды `peer chaincode getinfo`: * Получение информации о реестре канала `mychannel` на локальном одноранговом. ``` peer channel getinfo -c mychannel 2018-02-25 15:15:44.135 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized Blockchain info: {"height":5,"currentBlockHash":"JgK9lcaPUNmFb5Mp1qe1SVMsx3o/22Ct4+n5tejcXCw=","previousBlockHash":"f8lZXoAn3gF86zrFq7L1DzW2aKuabH9Ow6SIE5Y04a4="} 2018-02-25 15:15:44.139 UTC [main] main -> INFO 006 Exiting..... ``` Можно видеть, что количество блоков в канале `mychannel` равно 5. Также в терминале указаны криптографические хэши для самых последних блоков реестра канала. ### Пример использования команды peer channel join Ниже приведен пример использования команды `peer chaincode join`: * Присоединение однорангового узла к каналу, который определен в первичном блоке, хранящемся в файле `./mychannel.genesis.block`. В этом примере блок был получен с помощью команды `peer channel fetch`. ``` peer channel join -b ./mychannel.genesis.block 2018-02-25 12:25:26.511 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 2018-02-25 12:25:26.571 UTC [channelCmd] executeJoin -> INFO 006 Successfully submitted proposal to join channel 2018-02-25 12:25:26.571 UTC [main] main -> INFO 007 Exiting..... ``` Можно видеть, что одноранговый узел успешно выполнил запрос для присоединения к каналу. ### Пример использования команды peer channel list Ниже приведен пример использования команды `peer chaincode list`: * Перечисление каналов, к которым присоединен одноранговый узел. ``` peer channel list 2018-02-25 14:21:20.361 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized Channels peers has joined: mychannel 2018-02-25 14:21:20.372 UTC [main] main -> INFO 006 Exiting..... ``` Можно видеть, что одноранговый узел присоединен к каналу `mychannel`. ### Пример использования команды peer channel signconfigtx Ниже приведен пример использования команды `peer chaincode signconfigtx`: * Подписывание транзакции `channel update`, определенной в файле `./updatechannel.tx`. В примере показывается файл транзакции конфигурации до и после выполнения команды. ``` ls -l -rw-r--r-- 1 anthonyodowd staff 284 25 Feb 18:16 updatechannel.tx peer channel signconfigtx -f updatechannel.tx 2018-02-25 18:16:44.456 GMT [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized 2018-02-25 18:16:44.459 GMT [main] main -> INFO 002 Exiting..... ls -l -rw-r--r-- 1 anthonyodowd staff 2180 25 Feb 18:16 updatechannel.tx ``` Можно видеть, что одноранговый узел успешно подписал транзакцию конфигурации и размер файла `updatechannel.tx` увеличился с 284 байт до 2180 байт. ### Пример использования команды peer channel update Ниже приведен пример использования команды `peer chaincode update`: * Обновление канала `mychannel` с помощью транзакции конфигурации канала, определенной в файле `./updatechannel.tx`. Команда использует узел службы упорядочения `orderer.example.com:7050` для рассылки транзакции конфигурации по всем одноранговым узлам в канале и обновления их копий конфигурации канала. ``` peer channel update -c mychannel -f ./updatechannel.tx -o orderer.example.com:7050 2018-02-23 06:32:11.569 UTC [channelCmd] InitCmdFactory -> INFO 003 Endorser and orderer connections initialized 2018-02-23 06:32:11.626 UTC [main] main -> INFO 010 Exiting..... ``` Канал `mychannel` успешно обновлен.