前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fabric区块链(二)—调用示例合约

fabric区块链(二)—调用示例合约

作者头像
酒楼
发布2023-05-30 09:49:32
7000
发布2023-05-30 09:49:32
举报
文章被收录于专栏:酒楼酒楼

1.启动Hyperledger Fabric网络

使用以下命令进入解压后的Hyperledger Fabric目录:

代码语言:javascript
复制
cd fabric-samples/test-network

然后使用以下命令启动网络:

代码语言:javascript
复制
./network.sh up

这个命令将启动一个包含两个组织和四个Peer节点的测试网络。如果一切顺利,可以使用以下命令检查网络是否启动成功:

代码语言:javascript
复制
./network.sh status

如果所有组织和Peer节点都处于运行状态,就说明网络启动成功了。

此时,网络创建成功了,但是还没有创建channel

代码语言:javascript
复制
./network.sh createChannel -c mychannel

到这里channel也创建好了

2.部署和测试示例智能合约

如果通道创建成功,可以使用joinChannel.sh脚本将peer节点加入到该通道中。testnetwork的目录下,运行以下命令将所有peer节点加入到mychannel通道中。

代码语言:javascript
复制
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-javascript/ -ccl javascript

deployCC:deployCC 是 network.sh 脚本中的一个子命令,用于部署链码。 -ccn basic:-ccn 参数指定链码的名称,这里的 basic 是链码的名称。 -ccp ../asset-transfer-basic/chaincode-javascript/:-ccp 参数指定链码的路径,这里指定的路径是 ../asset-transfer-basic/chaincode-javascript/,它是链码的位置。 -ccl javascript:-ccl 参数指定链码的语言,这里指定的语言是 javascript,表示链码是用 JavaScript 编写的。

这个命令还将部署‘assert-transfer-basic’链码,部署成功就可以在通道上执行交易和查询了。

我再执行这个命令的时候报错jq command not found…,这是一个用于处理JSON数据的命令行工具,用下面的命令安装

代码语言:javascript
复制
sudo apt-get update
sudo apt-get install jq
先把peer所在路径加到环境变量中
代码语言:javascript
复制
vim ~/.bashrc

export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:/home/githubworkspace/fabric/scripts/fabric-samples/bin
再把fabric config文件加到环境变量中
代码语言:javascript
复制
export FABRIC_CFG_PATH=/home/githubworkspace/fabric/scripts/fabric-samples/config

在/home/githubworkspace/fabric/scripts/fabric-samples/asset-transfer-basic/chaincode-go目录下执行

代码语言:javascript
复制
GO111MODULE=on go mod vendor

会在当前目录下生成vendor文件夹

然后给Org1权限
代码语言:javascript
复制
# Environment variables for Org1

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
接着调用示例合约
代码语言:javascript
复制
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":[]}'

peer chaincode invoke: 这是用于调用链码的命令。

-o localhost:7050: 指定排序节点(orderer)的地址和端口号。在本例中,排序节点位于本地主机(localhost)的7050端口。

–ordererTLSHostnameOverride orderer.example.com: 该参数用于指定用于TLS连接的排序节点的主机名。在本例中,排序节点的主机名为orderer.example.com。

–tls: 指示使用TLS进行安全连接。

–cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem: 指定TLS连接时使用的根证书的路径。该证书用于验证排序节点的身份。

-C mychannel: 指定要在哪个通道上调用链码。在本例中,通道名称为mychannel。

-n basic: 指定要调用的链码的名称。在本例中,链码名称为basic。

–peerAddresses localhost:7051: 指定对等节点(peer)的地址和端口号。在本例中,第一个对等节点位于本地主机(localhost)的7051端口。

–tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt: 指定用于TLS连接的根证书的路径。该证书用于验证第一个对等节点的身份。

–peerAddresses localhost:9051: 指定第二个对等节点的地址和端口号。在本例中,第二个对等节点位于本地主机(localhost)的9051端口。

–tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt: 指定用于TLS连接的第二个对等节点的根证书的路径。该证书用于验证第二个对等节点的身份。

-c ‘{“function”:”InitLedger”,”Args”:[]}’: 指定要调用的链码函数和参数。在本例中,调用的函数为InitLedger,不带任何参数。这里使用 JSON 格式来传递函数和参数。

最后查询
代码语言:javascript
复制
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.启动Hyperledger Fabric网络
  • 2.部署和测试示例智能合约
    • 先把peer所在路径加到环境变量中
      • 再把fabric config文件加到环境变量中
        • 然后给Org1权限
          • 接着调用示例合约
            • 最后查询
            相关产品与服务
            区块链
            云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档