先在fabric文件夹下建一个aberic文件夹,并将一些必要的配置文件文件放入
如图
然后根据crypto-config.yaml生成证书文件
./bin/cryptogen generate –config=./crypto-config.yaml
接下来,使用configtxgen工具执行configtx.yaml文件以创建orderer Genesis block,在此之前需要为configtxgen工具指定configtx.yaml文件的路径,设置环境变量,执行如下命令:
export FABRIC_CFG_PATH=$PWD
在aberic目录下面新建一个channel-artifacts文件夹
根据configtx.yaml生成创世块及频道认证文件,具体命令如下:
./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
创世块是为了Orderer排序服务启动时用到的,Peer节点在启动后需要创建Channel的配置文件在这里也一并生成,执行具体命令如下:
./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID ${可以自己定义应用通道名称}
chanelID定义的是啥后面就只能生成啥通道
用docker启动orderer节点和peer节点
docker-compose -f docker-orderer.yaml up -d
docker-compose -f docker-peer.yaml up -d
进入cli
docker exec -it cli bash
根据之前创建的应用通道文件创建一个通道
peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/mychannel.tx
-c后是创建的通道名称
创建完channel后,需要执行如下命令,通过mychannel.block文件加入该channel,以便后续可以安装实例化并测试智能合约。
执行命令为:
peer channel join -b mychannel.block
把我们之前准备好的智能合约放到chaincode文件下
然后安装智能合约,执行命令为:
peer chaincode install -n ${chaincodeName} -p ${path}-v 1.0
-n 后是智能合约名称 -p后是智能合约路径 都是根据你自己实际情况来
例如:
peer chaincode install -n cwx -p github.com/hyperledger/fabric/aberic/chaincode/go/mychaincode -v 1.0
安装完成后需要进行实例化chaincode,执行如下命令:
peer chaincode instantiate -o ${ordererAddr} -C ${channelName} -n
${ccName} -v ${ccVersion} -c ${InitArgs} -P ${EndorserPolicy}
例如:
peer chaincode instantiate -o orderer.example.com:7050 -C mychannelcwx -n cwx -c '{"Args":["init","cwx","1999"]}' -P "OR ('Org1MSP.member')" -v 1.0
这里是初始化了一对key-value值
然后我们可以根据key查询对应的value值
peer chaincode query -C mychannelcwx -n cwx -c '{"Args":["query","cwx"]}'
查询结果如图
然后我们可以执行invoke操作对值进行修改
peer chaincode invoke -C mychannelcwx -n cwx -c '{"Args":["update","cwx","1998"]}'
这里我把1999改成了1998
然后再进行查询操作
结果如图:
链码测试成功。