basic1.0链码部署(基于test-network 环境ubuntu20.04腾讯云)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

解决了官方示例指令需要科学上网才能运行的问题通过手动下载二进制文件和拉取官方fabric-samples。具体的将bootstrap.sh脚本解读了一遍 具体可以参照我的博客 fabric中bootstrap.sh到底帮助我们干了什么curl -sSL https://bit.ly/2ysbOFE | bash -s执行不成功如何手动执行相相关操作_sh bootstrap.sh_小小小小关同学的博客-CSDN博客

前期的准备工作不再记录 也就是安装go docker docker-compose等操作

链码部署与调用等操作基于完成克隆fabric-samples仓库、拉取二进制文件、下载需要的镜像这些操作之后

这个脚本可以快速帮助我们搭建起自己的fabric网络 是一个单机多节点的示例。对于脚本的具体实现在搭建完多级部署后再看会有不一样的体会将一些指令通过脚本的方式封装执行节省了使用者的操作类似于一个fabric尝鲜。笔记中还有对basic链码的标注看懂链码学会调用


1.查看test-network脚本的使用说明

./network.sh -h  

可以看出我们可以通过他给出的这些指令来完成对应的功能也可以用过一些参数也自定义通道名称。

2.启动测试网络

./network.sh up

启动后创建了四个结点 cli 两个peer结点 一个排序结点。

3.创建通道

 

./network.sh createChannel  可以带上 -c 通道名称  来指定我使用的是默认名称mychannel

 执行成功后

4.在通道上安装一个链码

 在我们安装链码之前最好去链码所在的目录去查看一下链码所需要的依赖包是否成功导入

可以先进入到链码所在的目录看一看../asset-transfer-basic/chaincode-go 就是这个目录下。

 cd ../asset-transfer-basic/chaincode-go

这里已经有了vendor 之前遇见过没有的情况 也就是要自己手动拉取一下go mod vendor

然后回到test-network执行部署链码命令

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

成功后

 注意

如果没有vendor的话可与参考下面的方法有的话直接跳过就可以有的时候没有的话也先执行一些启动连链码的那条指令 可能会帮助拉取vendor

执行前注意使用 go env 查看go环境 确认配置好了gomoudle 然后在chaincode-go目录下输入

go mod vendor 即可 然后再次查看就能看到vendor

回到测试网络.sh文件所在的目录下 重新启动链码即可

 

5 与网络交互

到现在我们的basic链码已经成功安装了现在我们可以对basic链码的功能来一个测试了

  • 使用以下命令将这些二进制文件添加到您的CLI路径
export PATH=${PWD}/../bin:$PATH
  • 您还需要将fabric-samples代码库中的FABRIC_CFG_PATH设置为指向其中的core.yaml文件
export FABRIC_CFG_PATH=$PWD/../config/
  • 现在您可以设置环境变量以允许您作为Org1操作peer CLI
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
  • 运行以下命令用一些资产来初始化账本
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 mychannel -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":[]}'

这是初始化账本的源码实现就是讲结构变量通过json.Marshal转换成json 再通过PutState讲资产存入世界状态。

  • 现在你可以用你的 CLI 工具来查询账本。运行以下指令来获取添加到通道账本的资产列表在运行指令之前可以先看看链码中对于这个函数的实现到底是怎样的

可以看到这个想要调用这这个函数 只需要一个传入一个交易上下文接口就可以了但是在使用中这个应该是fabric内部自己传入的并不需要我们来传入所以对于这个函数我们并不需要传入任何参数直接给出函数名即可。

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

  • basic中还给出了一些其他函数我们可以看看具体怎么实现的 然后来调用它
  • 添加资产

命令下面命令一次性输入

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 mychannel \

-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":"CreateAsset","Args":["asset7","pink","20","HEUN","888"]}'

  • 删除资产

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 mychannel \

-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":"DeleteAsset","Args":["asset1"]}'

  • 更新资产修改资产

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 mychannel \

-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":"UpdateAsset","Args":["asset7","RED","20","gdw","888"]}'

  • 转移资产

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 mychannel -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"]}'

  • 切换身份

之前都是使用组织1来验证代码的增删改查操作现在我们可以再开一个终端用组织2来验证功能只需要变更环境变量即可

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

然后就可以在 peer0.org2.example.com上来调用一些智能合约比如来查询我们自定义的资产7看看是否能在组织二上查询到

peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset7"]}'

完成后想要关闭测试网络的话可以执行

./network.sh down

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Ubuntu

“basic1.0链码部署(基于test-network 环境ubuntu20.04腾讯云)” 的相关文章