准备工作
-
本次只准备了两台电脑,一个
orderer
一个peer
,修改两台电脑的hosts
,194为orderer
,109为peer
:192.168.2.194 orderer.flt.cn 192.168.2.109 peer0.dev.flt.cn
-
新建一个文件夹
a_test
,用来存放生成的文件(之后用的) -
将bin文件夹和
configtx.yaml
和crypto-config.yaml
拷进来,并新建crypto-config
文件夹存放生成的文件 -
生成证书等文件:
./bin/cryptogen generate --config=./crypto-config.yaml --output ./crypto-config
crypto-config
下出现ordererOrganizations
和peerOrganizations
文件夹
-
生成创世块
gensisblock
:./bin/configtxgen -configPath=./ -profile SampleInsecureSolo -channelID gm-orderer-syschannel -outputBlock ./genesisblock
-
生成通道配置文件
gmchannel.tx
:./bin/configtxgen -configPath=./ -profile SampleSingleMSPChannel -outputCreateChannelTx gmchannel.tx -channelID gmchannel```
-
生成锚节点配置文件
DevMSPanchors.tx
:./bin/configtxgen -configPath=./ -profile SampleSingleMSPChannel -outputAnchorPeersUpdate DevMSPanchors.tx -channelID gmchannel -asOrg DevMSP```
-
最终
a_test
目录如下:bin
configtx.yaml
crypto-config.yaml
crypto-config
genesisblock
gmchannel.tx
DevMSPanchors.tx
配置orderer
-
新建一个
orderer
文件夹,我的建在/opt/orderer
,之后的操作都在这个目录下 -
将
a_test/crypto-config/ordererOrganizations/flt.cn/orderers/orderer.flt.cn
目录下的msp
文件夹和tls
文件夹拷贝进来,将a_test
下的创世块genesisblock
和a_test/bin
下的orderer
二进制文件拷贝进来 -
将
orderer.yaml
拷进来,其中几个路径需要修改
这是之后生成的数据路径
tls
证书文件路径,指定orderer
目录下的tls
创世块,MSP
,都指定为orderer
目录下的,当前为orderer
节点,MSPID
为OrdererMSP
- 然后就可以启动
orderer
:./orderer
配置 peer0.dev.flt.cn
-
在另一台机器上新建
peer
目录:opt/peer
-
将
a_test/crypto-config/peerOrganizations/dev.flt.cn/peers/peer0.dev.flt.cn
下的msp
和tls
,以及bin
目录下的peer
二进制文件拷贝进来 -
将
core.yaml
拷进来,依然是注意文件路径:
- id要对应:
-
最后
peer
目录有:
-
配置无误,就可启动
peer
:./peer node start
配置client
-
我将
client
放在了peer
机器上,路径/opt/Admin@dev.flt.cn
-
将
client
用的msp
和tls
复制过来,在a_test/crypto-config/peerOrganizations/dev.flt.cn/users/Admin@dev.flt.cn
-
将
peer
二进制文件复制过来,将a_test/crypto-config/ordererOrganizations/flt.cn/tlsca
复制过来 -
复制过来一个
core.yaml
,还需要a_test
下的DevMSPanchors.tx,gmchannel.tx
-
新建一个
peer.sh
脚本,在里面写一些配置参数:#!/bin/bash PATH=`pwd`:$PATH export FABRIC_CFG_PATH=`pwd` export CORE_PEER_ADDRESS=peer0.dev.flt.cn:7051 export CORE_PEER_LOCALMSPID=DevMSP export CORE_PEER_MSPCONFIGPATH=msp export CORE_PEER_TLS_ENABLED=true export CORE_PEER_TLS_CERT_FILE=tls/client.crt export CORE_PEER_TLS_KEY_FILE=tls/client.key export CORE_PEER_TLS_ROOTCERT_FILE=tls/ca.crt export CORE_LOGGING_LEVEL=DEBUG peer $*
-
新建一个
channel
,只需要启动一个orderer
节点,执行后会生成gmchannel.block
:./peer.sh channel create \ --orderer orderer.flt.cn:7050 \ --channelID gmchannel \ --file gmchannel.tx \ --tls true \ --cafile tlsca/tlsca.flt.cn-cert.pem
-
将peer加入到channel中:
./peer.sh channel join -b gmchannel.block
-
设置org的锚节点:
./peer.sh channel update \ --orderer orderer.flt.cn:7050 \ --channelID gmchannel \ --file DevMSPanchors.tx \ --tls true \ --cafile tlsca/tlsca.flt.cn-cert.pem
-
安装智能合约(此处安装的是fabric-sample中的例子):
./peer.sh chaincode install \ -n mycc -v 1.0 \ -p github.com/hyperledger/fabric-samples/chaincode/fabcar/go
-
初始化合约:
./peer.sh chaincode instantiate \ -o orderer.flt.cn:7050 \ --tls true \ --cafile tlsca/tlsca.flt.cn-cert.pem \ -C gmchannel \ -n mycc -v 1.0 \ -c '{"Args":[""]}' -P "OR('DevMSP.member','MarketMSP.member')"
-
可以执行查询:
./peer chaincode invoke \ -o orderer.flt.cn:7050 \ --tls true \ --cafile tlsca/tlsca.flt.cn-cert.pem \ -C gmchannel \ -n mycc \ --peerAddresses peer0.dev.flt.cn:7051 \ --tlsRootCertFiles tls/ca.crt \ -c '{"function":"initLedger","Args":[""]}'