IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> fabric2.3系统test-network环境测试自己的链码 -> 正文阅读

[系统运维]fabric2.3系统test-network环境测试自己的链码

首先,我们需要安装好fabric2.3的环境,具体参考我之前的文章:

这里默认已经有了fabric2.3的环境,进入test-network文件夹:

在开始测试之前:先把gopath项目路径全部解锁:

sudo chmod -R 777 $GOPATH

打开测试网络:sudo ./network.sh up

可以看到启动了fabric2.3的测试网络,包含了一个cli,两个peer结点,和一个orderer结点(用来排序的):

可以用docker ps 查看开启的容器:

接着在测试网络加入通道:

./network.sh createChannel

这里我们设置一下go的环境变量,当然如果有科学上网那最好,但是还是同时设置下:

这是go语言代理的网址:

Goproxy.cnThe most trusted Go module proxy in China.https://goproxy.cn/

go env -w?GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

然后可以看下go env:

看到go的 环境变量改了:

我这里已经设置了,就不操作了:?

重要:

这里我们进行自己链码安装:

首先在当前目录下新建一个文件夹mychaincode再在里面新建一个文件夹,把自己编写的链码放进去:

在这里打开终端:

执行:go mod init

再执行:go mod tidy? (增加需要的包,去掉不需要的包)

最后执行:go mod vendor

这里是讲链码的所有依赖下载到本文件夹内的vendor内,实现依赖封装:

此时,我们的链码环境才算完成了!

接下来就是链码的安装:

回到test-network目录下:

我们先看示例:sudo ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

我们执行:sudo ./network.sh deployCC -ccn mycc -ccp ../asset-transfer-basic/chaincode-go -ccl go

如果出现这个报错:

是因为我们用了sudo 管理员模式下会有时候找不到go的环境 我们去掉sudo:

运行:./network.sh deployCC -ccn mycc -ccp ../asset-transfer-basic/chaincode-go -ccl go

显示:

说明我们的链码在两个组织的结点上都安装成功了!

这个时候我们就要来实例化链码了:

这里注意,我们使用的官方的脚本,在fabric2.0版本中默认是不需要实例化链码了,所以直接调用invoke即可:

首先配置一下环境变量:

export PATH=${PWD}/../bin:$PATH
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

这里执行初始化链码:

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 mycc --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":"Init","Args":["A","100","B","200"]}'

为什么参数这么写?让我们看一下链码:

这里需要传入四个参数,(注意!fabric2.0中,无论链码需要传入什么参数,我们统一用字符串进行传入即可,就是

执行结果:

说明已经执行成功了!

此时执行自己写的一个链码方法:

我们看链码源码:

在2.0链码里,方法名就是Saysomething,对应前面的"function":"Saysomething",后面的args后面的参数就是链码中的something string。

在执行查询链码:

从链码可知道,只需要传进去一个A string就行了:

执行:

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 mycc --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":"Query","Args":["A"]}'

?

可以看到查出来了:100,A的资产是100,也就是最开始初始化链码时存入账本的值。

这里尝试把peer0.org1.example.com和peer0.org2.example.com的路径删除再执行:

发现可以执行的!说明在查询的时候,也就是设计到账本改动的时候是不需要加背书策略的!

这里可以注意一下:就是如果是查询操作,仅仅是查询账本上的数据,那么可以把invoke改成query即可,当然也可以继续使用invoke也可以的!

如:

peer chaincode query -C mychannel -n mycc -c '{"function":"Query","Args":["A"]}'

因为是查询,所以不需要连接orderer结点,也不需要加上两个peer的证书,也就是查询不需要背书策略。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:34:08  更:2022-06-18 23:36:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 23:56:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码