
fabric
keep_top
软件工程硕士研究生 研究方向:区块链,Hyperledger Fabric联盟链技术,go语言开发,欢迎大家一起交流学习!本人已毕业,目前是一名浙江高校辅导员。
展开
-
docker删除所有容器(包括退出的容器)
(docker ps -a -q)代表所有容器。rm表示remove删除。原创 2023-03-04 00:30:02 · 455 阅读 · 0 评论 -
Building fabric-ca-server in bin directory ...no required module provides package的错误解决方法
tips:不太懂为什么要把代理改成auto,记得之前是可以make成功的。执行:go env -w GO111MODULE=auto。原创 2023-02-20 00:34:15 · 370 阅读 · 0 评论 -
超级账本区块链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 · 12313 阅读 · 18 评论 -
Gin+Gateway+Fabric2.4.4演示(二)初始化账本和前端写入数据到账本
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。目前在很多使用Golang的中小型公司中进行业务开发,使用Gin框架的很多。Gateway的Init部分。显示我们已经存入账本成功了!原创 2022-09-02 23:22:56 · 1444 阅读 · 1 评论 -
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 · 2520 阅读 · 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 · 557 阅读 · 0 评论 -
(零知识证明)关于gnark包不匹配导致链码安装失败的问题
环签名是一种简化的群签名,环签名中只有环成员没有管理者,不需要环成员间的合作,签名者利用自己的私钥和集合中其他成员的公钥就能独立的进行签名,集合中的其他成员可能不知道自己被包含在其中。环签名的优势除了能够对前者进行无条件匿名外,环中的其他成员也不能伪造真实的签名者签名。环签名在强调匿名性的同时,增加了审计监管的难度。环签名的安全性正确性:按照正确的签名步骤对消息进行签名,并且传播过程签名不被篡改,则环签名满足验证等式。...原创 2022-08-05 00:36:07 · 1798 阅读 · 0 评论 -
区块链到底什么时候用?为什么区块链是不可篡改的?
这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。如果要修改区块链中的信息,必须征得半数以上节点的同意并修改所有节点中的信息,而这些节点通常掌握在不同的主体手中,因此篡改区块链中的信息是一件极其困难的事。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。对一个现有非区块链系统进行”区块链化”改造:维持前段应用不动,之前是怎么样的,现在还是怎么样的,将后端的传统的数据库改成。...原创 2022-07-22 00:56:12 · 3251 阅读 · 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 · 585 阅读 · 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 · 2065 阅读 · 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 · 536 阅读 · 0 评论 -
记go语言椭圆曲线算法公私钥验证补充
我们都知道除了用系统函数读取公私钥的方式还有一种方式,可以让用户手动输入公私钥文件,那么公私钥文件是这样的:我们在输入的时候一般都是 var str string 然后按照string格式进行输入,那么这种文件里的格式应该怎么输入呢?我们通过分析加解密的源码,知道就是系统根据开头的-----BEGIN CERTIFICATE-----和结尾的-----END CERTIFICATE-----来进行解析,所以我们用户直接输入中间的内容即可,然后开头和结尾用两个定义好的字符串去拼接,那么用户只需要输入中间的内容原创 2022-06-29 11:52:59 · 784 阅读 · 0 评论 -
记Ubuntu怎么拉东西到win11
今天换了新电脑,然后装了最新的Ubuntu22.04,也装了vm-tools,但是发现东西拉不出来,很奇怪,解决方法:在Ubuntu22.04里把文件夹压缩一下,然后再把压缩包复制,在win11上可以粘贴了。具体原因我也不懂,之前版本是可以的,估计是版本的问题。Ubuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在",是非洲传统的一种价值观。Ubuntu基于Debian发行版和Gnome桌面环境,而从11.04版原创 2022-06-28 16:40:32 · 498 阅读 · 0 评论 -
如何在fabric1.4中的first-network网络中自己测试链码
我们都知道在fabric1.4的环境中有一个自动启动的网络,那就是用自动脚本启动的first-network网络:下面说一下如何自己测试自己的链码:打开对应文件,将CC_SRC_PATH设置为自己的链码路径:这里要注意,使用脚本的时候会自动执行:初始化的时候,参数和查询的时候参数是固定的,所以为了自己的脚本不报错,这里自己的链码只要实现对于的方法就行:这里实现了一个查询和初始化的方法和一个invoke转账的方法,也就是官方链码里的方法就好了:然后执行的操作就和执行官方例子一样的:可以看这篇博客:关于Erro原创 2022-06-20 19:59:17 · 376 阅读 · 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 · 2859 阅读 · 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 · 3602 阅读 · 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 · 1202 阅读 · 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 · 877 阅读 · 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 · 6049 阅读 · 0 评论 -
fabric2.2链码测试过程小记
现在简单记录下fabric2.2的链码部署过程:我们可以看到图中红框内的代码直接在命令行进行敲入:为了保险起见:我们获得管理员权限进行设置环境变量:输入sudo su获取最高权限后进行环境变量的设置:这里的$PWD代表当前目录,../代表上一级目录下面进行链码的测试:测试成功了关闭网络:proxychains ./network.sh down...原创 2021-12-25 22:11:58 · 568 阅读 · 0 评论 -
浅谈fabric链码中stub.GetFunctionAndParameters()和stub.GetStringArgs()的区别
今天我们来简单谈一下链码中stub.GetFunctionAndParameters()和stub.GetStringArgs()的区别:stub.GetFunctionAndParameters()表示的是在链码指令中的args后面接受函数名称和参数变量,而stub.GetStringArgs()指的是在args后面直接接受参数变量,默认不是传入一个函数名称。原创 2021-12-18 22:33:02 · 1093 阅读 · 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 · 1628 阅读 · 0 评论 -
Linux下如何进行管理员权限输入?
可以看到最前面变成了root@,说明我们进入了管理员权限操作中。原创 2021-12-15 18:26:46 · 3952 阅读 · 0 评论 -
Fabric中不同用户的权限的区别
普通组织的User成员是没有权限创建通道和安装链码的,只有组织下的Admin(管理员)成员才可以做上述操作。原创 2021-11-15 16:20:16 · 11316 阅读 · 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 · 9251 阅读 · 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 · 709 阅读 · 0 评论 -
当用Fabric CA登记peer时多次登记后该删除keystore里之前的文件吗?
若一个用户想得到一份属于自己的证书,需先向CA提出申请,并提交自己的公钥到CA(也可由CA统一生成公私钥对)。当CA判明申请人的身份后,会使用自己的私钥将申请人的身份信息、公钥和证书过期时间等信息一起加密,生成数字证书,分发给申请者,这就是颁发证书的过程。CA(certificate authority)是指一个被多个用户信任的证书签发机构,负责签发证书、认证证书、管理已颁发的证书。目前HTTPS协议中保证通讯安全所依赖的证书,就是通过CA签发证书来实现的。原创 2021-10-10 16:57:32 · 1837 阅读 · 0 评论 -
关于docker链码容器的日志输入的记录
我在测试docker链码容器的日志的时候,遇到了一个问题,我发现在自定义的函数里写入fmt.Print("something"),再进入链码容器查看日志的时候发现没有,我就觉得很纳闷!后来再考虑是不是需要和账本进行交互才可以写入,所以就把putstate和getstate分别注释进行查看,后来发现也和这个无关,一时间不懂为什么了,最后发现了原因!我把fmt.Print()改成fmt.Println(),就可以了!...原创 2021-09-09 17:01:02 · 255 阅读 · 0 评论 -
关于docker映射主机的简单记录
我们在配置fabric的时候,启动的docker容器里的路径和主机上是不一样的:我们来看一个配置文件:这个配置文件(docker-compose-cli.yaml)里写了主机的路径和docker中的对应情况,我们可以看到:主机的./../chaincode/下面是这个文件:(./代表当年目录,../代表上一级目录,我们这里可以知道,这个配置文件是在first-network文件夹下的,所以./代表当前文件夹,再来../代表上一级目录,就是fabric-samples文件夹下了。)代表着,主机原创 2021-09-09 00:13:13 · 349 阅读 · 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 · 111 阅读 · 0 评论 -
关于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 · 4740 阅读 · 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 · 1996 阅读 · 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 · 591 阅读 · 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 · 15603 阅读 · 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 · 4572 阅读 · 6 评论 -
简单记录一下go语言是怎么被环境引用的?
今天简单说一下go语言是怎么被环境所引用的,首先在windosw环境下,查看环境变量:可以看到他的路径。而且在我们的虚拟机里,是这样设置的:这里我们需要知道:我们设置GOPATH和GOROOT的时候,我们再进行go语言运行的时候,里面用到的所有的包,也就是import“”里面的内容都会从GOPATH和GOROOT里面的src文件下下面去引用!所以只要我们设置了路径,就可以成功引用了!...原创 2021-07-22 16:15:17 · 124 阅读 · 0 评论 -
关于手动配置fabric1.4时peer节点无法启动的解决方案
这个问题困扰了我好久,前段时间发现配置fabric1.4的时候,利用:启动order和perrdocker-compose -f docker-orderer.yaml up -ddocker-compose -f docker-peer.yaml up -d之后发现,原创 2021-07-01 00:55:54 · 1408 阅读 · 0 评论 -
关于Error: error getting endorser client for channel: endorser client failed to connect to peer0问题的解决
最近都在搞fabric的环境配置,今天遇到了一个问题,就是自动配置fabric1.4网络的时候遇到了:Error: error getting endorser client for channel: endorser client failed to connect to peer0这个问题:这个时候我们这样操作:首先我们把网络停止:./byfn.sh -m down -c jschannel我们在输入:sudo vim /etc/resolv.conf我们将optins这句.原创 2021-06-30 21:01:32 · 21744 阅读 · 12 评论 -
记如何颁发fabric-ca证书
首先我们开启中间CA4服务器:../fabric-ca-server start -b admin4:adminpw4 -u http://admin:adminpw@localhost:7054 --home ./intermediaca4 --cfg.affiliations.allowremove --cfg.identities.allowremove然后我们生成MSP:../fabric-ca-client register --id.name peer2.org1.food.com原创 2021-05-11 19:20:06 · 462 阅读 · 1 评论 -
关于部署智能合约的一点心得
2021年5月10日13:12:151.我们在初始化智能合约的时候关注到智能合约里的Init的函数名是开头大写的:所以我在linux中去执行参数的时候:我在想使用peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n myko001-c '{"Args":["init","A","10","B","10"]}' -v 1.0 和peer chaincode instantiate -o orderer...原创 2021-05-10 13:27:36 · 363 阅读 · 4 评论