For an English version of this ReadMe file, please refer to README.md.
这是MatSwarm联邦计算系统的官方演示项目。
MatSwarm 联邦计算系统可分为以下四个主要实体:
客户端主要用于提供用户与系统交互的入口,并将用户向服务器请求的资源呈现出来,显示在对应的页面中。
作为系统的请求转发中枢,可信 Web 服务器向上与客户端直接交互,向下分别向区块链与云服务器发送对应请求,便于数据隔离。为了保证检索结果的可信性同时提高检索效率,引入 MPT 树作为检索数据结构,解决搜索中的结果验证问题,并将 MPT 树存储到 Web 服务器中。
云服务器是系统的数据存储中枢,存储包括日志记录、数据全文等数据,并负责联邦计算任务的训练计算过程。
系统的安全中枢,区块链内部划分为三个层面:
- 接口层:为区块链与系统中其他部分交互的入口。
- 应用层:负责业务逻辑的实现。链码(智能合约)是在系统中创建交易的唯一方式,是外界与区块链系统交互的唯一渠道。
- 服务层:为区块链内部提供的基础服务,包括公式服务、链码服务、成员服务、安全及密码服务等。
平台: ubuntu:18.04 搭建顺序:
- go项目
- python项目
- 前端项目
前提准备 安装和启动docker
#二、docker:
## 先更新下软件包: apt upgrade
##1、安装docker
sudo apt-get install -y docker.io
##2、启动docker服务
sudo systemctl start docker
##3、设置开机启动
sudo systemctl enable docker
##4、查看docker状态
sudo systemctl status docker
##5、停止docker服务
sudo systemctl stop docker
##6、查看docker版本:
docker version
# 安装docker-compose
sudo apt install docker-compose
安装和启动mongodb
#三、mongodb:
# 参考官网:https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-ubuntu/
##1.安装
sudo apt-get install gnupg curl # 安装 gnugp 和 curl
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
--dearmor
# 设置mongodb软件包源
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update # 更新软件包
sudo apt-get install -y mongodb-org # 安装mongodb
##2.运行
sudo systemctl start mongod # 启动
sudo systemctl status mongod # 查看状态
sudo systemctl enable mongod # 设置开机自启动
sudo systemctl stop mongod # 停止
sudo systemctl restart mongod # 重启
mongosh # 连接mongodb
# 创建MGE数据库
# use MGE
##3.卸载
sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
先运行相关docker服务,再运行go服务
安装golang:
wget https://golang.google.cn/dl/go1.18.10.linux-amd64.tar.gz -O go1.18.tar.gz # 下载go1.18版本
sudo ln -s /usr/local/go1.18/bin/go /usr/local/bin/go1.18 # 创建软链接
sudo ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt # 创建软链接
go env -w GO111MODULE=on # 设置go mod 包管理
go env -w GOPROXY=https://goproxy.io,direct # 设置国内代理
进入项目文件夹
cd fabric-mge
启动项目:
运行相关的docker服务:需在etc/hosts文件中追加如下信息(域名解析,将对应域名地址解析到本地)
127.0.0.1 orderer.example.com
127.0.0.1 peer0.org1.example.com
127.0.0.1 ca.org1.example.com
127.0.0.1 peer0.org2.example.com
127.0.0.1 ca.org2.example.com
# 在第一次启动时需进入项目的fixtures目录下,执行一下命令拉取相关镜像和启动容器
sudo docker-compose up -d
# 在项目目录(fabric-mge/)下执行clean_docker.sh脚本启动docker服务
sudo ./clean_docker.sh
go mod tidy # 下载相关包
cd chaincode # 下载chaincode目录下相关包
go mod tidy
go mod vendor
# 回到项目根目录构建项目
go build main.go # 构建项目
# 启动项目
./main InitBlock #初始化区块链,正常一条龙服务,第一次生成docker容器的时候需要使用这个命令启动
./main NotInitBlock #直接启动web服务器,在有区块链网路的情况下使用这个命令启动
详细流程见项目文件夹(fabric-mge-backend/)内 README.md 文件
安装python3.9、MongoDB、Mosquitto
进入项目文件夹
cd fabric-mge-backend/
pip3 install install -r ./requirements.txt
配置更改
将出现localhost:27017的地方改为MongoDB的运行地址和端口
修改文件
fabric-mge-backend/apps/fl/FL_for_matdata/config.py:
- PYTHON_PATH改为安装的Python中python.exe的绝对地址
- 将MQTT_SERVER改为Mosquitto的运行地址
修改文件
fabric-mge-backend/djangoProject/settings.py:
- DEBUG修改为True
启动项目
python3 manage.py runserver 8000
建议node使用v14.19.2版本
安装node:
# 在/usr/local目录下下载文件
sudo wget https://nodejs.org/dist/v14.19.2/node-v14.19.2-linux-x64.tar.gz
# 解压文件
sudo tar -zxvf node-v14.19.2-linux-x64.tar.gz
# 软链接到某个$PATH目录下(/usr/local/bin)
sudo ln -s /usr/local/node-v14.19.2-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node-v14.19.2-linux-x64/bin/npm /usr/local/bin/npm
sudo ln -s /usr/local/node-v14.19.2-linux-x64/bin/npx /usr/local/bin/npx
sudo ln -s /usr/local/node-v14.19.2-linux-x64/bin/corepack /usr/local/bin/corepack
# 查看是否安装成功
node -v # 查看node版本
npm -v # 查看npm版本
# 设置淘宝代理
npm config set registry https://registry.npm.taobao.org/
# 进入项目文件夹
cd fabric-frontend/
npm install # 安装依赖
npm run dll # 模拟打包
npm run start # 启动项目命令
当出现进度条卡在94%的情况,删除客户端项目根目录下的dist/文件夹,再运行
npm run dll
npm run start
-
启动项目
根据第二部分的流程完成项目搭建部署工作,打开浏览器访问 http://localhost:18080/search 进入首页。
-
创建模板+数据
进入创建模板页面,拖动动态容器组件完成模板创建。之后进入创建数据页面,点选已有模板,填写相关数据完成数据创建。
-
提交联邦计算任务
在任务发布界面上,填写并选择任务的相关信息,包括是否启用可信执行环境(TEE)和训练数据集。然后,单击“提交”以发布任务。
-
被邀请组织接受邀请
受邀者将收到任务发布消息,并可以查看相关任务信息。如果受邀者单击“接受”,则表示他们已加入任务,并将选择本地训练数据集。
-
发起人开始训练
-
查看训练结果
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request