启动一个Peer
节点:html
peer node start
获取当前节点的状态信息node
peer node status
重置当前节点加入的通道全部的数据到创世区块,意思就是说删除当前Peer
接收到的全部区块信息。执行当前命令时,节点必须处于离线状态,当节点再次上线时,将会从Orderer
或其余Peer
节点处从新接收区块数据。git
peer node reset
回滚当前Peer
节点接收到的区块数据到指定的区块号。执行当前命令时,节点必须处于离线状态,当节点再次上线时,将会从Orderer
或其余Peer
节点处从新接收区块数据。github
peer node rollback -b 须要回滚到的区块号 -c 指定的通道ID
这一部分涉及Peer
节点对通道的操做服务器
建立一个通道并将创世区块写入文件网络
peer channel create -c 通道ID -f channel.tx -f 超时值 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer channel create -c mychannel --orderer orderer.example.com:7050 -f ./createchannel.txn -t 30s
获取一个具体区块信息并写入文件并发
peer channel fetch <newest|oldest|config|(number)> [输出文件路径名] -c 通道ID #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer channel fetch newest mychannel.block -c mychannel --orderer orderer.example.com:7050 peer channel fetch 16 -c mychannel --orderer orderer.example.com:7050
获取具体的通道信息app
peer channel getinfo -c 通道ID #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer channel getinfo -c mychannel
将一个指定的节点加入通道测试
peer channel join -b 包含创世区块的路径 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer channel join -b ./mychannel.genesis.block
列出指定的节点已加入的通道fetch
peer channel list #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口
对文件系统中用于更新配置信息的文件签名
peer channel signconfigtx -f 文件 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer channel signconfigtx -f updatechannel.tx
签名并发送配置更新文件到通道中,通常用于锚节点更新
peer channel update -c 通道ID -f 配置更新文件 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer channel update -c mychannel -f ./updatechannel.txn -o orderer.example.com:7050
这一部分涉及Peer
节点对链码的相关操做
打包链码数据为可部署的结构,并存储到当前Peer
节点的路径,简而言之就是安装链码。
peer chaincode install -l 编写链码所使用的语言 -n 链码名称 -p 链码路径 -v 链码版本 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
链码实例化
peer chaincode instantiate -C 通道ID -l 编写链码所使用的语言 -n 链码名称 -v 链码版本 -P 指定链码的策略 -E 指定对该用户链码进行背书的系统链码 -V 指定对该用户链码进行验证的系统链码 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
调用链码的功能
peer chaincode invoke -C 通道ID -n 链码名称 -c 传入的参数 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --peerAddresses peer0.org2.example.com:9051 -c '{"Args":["invoke","a","b","10"]}'
若是指定通道,则列出已实例化的链码,不然列出全部已安装的链码
peer chaincode list -C 通道ID --installed --instantiated #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode list --installed peer chaincode list --instantiated -C mychannel
将打包链码为可部署的结构
peer chaincode package -i 实例化策略 -l 编写链码所使用的语言 -n 链码名称 -p 链码的本地路径 -s 建立一个用于部署链码的标准结构 -S 对用于部署链码的标准结构使用本地MSP签名 -v 链码版本 -o Orderer节点主机:端口 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 #例子 peer chaincode package ccpack.out -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -v 1.1 -s -S
调用链码功能对链码数据进行查询,不写入区块
peer chaincode query -C 通道ID -n 链码名称 -c 参数 -x 若是成功查询,则输出16进制结果 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
对已打包的链码进行签名
peer chaincode signpackage #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode signpackage ccwith1sig.pak ccwith2sig.pak
更新一个存在的链码.命令与实例化链码类似。
peer chaincode upgrade -C 通道ID -n 链码名称 -p 链码的本地路径 -P 链码的实例化策略 -v 链码的版本 -E 指定对该用户链码进行背书的系统链码 -V 指定对该用户链码进行验证的系统链码 #全局变量 --tls 是否使用TLS加密 --cafile CA证书路径 --certfile X509公钥文件路径 -o Orderer节点主机:端口 #例子 peer chaincode upgrade -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C mychannel -n mycc -v 1.2 -c '{"Args":["init","a","100","b","200","c","300"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"
打印当前Peer
服务器的版本
peer version
该命令容许用户建立与检查通道配置信息
-asOrg 根据组织名称生成配置信息 -channelCreateTxBaseProfile -channeID 使用配置文件中的通道ID -configPath 指定配置文件的路径 -inspectBlock 打印具体路径下的区块的配置信息 -inspectChannelCreateTx 打印具体路径下的Transaction的配置信息 -outputAnchorPeersUpdate 建立一个用于更新锚节点的配置信息 -outputBlock 在指定的路径下生成创世区块 -outputCreateChannelTx 在指定的路径下生成建立通道的配置文件 -printOrg 以JSON的格式打印组织的信息 -profile 从configtx.yaml文件中生成profile 默认为``SampleInsecureSolo`` -version 打印版本信息
#生成创世区块 configtxgen -outputBlock genesis_block.pb -profile SampleSingleMSPSoloV1_1 -channelID orderer-system-channel #生成建立通道配置文件 configtxgen -outputCreateChannelTx create_chan_tx.pb -profile SampleSingleMSPChannelV1_1 -channelID application-channel-1 #查看创世区块信息 configtxgen -inspectBlock genesis_block.pb #查看建立通道配置信息 configtxgen -inspectChannelCreateTx create_chan_tx.pb #打印组织信息 configtxgen -printOrg Org1 #生成锚节点配置文件 configtxgen -outputAnchorPeersUpdate anchor_peer_tx.pb -profile SampleSingleMSPChannelV1_1 -asOrg Org1
一般用于转换protobuf
与JSON
格式的文件,protobuf
通常为后缀为.pb
的文件,由configtxgen
生成
================start================ configtxlator start --hostname="0.0.0.0" --port=7059 --CORS=CORS #启动configtxlator REST 服务 ================start================ ================proto_encode================ #转换``JSON``格式文件到``protobuf``格式 configtxlator proto_encode --type=TYPE #``protobuf``格式的文件的类型,如'common.Config' --input=/dev/stdin #包含'JSON'文件的地址 --output=/dev/stdout #输出地址 ================proto_encode================ ================proto_decode================ #转换``protobuf``格式到``JSON``格式文件 configtxlator proto_encode --type=TYPE --input=/dev/stdin --output=/dev/stdout ================proto_decode================ ================compute_update================ ================version================ configtxlator version #打印版本信息
用于生成Fabric中的密钥,用于测试环境下,生产环境下不使用
============generate==================== cryptogen generate --output="crypto-config" 将文件生成到crypto-config文件夹下 --config=CONFIG 使用模板配置 ============generate==================== ============showtemplate==================== cryptogen showtemplate #显示模板配置 ============showtemplate==================== ============extend==================== cryptogen extend 扩展已存在的网络 --output="crypto-config" 将文件生成到crypto-config文件夹下 --config=CONFIG 使用模板配置 ============extend==================== ============version==================== cryptogen version #打印版本信息 ============version====================
参考文档:https://hyperledger-fabric.readthedocs.io/en/release-1.4/command_ref.html