docs/wrappers/peer_channel_postscript.md
Here's an example that uses the --orderer global flag on the peer channel create command.
Create a sample channel mychannel defined by the configuration transaction
contained in file ./createchannel.tx. Use the orderer at 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.....
Block 0 is returned indicating that the channel has been successfully created.
Here's an example of the peer channel create command option.
Create a new channel mychannel for the network, using the orderer at ip
address orderer.example.com:7050. The configuration update transaction
required to create this channel is defined the file ./createchannel.tx.
Wait 30 seconds for the channel to be created.
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
You can see that channel mychannel has been successfully created, as
indicated in the output where block 0 (zero) is added to the blockchain for
this channel and returned to the peer, where it is stored in the local
directory as mychannel.block.
Block zero is often called the genesis block as it provides the starting configuration for the channel. All subsequent updates to the channel will be captured as configuration blocks on the channel's blockchain, each of which supersedes the previous configuration.
Here's some examples of the peer channel fetch command.
Using the newest option to retrieve the most recent channel block, and
store it in the file 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
You can see that the retrieved block is number 32, and that the information
has been written to the file mychannel.block.
Using the (block number) option to retrieve a specific block -- in this
case, block number 16 -- and store it in the default block file.
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
You can see that the retrieved block is number 16, and that the information
has been written to the default file mychannel_16.block.
For configuration blocks, the block file can be decoded using the
configtxlator command. See this command for an example
of decoded output. User transaction blocks can also be decoded, but a user
program must be written to do this.
Here's an example of the peer channel getinfo command.
Get information about the local peer for channel 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.....
You can see that the latest block for channel mychannel is block 5. You
can also see the cryptographic hashes for the most recent blocks in the
channel's blockchain.
Here's an example of the peer channel join command.
Join a peer to the channel defined in the genesis block identified by the file
./mychannel.genesis.block. In this example, the channel block was
previously retrieved by the peer channel fetch command.
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.....
You can see that the peer has successfully made a request to join the channel.
Here's an example of the peer channel joinbysnapshot command.
Join a peer to the channel from a snapshot identified by the directory
/snapshots/completed/testchannel/1000. The snapshot was previously created on a different peer.
peer channel joinbysnapshot --snapshotpath /snapshots/completed/testchannel/1000
2020-10-12 11:41:45.442 EDT [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-10-12 11:41:45.444 EDT [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2020-10-12 11:41:45.444 EDT [channelCmd] joinBySnapshot -> INFO 003 The joinbysnapshot operation is in progress. Use "peer channel joinbysnapshotstatus" to check the status.
You can see that the peer has successfully made a request to join the channel from the specified snapshot.
When a joinbysnapshot operation is in progress, you cannot run another peer channel join
or peer channel joinbysnapshot simultaneously. To know whether or not a joinbysnapshot operation is in progress,
you can call the peer channel joinbysnapshotstatus command.
Here are some examples of the peer channel joinbysnapshotstatus command.
Query if joinbysnapshot is in progress for any channel. If yes, it returns a message indicating a joinbysnapshot operation is in progress.
peer channel joinbysnapshotstatus
2020-10-12 11:41:45.952 EDT [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
A joinbysnapshot operation is in progress for snapshot at /snapshots/completed/testchannel/1000
If no joinbysnapshot operation is in progress, it returns a message indicating no joinbysnapshot operation is in progress.
peer channel joinbysnapshotstatus
2020-10-12 11:41:47.922 EDT [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
No joinbysnapshot operation is in progress
Here's an example of the peer channel list command.
List the channels to which a peer is joined.
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.....
You can see that the peer is joined to channel mychannel.
Here's an example of the peer channel signconfigtx command.
Sign the channel update transaction defined in the file
./updatechannel.tx. The example lists the configuration transaction file
before and after the command.
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
You can see that the peer has successfully signed the configuration
transaction by the increase in the size of the file updatechannel.tx from
284 bytes to 2180 bytes.
Here's an example of the peer channel update command.
Update the channel mychannel using the configuration transaction defined in
the file ./updatechannel.tx. Use the orderer at ip address
orderer.example.com:7050 to send the configuration transaction to all peers
in the channel to update their copy of the channel configuration.
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.....
At this point, the channel mychannel has been successfully updated.
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"></a> This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.