![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
区块链
文章平均质量分 50
keep_top
软件工程硕士研究生 研究方向:区块链,Hyperledger Fabric联盟链技术,go语言开发,欢迎大家一起交流学习!本人已毕业,目前是一名浙江高校辅导员。
展开
-
使用Tape对超级账本Fabric2.4.4进行性能测试(全过程搭建)
前提环境:搭建好超级账本Fabric2.4.4版本网络,启动test-netwok的官方示例,如不知道如何搭建超级账本Fabric2.4.4?Tape 是一款轻量级 Hyperledger Fabric。启动test-network环境,安装官方链码(asset)克隆官方tape仓库:git clone。原创 2023-03-05 23:17:42 · 1564 阅读 · 1 评论 -
超级账本区块链Fabric2.4.4版本搭建过程(完整过程)
前提环境:乌班图20.04环境安装过程就不举例了。将go文件安装包解压到目录/opt/local下面,输入解压命令:接下来设置用户的环境变量:输入命令:sudo vim ~/.profile,如图设置环境变量。,载入环境变量到这里面。最后输入命令:go version,查看go是否安装成功然后输入 sudo reboot 重启虚拟机来安装docker注销并重新登录(我的是重启即可 输入:sudo reboot ),然后添加阿里云的Docker Hub。原创 2022-07-13 16:40:28 · 11437 阅读 · 10 评论 -
ubuntu20.04系统安装vmtool工具
Ubuntu Linux是由南非人马克·沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统,于2004年10月公布Ubuntu的第一个版本(Ubuntu 4.10“Warty Warthog”)。南非总统曼德拉这样解释:Ubuntu是一个概念,它包含了尊重、互助、分享、交流、关怀、信任、无私的众多内涵:Ubuntu是一种生活方式,提倡宽容和同情他人。的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。...原创 2022-07-29 21:42:06 · 1104 阅读 · 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 · 2073 阅读 · 0 评论 -
关于使用hyperbeach出现/bin/sh: 1: packr2: not found的解决方案
再次执行就可以生成二进制文件了。原创 2022-07-26 11:46:13 · 4107 阅读 · 2 评论 -
区块链到底什么时候用?为什么区块链是不可篡改的?
这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,因此篡改区块链中的信息是一件极其困难的事。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。对一个现有非区块链系统进行”区块链化”改造:维持前段应用不动,之前是怎么样的,现在还是怎么样的,将后端的传统的数据库改成。...原创 2022-07-22 00:56:12 · 3031 阅读 · 0 评论 -
Pre-built binaries not installable for grpc@1.10.1 and node@8.4.0 (node-v57 ABI, glibc) (falling bac
当我们拉去fabric项目的时候,进行npm install的时候,出现了错误!显示是grpc和npm的版本不兼容所以我们尝试修改npm的版本号:首先在安装了npm的前提下安装n模块: Ps: n后面也可以跟随版本号(用于升级或降级)比如: 这里表示切换npm的版本号到9.4.0:再输入 node --version进行查看是否切换版本成功!此时我们重新进行 npm install:显示: 已经成功了! node.js是javascript的一种运行环境,是对Google V8引擎进行的封原创 2022-07-07 16:57:21 · 534 阅读 · 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 · 1945 阅读 · 3 评论 -
go-sdk项目补充
如果之前已经启动了docker网络,这时候,我们先进入虚拟机把fabric网络down掉去:然后再清理缓存:docker-compose down && docker volume prune这样就可以在goland重新去连接go-sdk。PKI 解决了fabric网络中身份发放的问题,但由于节点的私钥永远都不会公开,因此还需要引入一种可以证实身份的机制 MSP 。MSP 是一组被添加在网络中的配置文件夹,被用来在外部和内部定义组织(organization)。CA生成代表身份的证书,而MSP包含了被许可身原创 2022-07-05 15:49:41 · 503 阅读 · 0 评论 -
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 · 1250 阅读 · 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 · 730 阅读 · 0 评论 -
记Ubuntu怎么拉东西到win11
今天换了新电脑,然后装了最新的Ubuntu22.04,也装了vm-tools,但是发现东西拉不出来,很奇怪,解决方法:在Ubuntu22.04里把文件夹压缩一下,然后再把压缩包复制,在win11上可以粘贴了。具体原因我也不懂,之前版本是可以的,估计是版本的问题。Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版原创 2022-06-28 16:40:32 · 465 阅读 · 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 · 1743 阅读 · 1 评论 -
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 · 637 阅读 · 0 评论 -
下载dokcer镜像卡住了怎么办?
我们有时候会遇到dokcer下载镜像的时候卡死了重启docker即可:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。首先需要先从镜像仓库服务中拉取镜像。常见的镜像仓库服务是 Docker Hub,但是也存在其他镜像仓库服务。拉取操作会将镜像下载到本地 Docker 主机,可以使用该镜像启动一个或者多个容器。镜像由多原创 2022-06-17 16:21:18 · 1705 阅读 · 0 评论 -
强制删除docker镜像指令
docker rmi `docker images -q` --force--force表示强制性原创 2022-06-16 14:18:17 · 362 阅读 · 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 · 1164 阅读 · 0 评论 -
fabric2.3链码对比1.4链码小记
最近实验室的项目要部署到fabric2.0以上版本,之前写的都是1.4的链码,现在看2.0版本的链码还是有些不一样的,主要是链码api改了。原创 2022-06-14 16:33:42 · 695 阅读 · 1 评论 -
fabric的证书公私钥签名验证过程测试
今天来简单记录一下在fabric证书的公私钥签名验证的过程:首先我们要知道,在fabric的证书体系中,公钥是什么,私钥是什么文件:我们进入peer0.org1.example.com节点文件,可以看到几个文件夹,其中,keystore里存放的就是peer0的私钥文件,在signcerts文件中存放的就是peer0的公钥(证书)文件,因为公钥存在于证书文件中。此时我们引入go语言编写的公私钥验证代码:这里注意使用的是椭圆曲线算法,不是RSA的!具体代码不展示了:.原创 2022-04-29 17:48:49 · 1425 阅读 · 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 · 5654 阅读 · 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 · 836 阅读 · 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 · 1307 阅读 · 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 · 15892 阅读 · 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 · 2569 阅读 · 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 · 3534 阅读 · 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 · 1108 阅读 · 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 · 5406 阅读 · 0 评论 -
fabric2.2链码测试过程小记
现在简单记录下fabric2.2的链码部署过程:我们可以看到图中红框内的代码直接在命令行进行敲入:为了保险起见:我们获得管理员权限进行设置环境变量:输入sudo su获取最高权限后进行环境变量的设置:这里的$PWD代表当前目录,../代表上一级目录下面进行链码的测试:测试成功了关闭网络:proxychains ./network.sh down...原创 2021-12-25 22:11:58 · 497 阅读 · 0 评论 -
浅谈fabric链码中stub.GetFunctionAndParameters()和stub.GetStringArgs()的区别
今天我们来简单谈一下链码中stub.GetFunctionAndParameters()和stub.GetStringArgs()的区别:stub.GetFunctionAndParameters()表示的是在链码指令中的args后面接受函数名称和参数变量,而stub.GetStringArgs()指的是在args后面直接接受参数变量,默认不是传入一个函数名称。原创 2021-12-18 22:33:02 · 1032 阅读 · 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 · 1569 阅读 · 0 评论 -
Linux下如何进行管理员权限输入?
可以看到最前面变成了root@,说明我们进入了管理员权限操作中。原创 2021-12-15 18:26:46 · 3790 阅读 · 0 评论 -
Fabric中不同用户的权限的区别
普通组织的User成员是没有权限创建通道和安装链码的,只有组织下的Admin(管理员)成员才可以做上述操作。原创 2021-11-15 16:20:16 · 11253 阅读 · 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 · 9216 阅读 · 1 评论 -
关于Got permission denied while trying to connect to the Docker daemon socket at unix:///解决方案
今天在试docker的时候发现了一个问题:按理说直接加sudo就好了,但是每次都加sudo就很麻烦,所以我们可以这样:输入指令:sudo chmod a+rw /var/run/docker.sock然后再运行就好了:原创 2021-11-04 15:09:34 · 649 阅读 · 0 评论 -
当用Fabric CA登记peer时多次登记后该删除keystore里之前的文件吗?
若一个用户想得到一份属于自己的证书,需先向CA提出申请,并提交自己的公钥到CA(也可由CA统一生成公私钥对)。当CA判明申请人的身份后,会使用自己的私钥将申请人的身份信息、公钥和证书过期时间等信息一起加密,生成数字证书,分发给申请者,这就是颁发证书的过程。CA(certificate authority)是指一个被多个用户信任的证书签发机构,负责签发证书、认证证书、管理已颁发的证书。目前HTTPS协议中保证通讯安全所依赖的证书,就是通过CA签发证书来实现的。原创 2021-10-10 16:57:32 · 1805 阅读 · 0 评论 -
关于docker链码容器的日志输入的记录
我在测试docker链码容器的日志的时候,遇到了一个问题,我发现在自定义的函数里写入fmt.Print("something"),再进入链码容器查看日志的时候发现没有,我就觉得很纳闷!后来再考虑是不是需要和账本进行交互才可以写入,所以就把putstate和getstate分别注释进行查看,后来发现也和这个无关,一时间不懂为什么了,最后发现了原因!我把fmt.Print()改成fmt.Println(),就可以了!...原创 2021-09-09 17:01:02 · 224 阅读 · 0 评论 -
关于docker映射主机的简单记录
我们在配置fabric的时候,启动的docker容器里的路径和主机上是不一样的:我们来看一个配置文件:这个配置文件(docker-compose-cli.yaml)里写了主机的路径和docker中的对应情况,我们可以看到:主机的./../chaincode/下面是这个文件:(./代表当年目录,../代表上一级目录,我们这里可以知道,这个配置文件是在first-network文件夹下的,所以./代表当前文件夹,再来../代表上一级目录,就是fabric-samples文件夹下了。)代表着,主机原创 2021-09-09 00:13:13 · 325 阅读 · 0 评论 -
简单记录一下docker的一些指令
指令如下:1 docker ps // 查看所有正在运行容器 2 docker stop containerId // containerId 是容器的ID 3 docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID 4 docker stop $(docker ps -a -q) // stop停止所有容器 5 docker rm $(docker ps -a -q) // remove删除所有容器...原创 2021-09-08 19:44:02 · 83 阅读 · 0 评论