超级账本区块链Fabric2.4.4版本搭建过程(完整过程)

news2025/1/14 18:43:36

 前提环境:乌班图20.04环境

安装所需要的工具

先配置一下代理源为阿里云代理:

sudo apt-get update  更新源 
sudo apt-get install ssh 安装远程客户端
sudo apt-get install curl 安装命令行工具
sudo apt-get install git 安装git
sudo apt-get install gcc 安装gcc
sudo apt-get install vim 安装vim文件编辑器
sudo apt-get install make 安装make
sudo apt-get install net-tools 安装网络工具
sudo apt-get install mousepad 安装mousepad 类似于windows的记事本

 

 安装过程就不举例了。

安装完工具后,开始安装go语言:

wget https://studygolang.com/dl/golang/go1.17.1.linux-amd64.tar.gz

 将go文件安装包解压到目录/opt/local下面,输入解压命令:

sudo tar -C /usr/local -xzf go1.17.1.linux-amd64.tar.gz

接下来设置用户的环境变量:

输入命令:sudo vim ~/.profile,如图设置环境变量。

设置环境变量输入

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=/opt/gopath

然后输入命令:source ~/.profile,载入环境变量到这里面。

最后输入命令:go version,查看go是否安装成功

然后输入 sudo reboot 重启虚拟机

Docker的安装

输入命令:sudo apt-get install docker.io来安装docker

输入命令:sudo usermod -aG docker+用户名(我的是ls

注销并重新登录(我的是重启即可 输入:sudo reboot ),然后添加阿里云的Docker Hub镜像:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF

接着输入如下命令:

sudo systemctl daemon-reload
sudo systemctl restart docker

输入docker version查看docker的版本信息

 Docker-Compose的安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose 
chmod +x /usr/local/bin/docker-compose

检查版本docker-compose version 如下图

 fabric2.4.4环境搭建

sudo mkdir -p $GOPATH/src/github.com/hyperledger 

进入相对应的目录,输入命令:

cd $GOPATH/src/github.com/hyperledger

然后从网上下载fabric源码,执行命令:

首先先给GPATH路径解锁:

sudo chmod -R 777 $GOPATH 
git clone https://github.com/hyperledger/fabric.git

 注意:由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.4.0版本的源码即可:cd /opt/gopath/src/github.com/hyperledger/fabric 进入fabric目录

git checkout v1.4.0

如果你有需要进行fabric对于版本的测试,请自行选择fabric的版本,如果不切换,默认是最新版本的fabric版本。

进入fw@fw-virtual-machine:/opt/gopath/src/github.com/hyperledger/fabric/scripts

目录下:

输入./bootstrap.sh进行脚本的下载:

 

这是下载bin文件和fabric-ca的bin文件。 

 之后会拉取对应版本的fabric镜像:

 等待镜像拉取完成!

下载完成后可以看到列出的镜像:

我们进行官方demo的测试:

进入如下文件夹:

首先配置一下go的代理:

Goproxy.cn

在终端执行:

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

开启测试网络:

如果想要同时启动CA服务器和couchdb,执行这条指令:

./network.sh up createChannel -ca -s couchdb

如果想仅仅启动couchdb,输入:

./network.sh up createChannel -s couchdb

 输入 docker ps:

可以看到测试网络已经启动成功了。

下面进行官方链码的测试:

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

 链码文件夹:

 

显示安装链码成功了!

查看链码容器也起来了!

 配置一下环境变量:

以org1的组织管理员身份去操作链码:

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 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":[""]}'

 因为我们开启了couchdb,我们在输入网址:localhost:5984/_utils

用户名和密码一般默认是: admin和adminpw  如果遗忘可以在docker-compose配置文件中找到

可以看到已经存入了值,是以k-v的形式保存的世界状态。

也可以进入gateway文件夹,利用gateway(高级GO-SDK)进行对区块链底层账本的访问。

具体gateway的重写以后再写一个文章具体说一下如何利用重写的gateway和自己写的链码进行调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1154762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言之用指针交换两个数

1.指针存放是是地址&#xff0c;所以在用指针交换两个数的时候&#xff0c;需要对指针进行解引用(*p)。 用指针交换两个数&#xff0c;需要知道p1p2与*p1*p2。 p1p1是将p2的值赋值给p1. *p1*p2是将p2指针地址存放的值&#xff0c;赋值给p1指针地址存放的值&#xff0c;即p1地…

YOLOv7改进: AIFI (尺度内特征交互)助力YOLO | YOLO终结者?RT-DETR一探究竟

💡💡💡本文全网首发独家改进: AIFI (尺度内特征交互)助力YOLO ,提升尺度内和尺度间特征交互能力,同时降低多个尺度的特征之间进行注意力运算,计算消耗较大等问题 推荐指数:五星 AIFI | 亲测在多个数据集能够实现涨点 收录: YOLOv7高阶自研专栏介绍: http:…

JSX语法入门

目录 元素与组件 属性与表达式 条件渲染 列表渲染 使用JSX的注意事项 总结 JSX是JavaScript的扩展语法&#xff0c;它允许我们在JavaScript中编写类似HTML的代码。在React中广泛使用JSX来描述用户界面。在本文中&#xff0c;我们将介绍JSX的基础知识&#xff0c;包括元素…

CSDN----Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

库函数sort

1 sort自定义大小cmp bool cmp(Rec a,Rec b)//W1a是否应该排在b前面 { return a.x<b.x;//a小于b就排在前面 // return a>b; }只需在这里改变大于还是小于排序 #include <iostream> #include <algorithm> #include <vector> #include <cti…

脉冲离子风机和普通离子风机有什么区别

脉冲离子风机和普通离子风机都是利用电离空气的原理来净化空气中的微粒和有害气体&#xff0c;但它们的工作原理和性能有所不同。 普通离子风机是通过将电压施加到电极上&#xff0c;使电极周围的空气分子电离&#xff0c;产生负离子&#xff0c;从而吸附空气中的微粒和有害气体…

react中的useReducer复杂的状态管理

reducer官网教程 useReducer 是 React 提供的一个用于状态管理的 Hook。它可以替代 useState&#xff0c;更适用于处理复杂的状态逻辑。 useReducer 接受一个reducer函数和一个初始状态&#xff0c;并返回当前状态以及一个 dispatch 函数&#xff0c;用来触发状态更新。reduce…

vue/react项目刷新页面出现404报错的原因及解决办法

Vue项目打包部署到线上后,刷新页面会提示404,下面这篇文章主要给大家介绍了关于vue/react项目刷新页面出现404报错的原因及解决办法,文中将解决的办法介绍的很详细,需要的朋友可以参考下 ​​​​​​​ 背景解决办法 法1&#xff1a;将vue/react路由模式由history路由改为has…

c++-set和map

文章目录 前言一、set容器1、set容器介绍2、set的使用2.1 set的构造函数和迭代器2.2 set的容量2.3 set修改操作 3、multiset容器3.1 multiset容器介绍3.2 multiset容器使用 二、map容器1、map容器介绍2、map容器使用2.1 map的构造函数与迭代器2.2 map中元素的修改2.3 map的容量…

ME创新计划 | 山乡花开项目护童计划——山乡宝贝周末营会

为给山乡宝贝搭建更大的平台&#xff0c;帮助他们探索自身的潜力&#xff0c;并培养自信和自尊。2023年10月28日至29日&#xff0c;溆浦志愿者协会开展“ME创新计划 | 山乡宝贝项目护童计划——山乡宝贝周末营会”活动&#xff0c;来自卢峰镇、桥江镇、大江口镇等35名山乡宝贝参…

代购商城源码如何保障用户信息和交易数据的安全性?

多样支付方式的需求和背景 支付方式的重要性 随着电子商务的快速发展&#xff0c;支付是在线购物过程中至关重要的环节。不同用户有着不同的支付习惯和需求&#xff0c;因此一个代购商城源码需要支持多种支付方式&#xff0c;以满足用户的个性化需求。 便捷性和安全性的需求 支…

Anaconda安装Bertopic流程

前面是参考一个博主的搭建&#xff0c;但是我装之后还是遇到了些问题 1、先建一个虚拟环境 conda create --name BERTopic_Env python3.8 activate BERTopic_Env2、安装清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ con…

C++算法: 戳气球

题目 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#xff0c;你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和 …

JS逆向爬虫---请求参数加密① 【某度翻译】

接口定位 抓包输入翻译关键词 全局搜索关键词,定位到接口https://fanyi.baidu.com/v2transapi 全局搜索sign 多次尝试定位变化参数sign 断点调试b函数 估值整个function&#xff0c;并测试函数运行结果 缺少r参数&#xff0c;可以通过多次输入调试&#xff0c;定位r参数的…

阿里云2023年双11活动,2核2G云服务器1年99元,新老用户同享!

阿里云2023年双11活动已经正式开启了&#xff0c;阿里云推出了金秋云创季活动&#xff0c;活动力度很大&#xff0c;多款热门云产品超低折扣&#xff0c;2核2G云服务器1年99元&#xff0c;续费不涨价&#xff0c;新老用户同享&#xff01; 一、阿里云双11活动地址 活动入口&am…

监控浏览器页面展示性能的工具

B/S架构&#xff0c;用户都是使用浏览器访问后端服务&#xff0c;产品在开发时需要关注用户的体验&#xff0c;不仅包含交互的友好&#xff0c;性能指标也非常重要。对于后端开发常见的性能指标&#xff0c;可能包含&#xff1a;reponse time&#xff0c;吞吐量等。此外&#x…

360加固APP后启动崩溃—注意加固前后签名是否一致

如下截图所示&#xff0c;我今天就是遇到了这个问题&#xff0c;这个问题是比较好解决&#xff0c;但如果官网有显眼指引说明会不会对开发者更友好些呢&#xff1f; 首先我们给360的加固包是带有自己的签名的&#xff0c;然后经360加固过后&#xff08;免费的加固服务&#xf…

【JavaEE】cookie和session

cookie和session cookie什么是 cookieServlet 中使用 cookie相应的API Servlet 中使用 session 相应的 API代码示例: 实现用户登陆Cookie 和 Session 的区别总结 cookie 什么是 cookie cookie的数据从哪里来? 服务器返回给浏览器的 cookie的数据长什么样? cookie 中是键值对…

[ poi-表格导出 ] java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

解决报错&#xff1a; org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader 报错描述&#xff1a; 表格导出本来使用正常&#xff0c;偶然就报了以上错误…

ai问答网站有哪些

1、Mental AI MentalAI&#xff08;https://ai.ciyundata.com/&#xff09;是一种基于星火大模型和文心大模型的知识增强大语言模型&#xff0c;专注于自然语言处理&#xff08;NLP&#xff09;领域的技术研发。 它具备强大的语义理解和生成能力&#xff0c;能够处理各种复杂的…