go语言
文章平均质量分 52
keep_top
软件工程硕士研究生 研究方向:区块链,Hyperledger Fabric联盟链技术,go语言开发,欢迎大家一起交流学习!本人已毕业,目前是一名浙江高校辅导员。
展开
-
docker删除所有容器(包括退出的容器)
(docker ps -a -q)代表所有容器。rm表示remove删除。原创 2023-03-04 00:30:02 · 419 阅读 · 0 评论 -
Gin框架中的PostForm用法
其中GET方式就是我们前两篇文章的URL查询参数的方式,参考即可获得对应的参数键值对,这篇文章主要介绍POST的方式的表单,而Gin处理的也是这种表单。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。Go语言虽然是一门编译型的语言,但是它内置了垃圾回收机制,降低了开发者的心智负担,使其拥有像Python、PHP等解释性语言的一样的开发效率。了通过URL查询参数提交数据到服务器外,常用的还有通过Form表单的方式。原创 2022-11-30 22:36:19 · 1763 阅读 · 0 评论 -
Go web框架Gin的简单应用
它是一个轻量级的 WEB 框架,支持 RestFull 风格 API,支持 GET,POST,PUT,PATCH,DELETE,OPTIONS 等 http 方法,支持文件上传,分组路由,Multipart/Urlencoded FORM,以及支持 JsonP,参数处理等等功能,这些都和 WEB 紧密相关,通过提供这些功能,使开发人员更方便地处理 WEB 业务。Gin 是 Go语言写的一个 web 框架,它具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,非常好的支持中间件和 json。原创 2022-09-17 21:20:45 · 558 阅读 · 0 评论 -
Gin+Gateway(高级SDK)+Fabric2.4.4演示(一)从账本读数据
这里定义的结构体Stu,可以表示在前端输入结构体的信息,在后端拿到这个结构体的值,后续我们会定义链码中的结构体,用来获取账本中的数据和前端输入数据存入账本,进行演示。这个方法是官方的demo,我进行了小改动,返回一个string是为了方便大家在前端看到拿到的数据,原本的方法是没有返回值的,这里注意。今天演示一下Gin+Gateway+Fabric2.4.4结合,从区块账本抓取数据显示到前端。前提环境:Gin,Gateway,Fabric2.4.4环境。这是官方的链码,大家可以在fabric中自己找到。原创 2022-08-20 20:47:02 · 2393 阅读 · 3 评论 -
超级账本Fabric2.2自定义集群启动(修改官方Demo)
前言:基础是来自博主:明神特烦恼的优秀博客Fabric2.2全面专栏!这里仅仅对博主明神特烦恼的补充和延伸部分。前置条件:Fabric2.2.1环境,docker环境,docker-compose环境都有。超级账本Fabric2.2自定义集群启动(修改官方Demo)输入:./network.sh createChannel。至此,简单的自定义fabric集群就做好了。修改如下文件:configtx.yaml。增加信息,红框中的内容是我们需要增加的。增加对应环境变量信息。...原创 2022-08-11 14:08:36 · 526 阅读 · 0 评论 -
goland控制台显示重叠问题解决方案
GoLang简称Go是由谷歌开源的一门编程语言,而Goland是由JetBrains公司为Go开发者提供的一个符合人体工程学的新的商业IDE。GoLand是一个跨平台的IDE,使用范围包括Windows,maxOS以及。重启goland,再go run一次,就会发现显示问题已经消失了。解决方法:Please navigate to。输入:Registry。...原创 2022-08-08 16:55:27 · 999 阅读 · 0 评论 -
go语言实现导出string字符串到文件中
Go 语言的风格类似于C语言。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。Go语言虽然是一门编译型的语言,但是它内置了垃圾回收机制,降低了开发者的心智负担,使其拥有像Python、PHP等解释性语言的一样的开发效率。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。Go语言是一门编译型的语言,我们编写好的代码直接编译成服务器可以执行的二进制可执行文件。...原创 2022-08-03 01:02:15 · 1269 阅读 · 0 评论 -
hyperbench:plugin.Open(“./fabric“): plugin was built with a different version of package golang.
把这个文件报错的那一行改成self.index.Tx。会看到生成了执行文件fabric.so。记得把这个文件第九行的tx改成Tx!记得source环境变量哦~~~再继续执行就可以了!原创 2022-07-28 16:37:12 · 2080 阅读 · 0 评论 -
goland使用fabric-go-sdk连接虚拟机fabric网络(保姆级教学)
之前实现了在虚拟机内部,使用fabric-go-sdk实现创建通道,加入通道,安装链码,调用链码一系列操作,现在我们尝试在外部windows系统用goland在连接虚拟机fabric网络进行操作,这样对于我们开发来说更方便和直接。首先开启虚拟机,如果之前已经有了构建的fabric网络,先关闭fabric网络和清理缓存:docker-compose down && docker volume prune此时,我们再开启fabric网络:我们把项目拉出到我们的goland中:这里注意,所有配置文件都需要改成在w原创 2022-07-06 19:12:05 · 1955 阅读 · 3 评论 -
fabric-go-sdk配置/etc/hosts文件映射问题和在虚拟机跑通fabric-go-sdk例子
首先我们进行拉去镜像:https://github.com/sxguan/fabric-go-sdk进入我们的$GOPATH:cd $GOPATH/src && git clone https://github.com/sxguan/fabric-go-sdk.git拉取镜像此时我们注意,首先查看自己系统中已安装的docker镜像版本!输入:docker images 我们先打开拉取的docker-compose文件:把里面的镜像版本换成已有的fabric镜像版本! 如果需要在linux里运行go-sd原创 2022-07-04 19:03:47 · 1258 阅读 · 0 评论 -
关于fabric2.4.4注意事项
今天自己写了个链码,然后发现在goland里没有报错的,在环境中部署也可以成功,但是部署好了后,docker ps一下发现链码容器自动退出了,我们查看docker logs 容器id,发现这个错:显示QueryAllUsers返回值错误,需要一个确定的返回值,我纳闷了,我就是按着fabcar改的,为什么会错误呢,来回调整代码一下午,好像发现了问题所在,我自己的链码里的结构体我嵌套了一个结构体,我尝试把嵌套的结构体拿掉,再次部署,就成功了!具体原因我也不知道为什么,可能是fabric2.4.4最新版本的链码中原创 2022-07-02 21:38:07 · 704 阅读 · 0 评论 -
记go语言椭圆曲线算法公私钥验证补充
我们都知道除了用系统函数读取公私钥的方式还有一种方式,可以让用户手动输入公私钥文件,那么公私钥文件是这样的:我们在输入的时候一般都是 var str string 然后按照string格式进行输入,那么这种文件里的格式应该怎么输入呢?我们通过分析加解密的源码,知道就是系统根据开头的-----BEGIN CERTIFICATE-----和结尾的-----END CERTIFICATE-----来进行解析,所以我们用户直接输入中间的内容即可,然后开头和结尾用两个定义好的字符串去拼接,那么用户只需要输入中间的内容原创 2022-06-29 11:52:59 · 735 阅读 · 0 评论 -
Error: could not assemble transaction: ProposalResponsePayloads do not match - proposal response: ve
最近在跑fabric2.3自测链码的时候遇到了很多错误,自己也是很苦恼,改了好几个下午的bug就是找不到真正的问题所在,下面先看一个错误:Error: could not assemble transaction: ProposalResponsePayloads do not match - proposal response: version:1 response:......原创 2022-06-21 22:28:28 · 1751 阅读 · 1 评论 -
如何在fabric1.4中的first-network网络中自己测试链码
我们都知道在fabric1.4的环境中有一个自动启动的网络,那就是用自动脚本启动的first-network网络:下面说一下如何自己测试自己的链码:打开对应文件,将CC_SRC_PATH设置为自己的链码路径:这里要注意,使用脚本的时候会自动执行:初始化的时候,参数和查询的时候参数是固定的,所以为了自己的脚本不报错,这里自己的链码只要实现对于的方法就行:这里实现了一个查询和初始化的方法和一个invoke转账的方法,也就是官方链码里的方法就好了:然后执行的操作就和执行官方例子一样的:可以看这篇博客:关于Erro原创 2022-06-20 19:59:17 · 327 阅读 · 0 评论 -
Value did not match schema:\n1. return.ok.Ok2: Invalid type. Expected: array, given: null
今天遇到个问题:Value did not match schema:\n1. return.ok.Ok2: Invalid type. Expected: array, given: null开始很纳闷,不知道是哪里出了问题,所以进行了test,后来发现,是我定义的结构体里有切片,也就是可变数组,如下图:让我们再看看反馈的结果:Value did not match schema:\n1. return.ok.Ok2: Invalid type. Expected: array, given: null值原创 2022-06-17 17:21:16 · 643 阅读 · 0 评论 -
下载dokcer镜像卡住了怎么办?
我们有时候会遇到dokcer下载镜像的时候卡死了重启docker即可:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。首先需要先从镜像仓库服务中拉取镜像。常见的镜像仓库服务是 Docker Hub,但是也存在其他镜像仓库服务。拉取操作会将镜像下载到本地 Docker 主机,可以使用该镜像启动一个或者多个容器。镜像由多原创 2022-06-17 16:21:18 · 1719 阅读 · 0 评论 -
强制删除docker镜像指令
docker rmi `docker images -q` --force--force表示强制性原创 2022-06-16 14:18:17 · 366 阅读 · 0 评论 -
fabric2.X以上系统用test-network环境测试自己的链码
首先,我们需要安装好fabric2.X的环境,具体参考我之前的文章:这里默认已经有了fabric2.X的环境,进入test-network文件夹:在开始测试之前:先把gopath项目路径全部解锁:sudo chmod -R 777 $GOPATH打开测试网络:sudo ./network.sh up如果想要同时启动CA服务器和couchdb,执行这条指令:./network.sh up createChannel -ca -s couchdb可以看到启动了fabric2.3的测试网络,包含了一个cli,两个原创 2022-06-14 21:08:00 · 1170 阅读 · 0 评论 -
fabric的证书公私钥签名验证过程测试
今天来简单记录一下在fabric证书的公私钥签名验证的过程:首先我们要知道,在fabric的证书体系中,公钥是什么,私钥是什么文件:我们进入peer0.org1.example.com节点文件,可以看到几个文件夹,其中,keystore里存放的就是peer0的私钥文件,在signcerts文件中存放的就是peer0的公钥(证书)文件,因为公钥存在于证书文件中。此时我们引入go语言编写的公私钥验证代码:这里注意使用的是椭圆曲线算法,不是RSA的!具体代码不展示了:.原创 2022-04-29 17:48:49 · 1432 阅读 · 0 评论 -
关于‘go list‘ failed with: error obtaining VCS status error obtaining VCS status: exit status 128问题的解决
今天在测试fabric2.4的时候遇到了这个问题:'go list' failed with: error obtaining VCS status error obtaining VCS status: exit status 128,具体是在安装链码的时候报错的,查了资料发现没有对应的错误,所以想简单记录一下。原因:是因为我们的go版本太高了!因为之前安装的go版本是1.18的,是最新版,我们将go的版本降至1.16之后,再执行就可以成功了!此时测试:显示安装链码成功了!查询原创 2022-04-28 21:21:46 · 5663 阅读 · 5 评论 -
YAML中层级和数组的区别
yaml内容:name: Janekey: - child-key: value - child-key2: value2 对应的json格式:如果是:yaml内容:name: Janekey: child-key: value child-key2: value2则json格式为:区别为,当我们需要取其中的数据时,如果是相同层级,则为object.vaule1.vaule2格式进行取,如果是数组类型,则是ob...原创 2022-04-10 20:35:07 · 848 阅读 · 0 评论 -
在linux虚拟机跑的dokcer项目如何在winodws宿主机上运行
可以看到dokcer里的8000端口和linux的8000端口进行了映射,如果我们要在linux里进行网页打开,此时我们在linux的网址也输入:localhost:8000 即可访问相关web网页。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的。原理:docker和虚拟机有个端口映射关系,虚拟机ip和windows宿主机又有一个ip和端口映射关系!Linux,全称GNU/Linux,是一种免费使用和自由传播的。原创 2022-04-06 19:15:27 · 1308 阅读 · 0 评论 -
关于 The compose file ‘./docker-compose.yaml‘ is invalid because:networks.fabric_network的解决方案
今天在用docker-compose跑项目的时候出现了一个错误:解决方案:我们先查看我们的dokcer-compose版本:使用docker-compose -v 查看compose的版本:可以看到版本是1.12.0 其实报错的原因是因为dokcer-compose版本太低了,我们进行版本的升级:我们这里可以直接下载进行老版本的覆盖,不需要先卸载docker-compose再安装操作:下载Docker Compose:curl -L https://get.daoclou原创 2022-04-03 17:04:38 · 16026 阅读 · 0 评论 -
error An unexpected error occurred: “https://registry.yarnpkg.com/axios: con 解决方案
error An unexpected error occurred: "https://registry.yarnpkg.com/axios: con今天用在跑一个项目的时候发现了这个错误,看着像是网络连接不上,发现这里是用的Dokcerfile文件构建镜像的时候出现的网络错误,我们可以在这个文件夹中去加入代理:这里表示利用设置了淘宝的代理源,执行操作:sudo ./build.sh可以看到构建镜像成功了!...原创 2022-03-30 21:27:57 · 2590 阅读 · 0 评论 -
关于在虚拟机中不能go get的问题解决方案go get: module github.com/gin-gonic/gin: Get “https://proxy.golang.org/github.
问题:go get: module github.com/gin-gonic/gin: Get "https://proxy.golang.org/github.com/gin-gonic/gin/@v/list": dial tcp 172.217.160.113:443: i/o timeout我们可以设置go get的代理:Goproxy.cnThe most trusted Go module proxy in China.https://goproxy.cn/在终端依次输入:go原创 2022-03-27 16:33:16 · 3544 阅读 · 0 评论 -
关于git clone后面加什么链接的问题
git clone一直在用,但是好像后面直接跟github的url好像不对,所以进行了测试,发现:比如我们想要clone github上的一个源码:https://github.com/FabricMC/fabric如果我们直接就是:git clonehttps://github.com/FabricMC/fabric是不能git clone下来的:我们需要在最后加上一个.git就可以了:输入:git clonehttps://github.com/FabricMC/f...原创 2022-03-19 16:06:48 · 1122 阅读 · 0 评论 -
fabric中链码关于缺少go的包依赖问题的解决方法
我们可以在cmd中下载依赖包:go get github.com/hyperledger/fabric/common/util@v1.4go get github.com/hyperledger/fabric/core/chaincode/shim@v1.4go get github.com/hyperledger/fabric/protos/peer@v1.4安装之前需要先设置go的代理,并且这是在go mod模式下,我们在这里看到go mod文件:在这之前需要先设置go的...原创 2022-03-19 15:01:56 · 725 阅读 · 0 评论 -
简单记录一下安装Ubuntu20.04遇到的问题
我们在安装Ubuntu20.04的时候。会遇到一个情况,就是鼠标一直在转圈,界面卡主不动,这是因为有些源我们链接不好,如果我们电脑是联网的状态那么就会默认下载那些软件,我们可以这样:切断网络!这个时候就会开始安装Ubuntu20.04所必须的软件,我们接下来等待他安装好。此时如果是在断网情况下安装的Ubuntu20.04的话,是默认不装vm-tools的,那么我们需要手动进行安装:依次输入命令:sudo apt-get upgrade #更新源sudo apt-get install op原创 2021-12-26 00:52:59 · 5466 阅读 · 0 评论 -
fabric2.2链码测试过程小记
现在简单记录下fabric2.2的链码部署过程:我们可以看到图中红框内的代码直接在命令行进行敲入:为了保险起见:我们获得管理员权限进行设置环境变量:输入sudo su获取最高权限后进行环境变量的设置:这里的$PWD代表当前目录,../代表上一级目录下面进行链码的测试:测试成功了关闭网络:proxychains ./network.sh down...原创 2021-12-25 22:11:58 · 498 阅读 · 0 评论 -
浅谈fabric链码中stub.GetFunctionAndParameters()和stub.GetStringArgs()的区别
今天我们来简单谈一下链码中stub.GetFunctionAndParameters()和stub.GetStringArgs()的区别:stub.GetFunctionAndParameters()表示的是在链码指令中的args后面接受函数名称和参数变量,而stub.GetStringArgs()指的是在args后面直接接受参数变量,默认不是传入一个函数名称。原创 2021-12-18 22:33:02 · 1037 阅读 · 0 评论 -
简单在fabric1.4环境下进行链码测试的流程记录
这里我想记录一下每次开机之后关于fabric重新部署环境和测试链码的心得。我们首先查看是否有通道的配置文件:我们可以利用其中的mychannel.tx生成一个通道文件:./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel首先我们输入 docker ps 查看之前开启的容器:然后输入do...原创 2021-12-16 17:20:10 · 1571 阅读 · 0 评论 -
Linux下如何进行管理员权限输入?
可以看到最前面变成了root@,说明我们进入了管理员权限操作中。原创 2021-12-15 18:26:46 · 3814 阅读 · 0 评论 -
Fabric中不同用户的权限的区别
普通组织的User成员是没有权限创建通道和安装链码的,只有组织下的Admin(管理员)成员才可以做上述操作。原创 2021-11-15 16:20:16 · 11259 阅读 · 0 评论 -
Fabric链码中是如何利用GetCreator() ([]byte, error)读取用户的身份的
首先我先贴上链码中关于读取用户证书的代码://获取用户的证书信息 -c '{"Args":["getUserCert"]}'func (t *SimpleChaincode) getUserCert(stub shim.ChaincodeStubInterface) pb.Response{ creatorByte, _ := stub.GetCreator() certStart := bytes.IndexAny(creatorByte, "-----BEGIN") if c原创 2021-11-12 16:01:26 · 9220 阅读 · 1 评论 -
关于fabric中git checkout v2.1.0error: 您对下列文件的本地修改将被检出操作覆盖....问题的解决方案
我们在配置fabric环境的时候,经常需要切换到我们想要配置的fabric的版本,所以我们在下载好fabric源码后需要cd到fabric中去git checkout v2.1.0:但是我们遇到了这个问题:我们这样进行解决:分析:配置时查询文档,第一种说是git checkout [version]远程分支失败了行不通! 解决方案:储藏修改。将新的储藏推送到栈上,运行git stash或git stash save: 完美解决了,直接保存所有的修改数据:我们输入git st...原创 2021-08-11 19:53:49 · 4571 阅读 · 1 评论 -
关于Error: failed to normalize chaincode path: failed to determine module root: exec: “go“: 问题的解决
今天在配置fabric2.2的时候,打包链码的时候出现了问题:接下来说一下自己的解决步骤,从网上找了一些资料,好像是因为前面加了sudo之后,他就会找不到go的path了,明明自己配置了go的path路径,也不太懂。首先我们讲fabric的文件全部解锁:sudo chmod -R 777 ~/go给文件解锁。之后去掉sudo 执行 代码:./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go原创 2021-08-09 15:46:20 · 1860 阅读 · 0 评论 -
关于在fabric环境下的进入docker操作小记
我们在配置fabric环境的时候,因为基本都是用docker容器的,所以我们当进行一些操作的时候,一般是需要进入cli的容器,也就是client的缩写,也就是客户端,如下图所示:这是一个fabric2.2环境的,这是已经安装链码之后的界面。所以我们需要进入client进行操作,我们再放大看,其实这个cli容器对应的是fabric-tools的,这就意味着这个容器中放了fabric的一些工具集,我们可以在这个容器中对其他容器进行操作!代码:docker exec -it cli bash..原创 2021-08-09 00:27:46 · 553 阅读 · 0 评论 -
Error: chaincode install failed with status: 500 - failed to invoke backing ... 的解决方案(fabric2.2版本)
最近在学习配置fabric2.2的环境,之前步骤都是和fabric1.4一样的,就是最后下载好fabric源码之后,需要切换到2.2版本:cd ~/go/src/github.com/hyperledger/fabric 进入fabric目录git checkout v2.2.0 切换fabric的版本到2.2然后进入test-network文件夹,相继执行:启动 fabric 网络:sudo ./network.sh up在网络上建立通道:sudo ./network.sh createCha原创 2021-08-07 19:18:17 · 14976 阅读 · 3 评论 -
关于区块链Fabric中执行./bootstrap.sh之后出错的解决方案
(注意:这里fabric-sample文件夹里是没有bin和config文件夹的,所以我们会有后面的下载二进制文件的步骤)当然如果你多次尝试sudo ./bootstrap.sh 之后,如果网络顺利可以下载,那自然是最好不过了。注意:版本需要和fabric的版本对应一直。在命令行输入:sudo ./bootstrap.sh。二进制文件下好了,这一步一般是没是没问题的。2.fabric-samples文件夹。1.fabric的二进制文件。3.fabric的镜像文件。原创 2021-08-07 15:56:25 · 4223 阅读 · 6 评论 -
简单记录一下go语言是怎么被环境引用的?
今天简单说一下go语言是怎么被环境所引用的,首先在windosw环境下,查看环境变量:可以看到他的路径。而且在我们的虚拟机里,是这样设置的:这里我们需要知道:我们设置GOPATH和GOROOT的时候,我们再进行go语言运行的时候,里面用到的所有的包,也就是import“”里面的内容都会从GOPATH和GOROOT里面的src文件下下面去引用!所以只要我们设置了路径,就可以成功引用了!...原创 2021-07-22 16:15:17 · 102 阅读 · 0 评论