【前情提要】

已顺利安装并测试fabric网络(见https://www.cnblogs.com/shall2019/p/18937124),接下来在该网络中创建通道并部署链码。

1. 进入目标文件夹,并启动网络并创建通道

cd ~/home/myfabric/fabric-samples/test-network
./network.sh up createChannel -c channel1

显示如下则表示通道channel1创建成功

 2. 将链码asset-transfer-basic部署到通道channel1中

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go -c channel1

显示query chaincode definition successful on peer0.org1 on channel 'channel1'

query chaincode definition successful on peer0.org2 on channel 'channel1'

则表示部署成功

 

3. 链码部署成功,接下来以org1的身份,通过org1的peer节点与网络进行交互

(1)将fabric-samples文件夹里的bin文件夹路径粘贴到环境变量PATH中

export PATH=${PWD}/bin:$PATH

(2)设置新的其他环境变量,以便我们可以以org1的身份操作节点,与网络进行交互

export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051

(3)初始化账本

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C channel1 -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'

(注意,该指令指定通道是channel1,请根据自己情况具体修改通道名称)

初始化成功则显示

 (4)查询当前通道channel1下的所有asset

peer chaincode query -C channel1 -n basic -c '{"Args":["GetAllAssets"]}'

成功则显示

 (5)现在想对asset进行转移

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C channel1 -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'

这部分指令可以拆分成下面几部分来看:

#指定 Orderer 的地址和端口为7050,orderer负责交易的排序和区块的生成

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile

#启用TLS传输层安全协议,确保通信的安全性,--cafile以及后面的地址,用于指定orderer的CA证书文件位置,以便验证orderer的身份

"${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"

#指定通道为channel1,指定链码名称为basic链码

-C channel1 -n basic

#指定第一个peer节点的地址和端口为7051,指定第一个peer节点的CA文件路径用于验证其身份

--peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"

#指定第二个peer节点的地址和端口为9051,指定第二个peer节点的CA文件路径用于验证其身份

--peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"

#调用指令TransferAsset,执行资产转移功能,从asset6到Christopher

-c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'

 

转移成功后显示:

 此时我们再次调用GetAllAssets指令查看,得到新asset状况:

 可以发现asset6的拥有者由原来的Michel变为了现在的Christopher

 

4. 以上都是以org1的身份与网络交互,接下来我们切换到org2的角度,查看最新的账本情况

(1)更改环境变量到org2

export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051

(2) 查看channel1通道下的账本asset

peer chaincode query -C channel1 -n basic -c '{"Args":["GetAllAssets"]}'

结果显示:

 与org1视角下的账本结果一致。

 

至此fabric网络的安装,创建通道,链码部署,链码操作,全部完成。

posted on 2025-06-23 19:58  swannie  阅读(9)  评论(0)    收藏  举报